From e0bcc8361ca7953f724a0967c8c14996fdcb8104 Mon Sep 17 00:00:00 2001 From: tabito Date: Thu, 24 Jul 2025 22:46:42 +0900 Subject: [PATCH 01/81] fix customdiff func Only `force_new_deployment = true` is required in updating capacity_provider --- internal/service/ecs/service.go | 30 +++++------------------------- 1 file changed, 5 insertions(+), 25 deletions(-) diff --git a/internal/service/ecs/service.go b/internal/service/ecs/service.go index 4f3d3d32a04e..2e383ff3df99 100644 --- a/internal/service/ecs/service.go +++ b/internal/service/ecs/service.go @@ -2337,31 +2337,11 @@ func triggersCustomizeDiff(_ context.Context, d *schema.ResourceDiff, meta any) } func capacityProviderStrategyCustomizeDiff(_ context.Context, d *schema.ResourceDiff, meta any) error { - // to be backward compatible, should ForceNew almost always (previous behavior), unless: - // force_new_deployment is true and - // neither the old set nor new set is 0 length - if v := d.Get("force_new_deployment").(bool); !v { - return capacityProviderStrategyForceNew(d) - } - - old, new := d.GetChange(names.AttrCapacityProviderStrategy) - - ol := old.(*schema.Set).Len() - nl := new.(*schema.Set).Len() - - if (ol == 0 && nl > 0) || (ol > 0 && nl == 0) { - return capacityProviderStrategyForceNew(d) - } - - return nil -} - -func capacityProviderStrategyForceNew(d *schema.ResourceDiff) error { - for _, key := range d.GetChangedKeysPrefix(names.AttrCapacityProviderStrategy) { - if d.HasChange(key) { - if err := d.ForceNew(key); err != nil { - return fmt.Errorf("while attempting to force a new ECS service for capacity_provider_strategy: %w", err) - } + // This if-statement is true only when the resource is being updated. + // d.Id() != "" means the resource (ecs service) already exists. + if d.Id() != "" && d.HasChange(names.AttrCapacityProviderStrategy) { + if v := d.Get("force_new_deployment").(bool); !v { + return fmt.Errorf("force_new_deployment should be true when capacity_provider_strategy is being updated") } } return nil From 31550bdb0a124110c14b7fb5bf6d3048e476fb56 Mon Sep 17 00:00:00 2001 From: tabito Date: Thu, 24 Jul 2025 22:49:37 +0900 Subject: [PATCH 02/81] update acctests for capacity_provider_strategy --- internal/service/ecs/service_test.go | 39 +++++++++++++++++++++++++--- 1 file changed, 36 insertions(+), 3 deletions(-) diff --git a/internal/service/ecs/service_test.go b/internal/service/ecs/service_test.go index d7a2f597755e..79aba3b7b1e4 100644 --- a/internal/service/ecs/service_test.go +++ b/internal/service/ecs/service_test.go @@ -378,13 +378,33 @@ func TestAccECSService_CapacityProviderStrategy_basic(t *testing.T) { Config: testAccServiceConfig_capacityProviderStrategy(rName, 1, 0, false), Check: resource.ComposeTestCheckFunc( testAccCheckServiceExists(ctx, resourceName, &service), + resource.TestCheckResourceAttr(resourceName, "capacity_provider_strategy.#", "1"), + resource.TestCheckResourceAttr(resourceName, "capacity_provider_strategy.0.weight", "1"), + resource.TestCheckResourceAttr(resourceName, "capacity_provider_strategy.0.base", "0"), ), + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + }, + }, + }, + { + Config: testAccServiceConfig_capacityProviderStrategy(rName, 10, 1, false), + ExpectError: regexache.MustCompile(`force_new_deployment should be true when capacity_provider_strategy is being updated`), }, { - Config: testAccServiceConfig_capacityProviderStrategy(rName, 10, 1, false), + Config: testAccServiceConfig_capacityProviderStrategy(rName, 10, 1, true), Check: resource.ComposeTestCheckFunc( testAccCheckServiceExists(ctx, resourceName, &service), + resource.TestCheckResourceAttr(resourceName, "capacity_provider_strategy.#", "1"), + resource.TestCheckResourceAttr(resourceName, "capacity_provider_strategy.0.weight", "10"), + resource.TestCheckResourceAttr(resourceName, "capacity_provider_strategy.0.base", "1"), ), + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + }, + }, }, }, }) @@ -406,6 +426,9 @@ func TestAccECSService_CapacityProviderStrategy_forceNewDeployment(t *testing.T) Config: testAccServiceConfig_capacityProviderStrategy(rName, 1, 0, true), Check: resource.ComposeTestCheckFunc( testAccCheckServiceExists(ctx, resourceName, &service), + resource.TestCheckResourceAttr(resourceName, "capacity_provider_strategy.#", "1"), + resource.TestCheckResourceAttr(resourceName, "capacity_provider_strategy.0.weight", "1"), + resource.TestCheckResourceAttr(resourceName, "capacity_provider_strategy.0.base", "0"), ), ConfigPlanChecks: resource.ConfigPlanChecks{ PreApply: []plancheck.PlanCheck{ @@ -417,6 +440,9 @@ func TestAccECSService_CapacityProviderStrategy_forceNewDeployment(t *testing.T) Config: testAccServiceConfig_capacityProviderStrategy(rName, 10, 1, true), Check: resource.ComposeTestCheckFunc( testAccCheckServiceExists(ctx, resourceName, &service), + resource.TestCheckResourceAttr(resourceName, "capacity_provider_strategy.#", "1"), + resource.TestCheckResourceAttr(resourceName, "capacity_provider_strategy.0.weight", "10"), + resource.TestCheckResourceAttr(resourceName, "capacity_provider_strategy.0.base", "1"), ), ConfigPlanChecks: resource.ConfigPlanChecks{ PreApply: []plancheck.PlanCheck{ @@ -455,10 +481,13 @@ func TestAccECSService_CapacityProviderStrategy_update(t *testing.T) { Config: testAccServiceConfig_updateCapacityProviderStrategy(rName, 1, "FARGATE"), Check: resource.ComposeTestCheckFunc( testAccCheckServiceExists(ctx, resourceName, &service), + resource.TestCheckResourceAttr(resourceName, "capacity_provider_strategy.#", "1"), + resource.TestCheckResourceAttr(resourceName, "capacity_provider_strategy.0.capacity_provider", "FARGATE"), + resource.TestCheckResourceAttr(resourceName, "capacity_provider_strategy.0.weight", "1"), ), ConfigPlanChecks: resource.ConfigPlanChecks{ PreApply: []plancheck.PlanCheck{ - plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionReplace), + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), }, }, }, @@ -466,6 +495,9 @@ func TestAccECSService_CapacityProviderStrategy_update(t *testing.T) { Config: testAccServiceConfig_updateCapacityProviderStrategy(rName, 1, "FARGATE_SPOT"), Check: resource.ComposeTestCheckFunc( testAccCheckServiceExists(ctx, resourceName, &service), + resource.TestCheckResourceAttr(resourceName, "capacity_provider_strategy.#", "1"), + resource.TestCheckResourceAttr(resourceName, "capacity_provider_strategy.0.capacity_provider", "FARGATE_SPOT"), + resource.TestCheckResourceAttr(resourceName, "capacity_provider_strategy.0.weight", "1"), ), ConfigPlanChecks: resource.ConfigPlanChecks{ PreApply: []plancheck.PlanCheck{ @@ -477,10 +509,11 @@ func TestAccECSService_CapacityProviderStrategy_update(t *testing.T) { Config: testAccServiceConfig_updateCapacityProviderStrategyRemove(rName), Check: resource.ComposeTestCheckFunc( testAccCheckServiceExists(ctx, resourceName, &service), + resource.TestCheckResourceAttr(resourceName, "capacity_provider_strategy.#", "0"), ), ConfigPlanChecks: resource.ConfigPlanChecks{ PreApply: []plancheck.PlanCheck{ - plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionReplace), + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), }, }, }, From 6a1780d04d3dfb00ca79972591978a000d38c826 Mon Sep 17 00:00:00 2001 From: tabito Date: Thu, 24 Jul 2025 22:50:36 +0900 Subject: [PATCH 03/81] update the documentation --- website/docs/r/ecs_service.html.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/r/ecs_service.html.markdown b/website/docs/r/ecs_service.html.markdown index 4e2cc9a98994..38976e5a971d 100644 --- a/website/docs/r/ecs_service.html.markdown +++ b/website/docs/r/ecs_service.html.markdown @@ -129,7 +129,7 @@ The following arguments are optional: * `region` - (Optional) Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the [provider configuration](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#aws-configuration-reference). * `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](#capacity_provider_strategy). Conflicts with `launch_type`. +* `capacity_provider_strategy` - (Optional) Capacity provider strategies to use for the service. Can be one or more. Updating this argument requires `force_new_deployment = true`. [See below](#capacity_provider_strategy). Conflicts with `launch_type`. * `cluster` - (Optional) ARN of an ECS cluster. * `deployment_circuit_breaker` - (Optional) Configuration block for deployment circuit breaker. [See below](#deployment_circuit_breaker). * `deployment_configuration` - (Optional) Configuration block for deployment settings. [See below](#deployment_configuration). From 379f0241e45ccee9cbbe5f1264c4e5bf58c62e74 Mon Sep 17 00:00:00 2001 From: tabito Date: Thu, 24 Jul 2025 23:50:36 +0900 Subject: [PATCH 04/81] add changelog --- .changelog/43533.txt | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .changelog/43533.txt diff --git a/.changelog/43533.txt b/.changelog/43533.txt new file mode 100644 index 000000000000..9f27f712eba4 --- /dev/null +++ b/.changelog/43533.txt @@ -0,0 +1,3 @@ +```release-note:breaking-change +resource/aws_ecs_service: Fix behavior when updating `capacity_provider_strategy` to avoid ECS service recreation after recent AWS changes +``` From 049e3fc7f4ca96cc426af94de4164ffc7f54aab6 Mon Sep 17 00:00:00 2001 From: Graham Davison Date: Wed, 17 Sep 2025 20:56:36 -0700 Subject: [PATCH 05/81] Prevents infinite loop on database read error --- internal/service/athena/sweep.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/internal/service/athena/sweep.go b/internal/service/athena/sweep.go index 87f8b728615b..153c1af1d2f4 100644 --- a/internal/service/athena/sweep.go +++ b/internal/service/athena/sweep.go @@ -158,7 +158,8 @@ func sweepDatabases(region string) error { page, err := pages.NextPage(ctx) if err != nil { - continue + log.Printf("[WARN] Skipping Athena Database sweep for Data Catalog %q in %s: %s", catalogName, region, err) + break } for _, v := range page.DatabaseList { From 6ee68d566b3821c2365e70d4de5c645c2f9544d5 Mon Sep 17 00:00:00 2001 From: Graham Davison Date: Wed, 17 Sep 2025 20:56:48 -0700 Subject: [PATCH 06/81] Cleanup --- internal/service/athena/sweep.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/service/athena/sweep.go b/internal/service/athena/sweep.go index 153c1af1d2f4..bd8debd9a636 100644 --- a/internal/service/athena/sweep.go +++ b/internal/service/athena/sweep.go @@ -103,7 +103,7 @@ func sweepDataCatalogs(region string) error { name := aws.ToString(v.CatalogName) if name == "AwsDataCatalog" { - log.Printf("[INFO] Skipping Athena Data Catalog %s", name) + log.Printf("[INFO] Skipping Athena Data Catalog %q", name) continue } From ee254eb5185b8031d5f13cca23e1e1d156036793 Mon Sep 17 00:00:00 2001 From: Graham Davison Date: Wed, 17 Sep 2025 21:07:07 -0700 Subject: [PATCH 07/81] Updates `aws_athena_database` sweeper registration --- internal/service/athena/sweep.go | 39 +++++++++----------------------- 1 file changed, 11 insertions(+), 28 deletions(-) diff --git a/internal/service/athena/sweep.go b/internal/service/athena/sweep.go index bd8debd9a636..8cf6daf313fe 100644 --- a/internal/service/athena/sweep.go +++ b/internal/service/athena/sweep.go @@ -29,10 +29,7 @@ func RegisterSweepers() { }, }) - resource.AddTestSweepers("aws_athena_database", &resource.Sweeper{ - Name: "aws_athena_database", - F: sweepDatabases, - }) + awsv2.Register("aws_athena_database", sweepDatabases) resource.AddTestSweepers("aws_athena_workgroup", &resource.Sweeper{ Name: "aws_athena_workgroup", @@ -124,27 +121,16 @@ func sweepDataCatalogs(region string) error { return nil } -func sweepDatabases(region string) error { - ctx := sweep.Context(region) - client, err := sweep.SharedRegionalSweepClient(ctx, region) - if err != nil { - return fmt.Errorf("getting client: %w", err) - } +func sweepDatabases(ctx context.Context, client *conns.AWSClient) ([]sweep.Sweepable, error) { conn := client.AthenaClient(ctx) - input := &athena.ListDataCatalogsInput{} - sweepResources := make([]sweep.Sweepable, 0) + var sweepResources []sweep.Sweepable - pages := athena.NewListDataCatalogsPaginator(conn, input) + input := athena.ListDataCatalogsInput{} + pages := athena.NewListDataCatalogsPaginator(conn, &input) for pages.HasMorePages() { page, err := pages.NextPage(ctx) - - if awsv2.SkipSweepError(err) { - log.Printf("[WARN] Skipping Athena Database sweep for %s: %s", region, err) - return nil - } - if err != nil { - return fmt.Errorf("error listing Athena Data Catalogs (%s): %w", region, err) + return nil, err } for _, v := range page.DataCatalogsSummary { @@ -158,7 +144,10 @@ func sweepDatabases(region string) error { page, err := pages.NextPage(ctx) if err != nil { - log.Printf("[WARN] Skipping Athena Database sweep for Data Catalog %q in %s: %s", catalogName, region, err) + tflog.Warn(ctx, "Skipping resource", map[string]any{ + "error": err.Error(), + "catalog_name": catalogName, + }) break } @@ -181,13 +170,7 @@ func sweepDatabases(region string) error { } } - err = sweep.SweepOrchestrator(ctx, sweepResources) - - if err != nil { - return fmt.Errorf("error sweeping Athena Databases (%s): %w", region, err) - } - - return nil + return sweepResources, nil } func sweepWorkGroups(region string) error { From caa04d7a31ad9cec8b2b3c64712cf38076d72567 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 18 Sep 2025 06:13:37 +0000 Subject: [PATCH 08/81] build(deps): bump github.com/YakDriver/tfproviderdocs in /.ci/tools Bumps [github.com/YakDriver/tfproviderdocs](https://github.com/YakDriver/tfproviderdocs) from 0.23.1 to 0.23.3. - [Release notes](https://github.com/YakDriver/tfproviderdocs/releases) - [Changelog](https://github.com/YakDriver/tfproviderdocs/blob/main/CHANGELOG.md) - [Commits](https://github.com/YakDriver/tfproviderdocs/compare/v0.23.1...v0.23.3) --- updated-dependencies: - dependency-name: github.com/YakDriver/tfproviderdocs dependency-version: 0.23.3 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .ci/tools/go.mod | 4 ++-- .ci/tools/go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.ci/tools/go.mod b/.ci/tools/go.mod index 09cc80a628ea..67716d398d1d 100644 --- a/.ci/tools/go.mod +++ b/.ci/tools/go.mod @@ -3,7 +3,7 @@ module github.com/hashicorp/terraform-provider-aws/tools go 1.24.6 require ( - github.com/YakDriver/tfproviderdocs v0.23.1 + github.com/YakDriver/tfproviderdocs v0.23.3 github.com/client9/misspell v0.3.4 github.com/golangci/golangci-lint/v2 v2.4.0 github.com/hashicorp/copywrite v0.22.0 @@ -190,7 +190,7 @@ require ( github.com/hashicorp/hcl/v2 v2.24.0 // indirect github.com/hashicorp/logutils v1.0.0 // indirect github.com/hashicorp/terraform-exec v0.17.2 // indirect - github.com/hashicorp/terraform-json v0.27.0 // indirect + github.com/hashicorp/terraform-json v0.27.2 // indirect github.com/hashicorp/terraform-registry-address v0.2.4 // indirect github.com/hashicorp/terraform-svchost v0.1.1 // indirect github.com/hashicorp/yamux v0.1.1 // indirect diff --git a/.ci/tools/go.sum b/.ci/tools/go.sum index ec878219c42f..f0f72b4fa20b 100644 --- a/.ci/tools/go.sum +++ b/.ci/tools/go.sum @@ -700,8 +700,8 @@ github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7/go.mod h1:z4/ github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8/go.mod h1:I0gYDMZ6Z5GRU7l58bNFSkPTFN6Yl12dsUlAZ8xy98g= 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/tfproviderdocs v0.23.1 h1:WlwEmm0A/ePEHpXyxUq2xf56+LUFmJtIWBKq7DvFjI0= -github.com/YakDriver/tfproviderdocs v0.23.1/go.mod h1:n0ZCrOfASYMh/OmwI05/+mb74uph4GQGW+B/+UzFG2s= +github.com/YakDriver/tfproviderdocs v0.23.3 h1:3phUu5Wyml5lH0y5hAkxfqHmgPgG6P28rCzYp1zPaYc= +github.com/YakDriver/tfproviderdocs v0.23.3/go.mod h1:AMFL4IE88Mf18DklXvcL4pJXbuFVsjuePyJ/7B4DmHw= github.com/acomagu/bufpipe v1.0.3/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4= github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo= github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= @@ -1366,8 +1366,8 @@ github.com/hashicorp/memberlist v0.3.0/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOn github.com/hashicorp/serf v0.9.6/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4= github.com/hashicorp/terraform-exec v0.17.2 h1:EU7i3Fh7vDUI9nNRdMATCEfnm9axzTnad8zszYZ73Go= github.com/hashicorp/terraform-exec v0.17.2/go.mod h1:tuIbsL2l4MlwwIZx9HPM+LOV9vVyEfBYu2GsO1uH3/8= -github.com/hashicorp/terraform-json v0.27.0 h1:REIlFzMMkIyTbhq69NC30bYiUYLv7iVhwM8ObnLo0p8= -github.com/hashicorp/terraform-json v0.27.0/go.mod h1:GzPLJ1PLdUG5xL6xn1OXWIjteQRT2CNT9o/6A9mi9hE= +github.com/hashicorp/terraform-json v0.27.2 h1:BwGuzM6iUPqf9JYM/Z4AF1OJ5VVJEEzoKST/tRDBJKU= +github.com/hashicorp/terraform-json v0.27.2/go.mod h1:GzPLJ1PLdUG5xL6xn1OXWIjteQRT2CNT9o/6A9mi9hE= github.com/hashicorp/terraform-registry-address v0.2.4 h1:JXu/zHB2Ymg/TGVCRu10XqNa4Sh2bWcqCNyKWjnCPJA= github.com/hashicorp/terraform-registry-address v0.2.4/go.mod h1:tUNYTVyCtU4OIGXXMDp7WNcJ+0W1B4nmstVDgHMjfAU= github.com/hashicorp/terraform-svchost v0.1.1 h1:EZZimZ1GxdqFRinZ1tpJwVxxt49xc/S52uzrw4x0jKQ= From 208391a3eaf2dc648a1a94081596c4ac698a1f2f Mon Sep 17 00:00:00 2001 From: Jared Baker Date: Thu, 18 Sep 2025 11:59:54 -0400 Subject: [PATCH 09/81] docs: add `go-vcr` migration guide --- docs/ai-agent-guides/go-vcr-migration.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 docs/ai-agent-guides/go-vcr-migration.md diff --git a/docs/ai-agent-guides/go-vcr-migration.md b/docs/ai-agent-guides/go-vcr-migration.md new file mode 100644 index 000000000000..2247c5f7586d --- /dev/null +++ b/docs/ai-agent-guides/go-vcr-migration.md @@ -0,0 +1,15 @@ +# Adding `go-vcr` Support + +You are working on the [Terraform AWS Provider](https://github.com/hashicorp/terraform-provider-aws), specifically focused on enabling support for `go-vcr`. + +Follow the steps below to enable support for a single service. + +- The working branch name should begin with `f-go-vcr-` and be suffixed with the name of the service being updated, e.g. `f-go-vcr-s3`. If the current branch does not match this convention, create one. Ensure the branch is rebased with the `main` branch. +- Follow the steps on [this page](../go-vcr.md) to enable `go-vcr` for the target service. +- Once all acceptace tests are passing, commit the changes with a message like "service-name: enable `go-vcr` support", replacing `service-name` with the target service. Be sure to include the COMPLETE output from acceptance testing in the commit body, wrapped in a `console` code block. e.g. + +```console +% make testacc PKG=polly VCR_MODE=REPLAY_ONLY VCR_PATH=/tmp/polly-vcr-testdata/ + +<-- full results here --> +``` From 23f0113be0cd0062a534a1e1ead5ba23c0ec8a5d Mon Sep 17 00:00:00 2001 From: Jared Baker Date: Thu, 18 Sep 2025 12:02:44 -0400 Subject: [PATCH 10/81] polly: enable `go-vcr` support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ```console % make testacc PKG=polly VCR_MODE=REPLAY_ONLY VCR_PATH=/tmp/polly-vcr-testdata/ make: Verifying source code with gofmt... ==> Checking that code complies with gofmt requirements... make: Running acceptance tests on branch: 🌿 f-go-vcr-polly 🌿... TF_ACC=1 go1.24.6 test ./internal/service/polly/... -v -count 1 -parallel 20 -timeout 360m -vet=off 2025/09/18 12:02:01 Creating Terraform AWS Provider (SDKv2-style)... 2025/09/18 12:02:01 Initializing Terraform AWS Provider (SDKv2-style)... === RUN TestEndpointConfiguration === RUN TestEndpointConfiguration/no_config 2025/09/18 12:02:01 Creating Terraform AWS Provider (SDKv2-style)... 2025/09/18 12:02:01 Initializing Terraform AWS Provider (SDKv2-style)... 2025/09/18 12:02:01 [DEBUG] missing_context: A profile defined with name `org` is ignored. For use within a shared configuration file, a non-default profile must have `profile ` prefixed to the profile name. tf_aws.sdk=aws-sdk-go-v2 === RUN TestEndpointConfiguration/package_name_endpoint_config_overrides_aws_service_envvar 2025/09/18 12:02:01 Creating Terraform AWS Provider (SDKv2-style)... 2025/09/18 12:02:01 Initializing Terraform AWS Provider (SDKv2-style)... 2025/09/18 12:02:01 [DEBUG] missing_context: A profile defined with name `org` is ignored. For use within a shared configuration file, a non-default profile must have `profile ` prefixed to the profile name. tf_aws.sdk=aws-sdk-go-v2 === RUN TestEndpointConfiguration/package_name_endpoint_config_overrides_base_envvar 2025/09/18 12:02:01 Creating Terraform AWS Provider (SDKv2-style)... 2025/09/18 12:02:01 Initializing Terraform AWS Provider (SDKv2-style)... 2025/09/18 12:02:01 [DEBUG] missing_context: A profile defined with name `org` is ignored. For use within a shared configuration file, a non-default profile must have `profile ` prefixed to the profile name. tf_aws.sdk=aws-sdk-go-v2 === RUN TestEndpointConfiguration/service_aws_envvar_overrides_service_config_file 2025/09/18 12:02:01 Creating Terraform AWS Provider (SDKv2-style)... 2025/09/18 12:02:01 Initializing Terraform AWS Provider (SDKv2-style)... === RUN TestEndpointConfiguration/base_endpoint_envvar 2025/09/18 12:02:01 Creating Terraform AWS Provider (SDKv2-style)... 2025/09/18 12:02:01 Initializing Terraform AWS Provider (SDKv2-style)... 2025/09/18 12:02:01 [DEBUG] missing_context: A profile defined with name `org` is ignored. For use within a shared configuration file, a non-default profile must have `profile ` prefixed to the profile name. tf_aws.sdk=aws-sdk-go-v2 === RUN TestEndpointConfiguration/service_config_file_overrides_base_config_file 2025/09/18 12:02:01 Creating Terraform AWS Provider (SDKv2-style)... 2025/09/18 12:02:01 Initializing Terraform AWS Provider (SDKv2-style)... === RUN TestEndpointConfiguration/service_aws_envvar 2025/09/18 12:02:01 Creating Terraform AWS Provider (SDKv2-style)... 2025/09/18 12:02:01 Initializing Terraform AWS Provider (SDKv2-style)... 2025/09/18 12:02:01 [DEBUG] missing_context: A profile defined with name `org` is ignored. For use within a shared configuration file, a non-default profile must have `profile ` prefixed to the profile name. tf_aws.sdk=aws-sdk-go-v2 === RUN TestEndpointConfiguration/base_endpoint_envvar_overrides_service_config_file 2025/09/18 12:02:01 Creating Terraform AWS Provider (SDKv2-style)... 2025/09/18 12:02:01 Initializing Terraform AWS Provider (SDKv2-style)... === RUN TestEndpointConfiguration/base_endpoint_envvar_overrides_base_config_file 2025/09/18 12:02:01 Creating Terraform AWS Provider (SDKv2-style)... 2025/09/18 12:02:01 Initializing Terraform AWS Provider (SDKv2-style)... === RUN TestEndpointConfiguration/base_endpoint_config_file 2025/09/18 12:02:01 Creating Terraform AWS Provider (SDKv2-style)... 2025/09/18 12:02:01 Initializing Terraform AWS Provider (SDKv2-style)... === RUN TestEndpointConfiguration/service_config_file 2025/09/18 12:02:01 Creating Terraform AWS Provider (SDKv2-style)... 2025/09/18 12:02:01 Initializing Terraform AWS Provider (SDKv2-style)... === RUN TestEndpointConfiguration/use_fips_config_with_package_name_endpoint_config 2025/09/18 12:02:02 Creating Terraform AWS Provider (SDKv2-style)... 2025/09/18 12:02:02 Initializing Terraform AWS Provider (SDKv2-style)... 2025/09/18 12:02:02 [DEBUG] missing_context: A profile defined with name `org` is ignored. For use within a shared configuration file, a non-default profile must have `profile ` prefixed to the profile name. tf_aws.sdk=aws-sdk-go-v2 === RUN TestEndpointConfiguration/package_name_endpoint_config 2025/09/18 12:02:02 Creating Terraform AWS Provider (SDKv2-style)... 2025/09/18 12:02:02 Initializing Terraform AWS Provider (SDKv2-style)... 2025/09/18 12:02:02 [DEBUG] missing_context: A profile defined with name `org` is ignored. For use within a shared configuration file, a non-default profile must have `profile ` prefixed to the profile name. tf_aws.sdk=aws-sdk-go-v2 === RUN TestEndpointConfiguration/package_name_endpoint_config_overrides_service_config_file 2025/09/18 12:02:02 Creating Terraform AWS Provider (SDKv2-style)... 2025/09/18 12:02:02 Initializing Terraform AWS Provider (SDKv2-style)... === RUN TestEndpointConfiguration/package_name_endpoint_config_overrides_base_config_file 2025/09/18 12:02:02 Creating Terraform AWS Provider (SDKv2-style)... 2025/09/18 12:02:02 Initializing Terraform AWS Provider (SDKv2-style)... === RUN TestEndpointConfiguration/service_aws_envvar_overrides_base_envvar 2025/09/18 12:02:02 Creating Terraform AWS Provider (SDKv2-style)... 2025/09/18 12:02:02 Initializing Terraform AWS Provider (SDKv2-style)... 2025/09/18 12:02:02 [DEBUG] missing_context: A profile defined with name `org` is ignored. For use within a shared configuration file, a non-default profile must have `profile ` prefixed to the profile name. tf_aws.sdk=aws-sdk-go-v2 === RUN TestEndpointConfiguration/service_aws_envvar_overrides_base_config_file 2025/09/18 12:02:02 Creating Terraform AWS Provider (SDKv2-style)... 2025/09/18 12:02:02 Initializing Terraform AWS Provider (SDKv2-style)... === RUN TestEndpointConfiguration/use_fips_config 2025/09/18 12:02:02 Creating Terraform AWS Provider (SDKv2-style)... 2025/09/18 12:02:02 Initializing Terraform AWS Provider (SDKv2-style)... 2025/09/18 12:02:02 [DEBUG] missing_context: A profile defined with name `org` is ignored. For use within a shared configuration file, a non-default profile must have `profile ` prefixed to the profile name. tf_aws.sdk=aws-sdk-go-v2 --- PASS: TestEndpointConfiguration (0.37s) --- PASS: TestEndpointConfiguration/no_config (0.02s) --- PASS: TestEndpointConfiguration/package_name_endpoint_config_overrides_aws_service_envvar (0.03s) --- PASS: TestEndpointConfiguration/package_name_endpoint_config_overrides_base_envvar (0.03s) --- PASS: TestEndpointConfiguration/service_aws_envvar_overrides_service_config_file (0.02s) --- PASS: TestEndpointConfiguration/base_endpoint_envvar (0.02s) --- PASS: TestEndpointConfiguration/service_config_file_overrides_base_config_file (0.01s) --- PASS: TestEndpointConfiguration/service_aws_envvar (0.01s) --- PASS: TestEndpointConfiguration/base_endpoint_envvar_overrides_service_config_file (0.01s) --- PASS: TestEndpointConfiguration/base_endpoint_envvar_overrides_base_config_file (0.02s) --- PASS: TestEndpointConfiguration/base_endpoint_config_file (0.01s) --- PASS: TestEndpointConfiguration/service_config_file (0.01s) --- PASS: TestEndpointConfiguration/use_fips_config_with_package_name_endpoint_config (0.03s) --- PASS: TestEndpointConfiguration/package_name_endpoint_config (0.03s) --- PASS: TestEndpointConfiguration/package_name_endpoint_config_overrides_service_config_file (0.03s) --- PASS: TestEndpointConfiguration/package_name_endpoint_config_overrides_base_config_file (0.03s) --- PASS: TestEndpointConfiguration/service_aws_envvar_overrides_base_envvar (0.01s) --- PASS: TestEndpointConfiguration/service_aws_envvar_overrides_base_config_file (0.01s) --- PASS: TestEndpointConfiguration/use_fips_config (0.02s) === RUN TestAccPollyVoicesDataSource_basic === PAUSE TestAccPollyVoicesDataSource_basic === RUN TestAccPollyVoicesDataSource_languageCode === PAUSE TestAccPollyVoicesDataSource_languageCode === CONT TestAccPollyVoicesDataSource_basic === CONT TestAccPollyVoicesDataSource_languageCode voices_data_source_test.go:48: stopping VCR recorder voices_data_source_test.go:48: randomness source not found for test TestAccPollyVoicesDataSource_languageCode --- PASS: TestAccPollyVoicesDataSource_languageCode (7.20s) === NAME TestAccPollyVoicesDataSource_basic voices_data_source_test.go:20: stopping VCR recorder voices_data_source_test.go:20: randomness source not found for test TestAccPollyVoicesDataSource_basic --- PASS: TestAccPollyVoicesDataSource_basic (7.24s) PASS ok github.com/hashicorp/terraform-provider-aws/internal/service/polly 14.139s ``` --- internal/service/polly/voices_data_source_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/service/polly/voices_data_source_test.go b/internal/service/polly/voices_data_source_test.go index ed4041b2b01e..39ea53213b59 100644 --- a/internal/service/polly/voices_data_source_test.go +++ b/internal/service/polly/voices_data_source_test.go @@ -17,7 +17,7 @@ func TestAccPollyVoicesDataSource_basic(t *testing.T) { ctx := acctest.Context(t) dataSourceName := "data.aws_polly_voices.test" - resource.ParallelTest(t, resource.TestCase{ + acctest.ParallelTest(ctx, t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) acctest.PreCheckPartitionHasService(t, names.PollyEndpointID) @@ -45,7 +45,7 @@ func TestAccPollyVoicesDataSource_languageCode(t *testing.T) { ctx := acctest.Context(t) dataSourceName := "data.aws_polly_voices.test" - resource.ParallelTest(t, resource.TestCase{ + acctest.ParallelTest(ctx, t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) acctest.PreCheckPartitionHasService(t, names.PollyEndpointID) From 1360a060ec118a4364675e3f60d3ea34d62c806b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 18 Sep 2025 17:22:55 +0000 Subject: [PATCH 11/81] Bump github.com/hashicorp/terraform-plugin-framework-timeouts Bumps the terraform-devex group with 1 update in the / directory: [github.com/hashicorp/terraform-plugin-framework-timeouts](https://github.com/hashicorp/terraform-plugin-framework-timeouts). Updates `github.com/hashicorp/terraform-plugin-framework-timeouts` from 0.5.0 to 0.6.0 - [Release notes](https://github.com/hashicorp/terraform-plugin-framework-timeouts/releases) - [Changelog](https://github.com/hashicorp/terraform-plugin-framework-timeouts/blob/main/CHANGELOG.md) - [Commits](https://github.com/hashicorp/terraform-plugin-framework-timeouts/compare/v0.5.0...v0.6.0) --- updated-dependencies: - dependency-name: github.com/hashicorp/terraform-plugin-framework-timeouts dependency-version: 0.6.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: terraform-devex ... 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 6a6d69cdb6a9..f5fff2b23af4 100644 --- a/go.mod +++ b/go.mod @@ -293,7 +293,7 @@ require ( github.com/hashicorp/terraform-json v0.27.2 github.com/hashicorp/terraform-plugin-framework v1.16.0 github.com/hashicorp/terraform-plugin-framework-jsontypes v0.2.0 - github.com/hashicorp/terraform-plugin-framework-timeouts v0.5.0 + github.com/hashicorp/terraform-plugin-framework-timeouts v0.6.0 github.com/hashicorp/terraform-plugin-framework-timetypes v0.5.0 github.com/hashicorp/terraform-plugin-framework-validators v0.18.0 github.com/hashicorp/terraform-plugin-go v0.29.0 diff --git a/go.sum b/go.sum index f290a0d72fe4..116862d3c6f4 100644 --- a/go.sum +++ b/go.sum @@ -673,8 +673,8 @@ github.com/hashicorp/terraform-plugin-framework v1.16.0 h1:tP0f+yJg0Z672e7levixD github.com/hashicorp/terraform-plugin-framework v1.16.0/go.mod h1:0xFOxLy5lRzDTayc4dzK/FakIgBhNf/lC4499R9cV4Y= github.com/hashicorp/terraform-plugin-framework-jsontypes v0.2.0 h1:SJXL5FfJJm17554Kpt9jFXngdM6fXbnUnZ6iT2IeiYA= github.com/hashicorp/terraform-plugin-framework-jsontypes v0.2.0/go.mod h1:p0phD0IYhsu9bR4+6OetVvvH59I6LwjXGnTVEr8ox6E= -github.com/hashicorp/terraform-plugin-framework-timeouts v0.5.0 h1:I/N0g/eLZ1ZkLZXUQ0oRSXa8YG/EF0CEuQP1wXdrzKw= -github.com/hashicorp/terraform-plugin-framework-timeouts v0.5.0/go.mod h1:t339KhmxnaF4SzdpxmqW8HnQBHVGYazwtfxU0qCs4eE= +github.com/hashicorp/terraform-plugin-framework-timeouts v0.6.0 h1:Vv16e7EW4nT9668IV0RhdpEmnLl0im7BZx6J+QMlUkg= +github.com/hashicorp/terraform-plugin-framework-timeouts v0.6.0/go.mod h1:rpHo9hZLn4vEkvNL5xsSdLRdaDZKSinuc0xL+BdOpVA= github.com/hashicorp/terraform-plugin-framework-timetypes v0.5.0 h1:v3DapR8gsp3EM8fKMh6up9cJUFQ2iRaFsYLP8UJnCco= github.com/hashicorp/terraform-plugin-framework-timetypes v0.5.0/go.mod h1:c3PnGE9pHBDfdEVG9t1S1C9ia5LW+gkFR0CygXlM8ak= github.com/hashicorp/terraform-plugin-framework-validators v0.18.0 h1:OQnlOt98ua//rCw+QhBbSqfW3QbwtVrcdWeQN5gI3Hw= From 237f7bc89dbdf025855db1d1bd589c749331cf0b Mon Sep 17 00:00:00 2001 From: Jared Baker Date: Thu, 18 Sep 2025 13:55:04 -0400 Subject: [PATCH 12/81] .ci/scripts: support for `new-action` entry types --- .ci/scripts/changelog.tmpl | 2 +- .ci/scripts/release-note.tmpl | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.ci/scripts/changelog.tmpl b/.ci/scripts/changelog.tmpl index 0a8fa5a760a2..cc65ade01897 100644 --- a/.ci/scripts/changelog.tmpl +++ b/.ci/scripts/changelog.tmpl @@ -15,7 +15,7 @@ NOTES: {{ end -}} {{- end -}} -{{- $features := combineTypes .NotesByType.feature (index .NotesByType "new-resource" ) (index .NotesByType "new-data-source") (index .NotesByType "new-ephemeral") (index .NotesByType "new-function") (index .NotesByType "new-guide") }} +{{- $features := combineTypes .NotesByType.feature (index .NotesByType "new-resource" ) (index .NotesByType "new-data-source") (index .NotesByType "new-ephemeral") (index .NotesByType "new-function") (index .NotesByType "new-action") (index .NotesByType "new-guide") }} {{- if $features }} FEATURES: diff --git a/.ci/scripts/release-note.tmpl b/.ci/scripts/release-note.tmpl index c687085d924d..55ac0e89c6e4 100644 --- a/.ci/scripts/release-note.tmpl +++ b/.ci/scripts/release-note.tmpl @@ -7,6 +7,8 @@ * **New Ephemeral Resource:** `{{.Body}}` ([#{{- .Issue -}}](https://github.com/hashicorp/terraform-provider-aws/issues/{{- .Issue -}})) {{- else if eq "new-function" .Type -}} * **New Function:** `{{.Body}}` ([#{{- .Issue -}}](https://github.com/hashicorp/terraform-provider-aws/issues/{{- .Issue -}})) +{{- else if eq "new-action" .Type -}} +* **New Action:** `{{.Body}}` ([#{{- .Issue -}}](https://github.com/hashicorp/terraform-provider-aws/issues/{{- .Issue -}})) {{- else if eq "new-guide" .Type -}} * **New Guide:** `{{.Body}}` ([#{{- .Issue -}}](https://github.com/hashicorp/terraform-provider-aws/issues/{{- .Issue -}})) {{- else -}} From 47fdfbbb7231eec96e238d2e2b3b5bd45dbd7b7b Mon Sep 17 00:00:00 2001 From: Jared Baker Date: Thu, 18 Sep 2025 14:13:53 -0400 Subject: [PATCH 13/81] infrastructure/repository: add `new-action` label --- infrastructure/repository/labels-workflow.tf | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/infrastructure/repository/labels-workflow.tf b/infrastructure/repository/labels-workflow.tf index 4deb608b194f..8620a49b8e07 100644 --- a/infrastructure/repository/labels-workflow.tf +++ b/infrastructure/repository/labels-workflow.tf @@ -109,6 +109,10 @@ variable "workflow_labels" { color = "dc477d", # color:consul description = "Waiting for first response or review from a maintainer." }, + "new-action" = { + color = "ac72f0", # color:terraform (link on black) + description = "Introduces a new action." + }, "new-data-source" = { color = "ac72f0", # color:terraform (link on black) description = "Introduces a new data source." From 094529530b989d8402d8119667ec1ac70f9812d2 Mon Sep 17 00:00:00 2001 From: Dirk Avery Date: Thu, 18 Sep 2025 18:19:39 -0400 Subject: [PATCH 14/81] Add back actions to changelog --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a8ef7c269ad7..56c8cd6021a2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,11 @@ FEATURES: +* **New Action:** `aws_cloudfront_create_invalidation` ([#43955](https://github.com/hashicorp/terraform-provider-aws/issues/43955)) +* **New Action:** `aws_ec2_stop_instance` ([#43700](https://github.com/hashicorp/terraform-provider-aws/issues/43700)) +* **New Action:** `aws_lambda_invoke` ([#43972](https://github.com/hashicorp/terraform-provider-aws/issues/43972)) +* **New Action:** `aws_ses_send_email` ([#44214](https://github.com/hashicorp/terraform-provider-aws/issues/44214)) +* **New Action:** `aws_sns_publish` ([#44232](https://github.com/hashicorp/terraform-provider-aws/issues/44232)) * **New Data Source:** `aws_billing_views` ([#44272](https://github.com/hashicorp/terraform-provider-aws/issues/44272)) * **New Data Source:** `aws_odb_cloud_autonomous_vm_cluster` ([#43809](https://github.com/hashicorp/terraform-provider-aws/issues/43809)) * **New Data Source:** `aws_odb_cloud_exadata_infrastructure` ([#43650](https://github.com/hashicorp/terraform-provider-aws/issues/43650)) From 5c9a61aa9000732fd0f8364a52563b52f683df92 Mon Sep 17 00:00:00 2001 From: Dirk Avery Date: Fri, 19 Sep 2025 11:31:39 -0400 Subject: [PATCH 15/81] Update identity interceptor --- .../provider/sdkv2/identity_interceptor.go | 42 ++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/internal/provider/sdkv2/identity_interceptor.go b/internal/provider/sdkv2/identity_interceptor.go index e9b5cbe984ed..bdf6cbb783ff 100644 --- a/internal/provider/sdkv2/identity_interceptor.go +++ b/internal/provider/sdkv2/identity_interceptor.go @@ -29,8 +29,13 @@ func (r identityInterceptor) run(ctx context.Context, opts crudInterceptorOption case After: switch why { case Create, Read, Update: + // For Update operations on resources with immutable identity, + // still set identity if it has null values (e.g., after provider upgrade from pre-identity version) if why == Update && !(r.identitySpec.IsMutable && r.identitySpec.IsSetOnUpdate) { - break + // Skip setting identity unless it has null values + if !identityHasNullValues(d, r.identitySpec) { + break + } } if d.Id() == "" { break @@ -68,6 +73,41 @@ func (r identityInterceptor) run(ctx context.Context, opts crudInterceptorOption return diags } +// identityHasNullValues checks if the resource's identity contains any null values. +// This typically occurs when a resource was created with a pre-identity version of the provider +// and then upgraded to a version that supports identity, but a failed update operation +// resulted in null identity values being written to state. +// +// Returns true only if identity data exists but contains null/empty values. +// Returns false if no identity data exists at all (which is expected for some resources). +func identityHasNullValues(d schemaResourceData, identitySpec *inttypes.Identity) bool { + identity, err := d.Identity() + if err != nil { + // If we can't get identity at all, this is not the null values bug + return false + } + + // Check if identity data exists and has been initialized + hasAnyIdentityData := false + hasNullValues := false + + // Check each identity attribute + for _, attr := range identitySpec.Attributes { + value := identity.Get(attr.Name()) + if value != "" { + // Found non-empty value, so identity data exists + hasAnyIdentityData = true + } else { + // Found empty/null value + hasNullValues = true + } + } + + // Only return true if identity data exists but some values are null + // This indicates the specific bug scenario we're trying to fix + return hasAnyIdentityData && hasNullValues +} + func getAttributeOk(d schemaResourceData, name string) (string, bool) { if name == "id" { return d.Id(), true From 8408ecfb935b5eccd3ed79dad1a43e107bd9f36c Mon Sep 17 00:00:00 2001 From: Dirk Avery Date: Fri, 19 Sep 2025 11:41:28 -0400 Subject: [PATCH 16/81] More robust approach for, e.g., route 53 record --- .../provider/sdkv2/identity_interceptor.go | 41 +++++++++++-------- 1 file changed, 24 insertions(+), 17 deletions(-) diff --git a/internal/provider/sdkv2/identity_interceptor.go b/internal/provider/sdkv2/identity_interceptor.go index bdf6cbb783ff..8546d523144c 100644 --- a/internal/provider/sdkv2/identity_interceptor.go +++ b/internal/provider/sdkv2/identity_interceptor.go @@ -73,13 +73,14 @@ func (r identityInterceptor) run(ctx context.Context, opts crudInterceptorOption return diags } -// identityHasNullValues checks if the resource's identity contains any null values. +// identityHasNullValues checks if the resource's identity contains any null values +// that indicate the upgrade bug scenario. // This typically occurs when a resource was created with a pre-identity version of the provider // and then upgraded to a version that supports identity, but a failed update operation // resulted in null identity values being written to state. // -// Returns true only if identity data exists but contains null/empty values. -// Returns false if no identity data exists at all (which is expected for some resources). +// Returns true only if identity data exists but ALL REQUIRED attributes are null/empty. +// Returns false if no identity data exists at all, or if only optional attributes are empty. func identityHasNullValues(d schemaResourceData, identitySpec *inttypes.Identity) bool { identity, err := d.Identity() if err != nil { @@ -87,25 +88,31 @@ func identityHasNullValues(d schemaResourceData, identitySpec *inttypes.Identity return false } - // Check if identity data exists and has been initialized - hasAnyIdentityData := false - hasNullValues := false + // Check if any identity attribute has a value + hasAnyIdentityValue := false + for _, attr := range identitySpec.Attributes { + if identity.Get(attr.Name()) != "" { + hasAnyIdentityValue = true + break + } + } - // Check each identity attribute + if !hasAnyIdentityValue { + // No identity data at all - not the bug scenario + return false + } + + // Check if all required attributes are null (the bug scenario) + // Optional attributes (like Route53 set_identifier) can legitimately be empty for _, attr := range identitySpec.Attributes { - value := identity.Get(attr.Name()) - if value != "" { - // Found non-empty value, so identity data exists - hasAnyIdentityData = true - } else { - // Found empty/null value - hasNullValues = true + if attr.Required() && identity.Get(attr.Name()) == "" { + // Found a required attribute that's null - this indicates the bug + return true } } - // Only return true if identity data exists but some values are null - // This indicates the specific bug scenario we're trying to fix - return hasAnyIdentityData && hasNullValues + // Has identity data and all required attributes have values - not the bug + return false } func getAttributeOk(d schemaResourceData, name string) (string, bool) { From 57faa10e02b3d082770c9758a6fae5c3e13dfa90 Mon Sep 17 00:00:00 2001 From: Dirk Avery Date: Fri, 19 Sep 2025 11:49:54 -0400 Subject: [PATCH 17/81] Update to match plugin sdk --- .../provider/sdkv2/identity_interceptor.go | 25 +++++++++---------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/internal/provider/sdkv2/identity_interceptor.go b/internal/provider/sdkv2/identity_interceptor.go index 8546d523144c..2d39342724b2 100644 --- a/internal/provider/sdkv2/identity_interceptor.go +++ b/internal/provider/sdkv2/identity_interceptor.go @@ -73,14 +73,13 @@ func (r identityInterceptor) run(ctx context.Context, opts crudInterceptorOption return diags } -// identityHasNullValues checks if the resource's identity contains any null values +// identityHasNullValues checks if the resource's identity contains null values // that indicate the upgrade bug scenario. -// This typically occurs when a resource was created with a pre-identity version of the provider -// and then upgraded to a version that supports identity, but a failed update operation -// resulted in null identity values being written to state. +// This matches the Plugin SDK logic from https://github.com/hashicorp/terraform-plugin-sdk/pull/1513 +// which checks if ALL identity values are null. // -// Returns true only if identity data exists but ALL REQUIRED attributes are null/empty. -// Returns false if no identity data exists at all, or if only optional attributes are empty. +// Returns true only if identity data exists but ALL attributes are null/empty. +// Returns false if no identity data exists at all, or if any attribute has a value. func identityHasNullValues(d schemaResourceData, identitySpec *inttypes.Identity) bool { identity, err := d.Identity() if err != nil { @@ -102,17 +101,17 @@ func identityHasNullValues(d schemaResourceData, identitySpec *inttypes.Identity return false } - // Check if all required attributes are null (the bug scenario) - // Optional attributes (like Route53 set_identifier) can legitimately be empty + // Match Plugin SDK logic: check if ALL identity values are null + // This is the exact scenario that indicates the upgrade bug + isFullyNull := true for _, attr := range identitySpec.Attributes { - if attr.Required() && identity.Get(attr.Name()) == "" { - // Found a required attribute that's null - this indicates the bug - return true + if identity.Get(attr.Name()) != "" { + isFullyNull = false + break } } - // Has identity data and all required attributes have values - not the bug - return false + return isFullyNull } func getAttributeOk(d schemaResourceData, name string) (string, bool) { From d14e5276409e6c63c8fece47b21d64d22b2164db Mon Sep 17 00:00:00 2001 From: Dirk Avery Date: Fri, 19 Sep 2025 11:59:58 -0400 Subject: [PATCH 18/81] More conservative approach --- .../provider/sdkv2/identity_interceptor.go | 47 +++++++------------ 1 file changed, 16 insertions(+), 31 deletions(-) diff --git a/internal/provider/sdkv2/identity_interceptor.go b/internal/provider/sdkv2/identity_interceptor.go index 2d39342724b2..978ada799021 100644 --- a/internal/provider/sdkv2/identity_interceptor.go +++ b/internal/provider/sdkv2/identity_interceptor.go @@ -73,45 +73,30 @@ func (r identityInterceptor) run(ctx context.Context, opts crudInterceptorOption return diags } -// identityHasNullValues checks if the resource's identity contains null values -// that indicate the upgrade bug scenario. -// This matches the Plugin SDK logic from https://github.com/hashicorp/terraform-plugin-sdk/pull/1513 -// which checks if ALL identity values are null. +// identityHasNullValues checks if the current identity in state indicates the upgrade bug scenario. +// The bug occurs when a resource was created pre-identity, upgraded to identity-supporting version, +// and a failed update operation resulted in null identity values being written to state. // -// Returns true only if identity data exists but ALL attributes are null/empty. -// Returns false if no identity data exists at all, or if any attribute has a value. +// We need to be conservative here - only trigger when we're certain it's the bug scenario, +// not for normal fresh resources that haven't had identity set yet. +// +// Returns true only if identity appears to have been explicitly set to all null values. func identityHasNullValues(d schemaResourceData, identitySpec *inttypes.Identity) bool { - identity, err := d.Identity() + _, err := d.Identity() if err != nil { - // If we can't get identity at all, this is not the null values bug + // If we can't get identity at all, this is not the bug return false } - // Check if any identity attribute has a value - hasAnyIdentityValue := false - for _, attr := range identitySpec.Attributes { - if identity.Get(attr.Name()) != "" { - hasAnyIdentityValue = true - break - } - } - - if !hasAnyIdentityValue { - // No identity data at all - not the bug scenario - return false - } + // For now, be very conservative and don't trigger the fix for test scenarios + // In a real upgrade scenario, there would be more context about the previous state + // The Plugin SDK changes should prevent the bug from occurring in the first place - // Match Plugin SDK logic: check if ALL identity values are null - // This is the exact scenario that indicates the upgrade bug - isFullyNull := true - for _, attr := range identitySpec.Attributes { - if identity.Get(attr.Name()) != "" { - isFullyNull = false - break - } - } + // TODO: This could be enhanced to detect the specific bug scenario more precisely + // by checking if the resource has other indicators that it went through the upgrade bug + // (e.g., checking resource age, state history, etc.) - return isFullyNull + return false } func getAttributeOk(d schemaResourceData, name string) (string, bool) { From 9675e74608c49a87a0c10aed09223d33fe2b23f2 Mon Sep 17 00:00:00 2001 From: Dirk Avery Date: Fri, 19 Sep 2025 12:13:18 -0400 Subject: [PATCH 19/81] Better logic, improved tests --- .../provider/sdkv2/identity_interceptor.go | 38 ++++---- .../sdkv2/identity_interceptor_test.go | 89 ++++++++++++++++++- 2 files changed, 107 insertions(+), 20 deletions(-) diff --git a/internal/provider/sdkv2/identity_interceptor.go b/internal/provider/sdkv2/identity_interceptor.go index 978ada799021..26f5e2d34d07 100644 --- a/internal/provider/sdkv2/identity_interceptor.go +++ b/internal/provider/sdkv2/identity_interceptor.go @@ -73,30 +73,36 @@ func (r identityInterceptor) run(ctx context.Context, opts crudInterceptorOption return diags } -// identityHasNullValues checks if the current identity in state indicates the upgrade bug scenario. -// The bug occurs when a resource was created pre-identity, upgraded to identity-supporting version, -// and a failed update operation resulted in null identity values being written to state. +// identityHasNullValues checks if ALL identity attributes are fully null, +// which indicates the specific bug scenario from failed non-refresh applies. // -// We need to be conservative here - only trigger when we're certain it's the bug scenario, -// not for normal fresh resources that haven't had identity set yet. +// The reported error occurs when all identity attributes are fully null due to +// failed non-refresh applies (terraform apply -refresh=false) where the read op +// does not have a chance to set identity before the failure. // -// Returns true only if identity appears to have been explicitly set to all null values. +// Returns true ONLY when ALL identity attributes are null/empty. +// If any attribute has a value, we assume it was set by a previous Create/Read +// and should not proceed with setting identity on Update. func identityHasNullValues(d schemaResourceData, identitySpec *inttypes.Identity) bool { - _, err := d.Identity() + identity, err := d.Identity() if err != nil { - // If we can't get identity at all, this is not the bug + // If we can't get identity at all, this is not the bug scenario return false } - // For now, be very conservative and don't trigger the fix for test scenarios - // In a real upgrade scenario, there would be more context about the previous state - // The Plugin SDK changes should prevent the bug from occurring in the first place - - // TODO: This could be enhanced to detect the specific bug scenario more precisely - // by checking if the resource has other indicators that it went through the upgrade bug - // (e.g., checking resource age, state history, etc.) + // Check if ALL identity attributes are null/empty + // This matches the exact scenario described in the reproduction + for _, attr := range identitySpec.Attributes { + value := identity.Get(attr.Name()) + if value != "" { + // Found a non-null value, so this is not the bug scenario + // The identity was set by a previous Create/Read op + return false + } + } - return false + // All attributes are null - this is the bug scenario + return true } func getAttributeOk(d schemaResourceData, name string) (string, bool) { diff --git a/internal/provider/sdkv2/identity_interceptor_test.go b/internal/provider/sdkv2/identity_interceptor_test.go index 2c0a47e3dce3..06165e55e139 100644 --- a/internal/provider/sdkv2/identity_interceptor_test.go +++ b/internal/provider/sdkv2/identity_interceptor_test.go @@ -189,25 +189,29 @@ func TestIdentityInterceptor_Update(t *testing.T) { attrName string identitySpec inttypes.Identity ExpectIdentity bool + Description string }{ - "not mutable": { + "not mutable - fresh resource": { attrName: "name", identitySpec: regionalSingleParameterizedIdentitySpec("name"), - ExpectIdentity: false, + ExpectIdentity: true, // NOW EXPECTS IDENTITY because all attributes are null (bug scenario) + Description: "Immutable identity with all null attributes should get populated (bug fix scenario)", }, "v6.0 SDK fix": { attrName: "name", identitySpec: regionalSingleParameterizedIdentitySpec("name", inttypes.WithV6_0SDKv2Fix(), ), - ExpectIdentity: false, + ExpectIdentity: true, // This makes identity mutable, so always expect it + Description: "Mutable identity (v6.0 SDK fix) should always get populated on Update", }, "identity fix": { attrName: "name", identitySpec: regionalSingleParameterizedIdentitySpec("name", inttypes.WithIdentityFix(), ), - ExpectIdentity: false, + ExpectIdentity: true, // This makes identity mutable, so always expect it + Description: "Mutable identity (identity fix) should always get populated on Update", }, "mutable": { attrName: "name", @@ -215,6 +219,7 @@ func TestIdentityInterceptor_Update(t *testing.T) { inttypes.WithMutableIdentity(), ), ExpectIdentity: true, + Description: "Explicitly mutable identity should always get populated on Update", }, } @@ -273,6 +278,82 @@ func TestIdentityInterceptor_Update(t *testing.T) { } } +func TestIdentityInterceptor_Update_PartialNullValues(t *testing.T) { + t.Parallel() + + accountID := "123456789012" + region := "us-west-2" //lintignore:AWSAT003 + name := "a_name" + + resourceSchema := map[string]*schema.Schema{ + "name": { + Type: schema.TypeString, + Required: true, + }, + "type": { + Type: schema.TypeString, + Optional: true, + }, + "region": attribute.Region(), + } + + client := mockClient{ + accountID: accountID, + region: region, + } + + ctx := t.Context() + + // Test immutable identity with some values already set (partial null scenario) + identitySpec := regionalSingleParameterizedIdentitySpec("name") + invocation := newIdentityInterceptor(&identitySpec) + interceptor := invocation.interceptor.(identityInterceptor) + + identitySchema := identity.NewIdentitySchema(identitySpec) + + d := schema.TestResourceDataWithIdentityRaw(t, resourceSchema, identitySchema, nil) + d.SetId("some_id") + d.Set("name", name) + d.Set("region", region) + d.Set("type", "some_type") + + // Simulate partial identity values (some set, some null) by setting some identity attributes + identity, err := d.Identity() + if err != nil { + t.Fatalf("unexpected error getting identity: %v", err) + } + + // Set only account_id, leaving region and name null + // This simulates a scenario where identity was partially set (not the full null bug scenario) + identity.Set(names.AttrAccountID, accountID) + + opts := crudInterceptorOptions{ + c: client, + d: d, + when: After, + why: Update, + } + + interceptor.run(ctx, opts) + + identity, err = d.Identity() + if err != nil { + t.Fatalf("unexpected error getting identity: %v", err) + } + + // For partial null scenario, identity should NOT be updated on immutable identity + // because not ALL values are null + if e, a := accountID, identity.Get(names.AttrAccountID); e != a { + t.Errorf("expected account ID to remain %q, got %q", e, a) + } + if identity.Get(names.AttrRegion) != "" { + t.Errorf("expected region to remain empty, got %q", identity.Get(names.AttrRegion)) + } + if identity.Get("name") != "" { + t.Errorf("expected name to remain empty, got %q", identity.Get("name")) + } +} + func regionalSingleParameterizedIdentitySpec(attrName string, opts ...inttypes.IdentityOptsFunc) inttypes.Identity { return inttypes.RegionalSingleParameterIdentity(attrName, opts...) } From d14c2ab1895b29c058fa144c1ca3f5d966a09adf Mon Sep 17 00:00:00 2001 From: Dirk Avery Date: Fri, 19 Sep 2025 12:16:01 -0400 Subject: [PATCH 20/81] Add issue to comments --- internal/provider/sdkv2/identity_interceptor.go | 1 + 1 file changed, 1 insertion(+) diff --git a/internal/provider/sdkv2/identity_interceptor.go b/internal/provider/sdkv2/identity_interceptor.go index 26f5e2d34d07..fa81babb421a 100644 --- a/internal/provider/sdkv2/identity_interceptor.go +++ b/internal/provider/sdkv2/identity_interceptor.go @@ -75,6 +75,7 @@ func (r identityInterceptor) run(ctx context.Context, opts crudInterceptorOption // identityHasNullValues checks if ALL identity attributes are fully null, // which indicates the specific bug scenario from failed non-refresh applies. +// See https://github.com/hashicorp/terraform-provider-aws/issues/44330 // // The reported error occurs when all identity attributes are fully null due to // failed non-refresh applies (terraform apply -refresh=false) where the read op From 2ec6eea5db35dd5635be150554e11b55393bef82 Mon Sep 17 00:00:00 2001 From: Dirk Avery Date: Fri, 19 Sep 2025 12:37:03 -0400 Subject: [PATCH 21/81] Add test for provider upgrade bug scenario --- .../sdkv2/identity_interceptor_test.go | 235 ++++++++++++++++++ 1 file changed, 235 insertions(+) diff --git a/internal/provider/sdkv2/identity_interceptor_test.go b/internal/provider/sdkv2/identity_interceptor_test.go index 06165e55e139..b1f27b1f81d3 100644 --- a/internal/provider/sdkv2/identity_interceptor_test.go +++ b/internal/provider/sdkv2/identity_interceptor_test.go @@ -398,3 +398,238 @@ func (c mockClient) ValidateInContextRegionInPartition(ctx context.Context) erro func (c mockClient) AwsConfig(context.Context) aws.Config { // nosemgrep:ci.aws-in-func-name panic("not implemented") //lintignore:R009 } + +// TestIdentityInterceptor_ProviderUpgradeBugScenario tests the specific bug reported +// where provider upgrade from pre-identity version to identity-enabled version causes +// "Missing Resource Identity After Update" error during terraform apply operations. +// +// This simulates the exact scenario reported in the GitHub issue where aws_s3_object +// (and similar resources) fail after provider upgrade when Update operations occur +// before the identity has been populated by a Read operation. +func TestIdentityInterceptor_ProviderUpgradeBugScenario(t *testing.T) { + t.Parallel() + + accountID := "123456789012" + region := "us-west-2" //lintignore:AWSAT003 + bucket := "test-bucket" + key := "test-key" + + // Simulate S3 object-like resource schema (bucket + key identity) + resourceSchema := map[string]*schema.Schema{ + names.AttrBucket: { + Type: schema.TypeString, + Required: true, + ForceNew: true, + }, + names.AttrKey: { + Type: schema.TypeString, + Required: true, + ForceNew: true, + }, + names.AttrContent: { + Type: schema.TypeString, + Optional: true, + }, + "region": attribute.Region(), + } + + client := mockClient{ + accountID: accountID, + region: region, + } + + ctx := context.Background() + + // Create identity spec similar to S3 object: regional with bucket and key + identitySpec := s3ObjectLikeIdentitySpec() + + invocation := newIdentityInterceptor(&identitySpec) + interceptor := invocation.interceptor.(identityInterceptor) + + identitySchema := identity.NewIdentitySchema(identitySpec) + + // Create resource data with identity, but simulate the "provider upgrade" scenario + // by leaving the identity completely empty (all null values) + d := schema.TestResourceDataWithIdentityRaw(t, resourceSchema, identitySchema, nil) + d.SetId("test-bucket/test-key") // Resource exists in state + d.Set(names.AttrBucket, bucket) + d.Set(names.AttrKey, key) + d.Set(names.AttrContent, "original-content") + d.Set("region", region) + + // CRITICAL: Do NOT pre-populate identity - this simulates the upgrade scenario + // where identity exists in schema but all attributes are null/empty + identity, err := d.Identity() + if err != nil { + t.Fatalf("unexpected error getting identity: %v", err) + } + + // Verify identity starts fully null (simulating pre-identity provider version) + if identity.Get(names.AttrAccountID) != "" { + t.Fatalf("expected account_id to start null, got %q", identity.Get(names.AttrAccountID)) + } + if identity.Get(names.AttrRegion) != "" { + t.Fatalf("expected region to start null, got %q", identity.Get(names.AttrRegion)) + } + if identity.Get(names.AttrBucket) != "" { + t.Fatalf("expected bucket to start null, got %q", identity.Get(names.AttrBucket)) + } + if identity.Get(names.AttrKey) != "" { + t.Fatalf("expected key to start null, got %q", identity.Get(names.AttrKey)) + } + + // Simulate the bug scenario: Update operation occurs (e.g., content change) + // without a Read operation first to populate identity + opts := crudInterceptorOptions{ + c: client, + d: d, + when: After, + why: Update, // This is where the bug occurred! + } + + // Run the identity interceptor - this should NOW populate identity + // instead of skipping it (which caused the original bug) + diags := interceptor.run(ctx, opts) + if diags.HasError() { + t.Fatalf("unexpected error running interceptor: %v", diags) + } + + // Verify the fix: identity should now be fully populated + identity, err = d.Identity() + if err != nil { + t.Fatalf("unexpected error getting identity after interceptor: %v", err) + } + + // These assertions verify the bug is fixed + if e, a := accountID, identity.Get(names.AttrAccountID); e != a { + t.Errorf("expected account ID %q, got %q (identity not populated - bug still exists!)", e, a) + } + if e, a := region, identity.Get(names.AttrRegion); e != a { + t.Errorf("expected region %q, got %q (identity not populated - bug still exists!)", e, a) + } + if e, a := bucket, identity.Get(names.AttrBucket); e != a { + t.Errorf("expected bucket %q, got %q (identity not populated - bug still exists!)", e, a) + } + if e, a := key, identity.Get(names.AttrKey); e != a { + t.Errorf("expected key %q, got %q (identity not populated - bug still exists!)", e, a) + } + + t.Logf("SUCCESS: Provider upgrade bug scenario handled correctly - identity populated on Update when all attributes were null") +} + +// TestIdentityInterceptor_ProviderUpgradeBugScenario_PartiallyPopulated tests that +// we don't over-correct and populate identity when it's already partially set +// (which would be the normal case after the first Read operation post-upgrade) +func TestIdentityInterceptor_ProviderUpgradeBugScenario_partiallyPopulated(t *testing.T) { + t.Parallel() + + accountID := "123456789012" + region := "us-west-2" //lintignore:AWSAT003 + bucket := "test-bucket" + key := "test-key" + + resourceSchema := map[string]*schema.Schema{ + names.AttrBucket: { + Type: schema.TypeString, + Required: true, + ForceNew: true, + }, + names.AttrKey: { + Type: schema.TypeString, + Required: true, + ForceNew: true, + }, + names.AttrContent: { + Type: schema.TypeString, + Optional: true, + }, + "region": attribute.Region(), + } + + client := mockClient{ + accountID: accountID, + region: region, + } + + ctx := context.Background() + + identitySpec := s3ObjectLikeIdentitySpec() + + invocation := newIdentityInterceptor(&identitySpec) + interceptor := invocation.interceptor.(identityInterceptor) + + identitySchema := identity.NewIdentitySchema(identitySpec) + + d := schema.TestResourceDataWithIdentityRaw(t, resourceSchema, identitySchema, nil) + d.SetId("test-bucket/test-key") + d.Set(names.AttrBucket, bucket) + d.Set(names.AttrKey, key) + d.Set(names.AttrContent, "updated-content") + d.Set("region", region) + + // Simulate partial population (e.g., after first Read post-upgrade) + identity, err := d.Identity() + if err != nil { + t.Fatalf("unexpected error getting identity: %v", err) + } + + // Set some but not all identity attributes + identity.Set(names.AttrAccountID, accountID) + identity.Set(names.AttrRegion, region) + // Leave bucket and key null to simulate partial population + + // Run Update operation + opts := crudInterceptorOptions{ + c: client, + d: d, + when: After, + why: Update, + } + + diags := interceptor.run(ctx, opts) + if diags.HasError() { + t.Fatalf("unexpected error running interceptor: %v", diags) + } + + // Verify identity is NOT re-populated for partial null scenario + identity, err = d.Identity() + if err != nil { + t.Fatalf("unexpected error getting identity after interceptor: %v", err) + } + + // Account ID and region should remain as set + if e, a := accountID, identity.Get(names.AttrAccountID); e != a { + t.Errorf("expected account ID to remain %q, got %q", e, a) + } + if e, a := region, identity.Get(names.AttrRegion); e != a { + t.Errorf("expected region to remain %q, got %q", e, a) + } + + // Bucket and key should remain null (not populated because not ALL were null) + if identity.Get(names.AttrBucket) != "" { + t.Errorf("expected bucket to remain null, got %q", identity.Get(names.AttrBucket)) + } + if identity.Get(names.AttrKey) != "" { + t.Errorf("expected key to remain null, got %q", identity.Get(names.AttrKey)) + } + + t.Logf("SUCCESS: Partial null scenario handled correctly - identity NOT re-populated when some attributes already set") +} + +// s3ObjectLikeIdentitySpec creates an identity spec similar to S3 objects +// with multiple parameters (bucket and key) for testing the provider upgrade scenario +func s3ObjectLikeIdentitySpec() inttypes.Identity { + return inttypes.Identity{ + Attributes: []inttypes.IdentityAttribute{ + inttypes.StringIdentityAttribute(names.AttrAccountID, false), + inttypes.StringIdentityAttribute(names.AttrRegion, false), + inttypes.StringIdentityAttribute(names.AttrBucket, true), + inttypes.StringIdentityAttribute(names.AttrKey, true), + }, + IsSingleParameter: false, + IsGlobalResource: false, + // Immutable identity (like real S3 object) - this is key to reproducing the bug + IsMutable: false, + IsSetOnUpdate: false, + } +} From 27dae51a52379c0e71c99e7f62211470a4beff26 Mon Sep 17 00:00:00 2001 From: Dirk Avery Date: Fri, 19 Sep 2025 12:49:19 -0400 Subject: [PATCH 22/81] Check errors --- internal/provider/sdkv2/identity_interceptor_test.go | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/internal/provider/sdkv2/identity_interceptor_test.go b/internal/provider/sdkv2/identity_interceptor_test.go index b1f27b1f81d3..0aff52d0a988 100644 --- a/internal/provider/sdkv2/identity_interceptor_test.go +++ b/internal/provider/sdkv2/identity_interceptor_test.go @@ -325,7 +325,9 @@ func TestIdentityInterceptor_Update_PartialNullValues(t *testing.T) { // Set only account_id, leaving region and name null // This simulates a scenario where identity was partially set (not the full null bug scenario) - identity.Set(names.AttrAccountID, accountID) + if err := identity.Set(names.AttrAccountID, accountID); err != nil { + t.Fatalf("unexpected error setting account_id in identity: %v", err) + } opts := crudInterceptorOptions{ c: client, @@ -574,8 +576,12 @@ func TestIdentityInterceptor_ProviderUpgradeBugScenario_partiallyPopulated(t *te } // Set some but not all identity attributes - identity.Set(names.AttrAccountID, accountID) - identity.Set(names.AttrRegion, region) + if err := identity.Set(names.AttrAccountID, accountID); err != nil { + t.Fatalf("unexpected error setting account_id in identity: %v", err) + } + if err := identity.Set(names.AttrRegion, region); err != nil { + t.Fatalf("unexpected error setting region in identity: %v", err) + } // Leave bucket and key null to simulate partial population // Run Update operation From 15d565ed7666f78f43c212c23700ed3d72065337 Mon Sep 17 00:00:00 2001 From: Dirk Avery Date: Fri, 19 Sep 2025 13:47:22 -0400 Subject: [PATCH 23/81] Remove Logf for successful tests --- internal/provider/sdkv2/identity_interceptor_test.go | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/internal/provider/sdkv2/identity_interceptor_test.go b/internal/provider/sdkv2/identity_interceptor_test.go index 0aff52d0a988..f1857bc574a4 100644 --- a/internal/provider/sdkv2/identity_interceptor_test.go +++ b/internal/provider/sdkv2/identity_interceptor_test.go @@ -404,6 +404,7 @@ func (c mockClient) AwsConfig(context.Context) aws.Config { // nosemgrep:ci.aws- // TestIdentityInterceptor_ProviderUpgradeBugScenario tests the specific bug reported // where provider upgrade from pre-identity version to identity-enabled version causes // "Missing Resource Identity After Update" error during terraform apply operations. +// See https://github.com/hashicorp/terraform-provider-aws/issues/44330 // // This simulates the exact scenario reported in the GitHub issue where aws_s3_object // (and similar resources) fail after provider upgrade when Update operations occur @@ -515,8 +516,6 @@ func TestIdentityInterceptor_ProviderUpgradeBugScenario(t *testing.T) { if e, a := key, identity.Get(names.AttrKey); e != a { t.Errorf("expected key %q, got %q (identity not populated - bug still exists!)", e, a) } - - t.Logf("SUCCESS: Provider upgrade bug scenario handled correctly - identity populated on Update when all attributes were null") } // TestIdentityInterceptor_ProviderUpgradeBugScenario_PartiallyPopulated tests that @@ -618,8 +617,6 @@ func TestIdentityInterceptor_ProviderUpgradeBugScenario_partiallyPopulated(t *te if identity.Get(names.AttrKey) != "" { t.Errorf("expected key to remain null, got %q", identity.Get(names.AttrKey)) } - - t.Logf("SUCCESS: Partial null scenario handled correctly - identity NOT re-populated when some attributes already set") } // s3ObjectLikeIdentitySpec creates an identity spec similar to S3 objects From ec41e3016b0b5ce7bc2f99dfe619afd26b8c689b Mon Sep 17 00:00:00 2001 From: Dirk Avery Date: Fri, 19 Sep 2025 14:06:48 -0400 Subject: [PATCH 24/81] Unit tests for identity has null values --- .../sdkv2/identity_interceptor_test.go | 389 +++++++++--------- 1 file changed, 188 insertions(+), 201 deletions(-) diff --git a/internal/provider/sdkv2/identity_interceptor_test.go b/internal/provider/sdkv2/identity_interceptor_test.go index f1857bc574a4..6e42e642438d 100644 --- a/internal/provider/sdkv2/identity_interceptor_test.go +++ b/internal/provider/sdkv2/identity_interceptor_test.go @@ -401,238 +401,225 @@ func (c mockClient) AwsConfig(context.Context) aws.Config { // nosemgrep:ci.aws- panic("not implemented") //lintignore:R009 } -// TestIdentityInterceptor_ProviderUpgradeBugScenario tests the specific bug reported -// where provider upgrade from pre-identity version to identity-enabled version causes -// "Missing Resource Identity After Update" error during terraform apply operations. -// See https://github.com/hashicorp/terraform-provider-aws/issues/44330 +// TestIdentityInterceptor_ProviderUpgradeBugFix tests the specific bug fix for provider upgrades. +// The bug occurred when upgrading from pre-identity versions (e.g., 6.13.0) to identity-enabled +// versions (e.g., 6.14.0+) caused "Missing Resource Identity After Update" errors. // -// This simulates the exact scenario reported in the GitHub issue where aws_s3_object -// (and similar resources) fail after provider upgrade when Update operations occur -// before the identity has been populated by a Read operation. -func TestIdentityInterceptor_ProviderUpgradeBugScenario(t *testing.T) { +// The fix detects when ALL identity attributes are null (provider upgrade scenario) and +// allows identity population during Update operations only in this specific case. +// See https://github.com/hashicorp/terraform-provider-aws/issues/44330 +func TestIdentityInterceptor_ProviderUpgradeBugFix(t *testing.T) { t.Parallel() - accountID := "123456789012" - region := "us-west-2" //lintignore:AWSAT003 - bucket := "test-bucket" - key := "test-key" - - // Simulate S3 object-like resource schema (bucket + key identity) - resourceSchema := map[string]*schema.Schema{ - names.AttrBucket: { - Type: schema.TypeString, - Required: true, - ForceNew: true, + testCases := map[string]struct { + identityValues map[string]string // What values are already set in identity + expectPopulation bool // Should identity be populated during Update? + description string + }{ + "all_null_values": { + identityValues: map[string]string{}, // All null - the bug scenario + expectPopulation: true, // Should populate (fix behavior) + description: "Provider upgrade scenario: all identity attributes null should trigger population", }, - names.AttrKey: { - Type: schema.TypeString, - Required: true, - ForceNew: true, + "some_values_set": { + identityValues: map[string]string{ // Some values set - normal scenario + names.AttrAccountID: "123456789012", + names.AttrRegion: "us-west-2", + // bucket and key remain null + }, + expectPopulation: false, // Should NOT populate (preserves existing behavior) + description: "Normal scenario: partial identity values should not trigger population", }, - names.AttrContent: { - Type: schema.TypeString, - Optional: true, + "all_values_set": { + identityValues: map[string]string{ // All values set + names.AttrAccountID: "123456789012", + names.AttrRegion: "us-west-2", + names.AttrBucket: "test-bucket", + names.AttrKey: "test-key", + }, + expectPopulation: false, // Should NOT populate + description: "Full identity: all values set should not trigger population", }, - "region": attribute.Region(), } - client := mockClient{ - accountID: accountID, - region: region, - } - - ctx := context.Background() - - // Create identity spec similar to S3 object: regional with bucket and key - identitySpec := s3ObjectLikeIdentitySpec() + for name, tc := range testCases { + t.Run(name, func(t *testing.T) { + t.Parallel() - invocation := newIdentityInterceptor(&identitySpec) - interceptor := invocation.interceptor.(identityInterceptor) + // Create a simple S3-like identity spec for testing + identitySpec := inttypes.Identity{ + Attributes: []inttypes.IdentityAttribute{ + inttypes.StringIdentityAttribute(names.AttrAccountID, false), + inttypes.StringIdentityAttribute(names.AttrRegion, false), + inttypes.StringIdentityAttribute(names.AttrBucket, true), + inttypes.StringIdentityAttribute(names.AttrKey, true), + }, + IsMutable: false, // Immutable identity - key to reproducing bug + IsSetOnUpdate: false, + } - identitySchema := identity.NewIdentitySchema(identitySpec) + // Create minimal resource schema + resourceSchema := map[string]*schema.Schema{ + names.AttrBucket: {Type: schema.TypeString, Required: true}, + names.AttrKey: {Type: schema.TypeString, Required: true}, + names.AttrContent: {Type: schema.TypeString, Optional: true}, + } - // Create resource data with identity, but simulate the "provider upgrade" scenario - // by leaving the identity completely empty (all null values) - d := schema.TestResourceDataWithIdentityRaw(t, resourceSchema, identitySchema, nil) - d.SetId("test-bucket/test-key") // Resource exists in state - d.Set(names.AttrBucket, bucket) - d.Set(names.AttrKey, key) - d.Set(names.AttrContent, "original-content") - d.Set("region", region) + identitySchema := identity.NewIdentitySchema(identitySpec) + d := schema.TestResourceDataWithIdentityRaw(t, resourceSchema, identitySchema, nil) + d.SetId("test-id") + d.Set(names.AttrBucket, "test-bucket") + d.Set(names.AttrKey, "test-key") - // CRITICAL: Do NOT pre-populate identity - this simulates the upgrade scenario - // where identity exists in schema but all attributes are null/empty - identity, err := d.Identity() - if err != nil { - t.Fatalf("unexpected error getting identity: %v", err) - } + // Setup identity with test case values + identity, err := d.Identity() + if err != nil { + t.Fatalf("unexpected error getting identity: %v", err) + } + for attrName, value := range tc.identityValues { + if err := identity.Set(attrName, value); err != nil { + t.Fatalf("unexpected error setting %s in identity: %v", attrName, err) + } + } - // Verify identity starts fully null (simulating pre-identity provider version) - if identity.Get(names.AttrAccountID) != "" { - t.Fatalf("expected account_id to start null, got %q", identity.Get(names.AttrAccountID)) - } - if identity.Get(names.AttrRegion) != "" { - t.Fatalf("expected region to start null, got %q", identity.Get(names.AttrRegion)) - } - if identity.Get(names.AttrBucket) != "" { - t.Fatalf("expected bucket to start null, got %q", identity.Get(names.AttrBucket)) - } - if identity.Get(names.AttrKey) != "" { - t.Fatalf("expected key to start null, got %q", identity.Get(names.AttrKey)) - } + // Test the core fix logic + hasNullValues := identityHasNullValues(d, &identitySpec) + if tc.expectPopulation && !hasNullValues { + t.Errorf("expected identityHasNullValues to return true for %s, got false", tc.description) + } + if !tc.expectPopulation && hasNullValues { + t.Errorf("expected identityHasNullValues to return false for %s, got true", tc.description) + } - // Simulate the bug scenario: Update operation occurs (e.g., content change) - // without a Read operation first to populate identity - opts := crudInterceptorOptions{ - c: client, - d: d, - when: After, - why: Update, // This is where the bug occurred! - } + // Test interceptor behavior + interceptor := identityInterceptor{identitySpec: &identitySpec} + client := mockClient{accountID: "123456789012", region: "us-west-2"} + opts := crudInterceptorOptions{c: client, d: d, when: After, why: Update} + + // Capture identity state before + beforeValues := make(map[string]string) + for _, attr := range identitySpec.Attributes { + value := identity.Get(attr.Name()) + if value != nil { + beforeValues[attr.Name()] = value.(string) + } else { + beforeValues[attr.Name()] = "" + } + } - // Run the identity interceptor - this should NOW populate identity - // instead of skipping it (which caused the original bug) - diags := interceptor.run(ctx, opts) - if diags.HasError() { - t.Fatalf("unexpected error running interceptor: %v", diags) - } + // Run interceptor + diags := interceptor.run(context.Background(), opts) + if diags.HasError() { + t.Fatalf("unexpected error running interceptor: %v", diags) + } - // Verify the fix: identity should now be fully populated - identity, err = d.Identity() - if err != nil { - t.Fatalf("unexpected error getting identity after interceptor: %v", err) - } + // Check if identity was populated + identity, _ = d.Identity() + wasPopulated := false + for _, attr := range identitySpec.Attributes { + before := beforeValues[attr.Name()] + after := identity.Get(attr.Name()) + afterStr := "" + if after != nil { + afterStr = after.(string) + } + if before == "" && afterStr != "" { + wasPopulated = true + break + } + } - // These assertions verify the bug is fixed - if e, a := accountID, identity.Get(names.AttrAccountID); e != a { - t.Errorf("expected account ID %q, got %q (identity not populated - bug still exists!)", e, a) - } - if e, a := region, identity.Get(names.AttrRegion); e != a { - t.Errorf("expected region %q, got %q (identity not populated - bug still exists!)", e, a) - } - if e, a := bucket, identity.Get(names.AttrBucket); e != a { - t.Errorf("expected bucket %q, got %q (identity not populated - bug still exists!)", e, a) - } - if e, a := key, identity.Get(names.AttrKey); e != a { - t.Errorf("expected key %q, got %q (identity not populated - bug still exists!)", e, a) + if tc.expectPopulation && !wasPopulated { + t.Errorf("expected identity to be populated for %s, but it wasn't", tc.description) + } + if !tc.expectPopulation && wasPopulated { + t.Errorf("expected identity NOT to be populated for %s, but it was", tc.description) + } + }) } } -// TestIdentityInterceptor_ProviderUpgradeBugScenario_PartiallyPopulated tests that -// we don't over-correct and populate identity when it's already partially set -// (which would be the normal case after the first Read operation post-upgrade) -func TestIdentityInterceptor_ProviderUpgradeBugScenario_partiallyPopulated(t *testing.T) { +// TestIdentityHasNullValues tests the core helper function that detects the provider upgrade scenario +func TestIdentityHasNullValues(t *testing.T) { t.Parallel() - accountID := "123456789012" - region := "us-west-2" //lintignore:AWSAT003 - bucket := "test-bucket" - key := "test-key" + // Simple identity spec for testing + identitySpec := &inttypes.Identity{ + Attributes: []inttypes.IdentityAttribute{ + inttypes.StringIdentityAttribute(names.AttrAccountID, false), + inttypes.StringIdentityAttribute(names.AttrRegion, false), + inttypes.StringIdentityAttribute(names.AttrBucket, true), + }, + } - resourceSchema := map[string]*schema.Schema{ - names.AttrBucket: { - Type: schema.TypeString, - Required: true, - ForceNew: true, + testCases := map[string]struct { + identityValues map[string]string + expectNull bool + description string + }{ + "all_null": { + identityValues: map[string]string{}, + expectNull: true, + description: "All attributes null should return true", }, - names.AttrKey: { - Type: schema.TypeString, - Required: true, - ForceNew: true, + "some_null": { + identityValues: map[string]string{ + names.AttrAccountID: "123456789012", + // region and bucket remain null + }, + expectNull: false, + description: "Some attributes set should return false", }, - names.AttrContent: { - Type: schema.TypeString, - Optional: true, + "all_set": { + identityValues: map[string]string{ + names.AttrAccountID: "123456789012", + names.AttrRegion: "us-west-2", + names.AttrBucket: "test-bucket", + }, + expectNull: false, + description: "All attributes set should return false", + }, + "empty_string_values": { + identityValues: map[string]string{ + names.AttrAccountID: "", + names.AttrRegion: "", + names.AttrBucket: "", + }, + expectNull: true, // Empty strings are treated as null + description: "Empty string values should be treated as null", }, - "region": attribute.Region(), - } - - client := mockClient{ - accountID: accountID, - region: region, - } - - ctx := context.Background() - - identitySpec := s3ObjectLikeIdentitySpec() - - invocation := newIdentityInterceptor(&identitySpec) - interceptor := invocation.interceptor.(identityInterceptor) - - identitySchema := identity.NewIdentitySchema(identitySpec) - - d := schema.TestResourceDataWithIdentityRaw(t, resourceSchema, identitySchema, nil) - d.SetId("test-bucket/test-key") - d.Set(names.AttrBucket, bucket) - d.Set(names.AttrKey, key) - d.Set(names.AttrContent, "updated-content") - d.Set("region", region) - - // Simulate partial population (e.g., after first Read post-upgrade) - identity, err := d.Identity() - if err != nil { - t.Fatalf("unexpected error getting identity: %v", err) - } - - // Set some but not all identity attributes - if err := identity.Set(names.AttrAccountID, accountID); err != nil { - t.Fatalf("unexpected error setting account_id in identity: %v", err) - } - if err := identity.Set(names.AttrRegion, region); err != nil { - t.Fatalf("unexpected error setting region in identity: %v", err) - } - // Leave bucket and key null to simulate partial population - - // Run Update operation - opts := crudInterceptorOptions{ - c: client, - d: d, - when: After, - why: Update, } - diags := interceptor.run(ctx, opts) - if diags.HasError() { - t.Fatalf("unexpected error running interceptor: %v", diags) - } + for name, tc := range testCases { + t.Run(name, func(t *testing.T) { + t.Parallel() - // Verify identity is NOT re-populated for partial null scenario - identity, err = d.Identity() - if err != nil { - t.Fatalf("unexpected error getting identity after interceptor: %v", err) - } + // Create minimal test setup + resourceSchema := map[string]*schema.Schema{ + names.AttrBucket: {Type: schema.TypeString, Required: true}, + } + identitySchema := identity.NewIdentitySchema(*identitySpec) + d := schema.TestResourceDataWithIdentityRaw(t, resourceSchema, identitySchema, nil) + d.SetId("test-id") - // Account ID and region should remain as set - if e, a := accountID, identity.Get(names.AttrAccountID); e != a { - t.Errorf("expected account ID to remain %q, got %q", e, a) - } - if e, a := region, identity.Get(names.AttrRegion); e != a { - t.Errorf("expected region to remain %q, got %q", e, a) - } + // Set identity values + identity, err := d.Identity() + if err != nil { + t.Fatalf("unexpected error getting identity: %v", err) + } + for attrName, value := range tc.identityValues { + if err := identity.Set(attrName, value); err != nil { + t.Fatalf("unexpected error setting %s in identity: %v", attrName, err) + } + } - // Bucket and key should remain null (not populated because not ALL were null) - if identity.Get(names.AttrBucket) != "" { - t.Errorf("expected bucket to remain null, got %q", identity.Get(names.AttrBucket)) - } - if identity.Get(names.AttrKey) != "" { - t.Errorf("expected key to remain null, got %q", identity.Get(names.AttrKey)) - } -} + // Test the function + result := identityHasNullValues(d, identitySpec) -// s3ObjectLikeIdentitySpec creates an identity spec similar to S3 objects -// with multiple parameters (bucket and key) for testing the provider upgrade scenario -func s3ObjectLikeIdentitySpec() inttypes.Identity { - return inttypes.Identity{ - Attributes: []inttypes.IdentityAttribute{ - inttypes.StringIdentityAttribute(names.AttrAccountID, false), - inttypes.StringIdentityAttribute(names.AttrRegion, false), - inttypes.StringIdentityAttribute(names.AttrBucket, true), - inttypes.StringIdentityAttribute(names.AttrKey, true), - }, - IsSingleParameter: false, - IsGlobalResource: false, - // Immutable identity (like real S3 object) - this is key to reproducing the bug - IsMutable: false, - IsSetOnUpdate: false, + if result != tc.expectNull { + t.Errorf("%s: expected identityHasNullValues to return %v, got %v", + tc.description, tc.expectNull, result) + } + }) } } From 17d943286a9fdb1294d62ce9b01183557b8b73b8 Mon Sep 17 00:00:00 2001 From: Jared Baker Date: Fri, 19 Sep 2025 15:08:27 -0400 Subject: [PATCH 25/81] r/aws_iam_role(test): identity no refresh failure MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This test reproduces the `Missing Resource Identity After Update` error when upgrading to `v6.14.0` ```console % make t K=iam T=TestAccIAMRole_Identity_ExistingResource_NoRefreshFailure make: Verifying source code with gofmt... ==> Checking that code complies with gofmt requirements... make: Running acceptance tests on branch: 🌿 b-null-identity-on-no-refresh-apply 🌿... TF_ACC=1 go1.24.6 test ./internal/service/iam/... -v -count 1 -parallel 20 -run='TestAccIAMRole_Identity_ExistingResource_NoRefreshFailure' -timeout 360m -vet=off 2025/09/19 15:03:08 Creating Terraform AWS Provider (SDKv2-style)... 2025/09/19 15:03:08 Initializing Terraform AWS Provider (SDKv2-style)... === RUN TestAccIAMRole_Identity_ExistingResource_NoRefreshFailure === PAUSE TestAccIAMRole_Identity_ExistingResource_NoRefreshFailure === CONT TestAccIAMRole_Identity_ExistingResource_NoRefreshFailure --- PASS: TestAccIAMRole_Identity_ExistingResource_NoRefreshFailure (31.44s) PASS ok github.com/hashicorp/terraform-provider-aws/internal/service/iam 38.263s ``` --- internal/service/iam/role_test.go | 55 +++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/internal/service/iam/role_test.go b/internal/service/iam/role_test.go index 4f84101404dc..250630c93e0c 100644 --- a/internal/service/iam/role_test.go +++ b/internal/service/iam/role_test.go @@ -972,6 +972,46 @@ func TestAccIAMRole_ManagedPolicy_outOfBandAdditionRemovedEmpty(t *testing.T) { }) } +func TestAccIAMRole_Identity_ExistingResource_NoRefreshFailure(t *testing.T) { + ctx := acctest.Context(t) + var conf awstypes.Role + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + resourceName := "aws_iam_role.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.IAMServiceID), + CheckDestroy: testAccCheckRoleDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + { + ExternalProviders: map[string]resource.ExternalProvider{ + "aws": { + Source: "hashicorp/aws", + VersionConstraint: "5.100.0", + }, + }, + Config: testAccRoleConfig_basic(rName), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckRoleExists(ctx, resourceName, &conf), + ), + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + Config: testAccRoleConfig_invalidAssumeRolePolicy(rName), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckRoleExists(ctx, resourceName, &conf), + ), + ExpectError: regexache.MustCompile(`Missing Resource Identity After Update`), + }, + }, + }) +} + func testAccCheckRoleDestroy(ctx context.Context) resource.TestCheckFunc { return func(s *terraform.State) error { conn := acctest.Provider.Meta().(*conns.AWSClient).IAMClient(ctx) @@ -1260,6 +1300,21 @@ resource "aws_iam_role" "test" { `, rName) } +func testAccRoleConfig_invalidAssumeRolePolicy(rName string) string { + return fmt.Sprintf(` +data "aws_service_principal" "ec2" { + service_name = "ec2" +} + +resource "aws_iam_role" "test" { + name = %[1]q + path = "/" + + assume_role_policy = "{\"invalid\":true}" +} +`, rName) +} + func testAccRoleConfig_diffs(rName, tags string) string { return fmt.Sprintf(` data "aws_partition" "current" {} From 93b616ca8914df2c19c2dabdb3bb78554dd4cfb0 Mon Sep 17 00:00:00 2001 From: Jared Baker Date: Fri, 19 Sep 2025 15:14:40 -0400 Subject: [PATCH 26/81] r/aws_iam_role(test): add comment on expected error --- internal/service/iam/role_test.go | 1 + 1 file changed, 1 insertion(+) diff --git a/internal/service/iam/role_test.go b/internal/service/iam/role_test.go index 250630c93e0c..c38b19ed648f 100644 --- a/internal/service/iam/role_test.go +++ b/internal/service/iam/role_test.go @@ -1006,6 +1006,7 @@ func TestAccIAMRole_Identity_ExistingResource_NoRefreshFailure(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckRoleExists(ctx, resourceName, &conf), ), + // We DON'T want this error. A fix should cause this test to begin failing. ExpectError: regexache.MustCompile(`Missing Resource Identity After Update`), }, }, From 5b9de4e9420d3d5f59d3ab7c71a969db74d06184 Mon Sep 17 00:00:00 2001 From: Jared Baker Date: Fri, 19 Sep 2025 15:27:04 -0400 Subject: [PATCH 27/81] r/aws_iam_role(test): no refresh valid config case --- internal/service/iam/role_test.go | 41 +++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/internal/service/iam/role_test.go b/internal/service/iam/role_test.go index c38b19ed648f..db37d52a40ad 100644 --- a/internal/service/iam/role_test.go +++ b/internal/service/iam/role_test.go @@ -972,6 +972,47 @@ func TestAccIAMRole_ManagedPolicy_outOfBandAdditionRemovedEmpty(t *testing.T) { }) } +func TestAccIAMRole_Identity_ExistingResource_NoRefresh(t *testing.T) { + ctx := acctest.Context(t) + var conf awstypes.Role + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + resourceName := "aws_iam_role.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.IAMServiceID), + CheckDestroy: testAccCheckRoleDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + { + ExternalProviders: map[string]resource.ExternalProvider{ + "aws": { + Source: "hashicorp/aws", + VersionConstraint: "5.100.0", + }, + }, + Config: testAccRoleConfig_basic(rName), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckRoleExists(ctx, resourceName, &conf), + ), + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + Config: testAccRoleConfig_description(rName), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckRoleExists(ctx, resourceName, &conf), + ), + // We DON'T want this error. A fix should cause this test to begin failing. + ExpectError: regexache.MustCompile(`Missing Resource Identity After Update`), + }, + }, + }) +} + func TestAccIAMRole_Identity_ExistingResource_NoRefreshFailure(t *testing.T) { ctx := acctest.Context(t) var conf awstypes.Role From 82b7e077592ef3e58e561bae3a16cbe8ff77128a Mon Sep 17 00:00:00 2001 From: Jared Baker Date: Fri, 19 Sep 2025 15:48:04 -0400 Subject: [PATCH 28/81] internal/provider/sdkv2: support non-refresh apply in identity interceptor Previously a non-refresh apply would result in the identity interceptor short circuiting for any resources with immutable identities, even if the existing identity was fully null. This change adds an additional check for fully null identity attributes, enabling cases where a non-refresh apply is executed immediately after upgrading to a provider version which newly supports resource identity for a given resource. --- .../provider/sdkv2/identity_interceptor.go | 26 ++++++++++++++----- 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/internal/provider/sdkv2/identity_interceptor.go b/internal/provider/sdkv2/identity_interceptor.go index e9b5cbe984ed..f32d6143c956 100644 --- a/internal/provider/sdkv2/identity_interceptor.go +++ b/internal/provider/sdkv2/identity_interceptor.go @@ -29,7 +29,7 @@ func (r identityInterceptor) run(ctx context.Context, opts crudInterceptorOption case After: switch why { case Create, Read, Update: - if why == Update && !(r.identitySpec.IsMutable && r.identitySpec.IsSetOnUpdate) { + if why == Update && !(r.identitySpec.IsMutable && r.identitySpec.IsSetOnUpdate) && !identityIsFullyNull(d, r.identitySpec) { break } if d.Id() == "" { @@ -68,6 +68,24 @@ func (r identityInterceptor) run(ctx context.Context, opts crudInterceptorOption return diags } +// identityIsFullyNull returns true if a resource supports identity and +// all attributes are set to null values +func identityIsFullyNull(d schemaResourceData, identitySpec *inttypes.Identity) bool { + identity, err := d.Identity() + if err != nil { + return false + } + + for _, attr := range identitySpec.Attributes { + value := identity.Get(attr.Name()) + if value != "" { + return false + } + } + + return true +} + func getAttributeOk(d schemaResourceData, name string) (string, bool) { if name == "id" { return d.Id(), true @@ -82,16 +100,12 @@ func getAttributeOk(d schemaResourceData, name string) (string, bool) { func newIdentityInterceptor(identitySpec *inttypes.Identity) interceptorInvocation { interceptor := interceptorInvocation{ when: After, - why: Create | Read, + why: Create | Read | Update, interceptor: identityInterceptor{ identitySpec: identitySpec, }, } - if identitySpec.IsMutable && identitySpec.IsSetOnUpdate { - interceptor.why |= Update - } - return interceptor } From 60c53d199aeb44abc4e7f16b3706eafb2781ed99 Mon Sep 17 00:00:00 2001 From: Jared Baker Date: Fri, 19 Sep 2025 15:48:31 -0400 Subject: [PATCH 29/81] r/aws_iam_role(test): remove and tidy expected no refresh errors --- internal/service/iam/role_test.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/internal/service/iam/role_test.go b/internal/service/iam/role_test.go index db37d52a40ad..9938ae62b137 100644 --- a/internal/service/iam/role_test.go +++ b/internal/service/iam/role_test.go @@ -1006,8 +1006,8 @@ func TestAccIAMRole_Identity_ExistingResource_NoRefresh(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckRoleExists(ctx, resourceName, &conf), ), - // We DON'T want this error. A fix should cause this test to begin failing. - ExpectError: regexache.MustCompile(`Missing Resource Identity After Update`), + // No error indicates the identity interceptor properly identified + // a fully null identity on update and set values appropriately. }, }, }) @@ -1047,7 +1047,9 @@ func TestAccIAMRole_Identity_ExistingResource_NoRefreshFailure(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckRoleExists(ctx, resourceName, &conf), ), - // We DON'T want this error. A fix should cause this test to begin failing. + // On an update failure, the identity interceptor is not executed and both + // the MalformedPolicyDocument error and a missing resource identity + // error will be present. ExpectError: regexache.MustCompile(`Missing Resource Identity After Update`), }, }, From d3d75c7f3502fd49352e53eba9d13472ec1f1226 Mon Sep 17 00:00:00 2001 From: Dirk Avery Date: Fri, 19 Sep 2025 15:55:33 -0400 Subject: [PATCH 30/81] Tests and fixes --- .../provider/sdkv2/identity_interceptor.go | 36 ++----- internal/service/iam/role_test.go | 99 +++++++++++++++++++ internal/service/s3/object_test.go | 41 ++++++++ 3 files changed, 146 insertions(+), 30 deletions(-) diff --git a/internal/provider/sdkv2/identity_interceptor.go b/internal/provider/sdkv2/identity_interceptor.go index fa81babb421a..f32d6143c956 100644 --- a/internal/provider/sdkv2/identity_interceptor.go +++ b/internal/provider/sdkv2/identity_interceptor.go @@ -29,13 +29,8 @@ func (r identityInterceptor) run(ctx context.Context, opts crudInterceptorOption case After: switch why { case Create, Read, Update: - // For Update operations on resources with immutable identity, - // still set identity if it has null values (e.g., after provider upgrade from pre-identity version) - if why == Update && !(r.identitySpec.IsMutable && r.identitySpec.IsSetOnUpdate) { - // Skip setting identity unless it has null values - if !identityHasNullValues(d, r.identitySpec) { - break - } + if why == Update && !(r.identitySpec.IsMutable && r.identitySpec.IsSetOnUpdate) && !identityIsFullyNull(d, r.identitySpec) { + break } if d.Id() == "" { break @@ -73,36 +68,21 @@ func (r identityInterceptor) run(ctx context.Context, opts crudInterceptorOption return diags } -// identityHasNullValues checks if ALL identity attributes are fully null, -// which indicates the specific bug scenario from failed non-refresh applies. -// See https://github.com/hashicorp/terraform-provider-aws/issues/44330 -// -// The reported error occurs when all identity attributes are fully null due to -// failed non-refresh applies (terraform apply -refresh=false) where the read op -// does not have a chance to set identity before the failure. -// -// Returns true ONLY when ALL identity attributes are null/empty. -// If any attribute has a value, we assume it was set by a previous Create/Read -// and should not proceed with setting identity on Update. -func identityHasNullValues(d schemaResourceData, identitySpec *inttypes.Identity) bool { +// identityIsFullyNull returns true if a resource supports identity and +// all attributes are set to null values +func identityIsFullyNull(d schemaResourceData, identitySpec *inttypes.Identity) bool { identity, err := d.Identity() if err != nil { - // If we can't get identity at all, this is not the bug scenario return false } - // Check if ALL identity attributes are null/empty - // This matches the exact scenario described in the reproduction for _, attr := range identitySpec.Attributes { value := identity.Get(attr.Name()) if value != "" { - // Found a non-null value, so this is not the bug scenario - // The identity was set by a previous Create/Read op return false } } - // All attributes are null - this is the bug scenario return true } @@ -120,16 +100,12 @@ func getAttributeOk(d schemaResourceData, name string) (string, bool) { func newIdentityInterceptor(identitySpec *inttypes.Identity) interceptorInvocation { interceptor := interceptorInvocation{ when: After, - why: Create | Read, + why: Create | Read | Update, interceptor: identityInterceptor{ identitySpec: identitySpec, }, } - if identitySpec.IsMutable && identitySpec.IsSetOnUpdate { - interceptor.why |= Update - } - return interceptor } diff --git a/internal/service/iam/role_test.go b/internal/service/iam/role_test.go index 4f84101404dc..9938ae62b137 100644 --- a/internal/service/iam/role_test.go +++ b/internal/service/iam/role_test.go @@ -972,6 +972,90 @@ func TestAccIAMRole_ManagedPolicy_outOfBandAdditionRemovedEmpty(t *testing.T) { }) } +func TestAccIAMRole_Identity_ExistingResource_NoRefresh(t *testing.T) { + ctx := acctest.Context(t) + var conf awstypes.Role + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + resourceName := "aws_iam_role.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.IAMServiceID), + CheckDestroy: testAccCheckRoleDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + { + ExternalProviders: map[string]resource.ExternalProvider{ + "aws": { + Source: "hashicorp/aws", + VersionConstraint: "5.100.0", + }, + }, + Config: testAccRoleConfig_basic(rName), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckRoleExists(ctx, resourceName, &conf), + ), + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + Config: testAccRoleConfig_description(rName), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckRoleExists(ctx, resourceName, &conf), + ), + // No error indicates the identity interceptor properly identified + // a fully null identity on update and set values appropriately. + }, + }, + }) +} + +func TestAccIAMRole_Identity_ExistingResource_NoRefreshFailure(t *testing.T) { + ctx := acctest.Context(t) + var conf awstypes.Role + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + resourceName := "aws_iam_role.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.IAMServiceID), + CheckDestroy: testAccCheckRoleDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + { + ExternalProviders: map[string]resource.ExternalProvider{ + "aws": { + Source: "hashicorp/aws", + VersionConstraint: "5.100.0", + }, + }, + Config: testAccRoleConfig_basic(rName), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckRoleExists(ctx, resourceName, &conf), + ), + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + Config: testAccRoleConfig_invalidAssumeRolePolicy(rName), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckRoleExists(ctx, resourceName, &conf), + ), + // On an update failure, the identity interceptor is not executed and both + // the MalformedPolicyDocument error and a missing resource identity + // error will be present. + ExpectError: regexache.MustCompile(`Missing Resource Identity After Update`), + }, + }, + }) +} + func testAccCheckRoleDestroy(ctx context.Context) resource.TestCheckFunc { return func(s *terraform.State) error { conn := acctest.Provider.Meta().(*conns.AWSClient).IAMClient(ctx) @@ -1260,6 +1344,21 @@ resource "aws_iam_role" "test" { `, rName) } +func testAccRoleConfig_invalidAssumeRolePolicy(rName string) string { + return fmt.Sprintf(` +data "aws_service_principal" "ec2" { + service_name = "ec2" +} + +resource "aws_iam_role" "test" { + name = %[1]q + path = "/" + + assume_role_policy = "{\"invalid\":true}" +} +`, rName) +} + func testAccRoleConfig_diffs(rName, tags string) string { return fmt.Sprintf(` data "aws_partition" "current" {} diff --git a/internal/service/s3/object_test.go b/internal/service/s3/object_test.go index fa28a4d875eb..b3705c55c038 100644 --- a/internal/service/s3/object_test.go +++ b/internal/service/s3/object_test.go @@ -2119,6 +2119,47 @@ func TestAccS3Object_basicUpgrade(t *testing.T) { }) } +func TestAccS3Object_Identity_ExistingResource_NoRefresh(t *testing.T) { + ctx := acctest.Context(t) + var obj s3.GetObjectOutput + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + resourceName := "aws_s3_object.object" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.S3ServiceID), + CheckDestroy: testAccCheckObjectDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + { + ExternalProviders: map[string]resource.ExternalProvider{ + "aws": { + Source: "hashicorp/aws", + VersionConstraint: "5.80.0", + }, + }, + Config: testAccObjectConfig_basic(rName), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckObjectExists(ctx, resourceName, &obj), + ), + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + Config: testAccObjectConfig_content(rName, "updated content"), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckObjectExists(ctx, resourceName, &obj), + ), + // We DON'T want this error. + // ExpectError: regexache.MustCompile(`Missing Resource Identity After Update`), + }, + }, + }) +} + func testAccCheckObjectVersionIDDiffers(first, second *s3.GetObjectOutput) resource.TestCheckFunc { return func(s *terraform.State) error { if aws.ToString(first.VersionId) == aws.ToString(second.VersionId) { From b2fc83a3e8f6b3586193053d9e20b1efd0b073a8 Mon Sep 17 00:00:00 2001 From: Dirk Avery Date: Fri, 19 Sep 2025 16:02:33 -0400 Subject: [PATCH 31/81] Update func name --- .../provider/sdkv2/identity_interceptor_test.go | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/internal/provider/sdkv2/identity_interceptor_test.go b/internal/provider/sdkv2/identity_interceptor_test.go index 6e42e642438d..dec310da0ff6 100644 --- a/internal/provider/sdkv2/identity_interceptor_test.go +++ b/internal/provider/sdkv2/identity_interceptor_test.go @@ -483,12 +483,12 @@ func TestIdentityInterceptor_ProviderUpgradeBugFix(t *testing.T) { } // Test the core fix logic - hasNullValues := identityHasNullValues(d, &identitySpec) + hasNullValues := identityIsFullyNull(d, &identitySpec) if tc.expectPopulation && !hasNullValues { - t.Errorf("expected identityHasNullValues to return true for %s, got false", tc.description) + t.Errorf("expected identityIsFullyNull to return true for %s, got false", tc.description) } if !tc.expectPopulation && hasNullValues { - t.Errorf("expected identityHasNullValues to return false for %s, got true", tc.description) + t.Errorf("expected identityIsFullyNull to return false for %s, got true", tc.description) } // Test interceptor behavior @@ -539,8 +539,8 @@ func TestIdentityInterceptor_ProviderUpgradeBugFix(t *testing.T) { } } -// TestIdentityHasNullValues tests the core helper function that detects the provider upgrade scenario -func TestIdentityHasNullValues(t *testing.T) { +// TestIdentityIsFullyNull tests the core helper function that detects the provider upgrade scenario +func TestIdentityIsFullyNull(t *testing.T) { t.Parallel() // Simple identity spec for testing @@ -614,10 +614,10 @@ func TestIdentityHasNullValues(t *testing.T) { } // Test the function - result := identityHasNullValues(d, identitySpec) + result := identityIsFullyNull(d, identitySpec) if result != tc.expectNull { - t.Errorf("%s: expected identityHasNullValues to return %v, got %v", + t.Errorf("%s: expected identityIsFullyNull to return %v, got %v", tc.description, tc.expectNull, result) } }) From e67315e6e73d7a8dbefa48662367e087c71f009c Mon Sep 17 00:00:00 2001 From: Dirk Avery Date: Fri, 19 Sep 2025 16:25:10 -0400 Subject: [PATCH 32/81] Make tests all fail=bad --- internal/service/iam/role_test.go | 2 +- internal/service/s3/object_test.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/service/iam/role_test.go b/internal/service/iam/role_test.go index 9938ae62b137..3d8b16460520 100644 --- a/internal/service/iam/role_test.go +++ b/internal/service/iam/role_test.go @@ -1050,7 +1050,7 @@ func TestAccIAMRole_Identity_ExistingResource_NoRefreshFailure(t *testing.T) { // On an update failure, the identity interceptor is not executed and both // the MalformedPolicyDocument error and a missing resource identity // error will be present. - ExpectError: regexache.MustCompile(`Missing Resource Identity After Update`), + // ExpectError: regexache.MustCompile(`Missing Resource Identity After Update`), }, }, }) diff --git a/internal/service/s3/object_test.go b/internal/service/s3/object_test.go index b3705c55c038..56c615932493 100644 --- a/internal/service/s3/object_test.go +++ b/internal/service/s3/object_test.go @@ -2139,7 +2139,7 @@ func TestAccS3Object_Identity_ExistingResource_NoRefresh(t *testing.T) { ExternalProviders: map[string]resource.ExternalProvider{ "aws": { Source: "hashicorp/aws", - VersionConstraint: "5.80.0", + VersionConstraint: "5.100.0", }, }, Config: testAccObjectConfig_basic(rName), From 48859ebd6e6215ceee9ea3cbe018b8a43dc80174 Mon Sep 17 00:00:00 2001 From: Dirk Avery Date: Fri, 19 Sep 2025 16:28:35 -0400 Subject: [PATCH 33/81] providerlint ignores --- internal/provider/sdkv2/identity_interceptor_test.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/internal/provider/sdkv2/identity_interceptor_test.go b/internal/provider/sdkv2/identity_interceptor_test.go index dec310da0ff6..ff63d7e5b138 100644 --- a/internal/provider/sdkv2/identity_interceptor_test.go +++ b/internal/provider/sdkv2/identity_interceptor_test.go @@ -424,7 +424,7 @@ func TestIdentityInterceptor_ProviderUpgradeBugFix(t *testing.T) { "some_values_set": { identityValues: map[string]string{ // Some values set - normal scenario names.AttrAccountID: "123456789012", - names.AttrRegion: "us-west-2", + names.AttrRegion: "us-west-2", // lintignore:AWSAT003 // bucket and key remain null }, expectPopulation: false, // Should NOT populate (preserves existing behavior) @@ -433,7 +433,7 @@ func TestIdentityInterceptor_ProviderUpgradeBugFix(t *testing.T) { "all_values_set": { identityValues: map[string]string{ // All values set names.AttrAccountID: "123456789012", - names.AttrRegion: "us-west-2", + names.AttrRegion: "us-west-2", // lintignore:AWSAT003 names.AttrBucket: "test-bucket", names.AttrKey: "test-key", }, @@ -493,7 +493,7 @@ func TestIdentityInterceptor_ProviderUpgradeBugFix(t *testing.T) { // Test interceptor behavior interceptor := identityInterceptor{identitySpec: &identitySpec} - client := mockClient{accountID: "123456789012", region: "us-west-2"} + client := mockClient{accountID: "123456789012", region: "us-west-2"} // lintignore:AWSAT003 opts := crudInterceptorOptions{c: client, d: d, when: After, why: Update} // Capture identity state before @@ -573,7 +573,7 @@ func TestIdentityIsFullyNull(t *testing.T) { "all_set": { identityValues: map[string]string{ names.AttrAccountID: "123456789012", - names.AttrRegion: "us-west-2", + names.AttrRegion: "us-west-2", // lintignore:AWSAT003 names.AttrBucket: "test-bucket", }, expectNull: false, From ead066f775ca132d9d2434bf67d9c31e8738488e Mon Sep 17 00:00:00 2001 From: Dirk Avery Date: Fri, 19 Sep 2025 17:33:50 -0400 Subject: [PATCH 34/81] Choosing unexpected identity change --- .../provider/sdkv2/identity_interceptor.go | 38 ++++++++++++++++++- internal/service/iam/role_test.go | 5 +-- 2 files changed, 38 insertions(+), 5 deletions(-) diff --git a/internal/provider/sdkv2/identity_interceptor.go b/internal/provider/sdkv2/identity_interceptor.go index f32d6143c956..a3c838280c82 100644 --- a/internal/provider/sdkv2/identity_interceptor.go +++ b/internal/provider/sdkv2/identity_interceptor.go @@ -63,6 +63,42 @@ func (r identityInterceptor) run(ctx context.Context, opts crudInterceptorOption } } } + case OnError: + switch why { + case Update: + if identityIsFullyNull(d, r.identitySpec) { + if d.Id() == "" { + break + } + identity, err := d.Identity() + if err != nil { + return sdkdiag.AppendFromErr(diags, err) + } + + for _, attr := range r.identitySpec.Attributes { + switch attr.Name() { + case names.AttrAccountID: + if err := identity.Set(attr.Name(), awsClient.AccountID(ctx)); err != nil { + return sdkdiag.AppendFromErr(diags, err) + } + + case names.AttrRegion: + if err := identity.Set(attr.Name(), awsClient.Region(ctx)); err != nil { + return sdkdiag.AppendFromErr(diags, err) + } + + default: + val, ok := getAttributeOk(d, attr.ResourceAttributeName()) + if !ok { + continue + } + if err := identity.Set(attr.Name(), val); err != nil { + return sdkdiag.AppendFromErr(diags, err) + } + } + } + } + } } return diags @@ -99,7 +135,7 @@ func getAttributeOk(d schemaResourceData, name string) (string, bool) { func newIdentityInterceptor(identitySpec *inttypes.Identity) interceptorInvocation { interceptor := interceptorInvocation{ - when: After, + when: After | OnError, why: Create | Read | Update, interceptor: identityInterceptor{ identitySpec: identitySpec, diff --git a/internal/service/iam/role_test.go b/internal/service/iam/role_test.go index 3d8b16460520..6ecf1d6a76cb 100644 --- a/internal/service/iam/role_test.go +++ b/internal/service/iam/role_test.go @@ -1044,13 +1044,10 @@ func TestAccIAMRole_Identity_ExistingResource_NoRefreshFailure(t *testing.T) { { ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, Config: testAccRoleConfig_invalidAssumeRolePolicy(rName), - Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckRoleExists(ctx, resourceName, &conf), - ), // On an update failure, the identity interceptor is not executed and both // the MalformedPolicyDocument error and a missing resource identity // error will be present. - // ExpectError: regexache.MustCompile(`Missing Resource Identity After Update`), + ExpectError: regexache.MustCompile(`MalformedPolicyDocument: Unknown field invalid`), }, }, }) From 63d87926ba02c72f7d323f83b35a7473730f9455 Mon Sep 17 00:00:00 2001 From: Dirk Avery Date: Fri, 19 Sep 2025 17:44:49 -0400 Subject: [PATCH 35/81] Comment --- internal/service/iam/role_test.go | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/internal/service/iam/role_test.go b/internal/service/iam/role_test.go index 6ecf1d6a76cb..9af528e68fc2 100644 --- a/internal/service/iam/role_test.go +++ b/internal/service/iam/role_test.go @@ -1044,9 +1044,8 @@ func TestAccIAMRole_Identity_ExistingResource_NoRefreshFailure(t *testing.T) { { ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, Config: testAccRoleConfig_invalidAssumeRolePolicy(rName), - // On an update failure, the identity interceptor is not executed and both - // the MalformedPolicyDocument error and a missing resource identity - // error will be present. + // Caution: Finding this error, which should be found, hides MRIAU + // (Missing Resource Identity After Update) errors. ExpectError: regexache.MustCompile(`MalformedPolicyDocument: Unknown field invalid`), }, }, From 1b3155a33e0b953fb5883953aed5ef9831f3518d Mon Sep 17 00:00:00 2001 From: Graham Davison Date: Fri, 19 Sep 2025 15:10:38 -0700 Subject: [PATCH 36/81] Remove preview restrictions --- internal/service/dsql/cluster_peering_test.go | 6 ----- internal/service/dsql/cluster_test.go | 24 ------------------- 2 files changed, 30 deletions(-) diff --git a/internal/service/dsql/cluster_peering_test.go b/internal/service/dsql/cluster_peering_test.go index 9e9b3bdd0128..fafb1fbbe840 100644 --- a/internal/service/dsql/cluster_peering_test.go +++ b/internal/service/dsql/cluster_peering_test.go @@ -25,12 +25,6 @@ func TestAccDSQLClusterPeering_basic(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - // Because dsql is in preview, we need to skip the PreCheckPartitionHasService - // acctest.PreCheckPartitionHasService(t, names.DSQLEndpointID) - // PreCheck for the region configuration as long as DSQL is in preview - acctest.PreCheckRegion(t, "us-east-1", "us-east-2") //lintignore:AWSAT003 - acctest.PreCheckAlternateRegion(t, "us-east-2", "us-east-1") //lintignore:AWSAT003 - acctest.PreCheckThirdRegion(t, "us-west-2") //lintignore:AWSAT003 testAccPreCheck(ctx, t) acctest.PreCheckMultipleRegion(t, 2) }, diff --git a/internal/service/dsql/cluster_test.go b/internal/service/dsql/cluster_test.go index f87e96597ea3..e7a5e5070705 100644 --- a/internal/service/dsql/cluster_test.go +++ b/internal/service/dsql/cluster_test.go @@ -34,12 +34,6 @@ func TestAccDSQLCluster_basic(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - // Because dsql is in preview, we need to skip the PreCheckPartitionHasService - // acctest.PreCheckPartitionHasService(t, names.DSQLEndpointID) - // PreCheck for the region configuration as long as DSQL is in preview - acctest.PreCheckRegion(t, "us-east-1", "us-east-2") //lintignore:AWSAT003 - acctest.PreCheckAlternateRegion(t, "us-east-2", "us-east-1") //lintignore:AWSAT003 - acctest.PreCheckThirdRegion(t, "us-west-2") //lintignore:AWSAT003 testAccPreCheck(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, names.DSQLServiceID), @@ -89,12 +83,6 @@ func TestAccDSQLCluster_disappears(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - // Because dsql is in preview, we need to skip the PreCheckPartitionHasService - // acctest.PreCheckPartitionHasService(t, names.DSQLEndpointID) - // PreCheck for the region configuration as long as DSQL is in preview - acctest.PreCheckRegion(t, "us-east-1", "us-east-2") //lintignore:AWSAT003 - acctest.PreCheckAlternateRegion(t, "us-east-2", "us-east-1") //lintignore:AWSAT003 - acctest.PreCheckThirdRegion(t, "us-west-2") //lintignore:AWSAT003 testAccPreCheck(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, names.DSQLServiceID), @@ -121,12 +109,6 @@ func TestAccDSQLCluster_deletionProtection(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - // Because dsql is in preview, we need to skip the PreCheckPartitionHasService - // acctest.PreCheckPartitionHasService(t, names.DSQLEndpointID) - // PreCheck for the region configuration as long as DSQL is in preview - acctest.PreCheckRegion(t, "us-east-1", "us-east-2") //lintignore:AWSAT003 - acctest.PreCheckAlternateRegion(t, "us-east-2", "us-east-1") //lintignore:AWSAT003 - acctest.PreCheckThirdRegion(t, "us-west-2") //lintignore:AWSAT003 testAccPreCheck(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, names.DSQLServiceID), @@ -181,12 +163,6 @@ func TestAccDSQLCluster_encryption(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - // Because dsql is in preview, we need to skip the PreCheckPartitionHasService - // acctest.PreCheckPartitionHasService(t, names.DSQLEndpointID) - // PreCheck for the region configuration as long as DSQL is in preview - acctest.PreCheckRegion(t, "us-east-1", "us-east-2") //lintignore:AWSAT003 - acctest.PreCheckAlternateRegion(t, "us-east-2", "us-east-1") //lintignore:AWSAT003 - acctest.PreCheckThirdRegion(t, "us-west-2") //lintignore:AWSAT003 testAccPreCheck(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, names.DSQLServiceID), From b46617206478e0e9027911815cf50537d6932e8d Mon Sep 17 00:00:00 2001 From: Graham Davison Date: Fri, 19 Sep 2025 17:14:22 -0700 Subject: [PATCH 37/81] Updates `TestAccIAMRole_Identity_ExistingResource_NoRefresh_WithChange` test with `ConfigPlanChecks` and `ConfigStateChecks` --- internal/service/iam/role_test.go | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/internal/service/iam/role_test.go b/internal/service/iam/role_test.go index 9938ae62b137..4e3e9bce4b79 100644 --- a/internal/service/iam/role_test.go +++ b/internal/service/iam/role_test.go @@ -15,9 +15,14 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/id" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/knownvalue" "github.com/hashicorp/terraform-plugin-testing/plancheck" + "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" + tfknownvalue "github.com/hashicorp/terraform-provider-aws/internal/acctest/knownvalue" + tfstatecheck "github.com/hashicorp/terraform-provider-aws/internal/acctest/statecheck" "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/errs" tfiam "github.com/hashicorp/terraform-provider-aws/internal/service/iam" @@ -972,7 +977,7 @@ func TestAccIAMRole_ManagedPolicy_outOfBandAdditionRemovedEmpty(t *testing.T) { }) } -func TestAccIAMRole_Identity_ExistingResource_NoRefresh(t *testing.T) { +func TestAccIAMRole_Identity_ExistingResource_NoRefresh_WithChange(t *testing.T) { ctx := acctest.Context(t) var conf awstypes.Role rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) @@ -999,6 +1004,9 @@ func TestAccIAMRole_Identity_ExistingResource_NoRefresh(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckRoleExists(ctx, resourceName, &conf), ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, }, { ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, @@ -1006,8 +1014,21 @@ func TestAccIAMRole_Identity_ExistingResource_NoRefresh(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckRoleExists(ctx, resourceName, &conf), ), - // No error indicates the identity interceptor properly identified - // a fully null identity on update and set values appropriately. + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectIdentity(resourceName, map[string]knownvalue.Check{ + names.AttrAccountID: tfknownvalue.AccountID(), + names.AttrName: knownvalue.NotNull(), + }), + statecheck.ExpectIdentityValueMatchesState(resourceName, tfjsonpath.New(names.AttrName)), + }, }, }, }) From 926e923f730a97efa79dced4b36372294b921b29 Mon Sep 17 00:00:00 2001 From: Graham Davison Date: Fri, 19 Sep 2025 17:15:22 -0700 Subject: [PATCH 38/81] Updates test name --- internal/service/iam/role_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/service/iam/role_test.go b/internal/service/iam/role_test.go index 4e3e9bce4b79..f1a4eae4d379 100644 --- a/internal/service/iam/role_test.go +++ b/internal/service/iam/role_test.go @@ -1034,7 +1034,7 @@ func TestAccIAMRole_Identity_ExistingResource_NoRefresh_WithChange(t *testing.T) }) } -func TestAccIAMRole_Identity_ExistingResource_NoRefreshFailure(t *testing.T) { +func TestAccIAMRole_Identity_ExistingResource_NoRefresh_OnError(t *testing.T) { ctx := acctest.Context(t) var conf awstypes.Role rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) From 302f4d87f695f9853435bae37650ce12fa998c7a Mon Sep 17 00:00:00 2001 From: Graham Davison Date: Fri, 19 Sep 2025 17:16:00 -0700 Subject: [PATCH 39/81] Adds `TestAccIAMRole_Identity_ExistingResource_NoRefresh_NoChange` and `TestAccIAMRole_Identity_ExistingResource_OnError` tests --- internal/service/iam/role_test.go | 90 +++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) diff --git a/internal/service/iam/role_test.go b/internal/service/iam/role_test.go index f1a4eae4d379..29c5d6a0474f 100644 --- a/internal/service/iam/role_test.go +++ b/internal/service/iam/role_test.go @@ -1034,6 +1034,59 @@ func TestAccIAMRole_Identity_ExistingResource_NoRefresh_WithChange(t *testing.T) }) } +func TestAccIAMRole_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + var conf awstypes.Role + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + resourceName := "aws_iam_role.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.IAMServiceID), + CheckDestroy: testAccCheckRoleDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + { + ExternalProviders: map[string]resource.ExternalProvider{ + "aws": { + Source: "hashicorp/aws", + VersionConstraint: "5.100.0", + }, + }, + Config: testAccRoleConfig_basic(rName), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckRoleExists(ctx, resourceName, &conf), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + Config: testAccRoleConfig_basic(rName), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckRoleExists(ctx, resourceName, &conf), + ), + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} + func TestAccIAMRole_Identity_ExistingResource_NoRefresh_OnError(t *testing.T) { ctx := acctest.Context(t) var conf awstypes.Role @@ -1077,6 +1130,43 @@ func TestAccIAMRole_Identity_ExistingResource_NoRefresh_OnError(t *testing.T) { }) } +func TestAccIAMRole_Identity_ExistingResource_OnError(t *testing.T) { + ctx := acctest.Context(t) + var conf awstypes.Role + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + resourceName := "aws_iam_role.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.IAMServiceID), + CheckDestroy: testAccCheckRoleDestroy(ctx), + Steps: []resource.TestStep{ + { + ExternalProviders: map[string]resource.ExternalProvider{ + "aws": { + Source: "hashicorp/aws", + VersionConstraint: "5.100.0", + }, + }, + Config: testAccRoleConfig_basic(rName), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckRoleExists(ctx, resourceName, &conf), + ), + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + Config: testAccRoleConfig_invalidAssumeRolePolicy(rName), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckRoleExists(ctx, resourceName, &conf), + ), + // On an update failure, the identity interceptor is not executed and + // the MalformedPolicyDocument error will be present. + ExpectError: regexache.MustCompile(`MalformedPolicyDocument`), + }, + }, + }) +} + func testAccCheckRoleDestroy(ctx context.Context) resource.TestCheckFunc { return func(s *terraform.State) error { conn := acctest.Provider.Meta().(*conns.AWSClient).IAMClient(ctx) From a2a53ee7b4d0473b431658e1ff6a84e9a2567e0a Mon Sep 17 00:00:00 2001 From: Graham Davison Date: Fri, 19 Sep 2025 17:16:38 -0700 Subject: [PATCH 40/81] Adds `TestAccS3Object_Identity_ExistingResource_NoRefresh_WithChange` and `TestAccS3Object_Identity_ExistingResource_NoRefresh_NoChange` --- internal/service/s3/object_test.go | 115 +++++++++++++++++++++++++++++ 1 file changed, 115 insertions(+) diff --git a/internal/service/s3/object_test.go b/internal/service/s3/object_test.go index fa28a4d875eb..62d08f2c8b2d 100644 --- a/internal/service/s3/object_test.go +++ b/internal/service/s3/object_test.go @@ -30,6 +30,8 @@ import ( "github.com/hashicorp/terraform-plugin-testing/terraform" "github.com/hashicorp/terraform-plugin-testing/tfjsonpath" "github.com/hashicorp/terraform-provider-aws/internal/acctest" + tfknownvalue "github.com/hashicorp/terraform-provider-aws/internal/acctest/knownvalue" + tfstatecheck "github.com/hashicorp/terraform-provider-aws/internal/acctest/statecheck" "github.com/hashicorp/terraform-provider-aws/internal/conns" tfs3 "github.com/hashicorp/terraform-provider-aws/internal/service/s3" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" @@ -2119,6 +2121,119 @@ func TestAccS3Object_basicUpgrade(t *testing.T) { }) } +func TestAccS3Object_Identity_ExistingResource_NoRefresh_WithChange(t *testing.T) { + ctx := acctest.Context(t) + var conf s3.GetObjectOutput + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + resourceName := "aws_s3_object.object" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.IAMServiceID), + CheckDestroy: testAccCheckObjectDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + { + ExternalProviders: map[string]resource.ExternalProvider{ + "aws": { + Source: "hashicorp/aws", + VersionConstraint: "6.0.0", + }, + }, + Config: testAccObjectConfig_content(rName, "initial"), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckObjectExists(ctx, resourceName, &conf), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + Config: testAccObjectConfig_content(rName, "updated"), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckObjectExists(ctx, resourceName, &conf), + ), + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectIdentity(resourceName, map[string]knownvalue.Check{ + names.AttrAccountID: tfknownvalue.AccountID(), + names.AttrRegion: knownvalue.StringExact(acctest.Region()), + names.AttrBucket: knownvalue.NotNull(), + names.AttrKey: knownvalue.NotNull(), + }), + statecheck.ExpectIdentityValueMatchesState(resourceName, tfjsonpath.New(names.AttrBucket)), + statecheck.ExpectIdentityValueMatchesState(resourceName, tfjsonpath.New(names.AttrKey)), + }, + }, + }, + }) +} + +func TestAccS3Object_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + var conf s3.GetObjectOutput + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + resourceName := "aws_s3_object.object" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.IAMServiceID), + CheckDestroy: testAccCheckObjectDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + { + ExternalProviders: map[string]resource.ExternalProvider{ + "aws": { + Source: "hashicorp/aws", + VersionConstraint: "6.0.0", + }, + }, + Config: testAccObjectConfig_basic(rName), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckObjectExists(ctx, resourceName, &conf), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + Config: testAccObjectConfig_basic(rName), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckObjectExists(ctx, resourceName, &conf), + ), + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} + func testAccCheckObjectVersionIDDiffers(first, second *s3.GetObjectOutput) resource.TestCheckFunc { return func(s *terraform.State) error { if aws.ToString(first.VersionId) == aws.ToString(second.VersionId) { From 851e6ced307fcecd1fef0896793410a4b991a690 Mon Sep 17 00:00:00 2001 From: Graham Davison Date: Fri, 19 Sep 2025 17:53:39 -0700 Subject: [PATCH 41/81] Generates `Identity_ExistingResource_NoRefresh_NoChange` test for SDK resource types with v6.0 `null` values error --- .../identitytests/resource_test.go.gtpl | 53 +++++++++++++++++ .../service/iam/role_identity_gen_test.go | 57 +++++++++++++++++++ internal/service/iam/role_test.go | 53 ----------------- 3 files changed, 110 insertions(+), 53 deletions(-) diff --git a/internal/generate/identitytests/resource_test.go.gtpl b/internal/generate/identitytests/resource_test.go.gtpl index 575f620d2970..95978523de3d 100644 --- a/internal/generate/identitytests/resource_test.go.gtpl +++ b/internal/generate/identitytests/resource_test.go.gtpl @@ -862,6 +862,59 @@ func {{ template "testname" . }}_Identity_RegionOverride(t *testing.T) { }, }) } + + func {{ template "testname" . }}_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + {{- template "Init" . }} + + {{ template "Test" . }}(ctx, t, resource.TestCase{ + {{ template "TestCaseSetupNoProviders" . }} + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + {{ $step := 1 -}} + // Step {{ $step }}: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/{{ .Name }}/basic_v5.100.0/"), + ConfigVariables: config.Variables{ {{ if .Generator }} + acctest.CtRName: config.StringVariable(rName),{{ end }} + {{ template "AdditionalTfVars" . }} + }, + {{ if .HasExistsFunc -}} + Check: resource.ComposeAggregateTestCheckFunc( + {{- template "ExistsCheck" . -}} + ), + {{ end -}} + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step {{ ($step = inc $step) | print }}: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/{{ .Name }}/basic/"), + ConfigVariables: config.Variables{ {{ if .Generator }} + acctest.CtRName: config.StringVariable(rName),{{ end }} + {{ template "AdditionalTfVars" . }} + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) + } {{ else if .PreIdentityVersion }} {{ if .PreIdentityVersion.GreaterThanOrEqual (NewVersion "6.0.0") }} // Resource Identity was added after v{{ .PreIdentityVersion }} diff --git a/internal/service/iam/role_identity_gen_test.go b/internal/service/iam/role_identity_gen_test.go index 5505787b31b0..f8d07eeca240 100644 --- a/internal/service/iam/role_identity_gen_test.go +++ b/internal/service/iam/role_identity_gen_test.go @@ -185,3 +185,60 @@ func TestAccIAMRole_Identity_ExistingResource(t *testing.T) { }, }) } + +func TestAccIAMRole_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v types.Role + resourceName := "aws_iam_role.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.IAMServiceID), + CheckDestroy: testAccCheckRoleDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/Role/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckRoleExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Role/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/iam/role_test.go b/internal/service/iam/role_test.go index 29c5d6a0474f..1023373be00c 100644 --- a/internal/service/iam/role_test.go +++ b/internal/service/iam/role_test.go @@ -1034,59 +1034,6 @@ func TestAccIAMRole_Identity_ExistingResource_NoRefresh_WithChange(t *testing.T) }) } -func TestAccIAMRole_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { - ctx := acctest.Context(t) - var conf awstypes.Role - rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) - resourceName := "aws_iam_role.test" - - resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, names.IAMServiceID), - CheckDestroy: testAccCheckRoleDestroy(ctx), - AdditionalCLIOptions: &resource.AdditionalCLIOptions{ - Plan: resource.PlanOptions{ - NoRefresh: true, - }, - }, - Steps: []resource.TestStep{ - { - ExternalProviders: map[string]resource.ExternalProvider{ - "aws": { - Source: "hashicorp/aws", - VersionConstraint: "5.100.0", - }, - }, - Config: testAccRoleConfig_basic(rName), - Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckRoleExists(ctx, resourceName, &conf), - ), - ConfigStateChecks: []statecheck.StateCheck{ - tfstatecheck.ExpectNoIdentity(resourceName), - }, - }, - { - ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, - Config: testAccRoleConfig_basic(rName), - Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckRoleExists(ctx, resourceName, &conf), - ), - ConfigPlanChecks: resource.ConfigPlanChecks{ - PreApply: []plancheck.PlanCheck{ - plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), - }, - PostApplyPostRefresh: []plancheck.PlanCheck{ - plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), - }, - }, - ConfigStateChecks: []statecheck.StateCheck{ - tfstatecheck.ExpectNoIdentity(resourceName), - }, - }, - }, - }) -} - func TestAccIAMRole_Identity_ExistingResource_NoRefresh_OnError(t *testing.T) { ctx := acctest.Context(t) var conf awstypes.Role From 11d6dacff3c6572e2ee32c6126383e354bbfc29c Mon Sep 17 00:00:00 2001 From: Graham Davison Date: Sun, 21 Sep 2025 11:21:18 -0700 Subject: [PATCH 42/81] Generates `Identity_ExistingResource_NoRefresh_NoChange` tests for resource types where Identity added after v6.0 --- .../identitytests/resource_test.go.gtpl | 54 +++++++++++++++++ ...enid_connect_provider_identity_gen_test.go | 57 ++++++++++++++++++ .../service/iam/policy_identity_gen_test.go | 58 +++++++++++++++++++ ...ole_policy_attachment_identity_gen_test.go | 57 ++++++++++++++++++ .../iam/role_policy_identity_gen_test.go | 58 +++++++++++++++++++ .../iam/saml_provider_identity_gen_test.go | 57 ++++++++++++++++++ .../service_linked_role_identity_gen_test.go | 57 ++++++++++++++++++ .../s3/bucket_acl_identity_gen_test.go | 57 ++++++++++++++++++ ...et_cors_configuration_identity_gen_test.go | 57 ++++++++++++++++++ .../s3/bucket_logging_identity_gen_test.go | 57 ++++++++++++++++++ .../bucket_notification_identity_gen_test.go | 58 +++++++++++++++++++ .../s3/bucket_object_identity_gen_test.go | 58 +++++++++++++++++++ ...et_ownership_controls_identity_gen_test.go | 57 ++++++++++++++++++ .../s3/bucket_policy_identity_gen_test.go | 57 ++++++++++++++++++ ...t_public_access_block_identity_gen_test.go | 58 +++++++++++++++++++ ...ryption_configuration_identity_gen_test.go | 57 ++++++++++++++++++ .../s3/bucket_versioning_identity_gen_test.go | 57 ++++++++++++++++++ ...website_configuration_identity_gen_test.go | 57 ++++++++++++++++++ .../service/s3/object_identity_gen_test.go | 58 +++++++++++++++++++ 19 files changed, 1086 insertions(+) diff --git a/internal/generate/identitytests/resource_test.go.gtpl b/internal/generate/identitytests/resource_test.go.gtpl index 575f620d2970..f200e50eeaea 100644 --- a/internal/generate/identitytests/resource_test.go.gtpl +++ b/internal/generate/identitytests/resource_test.go.gtpl @@ -951,6 +951,60 @@ func {{ template "testname" . }}_Identity_RegionOverride(t *testing.T) { }, }) } + + // Resource Identity was added after v{{ .PreIdentityVersion }} + func {{ template "testname" . }}_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + {{- template "Init" . }} + + {{ template "Test" . }}(ctx, t, resource.TestCase{ + {{ template "TestCaseSetupNoProviders" . }} + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + {{ $step := 1 -}} + // Step {{ $step }}: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/{{ .Name }}/basic_v{{ .PreIdentityVersion }}/"), + ConfigVariables: config.Variables{ {{ if .Generator }} + acctest.CtRName: config.StringVariable(rName),{{ end }} + {{ template "AdditionalTfVars" . }} + }, + {{ if .HasExistsFunc -}} + Check: resource.ComposeAggregateTestCheckFunc( + {{- template "ExistsCheck" . -}} + ), + {{ end -}} + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step {{ ($step = inc $step) | print }}: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/{{ .Name }}/basic/"), + ConfigVariables: config.Variables{ {{ if .Generator }} + acctest.CtRName: config.StringVariable(rName),{{ end }} + {{ template "AdditionalTfVars" . }} + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) + } {{ else }} func {{ template "testname" . }}_Identity_ExistingResource(t *testing.T) { {{- template "Init" . }} diff --git a/internal/service/iam/openid_connect_provider_identity_gen_test.go b/internal/service/iam/openid_connect_provider_identity_gen_test.go index 8e492c10f232..7122c0272572 100644 --- a/internal/service/iam/openid_connect_provider_identity_gen_test.go +++ b/internal/service/iam/openid_connect_provider_identity_gen_test.go @@ -155,3 +155,60 @@ func TestAccIAMOpenIDConnectProvider_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.4.0 +func TestAccIAMOpenIDConnectProvider_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + resourceName := "aws_iam_openid_connect_provider.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.IAMServiceID), + CheckDestroy: testAccCheckOpenIDConnectProviderDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/OpenIDConnectProvider/basic_v6.4.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckOpenIDConnectProviderExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/OpenIDConnectProvider/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/iam/policy_identity_gen_test.go b/internal/service/iam/policy_identity_gen_test.go index 1c29b095fdc8..ac3b62c18a0a 100644 --- a/internal/service/iam/policy_identity_gen_test.go +++ b/internal/service/iam/policy_identity_gen_test.go @@ -158,3 +158,61 @@ func TestAccIAMPolicy_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.4.0 +func TestAccIAMPolicy_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v types.Policy + resourceName := "aws_iam_policy.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.IAMServiceID), + CheckDestroy: testAccCheckPolicyDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/Policy/basic_v6.4.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckPolicyExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Policy/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/iam/role_policy_attachment_identity_gen_test.go b/internal/service/iam/role_policy_attachment_identity_gen_test.go index e04cf7a4c204..39a6f6a0ac9f 100644 --- a/internal/service/iam/role_policy_attachment_identity_gen_test.go +++ b/internal/service/iam/role_policy_attachment_identity_gen_test.go @@ -161,3 +161,60 @@ func TestAccIAMRolePolicyAttachment_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.0.0 +func TestAccIAMRolePolicyAttachment_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + resourceName := "aws_iam_role_policy_attachment.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.IAMServiceID), + CheckDestroy: testAccCheckRolePolicyAttachmentDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/RolePolicyAttachment/basic_v6.0.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckRolePolicyAttachmentExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/RolePolicyAttachment/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/iam/role_policy_identity_gen_test.go b/internal/service/iam/role_policy_identity_gen_test.go index cfddf4b9fb4a..d19da6861655 100644 --- a/internal/service/iam/role_policy_identity_gen_test.go +++ b/internal/service/iam/role_policy_identity_gen_test.go @@ -163,3 +163,61 @@ func TestAccIAMRolePolicy_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.0.0 +func TestAccIAMRolePolicy_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v string + resourceName := "aws_iam_role_policy.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.IAMServiceID), + CheckDestroy: testAccCheckRolePolicyDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/RolePolicy/basic_v6.0.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckRolePolicyExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/RolePolicy/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/iam/saml_provider_identity_gen_test.go b/internal/service/iam/saml_provider_identity_gen_test.go index 07ad78b3c34c..248668bc40a3 100644 --- a/internal/service/iam/saml_provider_identity_gen_test.go +++ b/internal/service/iam/saml_provider_identity_gen_test.go @@ -155,3 +155,60 @@ func TestAccIAMSAMLProvider_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.4.0 +func TestAccIAMSAMLProvider_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + resourceName := "aws_iam_saml_provider.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.IAMServiceID), + CheckDestroy: testAccCheckSAMLProviderDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/SAMLProvider/basic_v6.4.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckSAMLProviderExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/SAMLProvider/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/iam/service_linked_role_identity_gen_test.go b/internal/service/iam/service_linked_role_identity_gen_test.go index ece8a47cc4a3..763316a0344f 100644 --- a/internal/service/iam/service_linked_role_identity_gen_test.go +++ b/internal/service/iam/service_linked_role_identity_gen_test.go @@ -155,3 +155,60 @@ func TestAccIAMServiceLinkedRole_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.4.0 +func TestAccIAMServiceLinkedRole_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + resourceName := "aws_iam_service_linked_role.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.IAMServiceID), + CheckDestroy: testAccCheckServiceLinkedRoleDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/ServiceLinkedRole/basic_v6.4.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckServiceLinkedRoleExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/ServiceLinkedRole/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/s3/bucket_acl_identity_gen_test.go b/internal/service/s3/bucket_acl_identity_gen_test.go index fd7af4d50567..8639040c2c7f 100644 --- a/internal/service/s3/bucket_acl_identity_gen_test.go +++ b/internal/service/s3/bucket_acl_identity_gen_test.go @@ -266,3 +266,60 @@ func TestAccS3BucketACL_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.10.0 +func TestAccS3BucketACL_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + resourceName := "aws_s3_bucket_acl.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.S3ServiceID), + CheckDestroy: acctest.CheckDestroyNoop, + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/BucketACL/basic_v6.10.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckBucketACLExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/BucketACL/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/s3/bucket_cors_configuration_identity_gen_test.go b/internal/service/s3/bucket_cors_configuration_identity_gen_test.go index a039b1c2223c..f14816f961ad 100644 --- a/internal/service/s3/bucket_cors_configuration_identity_gen_test.go +++ b/internal/service/s3/bucket_cors_configuration_identity_gen_test.go @@ -259,3 +259,60 @@ func TestAccS3BucketCORSConfiguration_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.9.0 +func TestAccS3BucketCORSConfiguration_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + resourceName := "aws_s3_bucket_cors_configuration.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.S3ServiceID), + CheckDestroy: testAccCheckBucketCORSConfigurationDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/BucketCORSConfiguration/basic_v6.9.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckBucketCORSConfigurationExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/BucketCORSConfiguration/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/s3/bucket_logging_identity_gen_test.go b/internal/service/s3/bucket_logging_identity_gen_test.go index 683e7963a13c..584953ad2fa0 100644 --- a/internal/service/s3/bucket_logging_identity_gen_test.go +++ b/internal/service/s3/bucket_logging_identity_gen_test.go @@ -253,3 +253,60 @@ func TestAccS3BucketLogging_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.9.0 +func TestAccS3BucketLogging_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + resourceName := "aws_s3_bucket_logging.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.S3ServiceID), + CheckDestroy: testAccCheckBucketLoggingDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/BucketLogging/basic_v6.9.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckBucketLoggingExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/BucketLogging/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/s3/bucket_notification_identity_gen_test.go b/internal/service/s3/bucket_notification_identity_gen_test.go index 302b049e5d1f..c8343dd96738 100644 --- a/internal/service/s3/bucket_notification_identity_gen_test.go +++ b/internal/service/s3/bucket_notification_identity_gen_test.go @@ -249,3 +249,61 @@ func TestAccS3BucketNotification_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.9.0 +func TestAccS3BucketNotification_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v s3.GetBucketNotificationConfigurationOutput + resourceName := "aws_s3_bucket_notification.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.S3ServiceID), + CheckDestroy: testAccCheckBucketNotificationDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/BucketNotification/basic_v6.9.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckBucketNotificationExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/BucketNotification/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/s3/bucket_object_identity_gen_test.go b/internal/service/s3/bucket_object_identity_gen_test.go index 36933eb03f20..383ecea4b03d 100644 --- a/internal/service/s3/bucket_object_identity_gen_test.go +++ b/internal/service/s3/bucket_object_identity_gen_test.go @@ -275,3 +275,61 @@ func TestAccS3BucketObject_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.0.0 +func TestAccS3BucketObject_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v s3.GetObjectOutput + resourceName := "aws_s3_bucket_object.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.S3ServiceID), + CheckDestroy: testAccCheckBucketObjectDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/BucketObject/basic_v6.0.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckBucketObjectExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/BucketObject/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/s3/bucket_ownership_controls_identity_gen_test.go b/internal/service/s3/bucket_ownership_controls_identity_gen_test.go index ecc97f2585b0..39afdb838289 100644 --- a/internal/service/s3/bucket_ownership_controls_identity_gen_test.go +++ b/internal/service/s3/bucket_ownership_controls_identity_gen_test.go @@ -246,3 +246,60 @@ func TestAccS3BucketOwnershipControls_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.9.0 +func TestAccS3BucketOwnershipControls_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + resourceName := "aws_s3_bucket_ownership_controls.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.S3ServiceID), + CheckDestroy: testAccCheckBucketOwnershipControlsDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/BucketOwnershipControls/basic_v6.9.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckBucketOwnershipControlsExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/BucketOwnershipControls/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/s3/bucket_policy_identity_gen_test.go b/internal/service/s3/bucket_policy_identity_gen_test.go index 98accbe83ecd..d8c278dfddc8 100644 --- a/internal/service/s3/bucket_policy_identity_gen_test.go +++ b/internal/service/s3/bucket_policy_identity_gen_test.go @@ -246,3 +246,60 @@ func TestAccS3BucketPolicy_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.9.0 +func TestAccS3BucketPolicy_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + resourceName := "aws_s3_bucket_policy.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.S3ServiceID), + CheckDestroy: testAccCheckBucketPolicyDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/BucketPolicy/basic_v6.9.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckBucketPolicyExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/BucketPolicy/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/s3/bucket_public_access_block_identity_gen_test.go b/internal/service/s3/bucket_public_access_block_identity_gen_test.go index 740ea905141f..9a81ed22edd7 100644 --- a/internal/service/s3/bucket_public_access_block_identity_gen_test.go +++ b/internal/service/s3/bucket_public_access_block_identity_gen_test.go @@ -249,3 +249,61 @@ func TestAccS3BucketPublicAccessBlock_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.9.0 +func TestAccS3BucketPublicAccessBlock_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v types.PublicAccessBlockConfiguration + resourceName := "aws_s3_bucket_public_access_block.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.S3ServiceID), + CheckDestroy: testAccCheckBucketPublicAccessBlockDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/BucketPublicAccessBlock/basic_v6.9.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckBucketPublicAccessBlockExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/BucketPublicAccessBlock/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/s3/bucket_server_side_encryption_configuration_identity_gen_test.go b/internal/service/s3/bucket_server_side_encryption_configuration_identity_gen_test.go index 4b7bc32f01ec..6942b2431318 100644 --- a/internal/service/s3/bucket_server_side_encryption_configuration_identity_gen_test.go +++ b/internal/service/s3/bucket_server_side_encryption_configuration_identity_gen_test.go @@ -259,3 +259,60 @@ func TestAccS3BucketServerSideEncryptionConfiguration_Identity_ExistingResource( }, }) } + +// Resource Identity was added after v6.9.0 +func TestAccS3BucketServerSideEncryptionConfiguration_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + resourceName := "aws_s3_bucket_server_side_encryption_configuration.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.S3ServiceID), + CheckDestroy: acctest.CheckDestroyNoop, + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/BucketServerSideEncryptionConfiguration/basic_v6.9.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckBucketServerSideEncryptionConfigurationExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/BucketServerSideEncryptionConfiguration/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/s3/bucket_versioning_identity_gen_test.go b/internal/service/s3/bucket_versioning_identity_gen_test.go index fb272bf42440..577efc059d25 100644 --- a/internal/service/s3/bucket_versioning_identity_gen_test.go +++ b/internal/service/s3/bucket_versioning_identity_gen_test.go @@ -253,3 +253,60 @@ func TestAccS3BucketVersioning_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.9.0 +func TestAccS3BucketVersioning_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + resourceName := "aws_s3_bucket_versioning.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.S3ServiceID), + CheckDestroy: testAccCheckBucketVersioningDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/BucketVersioning/basic_v6.9.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckBucketVersioningExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/BucketVersioning/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/s3/bucket_website_configuration_identity_gen_test.go b/internal/service/s3/bucket_website_configuration_identity_gen_test.go index 766651ad6390..a8977521db0d 100644 --- a/internal/service/s3/bucket_website_configuration_identity_gen_test.go +++ b/internal/service/s3/bucket_website_configuration_identity_gen_test.go @@ -253,3 +253,60 @@ func TestAccS3BucketWebsiteConfiguration_Identity_ExistingResource(t *testing.T) }, }) } + +// Resource Identity was added after v6.9.0 +func TestAccS3BucketWebsiteConfiguration_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + resourceName := "aws_s3_bucket_website_configuration.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.S3ServiceID), + CheckDestroy: testAccCheckBucketWebsiteConfigurationDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/BucketWebsiteConfiguration/basic_v6.9.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckBucketWebsiteConfigurationExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/BucketWebsiteConfiguration/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/s3/object_identity_gen_test.go b/internal/service/s3/object_identity_gen_test.go index c194a258b21b..62e40ed20cd6 100644 --- a/internal/service/s3/object_identity_gen_test.go +++ b/internal/service/s3/object_identity_gen_test.go @@ -267,3 +267,61 @@ func TestAccS3Object_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.0.0 +func TestAccS3Object_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v s3.GetObjectOutput + resourceName := "aws_s3_object.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.S3ServiceID), + CheckDestroy: testAccCheckObjectDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/Object/basic_v6.0.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckObjectExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Object/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} From 5a76cec9ee8a4bd5ba463e6a0eafa026287450f7 Mon Sep 17 00:00:00 2001 From: Graham Davison Date: Sun, 21 Sep 2025 12:23:58 -0700 Subject: [PATCH 43/81] Sets `hasNoPreExistingResource` on `aws_cognito_log_delivery_configuration` --- .../cognitoidp/log_delivery_configuration.go | 2 +- ...elivery_configuration_identity_gen_test.go | 59 ------------------- 2 files changed, 1 insertion(+), 60 deletions(-) diff --git a/internal/service/cognitoidp/log_delivery_configuration.go b/internal/service/cognitoidp/log_delivery_configuration.go index 71a7bf70b672..325e05448a4d 100644 --- a/internal/service/cognitoidp/log_delivery_configuration.go +++ b/internal/service/cognitoidp/log_delivery_configuration.go @@ -34,7 +34,7 @@ import ( // @Testing(existsType="github.com/aws/aws-sdk-go-v2/service/cognitoidentityprovider/types;awstypes;awstypes.LogDeliveryConfigurationType") // @Testing(importStateIdFunc="testAccLogDeliveryConfigurationImportStateIdFunc") // @Testing(importStateIdAttribute="user_pool_id") -// @Testing(preIdentityVersion="v6.3.0") +// @Testing(hasNoPreExistingResource=true) func newLogDeliveryConfigurationResource(context.Context) (resource.ResourceWithConfigure, error) { r := &logDeliveryConfigurationResource{} return r, nil diff --git a/internal/service/cognitoidp/log_delivery_configuration_identity_gen_test.go b/internal/service/cognitoidp/log_delivery_configuration_identity_gen_test.go index f0c97acdb84c..82771ba952f3 100644 --- a/internal/service/cognitoidp/log_delivery_configuration_identity_gen_test.go +++ b/internal/service/cognitoidp/log_delivery_configuration_identity_gen_test.go @@ -16,7 +16,6 @@ import ( "github.com/hashicorp/terraform-plugin-testing/tfversion" "github.com/hashicorp/terraform-provider-aws/internal/acctest" tfknownvalue "github.com/hashicorp/terraform-provider-aws/internal/acctest/knownvalue" - tfstatecheck "github.com/hashicorp/terraform-provider-aws/internal/acctest/statecheck" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -195,61 +194,3 @@ func TestAccCognitoIDPLogDeliveryConfiguration_Identity_RegionOverride(t *testin }, }) } - -// Resource Identity was added after v6.3.0 -func TestAccCognitoIDPLogDeliveryConfiguration_Identity_ExistingResource(t *testing.T) { - ctx := acctest.Context(t) - - var v awstypes.LogDeliveryConfigurationType - resourceName := "aws_cognito_log_delivery_configuration.test" - rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) - - acctest.ParallelTest(ctx, t, resource.TestCase{ - TerraformVersionChecks: []tfversion.TerraformVersionCheck{ - tfversion.SkipBelow(tfversion.Version1_12_0), - }, - PreCheck: func() { acctest.PreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, names.CognitoIDPServiceID), - CheckDestroy: testAccCheckLogDeliveryConfigurationDestroy(ctx), - Steps: []resource.TestStep{ - // Step 1: Create pre-Identity - { - ConfigDirectory: config.StaticDirectory("testdata/LogDeliveryConfiguration/basic_v6.3.0/"), - ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), - }, - Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckLogDeliveryConfigurationExists(ctx, resourceName, &v), - ), - ConfigStateChecks: []statecheck.StateCheck{ - tfstatecheck.ExpectNoIdentity(resourceName), - }, - }, - - // Step 2: Current version - { - ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, - ConfigDirectory: config.StaticDirectory("testdata/LogDeliveryConfiguration/basic/"), - ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), - }, - ConfigPlanChecks: resource.ConfigPlanChecks{ - PreApply: []plancheck.PlanCheck{ - plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), - }, - PostApplyPostRefresh: []plancheck.PlanCheck{ - plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), - }, - }, - ConfigStateChecks: []statecheck.StateCheck{ - statecheck.ExpectIdentity(resourceName, map[string]knownvalue.Check{ - names.AttrAccountID: tfknownvalue.AccountID(), - names.AttrRegion: knownvalue.StringExact(acctest.Region()), - names.AttrUserPoolID: knownvalue.NotNull(), - }), - statecheck.ExpectIdentityValueMatchesState(resourceName, tfjsonpath.New(names.AttrUserPoolID)), - }, - }, - }, - }) -} From c7a2216eb7b677ff58837a1550473f1c600a4993 Mon Sep 17 00:00:00 2001 From: Graham Davison Date: Sun, 21 Sep 2025 22:52:33 -0700 Subject: [PATCH 44/81] Generates `Identity_ExistingResource_NoRefresh_NoChange` tests for resource types where Identity added after v6.0 --- .../identitytests/resource_test.go.gtpl | 9 ++- .../batch/job_definition_identity_gen_test.go | 58 ++++++++++++++++++ .../key_identity_gen_test.go | 57 +++++++++++++++++ .../metric_alarm_identity_gen_test.go | 58 ++++++++++++++++++ .../ec2/ec2_instance_identity_gen_test.go | 53 ++++++++++++++++ .../ec2/vpc_endpoint_identity_gen_test.go | 58 ++++++++++++++++++ .../ec2/vpc_route_identity_gen_test.go | 53 ++++++++++++++++ .../ec2/vpc_route_table_identity_gen_test.go | 53 ++++++++++++++++ ...ity_group_egress_rule_identity_gen_test.go | 58 ++++++++++++++++++ .../vpc_security_group_identity_gen_test.go | 58 ++++++++++++++++++ ...ty_group_ingress_rule_identity_gen_test.go | 58 ++++++++++++++++++ ...group_vpc_association_identity_gen_test.go | 58 ++++++++++++++++++ .../ec2/vpc_subnet_identity_gen_test.go | 53 ++++++++++++++++ .../ecr/lifecycle_policy_identity_gen_test.go | 57 +++++++++++++++++ .../ecr/repository_identity_gen_test.go | 58 ++++++++++++++++++ .../repository_policy_identity_gen_test.go | 57 +++++++++++++++++ .../elbv2/listener_identity_gen_test.go | 58 ++++++++++++++++++ .../elbv2/listener_rule_identity_gen_test.go | 58 ++++++++++++++++++ .../elbv2/target_group_identity_gen_test.go | 58 ++++++++++++++++++ .../elbv2/trust_store_identity_gen_test.go | 58 ++++++++++++++++++ .../service/events/rule_identity_gen_test.go | 58 ++++++++++++++++++ .../events/target_identity_gen_test.go | 58 ++++++++++++++++++ .../accelerator_identity_gen_test.go | 57 +++++++++++++++++ ...m_routing_accelerator_identity_gen_test.go | 57 +++++++++++++++++ ...outing_endpoint_group_identity_gen_test.go | 58 ++++++++++++++++++ ...stom_routing_listener_identity_gen_test.go | 58 ++++++++++++++++++ .../endpoint_group_identity_gen_test.go | 58 ++++++++++++++++++ .../listener_identity_gen_test.go | 57 +++++++++++++++++ .../glue/registry_identity_gen_test.go | 58 ++++++++++++++++++ .../service/glue/schema_identity_gen_test.go | 58 ++++++++++++++++++ .../container_recipe_identity_gen_test.go | 57 +++++++++++++++++ ...ibution_configuration_identity_gen_test.go | 57 +++++++++++++++++ .../imagebuilder/image_identity_gen_test.go | 57 +++++++++++++++++ .../image_pipeline_identity_gen_test.go | 57 +++++++++++++++++ .../image_recipe_identity_gen_test.go | 57 +++++++++++++++++ ...ructure_configuration_identity_gen_test.go | 57 +++++++++++++++++ .../workflow_identity_gen_test.go | 57 +++++++++++++++++ .../assessment_target_identity_gen_test.go | 58 ++++++++++++++++++ .../assessment_template_identity_gen_test.go | 58 ++++++++++++++++++ .../resource_group_identity_gen_test.go | 58 ++++++++++++++++++ .../service/ivs/channel_identity_gen_test.go | 53 ++++++++++++++++ .../playback_key_pair_identity_gen_test.go | 59 ++++++++++++++++++ ...cording_configuration_identity_gen_test.go | 58 ++++++++++++++++++ ...logging_configuration_identity_gen_test.go | 58 ++++++++++++++++++ .../service/ivschat/room_identity_gen_test.go | 53 ++++++++++++++++ .../service/kms/alias_identity_gen_test.go | 58 ++++++++++++++++++ internal/service/kms/key_identity_gen_test.go | 58 ++++++++++++++++++ .../lambda/function_identity_gen_test.go | 58 ++++++++++++++++++ .../lambda/permission_identity_gen_test.go | 58 ++++++++++++++++++ .../service/logs/group_identity_gen_test.go | 58 ++++++++++++++++++ .../organization_identity_gen_test.go | 56 +++++++++++++++++ .../organizational_unit_identity_gen_test.go | 61 +++++++++++++++++++ .../policy_attachment_identity_gen_test.go | 60 ++++++++++++++++++ .../organizations/policy_identity_gen_test.go | 61 +++++++++++++++++++ .../resource_policy_identity_gen_test.go | 59 ++++++++++++++++++ .../route53/record_identity_gen_test.go | 61 +++++++++++++++++++ .../rule_association_identity_gen_test.go | 61 +++++++++++++++++++ .../route53resolver/rule_identity_gen_test.go | 58 ++++++++++++++++++ .../user_profile_identity_gen_test.go | 58 ++++++++++++++++++ .../secret_identity_gen_test.go | 58 ++++++++++++++++++ .../secret_policy_identity_gen_test.go | 58 ++++++++++++++++++ .../secret_rotation_identity_gen_test.go | 58 ++++++++++++++++++ .../secret_version_identity_gen_test.go | 58 ++++++++++++++++++ .../sfn/state_machine_identity_gen_test.go | 58 ++++++++++++++++++ ...ata_protection_policy_identity_gen_test.go | 57 +++++++++++++++++ .../service/sns/topic_identity_gen_test.go | 58 ++++++++++++++++++ .../sns/topic_policy_identity_gen_test.go | 57 +++++++++++++++++ .../topic_subscription_identity_gen_test.go | 58 ++++++++++++++++++ .../service/sqs/queue_identity_gen_test.go | 58 ++++++++++++++++++ .../sqs/queue_policy_identity_gen_test.go | 58 ++++++++++++++++++ ..._redrive_allow_policy_identity_gen_test.go | 58 ++++++++++++++++++ .../queue_redrive_policy_identity_gen_test.go | 58 ++++++++++++++++++ .../ssm/association_identity_gen_test.go | 57 +++++++++++++++++ .../service/ssm/document_identity_gen_test.go | 57 +++++++++++++++++ .../maintenance_window_identity_gen_test.go | 58 ++++++++++++++++++ ...tenance_window_target_identity_gen_test.go | 58 ++++++++++++++++++ ...intenance_window_task_identity_gen_test.go | 58 ++++++++++++++++++ .../ssm/parameter_identity_gen_test.go | 58 ++++++++++++++++++ .../ssm/patch_baseline_identity_gen_test.go | 58 ++++++++++++++++++ 79 files changed, 4499 insertions(+), 1 deletion(-) diff --git a/internal/generate/identitytests/resource_test.go.gtpl b/internal/generate/identitytests/resource_test.go.gtpl index f200e50eeaea..3f2d3eb17e76 100644 --- a/internal/generate/identitytests/resource_test.go.gtpl +++ b/internal/generate/identitytests/resource_test.go.gtpl @@ -967,6 +967,9 @@ func {{ template "testname" . }}_Identity_RegionOverride(t *testing.T) { {{ $step := 1 -}} // Step {{ $step }}: Create pre-Identity { + {{ if .UseAlternateAccount -}} + ProtoV5ProviderFactories: acctest.ProtoV5FactoriesNamed(ctx, t, providers, acctest.ProviderNameAlternate), + {{ end -}} ConfigDirectory: config.StaticDirectory("testdata/{{ .Name }}/basic_v{{ .PreIdentityVersion }}/"), ConfigVariables: config.Variables{ {{ if .Generator }} acctest.CtRName: config.StringVariable(rName),{{ end }} @@ -984,7 +987,11 @@ func {{ template "testname" . }}_Identity_RegionOverride(t *testing.T) { // Step {{ ($step = inc $step) | print }}: Current version { - ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + {{ if .UseAlternateAccount -}} + ProtoV5ProviderFactories: acctest.ProtoV5FactoriesNamedAlternate(ctx, t, providers), + {{ else -}} + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + {{ end -}} ConfigDirectory: config.StaticDirectory("testdata/{{ .Name }}/basic/"), ConfigVariables: config.Variables{ {{ if .Generator }} acctest.CtRName: config.StringVariable(rName),{{ end }} diff --git a/internal/service/batch/job_definition_identity_gen_test.go b/internal/service/batch/job_definition_identity_gen_test.go index 515cde790554..c0cc9bddaf10 100644 --- a/internal/service/batch/job_definition_identity_gen_test.go +++ b/internal/service/batch/job_definition_identity_gen_test.go @@ -283,3 +283,61 @@ func TestAccBatchJobDefinition_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.4.0 +func TestAccBatchJobDefinition_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v types.JobDefinition + resourceName := "aws_batch_job_definition.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.BatchServiceID), + CheckDestroy: testAccCheckJobDefinitionDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/JobDefinition/basic_v6.4.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckJobDefinitionExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/JobDefinition/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/cloudfrontkeyvaluestore/key_identity_gen_test.go b/internal/service/cloudfrontkeyvaluestore/key_identity_gen_test.go index 5d0874359128..5f470cee46f6 100644 --- a/internal/service/cloudfrontkeyvaluestore/key_identity_gen_test.go +++ b/internal/service/cloudfrontkeyvaluestore/key_identity_gen_test.go @@ -160,3 +160,60 @@ func TestAccCloudFrontKeyValueStoreKey_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.0.0 +func TestAccCloudFrontKeyValueStoreKey_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + resourceName := "aws_cloudfrontkeyvaluestore_key.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.CloudFrontKeyValueStoreServiceID), + CheckDestroy: testAccCheckKeyDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/Key/basic_v6.0.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckKeyExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Key/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/cloudwatch/metric_alarm_identity_gen_test.go b/internal/service/cloudwatch/metric_alarm_identity_gen_test.go index 0193cfb3ef8a..e9216e1c0115 100644 --- a/internal/service/cloudwatch/metric_alarm_identity_gen_test.go +++ b/internal/service/cloudwatch/metric_alarm_identity_gen_test.go @@ -254,3 +254,61 @@ func TestAccCloudWatchMetricAlarm_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.7.0 +func TestAccCloudWatchMetricAlarm_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v awstypes.MetricAlarm + resourceName := "aws_cloudwatch_metric_alarm.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.CloudWatchServiceID), + CheckDestroy: testAccCheckMetricAlarmDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/MetricAlarm/basic_v6.7.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckMetricAlarmExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/MetricAlarm/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/ec2/ec2_instance_identity_gen_test.go b/internal/service/ec2/ec2_instance_identity_gen_test.go index e2de8e44186a..17affa6948db 100644 --- a/internal/service/ec2/ec2_instance_identity_gen_test.go +++ b/internal/service/ec2/ec2_instance_identity_gen_test.go @@ -235,3 +235,56 @@ func TestAccEC2Instance_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.10.0 +func TestAccEC2Instance_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v awstypes.Instance + resourceName := "aws_instance.test" + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.EC2ServiceID), + CheckDestroy: testAccCheckInstanceDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/Instance/basic_v6.10.0/"), + ConfigVariables: config.Variables{}, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckInstanceExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Instance/basic/"), + ConfigVariables: config.Variables{}, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/ec2/vpc_endpoint_identity_gen_test.go b/internal/service/ec2/vpc_endpoint_identity_gen_test.go index 97b778a70df7..4f813fbe4489 100644 --- a/internal/service/ec2/vpc_endpoint_identity_gen_test.go +++ b/internal/service/ec2/vpc_endpoint_identity_gen_test.go @@ -249,3 +249,61 @@ func TestAccVPCVPCEndpoint_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.12.0 +func TestAccVPCVPCEndpoint_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v types.VpcEndpoint + resourceName := "aws_vpc_endpoint.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.EC2ServiceID), + CheckDestroy: testAccCheckVPCEndpointDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/VPCEndpoint/basic_v6.12.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckVPCEndpointExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/VPCEndpoint/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/ec2/vpc_route_identity_gen_test.go b/internal/service/ec2/vpc_route_identity_gen_test.go index c088e8526ef8..1182215b72d4 100644 --- a/internal/service/ec2/vpc_route_identity_gen_test.go +++ b/internal/service/ec2/vpc_route_identity_gen_test.go @@ -252,3 +252,56 @@ func TestAccVPCRoute_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.10.0 +func TestAccVPCRoute_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v types.Route + resourceName := "aws_route.test" + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.EC2ServiceID), + CheckDestroy: testAccCheckRouteDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/Route/basic_v6.10.0/"), + ConfigVariables: config.Variables{}, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckRouteExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Route/basic/"), + ConfigVariables: config.Variables{}, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/ec2/vpc_route_table_identity_gen_test.go b/internal/service/ec2/vpc_route_table_identity_gen_test.go index 4c9f6f8d63c3..dac6d04b9c13 100644 --- a/internal/service/ec2/vpc_route_table_identity_gen_test.go +++ b/internal/service/ec2/vpc_route_table_identity_gen_test.go @@ -229,3 +229,56 @@ func TestAccVPCRouteTable_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.9.0 +func TestAccVPCRouteTable_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v awstypes.RouteTable + resourceName := "aws_route_table.test" + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.EC2ServiceID), + CheckDestroy: testAccCheckRouteTableDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/RouteTable/basic_v6.9.0/"), + ConfigVariables: config.Variables{}, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckRouteTableExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/RouteTable/basic/"), + ConfigVariables: config.Variables{}, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/ec2/vpc_security_group_egress_rule_identity_gen_test.go b/internal/service/ec2/vpc_security_group_egress_rule_identity_gen_test.go index 9476fd679732..2cdf51e07c77 100644 --- a/internal/service/ec2/vpc_security_group_egress_rule_identity_gen_test.go +++ b/internal/service/ec2/vpc_security_group_egress_rule_identity_gen_test.go @@ -254,3 +254,61 @@ func TestAccVPCSecurityGroupEgressRule_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.12.0 +func TestAccVPCSecurityGroupEgressRule_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v awstypes.SecurityGroupRule + resourceName := "aws_vpc_security_group_egress_rule.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.EC2ServiceID), + CheckDestroy: testAccCheckSecurityGroupEgressRuleDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/SecurityGroupEgressRule/basic_v6.12.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckSecurityGroupEgressRuleExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/SecurityGroupEgressRule/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/ec2/vpc_security_group_identity_gen_test.go b/internal/service/ec2/vpc_security_group_identity_gen_test.go index 62ac89ef68f6..400398c9db51 100644 --- a/internal/service/ec2/vpc_security_group_identity_gen_test.go +++ b/internal/service/ec2/vpc_security_group_identity_gen_test.go @@ -255,3 +255,61 @@ func TestAccVPCSecurityGroup_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.7.0 +func TestAccVPCSecurityGroup_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v awstypes.SecurityGroup + resourceName := "aws_security_group.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.EC2ServiceID), + CheckDestroy: testAccCheckSecurityGroupDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/SecurityGroup/basic_v6.7.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckSecurityGroupExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/SecurityGroup/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/ec2/vpc_security_group_ingress_rule_identity_gen_test.go b/internal/service/ec2/vpc_security_group_ingress_rule_identity_gen_test.go index 715767f4c043..dd82b6d841f6 100644 --- a/internal/service/ec2/vpc_security_group_ingress_rule_identity_gen_test.go +++ b/internal/service/ec2/vpc_security_group_ingress_rule_identity_gen_test.go @@ -254,3 +254,61 @@ func TestAccVPCSecurityGroupIngressRule_Identity_ExistingResource(t *testing.T) }, }) } + +// Resource Identity was added after v6.12.0 +func TestAccVPCSecurityGroupIngressRule_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v awstypes.SecurityGroupRule + resourceName := "aws_vpc_security_group_ingress_rule.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.EC2ServiceID), + CheckDestroy: testAccCheckSecurityGroupIngressRuleDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/SecurityGroupIngressRule/basic_v6.12.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckSecurityGroupIngressRuleExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/SecurityGroupIngressRule/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/ec2/vpc_security_group_vpc_association_identity_gen_test.go b/internal/service/ec2/vpc_security_group_vpc_association_identity_gen_test.go index ef24a44e21f4..1ffc7cf4dc87 100644 --- a/internal/service/ec2/vpc_security_group_vpc_association_identity_gen_test.go +++ b/internal/service/ec2/vpc_security_group_vpc_association_identity_gen_test.go @@ -263,3 +263,61 @@ func TestAccVPCSecurityGroupVPCAssociation_Identity_ExistingResource(t *testing. }, }) } + +// Resource Identity was added after v6.0.0 +func TestAccVPCSecurityGroupVPCAssociation_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v awstypes.SecurityGroupVpcAssociation + resourceName := "aws_vpc_security_group_vpc_association.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.EC2ServiceID), + CheckDestroy: testAccCheckSecurityGroupVPCAssociationDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/SecurityGroupVPCAssociation/basic_v6.0.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckSecurityGroupVPCAssociationExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/SecurityGroupVPCAssociation/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/ec2/vpc_subnet_identity_gen_test.go b/internal/service/ec2/vpc_subnet_identity_gen_test.go index 8e1d0e5d4344..b501fcf4259e 100644 --- a/internal/service/ec2/vpc_subnet_identity_gen_test.go +++ b/internal/service/ec2/vpc_subnet_identity_gen_test.go @@ -229,3 +229,56 @@ func TestAccVPCSubnet_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.8.0 +func TestAccVPCSubnet_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v awstypes.Subnet + resourceName := "aws_subnet.test" + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.EC2ServiceID), + CheckDestroy: testAccCheckSubnetDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/Subnet/basic_v6.8.0/"), + ConfigVariables: config.Variables{}, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckSubnetExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Subnet/basic/"), + ConfigVariables: config.Variables{}, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/ecr/lifecycle_policy_identity_gen_test.go b/internal/service/ecr/lifecycle_policy_identity_gen_test.go index 69b0e43d8213..0317708264ca 100644 --- a/internal/service/ecr/lifecycle_policy_identity_gen_test.go +++ b/internal/service/ecr/lifecycle_policy_identity_gen_test.go @@ -251,3 +251,60 @@ func TestAccECRLifecyclePolicy_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.10.0 +func TestAccECRLifecyclePolicy_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + resourceName := "aws_ecr_lifecycle_policy.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.ECRServiceID), + CheckDestroy: testAccCheckLifecyclePolicyDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/LifecyclePolicy/basic_v6.10.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckLifecyclePolicyExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/LifecyclePolicy/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/ecr/repository_identity_gen_test.go b/internal/service/ecr/repository_identity_gen_test.go index e2d1e3d1a48c..bdac34cd9438 100644 --- a/internal/service/ecr/repository_identity_gen_test.go +++ b/internal/service/ecr/repository_identity_gen_test.go @@ -254,3 +254,61 @@ func TestAccECRRepository_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.10.0 +func TestAccECRRepository_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v types.Repository + resourceName := "aws_ecr_repository.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.ECRServiceID), + CheckDestroy: testAccCheckRepositoryDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/Repository/basic_v6.10.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckRepositoryExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Repository/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/ecr/repository_policy_identity_gen_test.go b/internal/service/ecr/repository_policy_identity_gen_test.go index 36740758b4d6..b520ee88eaf4 100644 --- a/internal/service/ecr/repository_policy_identity_gen_test.go +++ b/internal/service/ecr/repository_policy_identity_gen_test.go @@ -251,3 +251,60 @@ func TestAccECRRepositoryPolicy_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.10.0 +func TestAccECRRepositoryPolicy_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + resourceName := "aws_ecr_repository_policy.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.ECRServiceID), + CheckDestroy: testAccCheckRepositoryPolicyDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/RepositoryPolicy/basic_v6.10.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckRepositoryPolicyExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/RepositoryPolicy/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/elbv2/listener_identity_gen_test.go b/internal/service/elbv2/listener_identity_gen_test.go index 6917e6dada8b..3293d4858d30 100644 --- a/internal/service/elbv2/listener_identity_gen_test.go +++ b/internal/service/elbv2/listener_identity_gen_test.go @@ -300,3 +300,61 @@ func TestAccELBV2Listener_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.3.0 +func TestAccELBV2Listener_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v awstypes.Listener + resourceName := "aws_lb_listener.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.ELBV2ServiceID), + CheckDestroy: testAccCheckListenerDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/Listener/basic_v6.3.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckListenerExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Listener/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/elbv2/listener_rule_identity_gen_test.go b/internal/service/elbv2/listener_rule_identity_gen_test.go index e6d544ae8b09..98195a5e2f9e 100644 --- a/internal/service/elbv2/listener_rule_identity_gen_test.go +++ b/internal/service/elbv2/listener_rule_identity_gen_test.go @@ -290,3 +290,61 @@ func TestAccELBV2ListenerRule_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.3.0 +func TestAccELBV2ListenerRule_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v awstypes.Rule + resourceName := "aws_lb_listener_rule.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.ELBV2ServiceID), + CheckDestroy: testAccCheckListenerRuleDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/ListenerRule/basic_v6.3.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckListenerRuleExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/ListenerRule/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/elbv2/target_group_identity_gen_test.go b/internal/service/elbv2/target_group_identity_gen_test.go index a60236081192..fc3471bc96d0 100644 --- a/internal/service/elbv2/target_group_identity_gen_test.go +++ b/internal/service/elbv2/target_group_identity_gen_test.go @@ -290,3 +290,61 @@ func TestAccELBV2TargetGroup_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.3.0 +func TestAccELBV2TargetGroup_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v types.TargetGroup + resourceName := "aws_lb_target_group.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.ELBV2ServiceID), + CheckDestroy: testAccCheckTargetGroupDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/TargetGroup/basic_v6.3.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckTargetGroupExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/TargetGroup/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/elbv2/trust_store_identity_gen_test.go b/internal/service/elbv2/trust_store_identity_gen_test.go index 3e33de1a0c81..ce01e00b0c22 100644 --- a/internal/service/elbv2/trust_store_identity_gen_test.go +++ b/internal/service/elbv2/trust_store_identity_gen_test.go @@ -300,3 +300,61 @@ func TestAccELBV2TrustStore_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.3.0 +func TestAccELBV2TrustStore_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v types.TrustStore + resourceName := "aws_lb_trust_store.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.ELBV2ServiceID), + CheckDestroy: testAccCheckTrustStoreDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/TrustStore/basic_v6.3.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckTrustStoreExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/TrustStore/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/events/rule_identity_gen_test.go b/internal/service/events/rule_identity_gen_test.go index 804026fdcaac..d341a5c36175 100644 --- a/internal/service/events/rule_identity_gen_test.go +++ b/internal/service/events/rule_identity_gen_test.go @@ -249,3 +249,61 @@ func TestAccEventsRule_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.7.0 +func TestAccEventsRule_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v eventbridge.DescribeRuleOutput + resourceName := "aws_cloudwatch_event_rule.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.EventsServiceID), + CheckDestroy: testAccCheckRuleDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/Rule/basic_v6.7.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckRuleExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Rule/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/events/target_identity_gen_test.go b/internal/service/events/target_identity_gen_test.go index 271b4466e3d7..0907673d3211 100644 --- a/internal/service/events/target_identity_gen_test.go +++ b/internal/service/events/target_identity_gen_test.go @@ -271,3 +271,61 @@ func TestAccEventsTarget_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.9.0 +func TestAccEventsTarget_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v types.Target + resourceName := "aws_cloudwatch_event_target.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.EventsServiceID), + CheckDestroy: testAccCheckTargetDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/Target/basic_v6.9.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckTargetExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Target/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/globalaccelerator/accelerator_identity_gen_test.go b/internal/service/globalaccelerator/accelerator_identity_gen_test.go index f6e6d01787cd..09a81a85a4db 100644 --- a/internal/service/globalaccelerator/accelerator_identity_gen_test.go +++ b/internal/service/globalaccelerator/accelerator_identity_gen_test.go @@ -155,3 +155,60 @@ func TestAccGlobalAcceleratorAccelerator_Identity_ExistingResource(t *testing.T) }, }) } + +// Resource Identity was added after v6.3.0 +func TestAccGlobalAcceleratorAccelerator_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + resourceName := "aws_globalaccelerator_accelerator.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.GlobalAcceleratorServiceID), + CheckDestroy: testAccCheckAcceleratorDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/Accelerator/basic_v6.3.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckAcceleratorExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Accelerator/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/globalaccelerator/custom_routing_accelerator_identity_gen_test.go b/internal/service/globalaccelerator/custom_routing_accelerator_identity_gen_test.go index bbd23cbc3895..eb1d089ba40f 100644 --- a/internal/service/globalaccelerator/custom_routing_accelerator_identity_gen_test.go +++ b/internal/service/globalaccelerator/custom_routing_accelerator_identity_gen_test.go @@ -155,3 +155,60 @@ func TestAccGlobalAcceleratorCustomRoutingAccelerator_Identity_ExistingResource( }, }) } + +// Resource Identity was added after v6.3.0 +func TestAccGlobalAcceleratorCustomRoutingAccelerator_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + resourceName := "aws_globalaccelerator_custom_routing_accelerator.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.GlobalAcceleratorServiceID), + CheckDestroy: testAccCheckCustomRoutingAcceleratorDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/CustomRoutingAccelerator/basic_v6.3.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckCustomRoutingAcceleratorExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/CustomRoutingAccelerator/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/globalaccelerator/custom_routing_endpoint_group_identity_gen_test.go b/internal/service/globalaccelerator/custom_routing_endpoint_group_identity_gen_test.go index 5b15d05a02b9..2aae770e003e 100644 --- a/internal/service/globalaccelerator/custom_routing_endpoint_group_identity_gen_test.go +++ b/internal/service/globalaccelerator/custom_routing_endpoint_group_identity_gen_test.go @@ -158,3 +158,61 @@ func TestAccGlobalAcceleratorCustomRoutingEndpointGroup_Identity_ExistingResourc }, }) } + +// Resource Identity was added after v6.4.0 +func TestAccGlobalAcceleratorCustomRoutingEndpointGroup_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v awstypes.CustomRoutingEndpointGroup + resourceName := "aws_globalaccelerator_custom_routing_endpoint_group.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.GlobalAcceleratorServiceID), + CheckDestroy: testAccCheckCustomRoutingEndpointGroupDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/CustomRoutingEndpointGroup/basic_v6.4.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckCustomRoutingEndpointGroupExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/CustomRoutingEndpointGroup/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/globalaccelerator/custom_routing_listener_identity_gen_test.go b/internal/service/globalaccelerator/custom_routing_listener_identity_gen_test.go index 32fe5dda9c8e..b6a85022fb93 100644 --- a/internal/service/globalaccelerator/custom_routing_listener_identity_gen_test.go +++ b/internal/service/globalaccelerator/custom_routing_listener_identity_gen_test.go @@ -158,3 +158,61 @@ func TestAccGlobalAcceleratorCustomRoutingListener_Identity_ExistingResource(t * }, }) } + +// Resource Identity was added after v6.4.0 +func TestAccGlobalAcceleratorCustomRoutingListener_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v awstypes.CustomRoutingListener + resourceName := "aws_globalaccelerator_custom_routing_listener.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.GlobalAcceleratorServiceID), + CheckDestroy: testAccCheckCustomRoutingListenerDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/CustomRoutingListener/basic_v6.4.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckCustomRoutingListenerExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/CustomRoutingListener/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/globalaccelerator/endpoint_group_identity_gen_test.go b/internal/service/globalaccelerator/endpoint_group_identity_gen_test.go index b8372021ee74..3e6247828f9e 100644 --- a/internal/service/globalaccelerator/endpoint_group_identity_gen_test.go +++ b/internal/service/globalaccelerator/endpoint_group_identity_gen_test.go @@ -158,3 +158,61 @@ func TestAccGlobalAcceleratorEndpointGroup_Identity_ExistingResource(t *testing. }, }) } + +// Resource Identity was added after v6.4.0 +func TestAccGlobalAcceleratorEndpointGroup_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v awstypes.EndpointGroup + resourceName := "aws_globalaccelerator_endpoint_group.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.GlobalAcceleratorServiceID), + CheckDestroy: testAccCheckEndpointGroupDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/EndpointGroup/basic_v6.4.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckEndpointGroupExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/EndpointGroup/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/globalaccelerator/listener_identity_gen_test.go b/internal/service/globalaccelerator/listener_identity_gen_test.go index 643794d4af8d..b506710456e8 100644 --- a/internal/service/globalaccelerator/listener_identity_gen_test.go +++ b/internal/service/globalaccelerator/listener_identity_gen_test.go @@ -155,3 +155,60 @@ func TestAccGlobalAcceleratorListener_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.4.0 +func TestAccGlobalAcceleratorListener_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + resourceName := "aws_globalaccelerator_listener.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.GlobalAcceleratorServiceID), + CheckDestroy: testAccCheckListenerDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/Listener/basic_v6.4.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckListenerExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Listener/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/glue/registry_identity_gen_test.go b/internal/service/glue/registry_identity_gen_test.go index 93a44b5ab0bb..3a9a57e94e11 100644 --- a/internal/service/glue/registry_identity_gen_test.go +++ b/internal/service/glue/registry_identity_gen_test.go @@ -281,3 +281,61 @@ func TestAccGlueRegistry_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.3.0 +func TestAccGlueRegistry_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v glue.GetRegistryOutput + resourceName := "aws_glue_registry.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.GlueServiceID), + CheckDestroy: testAccCheckRegistryDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/Registry/basic_v6.3.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckRegistryExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Registry/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/glue/schema_identity_gen_test.go b/internal/service/glue/schema_identity_gen_test.go index 3e8e677ac621..7a4547653a9f 100644 --- a/internal/service/glue/schema_identity_gen_test.go +++ b/internal/service/glue/schema_identity_gen_test.go @@ -281,3 +281,61 @@ func TestAccGlueSchema_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.3.0 +func TestAccGlueSchema_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v glue.GetSchemaOutput + resourceName := "aws_glue_schema.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.GlueServiceID), + CheckDestroy: testAccCheckSchemaDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/Schema/basic_v6.3.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckSchemaExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Schema/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/imagebuilder/container_recipe_identity_gen_test.go b/internal/service/imagebuilder/container_recipe_identity_gen_test.go index 319b7e87ddb0..c1f58c4b55fa 100644 --- a/internal/service/imagebuilder/container_recipe_identity_gen_test.go +++ b/internal/service/imagebuilder/container_recipe_identity_gen_test.go @@ -278,3 +278,60 @@ func TestAccImageBuilderContainerRecipe_Identity_ExistingResource(t *testing.T) }, }) } + +// Resource Identity was added after v6.3.0 +func TestAccImageBuilderContainerRecipe_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + resourceName := "aws_imagebuilder_container_recipe.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.ImageBuilderServiceID), + CheckDestroy: testAccCheckContainerRecipeDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/ContainerRecipe/basic_v6.3.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckContainerRecipeExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/ContainerRecipe/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/imagebuilder/distribution_configuration_identity_gen_test.go b/internal/service/imagebuilder/distribution_configuration_identity_gen_test.go index 67ff45d69ba3..a56e989e11a6 100644 --- a/internal/service/imagebuilder/distribution_configuration_identity_gen_test.go +++ b/internal/service/imagebuilder/distribution_configuration_identity_gen_test.go @@ -278,3 +278,60 @@ func TestAccImageBuilderDistributionConfiguration_Identity_ExistingResource(t *t }, }) } + +// Resource Identity was added after v6.3.0 +func TestAccImageBuilderDistributionConfiguration_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + resourceName := "aws_imagebuilder_distribution_configuration.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.ImageBuilderServiceID), + CheckDestroy: testAccCheckDistributionConfigurationDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/DistributionConfiguration/basic_v6.3.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckDistributionConfigurationExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/DistributionConfiguration/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/imagebuilder/image_identity_gen_test.go b/internal/service/imagebuilder/image_identity_gen_test.go index edca39903fbf..05d81ace020a 100644 --- a/internal/service/imagebuilder/image_identity_gen_test.go +++ b/internal/service/imagebuilder/image_identity_gen_test.go @@ -278,3 +278,60 @@ func TestAccImageBuilderImage_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.3.0 +func TestAccImageBuilderImage_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + resourceName := "aws_imagebuilder_image.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.ImageBuilderServiceID), + CheckDestroy: testAccCheckImageDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/Image/basic_v6.3.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckImageExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Image/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/imagebuilder/image_pipeline_identity_gen_test.go b/internal/service/imagebuilder/image_pipeline_identity_gen_test.go index 9f8f902d09ba..65b1646ab780 100644 --- a/internal/service/imagebuilder/image_pipeline_identity_gen_test.go +++ b/internal/service/imagebuilder/image_pipeline_identity_gen_test.go @@ -278,3 +278,60 @@ func TestAccImageBuilderImagePipeline_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.3.0 +func TestAccImageBuilderImagePipeline_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + resourceName := "aws_imagebuilder_image_pipeline.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.ImageBuilderServiceID), + CheckDestroy: testAccCheckImagePipelineDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/ImagePipeline/basic_v6.3.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckImagePipelineExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/ImagePipeline/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/imagebuilder/image_recipe_identity_gen_test.go b/internal/service/imagebuilder/image_recipe_identity_gen_test.go index 5e5b127cf536..65a17f3776ac 100644 --- a/internal/service/imagebuilder/image_recipe_identity_gen_test.go +++ b/internal/service/imagebuilder/image_recipe_identity_gen_test.go @@ -278,3 +278,60 @@ func TestAccImageBuilderImageRecipe_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.3.0 +func TestAccImageBuilderImageRecipe_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + resourceName := "aws_imagebuilder_image_recipe.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.ImageBuilderServiceID), + CheckDestroy: testAccCheckImageRecipeDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/ImageRecipe/basic_v6.3.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckImageRecipeExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/ImageRecipe/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/imagebuilder/infrastructure_configuration_identity_gen_test.go b/internal/service/imagebuilder/infrastructure_configuration_identity_gen_test.go index eeeece9f0b1f..3b4d8d21e55c 100644 --- a/internal/service/imagebuilder/infrastructure_configuration_identity_gen_test.go +++ b/internal/service/imagebuilder/infrastructure_configuration_identity_gen_test.go @@ -278,3 +278,60 @@ func TestAccImageBuilderInfrastructureConfiguration_Identity_ExistingResource(t }, }) } + +// Resource Identity was added after v6.3.0 +func TestAccImageBuilderInfrastructureConfiguration_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + resourceName := "aws_imagebuilder_infrastructure_configuration.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.ImageBuilderServiceID), + CheckDestroy: testAccCheckInfrastructureConfigurationDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/InfrastructureConfiguration/basic_v6.3.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckInfrastructureConfigurationExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/InfrastructureConfiguration/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/imagebuilder/workflow_identity_gen_test.go b/internal/service/imagebuilder/workflow_identity_gen_test.go index b3b51476c8d3..8df55bf645f6 100644 --- a/internal/service/imagebuilder/workflow_identity_gen_test.go +++ b/internal/service/imagebuilder/workflow_identity_gen_test.go @@ -278,3 +278,60 @@ func TestAccImageBuilderWorkflow_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.3.0 +func TestAccImageBuilderWorkflow_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + resourceName := "aws_imagebuilder_workflow.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.ImageBuilderServiceID), + CheckDestroy: testAccCheckWorkflowDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/Workflow/basic_v6.3.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckWorkflowExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Workflow/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/inspector/assessment_target_identity_gen_test.go b/internal/service/inspector/assessment_target_identity_gen_test.go index 99adb2b5aa00..15f91cc01289 100644 --- a/internal/service/inspector/assessment_target_identity_gen_test.go +++ b/internal/service/inspector/assessment_target_identity_gen_test.go @@ -281,3 +281,61 @@ func TestAccInspectorAssessmentTarget_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.4.0 +func TestAccInspectorAssessmentTarget_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v types.AssessmentTarget + resourceName := "aws_inspector_assessment_target.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.InspectorServiceID), + CheckDestroy: testAccCheckAssessmentTargetDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/AssessmentTarget/basic_v6.4.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckAssessmentTargetExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/AssessmentTarget/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/inspector/assessment_template_identity_gen_test.go b/internal/service/inspector/assessment_template_identity_gen_test.go index bb0a2113141a..14745231cb3b 100644 --- a/internal/service/inspector/assessment_template_identity_gen_test.go +++ b/internal/service/inspector/assessment_template_identity_gen_test.go @@ -281,3 +281,61 @@ func TestAccInspectorAssessmentTemplate_Identity_ExistingResource(t *testing.T) }, }) } + +// Resource Identity was added after v6.4.0 +func TestAccInspectorAssessmentTemplate_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v types.AssessmentTemplate + resourceName := "aws_inspector_assessment_template.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.InspectorServiceID), + CheckDestroy: testAccCheckAssessmentTemplateDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/AssessmentTemplate/basic_v6.4.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckAssessmentTemplateExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/AssessmentTemplate/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/inspector/resource_group_identity_gen_test.go b/internal/service/inspector/resource_group_identity_gen_test.go index e2dfb0aa3a4c..3c8da2179d91 100644 --- a/internal/service/inspector/resource_group_identity_gen_test.go +++ b/internal/service/inspector/resource_group_identity_gen_test.go @@ -281,3 +281,61 @@ func TestAccInspectorResourceGroup_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.4.0 +func TestAccInspectorResourceGroup_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v types.ResourceGroup + resourceName := "aws_inspector_resource_group.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.InspectorServiceID), + CheckDestroy: acctest.CheckDestroyNoop, + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/ResourceGroup/basic_v6.4.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckResourceGroupExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/ResourceGroup/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/ivs/channel_identity_gen_test.go b/internal/service/ivs/channel_identity_gen_test.go index 17a67ee699e6..c15e48c0f032 100644 --- a/internal/service/ivs/channel_identity_gen_test.go +++ b/internal/service/ivs/channel_identity_gen_test.go @@ -259,3 +259,56 @@ func TestAccIVSChannel_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.7.0 +func TestAccIVSChannel_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v awstypes.Channel + resourceName := "aws_ivs_channel.test" + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.IVSServiceID), + CheckDestroy: testAccCheckChannelDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/Channel/basic_v6.7.0/"), + ConfigVariables: config.Variables{}, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckChannelExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Channel/basic/"), + ConfigVariables: config.Variables{}, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/ivs/playback_key_pair_identity_gen_test.go b/internal/service/ivs/playback_key_pair_identity_gen_test.go index 31acb669525d..933fcc5daa26 100644 --- a/internal/service/ivs/playback_key_pair_identity_gen_test.go +++ b/internal/service/ivs/playback_key_pair_identity_gen_test.go @@ -314,3 +314,62 @@ func testAccIVSPlaybackKeyPair_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.7.0 +func testAccIVSPlaybackKeyPair_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v awstypes.PlaybackKeyPair + resourceName := "aws_ivs_playback_key_pair.test" + privateKey := acctest.TLSECDSAPrivateKeyPEM(t, "P-384") + rTlsEcdsaPublicKeyPem, _ := acctest.TLSECDSAPublicKeyPEM(t, privateKey) + + acctest.Test(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.IVSServiceID), + CheckDestroy: testAccCheckPlaybackKeyPairDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/PlaybackKeyPair/basic_v6.7.0/"), + ConfigVariables: config.Variables{ + "rTlsEcdsaPublicKeyPem": config.StringVariable(rTlsEcdsaPublicKeyPem), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckPlaybackKeyPairExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/PlaybackKeyPair/basic/"), + ConfigVariables: config.Variables{ + "rTlsEcdsaPublicKeyPem": config.StringVariable(rTlsEcdsaPublicKeyPem), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/ivs/recording_configuration_identity_gen_test.go b/internal/service/ivs/recording_configuration_identity_gen_test.go index 96c1549f0d46..4ad9a2862a2b 100644 --- a/internal/service/ivs/recording_configuration_identity_gen_test.go +++ b/internal/service/ivs/recording_configuration_identity_gen_test.go @@ -281,3 +281,61 @@ func TestAccIVSRecordingConfiguration_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.7.0 +func TestAccIVSRecordingConfiguration_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v awstypes.RecordingConfiguration + resourceName := "aws_ivs_recording_configuration.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.IVSServiceID), + CheckDestroy: testAccCheckRecordingConfigurationDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/RecordingConfiguration/basic_v6.7.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckRecordingConfigurationExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/RecordingConfiguration/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/ivschat/logging_configuration_identity_gen_test.go b/internal/service/ivschat/logging_configuration_identity_gen_test.go index 7d990a0de8a2..fc9344d64dea 100644 --- a/internal/service/ivschat/logging_configuration_identity_gen_test.go +++ b/internal/service/ivschat/logging_configuration_identity_gen_test.go @@ -281,3 +281,61 @@ func TestAccIVSChatLoggingConfiguration_Identity_ExistingResource(t *testing.T) }, }) } + +// Resource Identity was added after v6.5.0 +func TestAccIVSChatLoggingConfiguration_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v ivschat.GetLoggingConfigurationOutput + resourceName := "aws_ivschat_logging_configuration.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.IVSChatServiceID), + CheckDestroy: testAccCheckLoggingConfigurationDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/LoggingConfiguration/basic_v6.5.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckLoggingConfigurationExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/LoggingConfiguration/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/ivschat/room_identity_gen_test.go b/internal/service/ivschat/room_identity_gen_test.go index 678191a168e9..e935cd538736 100644 --- a/internal/service/ivschat/room_identity_gen_test.go +++ b/internal/service/ivschat/room_identity_gen_test.go @@ -259,3 +259,56 @@ func TestAccIVSChatRoom_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.5.0 +func TestAccIVSChatRoom_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v ivschat.GetRoomOutput + resourceName := "aws_ivschat_room.test" + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.IVSChatServiceID), + CheckDestroy: testAccCheckRoomDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/Room/basic_v6.5.0/"), + ConfigVariables: config.Variables{}, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckRoomExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Room/basic/"), + ConfigVariables: config.Variables{}, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/kms/alias_identity_gen_test.go b/internal/service/kms/alias_identity_gen_test.go index fb1ba5660ac7..1f41493f1c66 100644 --- a/internal/service/kms/alias_identity_gen_test.go +++ b/internal/service/kms/alias_identity_gen_test.go @@ -249,3 +249,61 @@ func TestAccKMSAlias_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.10.0 +func TestAccKMSAlias_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v awstypes.AliasListEntry + resourceName := "aws_kms_alias.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.KMSServiceID), + CheckDestroy: testAccCheckAliasDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/Alias/basic_v6.10.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckAliasExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Alias/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/kms/key_identity_gen_test.go b/internal/service/kms/key_identity_gen_test.go index 53c8cf3297f1..579252687237 100644 --- a/internal/service/kms/key_identity_gen_test.go +++ b/internal/service/kms/key_identity_gen_test.go @@ -263,3 +263,61 @@ func TestAccKMSKey_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.10.0 +func TestAccKMSKey_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v awstypes.KeyMetadata + resourceName := "aws_kms_key.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.KMSServiceID), + CheckDestroy: testAccCheckKeyDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/Key/basic_v6.10.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckKeyExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Key/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/lambda/function_identity_gen_test.go b/internal/service/lambda/function_identity_gen_test.go index cbc2beb18a8e..e32d9ef6fc02 100644 --- a/internal/service/lambda/function_identity_gen_test.go +++ b/internal/service/lambda/function_identity_gen_test.go @@ -268,3 +268,61 @@ func TestAccLambdaFunction_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.7.0 +func TestAccLambdaFunction_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v lambda.GetFunctionOutput + resourceName := "aws_lambda_function.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.LambdaServiceID), + CheckDestroy: testAccCheckFunctionDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/Function/basic_v6.7.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckFunctionExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Function/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/lambda/permission_identity_gen_test.go b/internal/service/lambda/permission_identity_gen_test.go index 5c1db5d98c70..5e10e8d33cdc 100644 --- a/internal/service/lambda/permission_identity_gen_test.go +++ b/internal/service/lambda/permission_identity_gen_test.go @@ -268,3 +268,61 @@ func TestAccLambdaPermission_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.9.0 +func TestAccLambdaPermission_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v tflambda.PolicyStatement + resourceName := "aws_lambda_permission.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.LambdaServiceID), + CheckDestroy: testAccCheckPermissionDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/Permission/basic_v6.9.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckPermissionExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Permission/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/logs/group_identity_gen_test.go b/internal/service/logs/group_identity_gen_test.go index 1a0776dfb97b..8d92bb983462 100644 --- a/internal/service/logs/group_identity_gen_test.go +++ b/internal/service/logs/group_identity_gen_test.go @@ -254,3 +254,61 @@ func TestAccLogsLogGroup_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.7.0 +func TestAccLogsLogGroup_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v awstypes.LogGroup + resourceName := "aws_cloudwatch_log_group.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.LogsServiceID), + CheckDestroy: testAccCheckLogGroupDestroy(ctx, t), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/LogGroup/basic_v6.7.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckLogGroupExists(ctx, t, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/LogGroup/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/organizations/organization_identity_gen_test.go b/internal/service/organizations/organization_identity_gen_test.go index 75938ba67e30..aaa5de8cea4b 100644 --- a/internal/service/organizations/organization_identity_gen_test.go +++ b/internal/service/organizations/organization_identity_gen_test.go @@ -159,3 +159,59 @@ func testAccOrganizationsOrganization_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.4.0 +func testAccOrganizationsOrganization_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v awstypes.Organization + resourceName := "aws_organizations_organization.test" + + acctest.Test(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { + acctest.PreCheck(ctx, t) + acctest.PreCheckOrganizationManagementAccount(ctx, t) + }, + ErrorCheck: acctest.ErrorCheck(t, names.OrganizationsServiceID), + CheckDestroy: testAccCheckOrganizationDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/Organization/basic_v6.4.0/"), + ConfigVariables: config.Variables{}, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckOrganizationExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Organization/basic/"), + ConfigVariables: config.Variables{}, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/organizations/organizational_unit_identity_gen_test.go b/internal/service/organizations/organizational_unit_identity_gen_test.go index 6bfd773a396c..2a5109addf37 100644 --- a/internal/service/organizations/organizational_unit_identity_gen_test.go +++ b/internal/service/organizations/organizational_unit_identity_gen_test.go @@ -174,3 +174,64 @@ func testAccOrganizationsOrganizationalUnit_Identity_ExistingResource(t *testing }, }) } + +// Resource Identity was added after v6.4.0 +func testAccOrganizationsOrganizationalUnit_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v awstypes.OrganizationalUnit + resourceName := "aws_organizations_organizational_unit.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.Test(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { + acctest.PreCheck(ctx, t) + acctest.PreCheckOrganizationManagementAccount(ctx, t) + }, + ErrorCheck: acctest.ErrorCheck(t, names.OrganizationsServiceID), + CheckDestroy: testAccCheckOrganizationalUnitDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/OrganizationalUnit/basic_v6.4.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckOrganizationalUnitExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/OrganizationalUnit/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/organizations/policy_attachment_identity_gen_test.go b/internal/service/organizations/policy_attachment_identity_gen_test.go index 707bb8f5569a..892d2c8c4e3e 100644 --- a/internal/service/organizations/policy_attachment_identity_gen_test.go +++ b/internal/service/organizations/policy_attachment_identity_gen_test.go @@ -177,3 +177,63 @@ func testAccOrganizationsPolicyAttachment_Identity_ExistingResource(t *testing.T }, }) } + +// Resource Identity was added after v6.4.0 +func testAccOrganizationsPolicyAttachment_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + resourceName := "aws_organizations_policy_attachment.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.Test(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { + acctest.PreCheck(ctx, t) + acctest.PreCheckOrganizationManagementAccount(ctx, t) + }, + ErrorCheck: acctest.ErrorCheck(t, names.OrganizationsServiceID), + CheckDestroy: testAccCheckPolicyAttachmentDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/PolicyAttachment/basic_v6.4.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckPolicyAttachmentExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/PolicyAttachment/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/organizations/policy_identity_gen_test.go b/internal/service/organizations/policy_identity_gen_test.go index ff397e93527d..6d5907bcf71d 100644 --- a/internal/service/organizations/policy_identity_gen_test.go +++ b/internal/service/organizations/policy_identity_gen_test.go @@ -174,3 +174,64 @@ func testAccOrganizationsPolicy_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.4.0 +func testAccOrganizationsPolicy_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v awstypes.Policy + resourceName := "aws_organizations_policy.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.Test(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { + acctest.PreCheck(ctx, t) + acctest.PreCheckOrganizationManagementAccount(ctx, t) + }, + ErrorCheck: acctest.ErrorCheck(t, names.OrganizationsServiceID), + CheckDestroy: testAccCheckPolicyDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/Policy/basic_v6.4.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckPolicyExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Policy/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/organizations/resource_policy_identity_gen_test.go b/internal/service/organizations/resource_policy_identity_gen_test.go index 0e27d21882d2..f7945d0f3bfe 100644 --- a/internal/service/organizations/resource_policy_identity_gen_test.go +++ b/internal/service/organizations/resource_policy_identity_gen_test.go @@ -168,3 +168,62 @@ func testAccOrganizationsResourcePolicy_Identity_ExistingResource(t *testing.T) }, }) } + +// Resource Identity was added after v6.4.0 +func testAccOrganizationsResourcePolicy_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v awstypes.ResourcePolicy + resourceName := "aws_organizations_resource_policy.test" + providers := make(map[string]*schema.Provider) + + acctest.Test(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { + acctest.PreCheck(ctx, t) + acctest.PreCheckAlternateAccount(t) + acctest.PreCheckOrganizationManagementAccount(ctx, t) + }, + ErrorCheck: acctest.ErrorCheck(t, names.OrganizationsServiceID), + CheckDestroy: testAccCheckResourcePolicyDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ProtoV5ProviderFactories: acctest.ProtoV5FactoriesNamed(ctx, t, providers, acctest.ProviderNameAlternate), + ConfigDirectory: config.StaticDirectory("testdata/ResourcePolicy/basic_v6.4.0/"), + ConfigVariables: config.Variables{}, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckResourcePolicyExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5FactoriesNamedAlternate(ctx, t, providers), + ConfigDirectory: config.StaticDirectory("testdata/ResourcePolicy/basic/"), + ConfigVariables: config.Variables{}, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/route53/record_identity_gen_test.go b/internal/service/route53/record_identity_gen_test.go index 500c6ee31b02..0a5091d4f9e1 100644 --- a/internal/service/route53/record_identity_gen_test.go +++ b/internal/service/route53/record_identity_gen_test.go @@ -180,3 +180,64 @@ func TestAccRoute53Record_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.4.0 +func TestAccRoute53Record_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v awstypes.ResourceRecordSet + resourceName := "aws_route53_record.test" + zoneName := acctest.RandomDomain() + recordName := zoneName.RandomSubdomain() + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.Route53ServiceID), + CheckDestroy: testAccCheckRecordDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/Record/basic_v6.4.0/"), + ConfigVariables: config.Variables{ + "recordName": config.StringVariable(recordName.String()), + "zoneName": config.StringVariable(zoneName.String()), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckRecordExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Record/basic/"), + ConfigVariables: config.Variables{ + "recordName": config.StringVariable(recordName.String()), + "zoneName": config.StringVariable(zoneName.String()), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/route53resolver/rule_association_identity_gen_test.go b/internal/service/route53resolver/rule_association_identity_gen_test.go index 2829639f75e5..b1f153323719 100644 --- a/internal/service/route53resolver/rule_association_identity_gen_test.go +++ b/internal/service/route53resolver/rule_association_identity_gen_test.go @@ -262,3 +262,64 @@ func TestAccRoute53ResolverRuleAssociation_Identity_ExistingResource(t *testing. }, }) } + +// Resource Identity was added after v6.10.0 +func TestAccRoute53ResolverRuleAssociation_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v awstypes.ResolverRuleAssociation + resourceName := "aws_route53_resolver_rule_association.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + domain := acctest.RandomDomainName() + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.Route53ResolverServiceID), + CheckDestroy: testAccCheckRuleAssociationDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/RuleAssociation/basic_v6.10.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + "domain": config.StringVariable(domain), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckRuleAssociationExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/RuleAssociation/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + "domain": config.StringVariable(domain), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/route53resolver/rule_identity_gen_test.go b/internal/service/route53resolver/rule_identity_gen_test.go index 1a9ae0e6f396..1a084d4e475e 100644 --- a/internal/service/route53resolver/rule_identity_gen_test.go +++ b/internal/service/route53resolver/rule_identity_gen_test.go @@ -248,3 +248,61 @@ func TestAccRoute53ResolverRule_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.10.0 +func TestAccRoute53ResolverRule_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v awstypes.ResolverRule + resourceName := "aws_route53_resolver_rule.test" + rName := acctest.RandomDomainName() + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.Route53ResolverServiceID), + CheckDestroy: testAccCheckRuleDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/Rule/basic_v6.10.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckRuleExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Rule/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/sagemaker/user_profile_identity_gen_test.go b/internal/service/sagemaker/user_profile_identity_gen_test.go index 9271bde0f308..13e74a83da75 100644 --- a/internal/service/sagemaker/user_profile_identity_gen_test.go +++ b/internal/service/sagemaker/user_profile_identity_gen_test.go @@ -273,3 +273,61 @@ func testAccSageMakerUserProfile_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.2.0 +func testAccSageMakerUserProfile_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v sagemaker.DescribeUserProfileOutput + resourceName := "aws_sagemaker_user_profile.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.Test(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.SageMakerServiceID), + CheckDestroy: testAccCheckUserProfileDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/UserProfile/basic_v6.2.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckUserProfileExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/UserProfile/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/secretsmanager/secret_identity_gen_test.go b/internal/service/secretsmanager/secret_identity_gen_test.go index a8a2b5cead5c..080c32f217a8 100644 --- a/internal/service/secretsmanager/secret_identity_gen_test.go +++ b/internal/service/secretsmanager/secret_identity_gen_test.go @@ -300,3 +300,61 @@ func TestAccSecretsManagerSecret_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.8.0 +func TestAccSecretsManagerSecret_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v secretsmanager.DescribeSecretOutput + resourceName := "aws_secretsmanager_secret.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.SecretsManagerServiceID), + CheckDestroy: testAccCheckSecretDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/Secret/basic_v6.8.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckSecretExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Secret/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/secretsmanager/secret_policy_identity_gen_test.go b/internal/service/secretsmanager/secret_policy_identity_gen_test.go index 4ec75f6f75bf..61ba1054f4f3 100644 --- a/internal/service/secretsmanager/secret_policy_identity_gen_test.go +++ b/internal/service/secretsmanager/secret_policy_identity_gen_test.go @@ -281,3 +281,61 @@ func TestAccSecretsManagerSecretPolicy_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.8.0 +func TestAccSecretsManagerSecretPolicy_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v secretsmanager.GetResourcePolicyOutput + resourceName := "aws_secretsmanager_secret_policy.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.SecretsManagerServiceID), + CheckDestroy: testAccCheckSecretPolicyDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/SecretPolicy/basic_v6.8.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckSecretPolicyExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/SecretPolicy/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/secretsmanager/secret_rotation_identity_gen_test.go b/internal/service/secretsmanager/secret_rotation_identity_gen_test.go index 21adc550dcb9..c87048e9c5b0 100644 --- a/internal/service/secretsmanager/secret_rotation_identity_gen_test.go +++ b/internal/service/secretsmanager/secret_rotation_identity_gen_test.go @@ -300,3 +300,61 @@ func TestAccSecretsManagerSecretRotation_Identity_ExistingResource(t *testing.T) }, }) } + +// Resource Identity was added after v6.8.0 +func TestAccSecretsManagerSecretRotation_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v secretsmanager.DescribeSecretOutput + resourceName := "aws_secretsmanager_secret_rotation.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.SecretsManagerServiceID), + CheckDestroy: testAccCheckSecretRotationDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/SecretRotation/basic_v6.8.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckSecretRotationExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/SecretRotation/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/secretsmanager/secret_version_identity_gen_test.go b/internal/service/secretsmanager/secret_version_identity_gen_test.go index c132e393833c..1c347e67a4da 100644 --- a/internal/service/secretsmanager/secret_version_identity_gen_test.go +++ b/internal/service/secretsmanager/secret_version_identity_gen_test.go @@ -267,3 +267,61 @@ func TestAccSecretsManagerSecretVersion_Identity_ExistingResource(t *testing.T) }, }) } + +// Resource Identity was added after v6.10.0 +func TestAccSecretsManagerSecretVersion_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v secretsmanager.GetSecretValueOutput + resourceName := "aws_secretsmanager_secret_version.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.SecretsManagerServiceID), + CheckDestroy: testAccCheckSecretVersionDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/SecretVersion/basic_v6.10.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckSecretVersionExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/SecretVersion/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/sfn/state_machine_identity_gen_test.go b/internal/service/sfn/state_machine_identity_gen_test.go index 69b285ed95a5..b6a308e93a67 100644 --- a/internal/service/sfn/state_machine_identity_gen_test.go +++ b/internal/service/sfn/state_machine_identity_gen_test.go @@ -281,3 +281,61 @@ func TestAccSFNStateMachine_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.13.0 +func TestAccSFNStateMachine_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v sfn.DescribeStateMachineOutput + resourceName := "aws_sfn_state_machine.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.SFNServiceID), + CheckDestroy: testAccCheckStateMachineDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/StateMachine/basic_v6.13.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckStateMachineExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/StateMachine/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/sns/topic_data_protection_policy_identity_gen_test.go b/internal/service/sns/topic_data_protection_policy_identity_gen_test.go index ce8aff8de465..0e5879ccfdc5 100644 --- a/internal/service/sns/topic_data_protection_policy_identity_gen_test.go +++ b/internal/service/sns/topic_data_protection_policy_identity_gen_test.go @@ -278,3 +278,60 @@ func TestAccSNSTopicDataProtectionPolicy_Identity_ExistingResource(t *testing.T) }, }) } + +// Resource Identity was added after v6.8.0 +func TestAccSNSTopicDataProtectionPolicy_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + resourceName := "aws_sns_topic_data_protection_policy.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.SNSServiceID), + CheckDestroy: testAccCheckTopicDataProtectionPolicyDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/TopicDataProtectionPolicy/basic_v6.8.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckTopicDataProtectionPolicyExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/TopicDataProtectionPolicy/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/sns/topic_identity_gen_test.go b/internal/service/sns/topic_identity_gen_test.go index a4761213442e..0f717373c44c 100644 --- a/internal/service/sns/topic_identity_gen_test.go +++ b/internal/service/sns/topic_identity_gen_test.go @@ -280,3 +280,61 @@ func TestAccSNSTopic_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.4.0 +func TestAccSNSTopic_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v map[string]string + resourceName := "aws_sns_topic.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.SNSServiceID), + CheckDestroy: testAccCheckTopicDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/Topic/basic_v6.4.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckTopicExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Topic/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/sns/topic_policy_identity_gen_test.go b/internal/service/sns/topic_policy_identity_gen_test.go index 7b9d559e764c..efbb3ca4ced8 100644 --- a/internal/service/sns/topic_policy_identity_gen_test.go +++ b/internal/service/sns/topic_policy_identity_gen_test.go @@ -278,3 +278,60 @@ func TestAccSNSTopicPolicy_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.8.0 +func TestAccSNSTopicPolicy_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + resourceName := "aws_sns_topic_policy.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.SNSServiceID), + CheckDestroy: testAccCheckTopicPolicyDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/TopicPolicy/basic_v6.8.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckTopicPolicyExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/TopicPolicy/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/sns/topic_subscription_identity_gen_test.go b/internal/service/sns/topic_subscription_identity_gen_test.go index bccc9a14b3f4..b77f677e02ae 100644 --- a/internal/service/sns/topic_subscription_identity_gen_test.go +++ b/internal/service/sns/topic_subscription_identity_gen_test.go @@ -299,3 +299,61 @@ func TestAccSNSTopicSubscription_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.8.0 +func TestAccSNSTopicSubscription_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v map[string]string + resourceName := "aws_sns_topic_subscription.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.SNSServiceID), + CheckDestroy: testAccCheckTopicSubscriptionDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/TopicSubscription/basic_v6.8.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckTopicSubscriptionExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/TopicSubscription/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/sqs/queue_identity_gen_test.go b/internal/service/sqs/queue_identity_gen_test.go index d323f619fdc8..6a6417089656 100644 --- a/internal/service/sqs/queue_identity_gen_test.go +++ b/internal/service/sqs/queue_identity_gen_test.go @@ -254,3 +254,61 @@ func TestAccSQSQueue_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.9.0 +func TestAccSQSQueue_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v map[awstypes.QueueAttributeName]string + resourceName := "aws_sqs_queue.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.SQSServiceID), + CheckDestroy: testAccCheckQueueDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/Queue/basic_v6.9.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckQueueExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Queue/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/sqs/queue_policy_identity_gen_test.go b/internal/service/sqs/queue_policy_identity_gen_test.go index b4fe91dbb261..d1879b768a0a 100644 --- a/internal/service/sqs/queue_policy_identity_gen_test.go +++ b/internal/service/sqs/queue_policy_identity_gen_test.go @@ -254,3 +254,61 @@ func TestAccSQSQueuePolicy_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.9.0 +func TestAccSQSQueuePolicy_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v map[awstypes.QueueAttributeName]string + resourceName := "aws_sqs_queue_policy.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.SQSServiceID), + CheckDestroy: testAccCheckQueuePolicyDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/QueuePolicy/basic_v6.9.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckQueuePolicyExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/QueuePolicy/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/sqs/queue_redrive_allow_policy_identity_gen_test.go b/internal/service/sqs/queue_redrive_allow_policy_identity_gen_test.go index 9b527b621507..2e04c239cb72 100644 --- a/internal/service/sqs/queue_redrive_allow_policy_identity_gen_test.go +++ b/internal/service/sqs/queue_redrive_allow_policy_identity_gen_test.go @@ -254,3 +254,61 @@ func TestAccSQSQueueRedriveAllowPolicy_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.9.0 +func TestAccSQSQueueRedriveAllowPolicy_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v map[awstypes.QueueAttributeName]string + resourceName := "aws_sqs_queue_redrive_allow_policy.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.SQSServiceID), + CheckDestroy: testAccCheckQueueRedriveAllowPolicyDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/QueueRedriveAllowPolicy/basic_v6.9.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckQueueRedriveAllowPolicyExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/QueueRedriveAllowPolicy/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/sqs/queue_redrive_policy_identity_gen_test.go b/internal/service/sqs/queue_redrive_policy_identity_gen_test.go index 9deaa8152a3a..7873fdc695e2 100644 --- a/internal/service/sqs/queue_redrive_policy_identity_gen_test.go +++ b/internal/service/sqs/queue_redrive_policy_identity_gen_test.go @@ -254,3 +254,61 @@ func TestAccSQSQueueRedrivePolicy_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.9.0 +func TestAccSQSQueueRedrivePolicy_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v map[awstypes.QueueAttributeName]string + resourceName := "aws_sqs_queue_redrive_policy.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.SQSServiceID), + CheckDestroy: testAccCheckQueueRedrivePolicyDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/QueueRedrivePolicy/basic_v6.9.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckQueueRedrivePolicyExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/QueueRedrivePolicy/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/ssm/association_identity_gen_test.go b/internal/service/ssm/association_identity_gen_test.go index faea4f1baf70..26eb74f12cc7 100644 --- a/internal/service/ssm/association_identity_gen_test.go +++ b/internal/service/ssm/association_identity_gen_test.go @@ -251,3 +251,60 @@ func TestAccSSMAssociation_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.10.0 +func TestAccSSMAssociation_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + resourceName := "aws_ssm_association.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.SSMServiceID), + CheckDestroy: testAccCheckAssociationDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/Association/basic_v6.10.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckAssociationExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Association/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/ssm/document_identity_gen_test.go b/internal/service/ssm/document_identity_gen_test.go index 99cda4e294a0..9bc883581136 100644 --- a/internal/service/ssm/document_identity_gen_test.go +++ b/internal/service/ssm/document_identity_gen_test.go @@ -246,3 +246,60 @@ func TestAccSSMDocument_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.10.0 +func TestAccSSMDocument_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + resourceName := "aws_ssm_document.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.SSMServiceID), + CheckDestroy: testAccCheckDocumentDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/Document/basic_v6.10.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckDocumentExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Document/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/ssm/maintenance_window_identity_gen_test.go b/internal/service/ssm/maintenance_window_identity_gen_test.go index c8ff5c320816..9d6e15477dac 100644 --- a/internal/service/ssm/maintenance_window_identity_gen_test.go +++ b/internal/service/ssm/maintenance_window_identity_gen_test.go @@ -249,3 +249,61 @@ func TestAccSSMMaintenanceWindow_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.10.0 +func TestAccSSMMaintenanceWindow_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v ssm.GetMaintenanceWindowOutput + resourceName := "aws_ssm_maintenance_window.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.SSMServiceID), + CheckDestroy: testAccCheckMaintenanceWindowDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/MaintenanceWindow/basic_v6.10.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckMaintenanceWindowExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/MaintenanceWindow/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/ssm/maintenance_window_target_identity_gen_test.go b/internal/service/ssm/maintenance_window_target_identity_gen_test.go index 1e05bf2acf9a..1bded146a262 100644 --- a/internal/service/ssm/maintenance_window_target_identity_gen_test.go +++ b/internal/service/ssm/maintenance_window_target_identity_gen_test.go @@ -261,3 +261,61 @@ func TestAccSSMMaintenanceWindowTarget_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.10.0 +func TestAccSSMMaintenanceWindowTarget_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v types.MaintenanceWindowTarget + resourceName := "aws_ssm_maintenance_window_target.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.SSMServiceID), + CheckDestroy: testAccCheckMaintenanceWindowTargetDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/MaintenanceWindowTarget/basic_v6.10.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckMaintenanceWindowTargetExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/MaintenanceWindowTarget/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/ssm/maintenance_window_task_identity_gen_test.go b/internal/service/ssm/maintenance_window_task_identity_gen_test.go index 5454e53baaa7..05aa464305e8 100644 --- a/internal/service/ssm/maintenance_window_task_identity_gen_test.go +++ b/internal/service/ssm/maintenance_window_task_identity_gen_test.go @@ -261,3 +261,61 @@ func TestAccSSMMaintenanceWindowTask_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.10.0 +func TestAccSSMMaintenanceWindowTask_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v ssm.GetMaintenanceWindowTaskOutput + resourceName := "aws_ssm_maintenance_window_task.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.SSMServiceID), + CheckDestroy: testAccCheckMaintenanceWindowTaskDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/MaintenanceWindowTask/basic_v6.10.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckMaintenanceWindowTaskExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/MaintenanceWindowTask/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/ssm/parameter_identity_gen_test.go b/internal/service/ssm/parameter_identity_gen_test.go index be1118970ba2..817e10e4e1eb 100644 --- a/internal/service/ssm/parameter_identity_gen_test.go +++ b/internal/service/ssm/parameter_identity_gen_test.go @@ -260,3 +260,61 @@ func TestAccSSMParameter_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.7.0 +func TestAccSSMParameter_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v awstypes.Parameter + resourceName := "aws_ssm_parameter.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.SSMServiceID), + CheckDestroy: testAccCheckParameterDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/Parameter/basic_v6.7.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckParameterExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Parameter/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} diff --git a/internal/service/ssm/patch_baseline_identity_gen_test.go b/internal/service/ssm/patch_baseline_identity_gen_test.go index 4b8ded329e76..1af811fe64c9 100644 --- a/internal/service/ssm/patch_baseline_identity_gen_test.go +++ b/internal/service/ssm/patch_baseline_identity_gen_test.go @@ -249,3 +249,61 @@ func TestAccSSMPatchBaseline_Identity_ExistingResource(t *testing.T) { }, }) } + +// Resource Identity was added after v6.10.0 +func TestAccSSMPatchBaseline_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v ssm.GetPatchBaselineOutput + resourceName := "aws_ssm_patch_baseline.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.SSMServiceID), + CheckDestroy: testAccCheckPatchBaselineDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/PatchBaseline/basic_v6.10.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckPatchBaselineExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/PatchBaseline/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + }, + }) +} From 6cb1e5c977b3d7987a0c2f3692c2d03ecb44d15e Mon Sep 17 00:00:00 2001 From: Graham Davison Date: Sun, 21 Sep 2025 23:01:22 -0700 Subject: [PATCH 45/81] Generates all `Identity_ExistingResource_NoRefresh_NoChange` tests for SDK resource types with v6.0 `null` values error --- .../identitytests/resource_test.go.gtpl | 16 ++---- .../acm/certificate_identity_gen_test.go | 52 ++++++++++++++++++ ...authority_certificate_identity_gen_test.go | 49 +++++++++++++++++ ...certificate_authority_identity_gen_test.go | 49 +++++++++++++++++ .../acmpca/certificate_identity_gen_test.go | 48 ++++++++++++++++ .../acmpca/policy_identity_gen_test.go | 43 +++++++++++++++ .../rule_group_namespace_identity_gen_test.go | 49 +++++++++++++++++ .../service/appflow/flow_identity_gen_test.go | 49 +++++++++++++++++ ...configuration_version_identity_gen_test.go | 48 ++++++++++++++++ ...ability_configuration_identity_gen_test.go | 48 ++++++++++++++++ .../apprunner/service_identity_gen_test.go | 48 ++++++++++++++++ .../vpc_connector_identity_gen_test.go | 48 ++++++++++++++++ ...pc_ingress_connection_identity_gen_test.go | 48 ++++++++++++++++ .../region_settings_identity_gen_test.go | 47 ++++++++++++++++ .../ce/anomaly_monitor_identity_gen_test.go | 49 +++++++++++++++++ .../anomaly_subscription_identity_gen_test.go | 53 ++++++++++++++++++ .../ce/cost_category_identity_gen_test.go | 49 +++++++++++++++++ ...ipeline_configuration_identity_gen_test.go | 49 +++++++++++++++++ .../realtime_log_config_identity_gen_test.go | 49 +++++++++++++++++ .../event_data_store_identity_gen_test.go | 48 ++++++++++++++++ .../cloudtrail/trail_identity_gen_test.go | 49 +++++++++++++++++ .../codeartifact/domain_identity_gen_test.go | 48 ++++++++++++++++ ...in_permissions_policy_identity_gen_test.go | 48 ++++++++++++++++ .../repository_identity_gen_test.go | 48 ++++++++++++++++ ...ry_permissions_policy_identity_gen_test.go | 48 ++++++++++++++++ .../codebuild/fleet_identity_gen_test.go | 48 ++++++++++++++++ .../codebuild/project_identity_gen_test.go | 53 ++++++++++++++++++ .../report_group_identity_gen_test.go | 49 +++++++++++++++++ .../resource_policy_identity_gen_test.go | 49 +++++++++++++++++ .../source_credential_identity_gen_test.go | 49 +++++++++++++++++ ...epository_association_identity_gen_test.go | 49 +++++++++++++++++ .../codepipeline/webhook_identity_gen_test.go | 53 ++++++++++++++++++ .../connection_identity_gen_test.go | 49 +++++++++++++++++ .../host_identity_gen_test.go | 49 +++++++++++++++++ .../notification_rule_identity_gen_test.go | 48 ++++++++++++++++ .../document_classifier_identity_gen_test.go | 52 ++++++++++++++++++ .../entity_recognizer_identity_gen_test.go | 52 ++++++++++++++++++ .../datasync/agent_identity_gen_test.go | 52 ++++++++++++++++++ .../location_azure_blob_identity_gen_test.go | 52 ++++++++++++++++++ .../location_efs_identity_gen_test.go | 47 ++++++++++++++++ .../location_hdfs_identity_gen_test.go | 52 ++++++++++++++++++ .../location_nfs_identity_gen_test.go | 52 ++++++++++++++++++ ...cation_object_storage_identity_gen_test.go | 55 +++++++++++++++++++ .../datasync/location_s3_identity_gen_test.go | 52 ++++++++++++++++++ .../location_smb_identity_gen_test.go | 52 ++++++++++++++++++ .../datasync/task_identity_gen_test.go | 52 ++++++++++++++++++ .../device_pool_identity_gen_test.go | 52 ++++++++++++++++++ .../instance_profile_identity_gen_test.go | 52 ++++++++++++++++++ .../network_profile_identity_gen_test.go | 52 ++++++++++++++++++ .../devicefarm/project_identity_gen_test.go | 52 ++++++++++++++++++ .../test_grid_project_identity_gen_test.go | 52 ++++++++++++++++++ .../devicefarm/upload_identity_gen_test.go | 52 ++++++++++++++++++ .../replication_config_identity_gen_test.go | 49 +++++++++++++++++ .../table_export_identity_gen_test.go | 49 +++++++++++++++++ ...t_block_public_access_identity_gen_test.go | 37 +++++++++++++ ...e_block_public_access_identity_gen_test.go | 37 +++++++++++++ ...serial_console_access_identity_gen_test.go | 37 +++++++++++++ .../capacity_provider_identity_gen_test.go | 49 +++++++++++++++++ .../elbv2/load_balancer_identity_gen_test.go | 49 +++++++++++++++++ .../glue/resource_policy_identity_gen_test.go | 37 +++++++++++++ .../service/iam/role_identity_gen_test.go | 14 +---- .../event_configurations_identity_gen_test.go | 37 +++++++++++++ ...ndexing_configuration_identity_gen_test.go | 37 +++++++++++++ .../iot/logging_options_identity_gen_test.go | 42 ++++++++++++++ ..._export_configuration_identity_gen_test.go | 44 +++++++++++++++ .../rds/certificate_identity_gen_test.go | 44 +++++++++++++++ .../service/s3/bucket_identity_gen_test.go | 48 ++++++++++++++++ ...t_public_access_block_identity_gen_test.go | 44 +++++++++++++++ ...alog_portfolio_status_identity_gen_test.go | 44 +++++++++++++++ .../ssoadmin/application_identity_gen_test.go | 52 ++++++++++++++++++ .../encryption_config_identity_gen_test.go | 44 +++++++++++++++ .../service/xray/group_identity_gen_test.go | 49 +++++++++++++++++ 72 files changed, 3379 insertions(+), 22 deletions(-) diff --git a/internal/generate/identitytests/resource_test.go.gtpl b/internal/generate/identitytests/resource_test.go.gtpl index 95978523de3d..86b872b597c9 100644 --- a/internal/generate/identitytests/resource_test.go.gtpl +++ b/internal/generate/identitytests/resource_test.go.gtpl @@ -900,17 +900,11 @@ func {{ template "testname" . }}_Identity_RegionOverride(t *testing.T) { acctest.CtRName: config.StringVariable(rName),{{ end }} {{ template "AdditionalTfVars" . }} }, - ConfigPlanChecks: resource.ConfigPlanChecks{ - PreApply: []plancheck.PlanCheck{ - plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), - }, - PostApplyPostRefresh: []plancheck.PlanCheck{ - plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), - }, - }, - ConfigStateChecks: []statecheck.StateCheck{ - tfstatecheck.ExpectNoIdentity(resourceName), - }, + {{ if .HasExistsFunc -}} + Check: resource.ComposeAggregateTestCheckFunc( + {{- template "ExistsCheck" . -}} + ), + {{ end -}} }, }, }) diff --git a/internal/service/acm/certificate_identity_gen_test.go b/internal/service/acm/certificate_identity_gen_test.go index 0404cfeedb47..ee9734202278 100644 --- a/internal/service/acm/certificate_identity_gen_test.go +++ b/internal/service/acm/certificate_identity_gen_test.go @@ -338,3 +338,55 @@ func TestAccACMCertificate_Identity_ExistingResource(t *testing.T) { }, }) } + +func TestAccACMCertificate_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v types.CertificateDetail + resourceName := "aws_acm_certificate.test" + privateKeyPEM := acctest.TLSRSAPrivateKeyPEM(t, 2048) + certificatePEM := acctest.TLSRSAX509SelfSignedCertificatePEM(t, privateKeyPEM, acctest.RandomDomain().String()) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.ACMServiceID), + CheckDestroy: testAccCheckCertificateDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/Certificate/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtCertificatePEM: config.StringVariable(certificatePEM), + acctest.CtPrivateKeyPEM: config.StringVariable(privateKeyPEM), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckCertificateExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Certificate/basic/"), + ConfigVariables: config.Variables{ + acctest.CtCertificatePEM: config.StringVariable(certificatePEM), + acctest.CtPrivateKeyPEM: config.StringVariable(privateKeyPEM), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckCertificateExists(ctx, resourceName, &v), + ), + }, + }, + }) +} diff --git a/internal/service/acmpca/certificate_authority_certificate_identity_gen_test.go b/internal/service/acmpca/certificate_authority_certificate_identity_gen_test.go index e83d9edb4666..ba87349e6f8c 100644 --- a/internal/service/acmpca/certificate_authority_certificate_identity_gen_test.go +++ b/internal/service/acmpca/certificate_authority_certificate_identity_gen_test.go @@ -303,3 +303,52 @@ func TestAccACMPCACertificateAuthorityCertificate_Identity_ExistingResource(t *t }, }) } + +func TestAccACMPCACertificateAuthorityCertificate_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v acmpca.GetCertificateAuthorityCertificateOutput + resourceName := "aws_acmpca_certificate_authority_certificate.test" + rName := acctest.RandomDomainName() + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.ACMPCAServiceID), + CheckDestroy: acctest.CheckDestroyNoop, + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/CertificateAuthorityCertificate/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckCertificateAuthorityCertificateExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/CertificateAuthorityCertificate/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckCertificateAuthorityCertificateExists(ctx, resourceName, &v), + ), + }, + }, + }) +} diff --git a/internal/service/acmpca/certificate_authority_identity_gen_test.go b/internal/service/acmpca/certificate_authority_identity_gen_test.go index 85a338b27f79..d9e2ef88b36e 100644 --- a/internal/service/acmpca/certificate_authority_identity_gen_test.go +++ b/internal/service/acmpca/certificate_authority_identity_gen_test.go @@ -322,3 +322,52 @@ func TestAccACMPCACertificateAuthority_Identity_ExistingResource(t *testing.T) { }, }) } + +func TestAccACMPCACertificateAuthority_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v types.CertificateAuthority + resourceName := "aws_acmpca_certificate_authority.test" + rName := acctest.RandomDomainName() + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.ACMPCAServiceID), + CheckDestroy: testAccCheckCertificateAuthorityDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/CertificateAuthority/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckCertificateAuthorityExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/CertificateAuthority/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckCertificateAuthorityExists(ctx, resourceName, &v), + ), + }, + }, + }) +} diff --git a/internal/service/acmpca/certificate_identity_gen_test.go b/internal/service/acmpca/certificate_identity_gen_test.go index e4f51cbec23b..67bb0150e4ef 100644 --- a/internal/service/acmpca/certificate_identity_gen_test.go +++ b/internal/service/acmpca/certificate_identity_gen_test.go @@ -320,3 +320,51 @@ func TestAccACMPCACertificate_Identity_ExistingResource(t *testing.T) { }, }) } + +func TestAccACMPCACertificate_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + resourceName := "aws_acmpca_certificate.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.ACMPCAServiceID), + CheckDestroy: testAccCheckCertificateDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/Certificate/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckCertificateExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Certificate/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckCertificateExists(ctx, resourceName), + ), + }, + }, + }) +} diff --git a/internal/service/acmpca/policy_identity_gen_test.go b/internal/service/acmpca/policy_identity_gen_test.go index 16c2a365d302..2fd6f173429b 100644 --- a/internal/service/acmpca/policy_identity_gen_test.go +++ b/internal/service/acmpca/policy_identity_gen_test.go @@ -277,3 +277,46 @@ func TestAccACMPCAPolicy_Identity_ExistingResource(t *testing.T) { }, }) } + +func TestAccACMPCAPolicy_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + resourceName := "aws_acmpca_policy.test" + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.ACMPCAServiceID), + CheckDestroy: testAccCheckPolicyDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/Policy/basic_v5.100.0/"), + ConfigVariables: config.Variables{}, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckPolicyExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Policy/basic/"), + ConfigVariables: config.Variables{}, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckPolicyExists(ctx, resourceName), + ), + }, + }, + }) +} diff --git a/internal/service/amp/rule_group_namespace_identity_gen_test.go b/internal/service/amp/rule_group_namespace_identity_gen_test.go index ce3d72dbf810..d72205be93db 100644 --- a/internal/service/amp/rule_group_namespace_identity_gen_test.go +++ b/internal/service/amp/rule_group_namespace_identity_gen_test.go @@ -304,3 +304,52 @@ func TestAccAMPRuleGroupNamespace_Identity_ExistingResource(t *testing.T) { }, }) } + +func TestAccAMPRuleGroupNamespace_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v types.RuleGroupsNamespaceDescription + resourceName := "aws_prometheus_rule_group_namespace.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.AMPServiceID), + CheckDestroy: testAccCheckRuleGroupNamespaceDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/RuleGroupNamespace/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckRuleGroupNamespaceExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/RuleGroupNamespace/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckRuleGroupNamespaceExists(ctx, resourceName, &v), + ), + }, + }, + }) +} diff --git a/internal/service/appflow/flow_identity_gen_test.go b/internal/service/appflow/flow_identity_gen_test.go index 3b3057b2392b..12df25e73cf1 100644 --- a/internal/service/appflow/flow_identity_gen_test.go +++ b/internal/service/appflow/flow_identity_gen_test.go @@ -281,3 +281,52 @@ func TestAccAppFlowFlow_Identity_ExistingResource(t *testing.T) { }, }) } + +func TestAccAppFlowFlow_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v appflow.DescribeFlowOutput + resourceName := "aws_appflow_flow.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.AppFlowServiceID), + CheckDestroy: testAccCheckFlowDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/Flow/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckFlowExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Flow/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckFlowExists(ctx, resourceName, &v), + ), + }, + }, + }) +} diff --git a/internal/service/apprunner/auto_scaling_configuration_version_identity_gen_test.go b/internal/service/apprunner/auto_scaling_configuration_version_identity_gen_test.go index 38982e440865..4c225b672bfe 100644 --- a/internal/service/apprunner/auto_scaling_configuration_version_identity_gen_test.go +++ b/internal/service/apprunner/auto_scaling_configuration_version_identity_gen_test.go @@ -301,3 +301,51 @@ func TestAccAppRunnerAutoScalingConfigurationVersion_Identity_ExistingResource(t }, }) } + +func TestAccAppRunnerAutoScalingConfigurationVersion_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + resourceName := "aws_apprunner_auto_scaling_configuration_version.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.AppRunnerServiceID), + CheckDestroy: testAccCheckAutoScalingConfigurationVersionDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/AutoScalingConfigurationVersion/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckAutoScalingConfigurationVersionExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/AutoScalingConfigurationVersion/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckAutoScalingConfigurationVersionExists(ctx, resourceName), + ), + }, + }, + }) +} diff --git a/internal/service/apprunner/observability_configuration_identity_gen_test.go b/internal/service/apprunner/observability_configuration_identity_gen_test.go index 762f97c6cb3e..df562e9e8108 100644 --- a/internal/service/apprunner/observability_configuration_identity_gen_test.go +++ b/internal/service/apprunner/observability_configuration_identity_gen_test.go @@ -301,3 +301,51 @@ func TestAccAppRunnerObservabilityConfiguration_Identity_ExistingResource(t *tes }, }) } + +func TestAccAppRunnerObservabilityConfiguration_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + resourceName := "aws_apprunner_observability_configuration.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.AppRunnerServiceID), + CheckDestroy: testAccCheckObservabilityConfigurationDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/ObservabilityConfiguration/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckObservabilityConfigurationExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/ObservabilityConfiguration/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckObservabilityConfigurationExists(ctx, resourceName), + ), + }, + }, + }) +} diff --git a/internal/service/apprunner/service_identity_gen_test.go b/internal/service/apprunner/service_identity_gen_test.go index f65d896b6609..dd8c45deadcf 100644 --- a/internal/service/apprunner/service_identity_gen_test.go +++ b/internal/service/apprunner/service_identity_gen_test.go @@ -301,3 +301,51 @@ func TestAccAppRunnerService_Identity_ExistingResource(t *testing.T) { }, }) } + +func TestAccAppRunnerService_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + resourceName := "aws_apprunner_service.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.AppRunnerServiceID), + CheckDestroy: testAccCheckServiceDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/Service/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckServiceExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Service/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckServiceExists(ctx, resourceName), + ), + }, + }, + }) +} diff --git a/internal/service/apprunner/vpc_connector_identity_gen_test.go b/internal/service/apprunner/vpc_connector_identity_gen_test.go index e27d7f7b3c83..71f9c809ea6c 100644 --- a/internal/service/apprunner/vpc_connector_identity_gen_test.go +++ b/internal/service/apprunner/vpc_connector_identity_gen_test.go @@ -301,3 +301,51 @@ func TestAccAppRunnerVPCConnector_Identity_ExistingResource(t *testing.T) { }, }) } + +func TestAccAppRunnerVPCConnector_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + resourceName := "aws_apprunner_vpc_connector.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.AppRunnerServiceID), + CheckDestroy: testAccCheckVPCConnectorDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/VPCConnector/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckVPCConnectorExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/VPCConnector/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckVPCConnectorExists(ctx, resourceName), + ), + }, + }, + }) +} diff --git a/internal/service/apprunner/vpc_ingress_connection_identity_gen_test.go b/internal/service/apprunner/vpc_ingress_connection_identity_gen_test.go index 8560b9b204f1..469840d972cc 100644 --- a/internal/service/apprunner/vpc_ingress_connection_identity_gen_test.go +++ b/internal/service/apprunner/vpc_ingress_connection_identity_gen_test.go @@ -301,3 +301,51 @@ func TestAccAppRunnerVPCIngressConnection_Identity_ExistingResource(t *testing.T }, }) } + +func TestAccAppRunnerVPCIngressConnection_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + resourceName := "aws_apprunner_vpc_ingress_connection.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.AppRunnerServiceID), + CheckDestroy: testAccCheckVPCIngressConnectionDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/VPCIngressConnection/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckVPCIngressConnectionExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/VPCIngressConnection/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckVPCIngressConnectionExists(ctx, resourceName), + ), + }, + }, + }) +} diff --git a/internal/service/backup/region_settings_identity_gen_test.go b/internal/service/backup/region_settings_identity_gen_test.go index eb6b02ef9acb..6f6c5ade8db4 100644 --- a/internal/service/backup/region_settings_identity_gen_test.go +++ b/internal/service/backup/region_settings_identity_gen_test.go @@ -298,3 +298,50 @@ func testAccBackupRegionSettings_Identity_ExistingResource(t *testing.T) { }, }) } + +func testAccBackupRegionSettings_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v backup.DescribeRegionSettingsOutput + resourceName := "aws_backup_region_settings.test" + + acctest.Test(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { + acctest.PreCheck(ctx, t) + testAccPreCheck(ctx, t) + }, + ErrorCheck: acctest.ErrorCheck(t, names.BackupServiceID), + CheckDestroy: acctest.CheckDestroyNoop, + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/RegionSettings/basic_v5.100.0/"), + ConfigVariables: config.Variables{}, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckRegionSettingsExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/RegionSettings/basic/"), + ConfigVariables: config.Variables{}, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckRegionSettingsExists(ctx, resourceName, &v), + ), + }, + }, + }) +} diff --git a/internal/service/ce/anomaly_monitor_identity_gen_test.go b/internal/service/ce/anomaly_monitor_identity_gen_test.go index afddb7687fad..bf5845c28662 100644 --- a/internal/service/ce/anomaly_monitor_identity_gen_test.go +++ b/internal/service/ce/anomaly_monitor_identity_gen_test.go @@ -181,3 +181,52 @@ func TestAccCEAnomalyMonitor_Identity_ExistingResource(t *testing.T) { }, }) } + +func TestAccCEAnomalyMonitor_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v awstypes.AnomalyMonitor + resourceName := "aws_ce_anomaly_monitor.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.CEServiceID), + CheckDestroy: testAccCheckAnomalyMonitorDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/AnomalyMonitor/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckAnomalyMonitorExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/AnomalyMonitor/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckAnomalyMonitorExists(ctx, resourceName, &v), + ), + }, + }, + }) +} diff --git a/internal/service/ce/anomaly_subscription_identity_gen_test.go b/internal/service/ce/anomaly_subscription_identity_gen_test.go index 2b56a73243b1..d68c1499af5e 100644 --- a/internal/service/ce/anomaly_subscription_identity_gen_test.go +++ b/internal/service/ce/anomaly_subscription_identity_gen_test.go @@ -192,3 +192,56 @@ func TestAccCEAnomalySubscription_Identity_ExistingResource(t *testing.T) { }, }) } + +func TestAccCEAnomalySubscription_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v awstypes.AnomalySubscription + resourceName := "aws_ce_anomaly_subscription.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + domain := acctest.RandomDomainName() + email_address := acctest.RandomEmailAddress(domain) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.CEServiceID), + CheckDestroy: testAccCheckAnomalySubscriptionDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/AnomalySubscription/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + "email_address": config.StringVariable(email_address), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckAnomalySubscriptionExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/AnomalySubscription/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + "email_address": config.StringVariable(email_address), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckAnomalySubscriptionExists(ctx, resourceName, &v), + ), + }, + }, + }) +} diff --git a/internal/service/ce/cost_category_identity_gen_test.go b/internal/service/ce/cost_category_identity_gen_test.go index 815042cab4ca..a7b631290502 100644 --- a/internal/service/ce/cost_category_identity_gen_test.go +++ b/internal/service/ce/cost_category_identity_gen_test.go @@ -181,3 +181,52 @@ func TestAccCECostCategory_Identity_ExistingResource(t *testing.T) { }, }) } + +func TestAccCECostCategory_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v awstypes.CostCategory + resourceName := "aws_ce_cost_category.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.CEServiceID), + CheckDestroy: testAccCheckCostCategoryDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/CostCategory/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckCostCategoryExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/CostCategory/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckCostCategoryExists(ctx, resourceName, &v), + ), + }, + }, + }) +} diff --git a/internal/service/chimesdkmediapipelines/media_insights_pipeline_configuration_identity_gen_test.go b/internal/service/chimesdkmediapipelines/media_insights_pipeline_configuration_identity_gen_test.go index 02eb0b225882..7d81729b3ec7 100644 --- a/internal/service/chimesdkmediapipelines/media_insights_pipeline_configuration_identity_gen_test.go +++ b/internal/service/chimesdkmediapipelines/media_insights_pipeline_configuration_identity_gen_test.go @@ -304,3 +304,52 @@ func TestAccChimeSDKMediaPipelinesMediaInsightsPipelineConfiguration_Identity_Ex }, }) } + +func TestAccChimeSDKMediaPipelinesMediaInsightsPipelineConfiguration_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v awstypes.MediaInsightsPipelineConfiguration + resourceName := "aws_chimesdkmediapipelines_media_insights_pipeline_configuration.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.ChimeSDKMediaPipelinesServiceID), + CheckDestroy: testAccCheckMediaInsightsPipelineConfigurationDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/MediaInsightsPipelineConfiguration/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckMediaInsightsPipelineConfigurationExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/MediaInsightsPipelineConfiguration/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckMediaInsightsPipelineConfigurationExists(ctx, resourceName, &v), + ), + }, + }, + }) +} diff --git a/internal/service/cloudfront/realtime_log_config_identity_gen_test.go b/internal/service/cloudfront/realtime_log_config_identity_gen_test.go index a075714d19ea..f5757da0ee00 100644 --- a/internal/service/cloudfront/realtime_log_config_identity_gen_test.go +++ b/internal/service/cloudfront/realtime_log_config_identity_gen_test.go @@ -182,3 +182,52 @@ func TestAccCloudFrontRealtimeLogConfig_Identity_ExistingResource(t *testing.T) }, }) } + +func TestAccCloudFrontRealtimeLogConfig_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v awstypes.RealtimeLogConfig + resourceName := "aws_cloudfront_realtime_log_config.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.CloudFrontServiceID), + CheckDestroy: testAccCheckRealtimeLogConfigDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/RealtimeLogConfig/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckRealtimeLogConfigExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/RealtimeLogConfig/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckRealtimeLogConfigExists(ctx, resourceName, &v), + ), + }, + }, + }) +} diff --git a/internal/service/cloudtrail/event_data_store_identity_gen_test.go b/internal/service/cloudtrail/event_data_store_identity_gen_test.go index 3399ce07776e..f94783d303c0 100644 --- a/internal/service/cloudtrail/event_data_store_identity_gen_test.go +++ b/internal/service/cloudtrail/event_data_store_identity_gen_test.go @@ -301,3 +301,51 @@ func TestAccCloudTrailEventDataStore_Identity_ExistingResource(t *testing.T) { }, }) } + +func TestAccCloudTrailEventDataStore_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + resourceName := "aws_cloudtrail_event_data_store.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.CloudTrailServiceID), + CheckDestroy: testAccCheckEventDataStoreDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/EventDataStore/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckEventDataStoreExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/EventDataStore/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckEventDataStoreExists(ctx, resourceName), + ), + }, + }, + }) +} diff --git a/internal/service/cloudtrail/trail_identity_gen_test.go b/internal/service/cloudtrail/trail_identity_gen_test.go index 375dc04b9c3d..df25b8614ec4 100644 --- a/internal/service/cloudtrail/trail_identity_gen_test.go +++ b/internal/service/cloudtrail/trail_identity_gen_test.go @@ -316,3 +316,52 @@ func testAccCloudTrailTrail_Identity_ExistingResource(t *testing.T) { }, }) } + +func testAccCloudTrailTrail_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v awstypes.Trail + resourceName := "aws_cloudtrail.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.Test(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.CloudTrailServiceID), + CheckDestroy: testAccCheckTrailDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/Trail/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckTrailExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Trail/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckTrailExists(ctx, resourceName, &v), + ), + }, + }, + }) +} diff --git a/internal/service/codeartifact/domain_identity_gen_test.go b/internal/service/codeartifact/domain_identity_gen_test.go index cd77b9c9b887..10d72ece764d 100644 --- a/internal/service/codeartifact/domain_identity_gen_test.go +++ b/internal/service/codeartifact/domain_identity_gen_test.go @@ -315,3 +315,51 @@ func testAccCodeArtifactDomain_Identity_ExistingResource(t *testing.T) { }, }) } + +func testAccCodeArtifactDomain_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + resourceName := "aws_codeartifact_domain.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.Test(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.CodeArtifactServiceID), + CheckDestroy: testAccCheckDomainDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/Domain/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckDomainExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Domain/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckDomainExists(ctx, resourceName), + ), + }, + }, + }) +} diff --git a/internal/service/codeartifact/domain_permissions_policy_identity_gen_test.go b/internal/service/codeartifact/domain_permissions_policy_identity_gen_test.go index f897420687b2..e6726bd1c475 100644 --- a/internal/service/codeartifact/domain_permissions_policy_identity_gen_test.go +++ b/internal/service/codeartifact/domain_permissions_policy_identity_gen_test.go @@ -313,3 +313,51 @@ func testAccCodeArtifactDomainPermissionsPolicy_Identity_ExistingResource(t *tes }, }) } + +func testAccCodeArtifactDomainPermissionsPolicy_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + resourceName := "aws_codeartifact_domain_permissions_policy.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.Test(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.CodeArtifactServiceID), + CheckDestroy: testAccCheckDomainPermissionsPolicyDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/DomainPermissionsPolicy/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckDomainPermissionsPolicyExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/DomainPermissionsPolicy/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckDomainPermissionsPolicyExists(ctx, resourceName), + ), + }, + }, + }) +} diff --git a/internal/service/codeartifact/repository_identity_gen_test.go b/internal/service/codeartifact/repository_identity_gen_test.go index 3e1f7c065654..195e5a3c9587 100644 --- a/internal/service/codeartifact/repository_identity_gen_test.go +++ b/internal/service/codeartifact/repository_identity_gen_test.go @@ -315,3 +315,51 @@ func testAccCodeArtifactRepository_Identity_ExistingResource(t *testing.T) { }, }) } + +func testAccCodeArtifactRepository_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + resourceName := "aws_codeartifact_repository.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.Test(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.CodeArtifactServiceID), + CheckDestroy: testAccCheckRepositoryDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/Repository/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckRepositoryExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Repository/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckRepositoryExists(ctx, resourceName), + ), + }, + }, + }) +} diff --git a/internal/service/codeartifact/repository_permissions_policy_identity_gen_test.go b/internal/service/codeartifact/repository_permissions_policy_identity_gen_test.go index 1c408eae7305..9e8a04165a96 100644 --- a/internal/service/codeartifact/repository_permissions_policy_identity_gen_test.go +++ b/internal/service/codeartifact/repository_permissions_policy_identity_gen_test.go @@ -313,3 +313,51 @@ func testAccCodeArtifactRepositoryPermissionsPolicy_Identity_ExistingResource(t }, }) } + +func testAccCodeArtifactRepositoryPermissionsPolicy_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + resourceName := "aws_codeartifact_repository_permissions_policy.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.Test(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.CodeArtifactServiceID), + CheckDestroy: testAccCheckRepositoryPermissionsPolicyDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/RepositoryPermissionsPolicy/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckRepositoryPermissionsPolicyExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/RepositoryPermissionsPolicy/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckRepositoryPermissionsPolicyExists(ctx, resourceName), + ), + }, + }, + }) +} diff --git a/internal/service/codebuild/fleet_identity_gen_test.go b/internal/service/codebuild/fleet_identity_gen_test.go index 544c89dd2ea6..229759468a22 100644 --- a/internal/service/codebuild/fleet_identity_gen_test.go +++ b/internal/service/codebuild/fleet_identity_gen_test.go @@ -301,3 +301,51 @@ func TestAccCodeBuildFleet_Identity_ExistingResource(t *testing.T) { }, }) } + +func TestAccCodeBuildFleet_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + resourceName := "aws_codebuild_fleet.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.CodeBuildServiceID), + CheckDestroy: testAccCheckFleetDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/Fleet/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckFleetExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Fleet/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckFleetExists(ctx, resourceName), + ), + }, + }, + }) +} diff --git a/internal/service/codebuild/project_identity_gen_test.go b/internal/service/codebuild/project_identity_gen_test.go index 189fb3f4062b..42e05c5ec06e 100644 --- a/internal/service/codebuild/project_identity_gen_test.go +++ b/internal/service/codebuild/project_identity_gen_test.go @@ -319,3 +319,56 @@ func TestAccCodeBuildProject_Identity_ExistingResource(t *testing.T) { }, }) } + +func TestAccCodeBuildProject_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v awstypes.Project + resourceName := "aws_codebuild_project.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { + acctest.PreCheck(ctx, t) + testAccPreCheck(ctx, t) + testAccPreCheckSourceCredentialsForServerTypeGithub(ctx, t) + }, + ErrorCheck: acctest.ErrorCheck(t, names.CodeBuildServiceID), + CheckDestroy: testAccCheckProjectDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/Project/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckProjectExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Project/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckProjectExists(ctx, resourceName, &v), + ), + }, + }, + }) +} diff --git a/internal/service/codebuild/report_group_identity_gen_test.go b/internal/service/codebuild/report_group_identity_gen_test.go index 9cae3b523866..41a46566a001 100644 --- a/internal/service/codebuild/report_group_identity_gen_test.go +++ b/internal/service/codebuild/report_group_identity_gen_test.go @@ -315,3 +315,52 @@ func TestAccCodeBuildReportGroup_Identity_ExistingResource(t *testing.T) { }, }) } + +func TestAccCodeBuildReportGroup_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v awstypes.ReportGroup + resourceName := "aws_codebuild_report_group.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.CodeBuildServiceID), + CheckDestroy: testAccCheckReportGroupDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/ReportGroup/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckReportGroupExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/ReportGroup/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckReportGroupExists(ctx, resourceName, &v), + ), + }, + }, + }) +} diff --git a/internal/service/codebuild/resource_policy_identity_gen_test.go b/internal/service/codebuild/resource_policy_identity_gen_test.go index c509fbcab669..9ca762c9bd7e 100644 --- a/internal/service/codebuild/resource_policy_identity_gen_test.go +++ b/internal/service/codebuild/resource_policy_identity_gen_test.go @@ -304,3 +304,52 @@ func TestAccCodeBuildResourcePolicy_Identity_ExistingResource(t *testing.T) { }, }) } + +func TestAccCodeBuildResourcePolicy_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v codebuild.GetResourcePolicyOutput + resourceName := "aws_codebuild_resource_policy.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.CodeBuildServiceID), + CheckDestroy: testAccCheckResourcePolicyDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/ResourcePolicy/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckResourcePolicyExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/ResourcePolicy/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckResourcePolicyExists(ctx, resourceName, &v), + ), + }, + }, + }) +} diff --git a/internal/service/codebuild/source_credential_identity_gen_test.go b/internal/service/codebuild/source_credential_identity_gen_test.go index 8efb868ac1c3..0d7d252cea8c 100644 --- a/internal/service/codebuild/source_credential_identity_gen_test.go +++ b/internal/service/codebuild/source_credential_identity_gen_test.go @@ -323,3 +323,52 @@ func TestAccCodeBuildSourceCredential_Identity_ExistingResource(t *testing.T) { }, }) } + +func TestAccCodeBuildSourceCredential_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v awstypes.SourceCredentialsInfo + resourceName := "aws_codebuild_source_credential.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.CodeBuildServiceID), + CheckDestroy: testAccCheckSourceCredentialDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/SourceCredential/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckSourceCredentialExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/SourceCredential/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckSourceCredentialExists(ctx, resourceName, &v), + ), + }, + }, + }) +} diff --git a/internal/service/codegurureviewer/repository_association_identity_gen_test.go b/internal/service/codegurureviewer/repository_association_identity_gen_test.go index 7aaa44facfb3..3ea068d0e95f 100644 --- a/internal/service/codegurureviewer/repository_association_identity_gen_test.go +++ b/internal/service/codegurureviewer/repository_association_identity_gen_test.go @@ -323,3 +323,52 @@ func TestAccCodeGuruReviewerRepositoryAssociation_Identity_ExistingResource(t *t }, }) } + +func TestAccCodeGuruReviewerRepositoryAssociation_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v awstypes.RepositoryAssociation + resourceName := "aws_codegurureviewer_repository_association.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.CodeGuruReviewerServiceID), + CheckDestroy: testAccCheckRepositoryAssociationDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/RepositoryAssociation/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckRepositoryAssociationExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/RepositoryAssociation/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckRepositoryAssociationExists(ctx, resourceName, &v), + ), + }, + }, + }) +} diff --git a/internal/service/codepipeline/webhook_identity_gen_test.go b/internal/service/codepipeline/webhook_identity_gen_test.go index 2ab627ad77da..b1310ba19de7 100644 --- a/internal/service/codepipeline/webhook_identity_gen_test.go +++ b/internal/service/codepipeline/webhook_identity_gen_test.go @@ -318,3 +318,56 @@ func TestAccCodePipelineWebhook_Identity_ExistingResource(t *testing.T) { }, }) } + +func TestAccCodePipelineWebhook_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v awstypes.ListWebhookItem + acctest.SkipIfEnvVarNotSet(t, "GITHUB_TOKEN") + resourceName := "aws_codepipeline_webhook.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { + acctest.PreCheck(ctx, t) + testAccPreCheck(ctx, t) + }, + ErrorCheck: acctest.ErrorCheck(t, names.CodePipelineServiceID), + CheckDestroy: testAccCheckWebhookDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/Webhook/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckWebhookExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Webhook/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckWebhookExists(ctx, resourceName, &v), + ), + }, + }, + }) +} diff --git a/internal/service/codestarconnections/connection_identity_gen_test.go b/internal/service/codestarconnections/connection_identity_gen_test.go index d274b5e0ecff..a221b1353d2a 100644 --- a/internal/service/codestarconnections/connection_identity_gen_test.go +++ b/internal/service/codestarconnections/connection_identity_gen_test.go @@ -304,3 +304,52 @@ func TestAccCodeStarConnectionsConnection_Identity_ExistingResource(t *testing.T }, }) } + +func TestAccCodeStarConnectionsConnection_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v awstypes.Connection + resourceName := "aws_codestarconnections_connection.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.CodeStarConnectionsServiceID), + CheckDestroy: testAccCheckConnectionDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/Connection/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckConnectionExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Connection/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckConnectionExists(ctx, resourceName, &v), + ), + }, + }, + }) +} diff --git a/internal/service/codestarconnections/host_identity_gen_test.go b/internal/service/codestarconnections/host_identity_gen_test.go index c1ccf36bf0d1..d5aa19a3d0cf 100644 --- a/internal/service/codestarconnections/host_identity_gen_test.go +++ b/internal/service/codestarconnections/host_identity_gen_test.go @@ -304,3 +304,52 @@ func TestAccCodeStarConnectionsHost_Identity_ExistingResource(t *testing.T) { }, }) } + +func TestAccCodeStarConnectionsHost_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v codestarconnections.GetHostOutput + resourceName := "aws_codestarconnections_host.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.CodeStarConnectionsServiceID), + CheckDestroy: testAccCheckHostDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/Host/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckHostExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Host/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckHostExists(ctx, resourceName, &v), + ), + }, + }, + }) +} diff --git a/internal/service/codestarnotifications/notification_rule_identity_gen_test.go b/internal/service/codestarnotifications/notification_rule_identity_gen_test.go index a34627ae3f7f..9ceda87b7c46 100644 --- a/internal/service/codestarnotifications/notification_rule_identity_gen_test.go +++ b/internal/service/codestarnotifications/notification_rule_identity_gen_test.go @@ -301,3 +301,51 @@ func TestAccCodeStarNotificationsNotificationRule_Identity_ExistingResource(t *t }, }) } + +func TestAccCodeStarNotificationsNotificationRule_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + resourceName := "aws_codestarnotifications_notification_rule.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.CodeStarNotificationsServiceID), + CheckDestroy: testAccCheckNotificationRuleDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/NotificationRule/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckNotificationRuleExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/NotificationRule/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckNotificationRuleExists(ctx, resourceName), + ), + }, + }, + }) +} diff --git a/internal/service/comprehend/document_classifier_identity_gen_test.go b/internal/service/comprehend/document_classifier_identity_gen_test.go index 3d149a357c0d..ea6e1460ca71 100644 --- a/internal/service/comprehend/document_classifier_identity_gen_test.go +++ b/internal/service/comprehend/document_classifier_identity_gen_test.go @@ -313,3 +313,55 @@ func TestAccComprehendDocumentClassifier_Identity_ExistingResource(t *testing.T) }, }) } + +func TestAccComprehendDocumentClassifier_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v awstypes.DocumentClassifierProperties + resourceName := "aws_comprehend_document_classifier.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { + acctest.PreCheck(ctx, t) + testAccPreCheck(ctx, t) + }, + ErrorCheck: acctest.ErrorCheck(t, names.ComprehendServiceID), + CheckDestroy: testAccCheckDocumentClassifierDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/DocumentClassifier/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckDocumentClassifierExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/DocumentClassifier/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckDocumentClassifierExists(ctx, resourceName, &v), + ), + }, + }, + }) +} diff --git a/internal/service/comprehend/entity_recognizer_identity_gen_test.go b/internal/service/comprehend/entity_recognizer_identity_gen_test.go index 06c220b40ee4..da79941c8ad9 100644 --- a/internal/service/comprehend/entity_recognizer_identity_gen_test.go +++ b/internal/service/comprehend/entity_recognizer_identity_gen_test.go @@ -313,3 +313,55 @@ func TestAccComprehendEntityRecognizer_Identity_ExistingResource(t *testing.T) { }, }) } + +func TestAccComprehendEntityRecognizer_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v awstypes.EntityRecognizerProperties + resourceName := "aws_comprehend_entity_recognizer.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { + acctest.PreCheck(ctx, t) + testAccPreCheck(ctx, t) + }, + ErrorCheck: acctest.ErrorCheck(t, names.ComprehendServiceID), + CheckDestroy: testAccCheckEntityRecognizerDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/EntityRecognizer/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckEntityRecognizerExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/EntityRecognizer/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckEntityRecognizerExists(ctx, resourceName, &v), + ), + }, + }, + }) +} diff --git a/internal/service/datasync/agent_identity_gen_test.go b/internal/service/datasync/agent_identity_gen_test.go index 5e265a74551d..4f0c0fbd5f4b 100644 --- a/internal/service/datasync/agent_identity_gen_test.go +++ b/internal/service/datasync/agent_identity_gen_test.go @@ -332,3 +332,55 @@ func TestAccDataSyncAgent_Identity_ExistingResource(t *testing.T) { }, }) } + +func TestAccDataSyncAgent_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v datasync.DescribeAgentOutput + resourceName := "aws_datasync_agent.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { + acctest.PreCheck(ctx, t) + testAccPreCheck(ctx, t) + }, + ErrorCheck: acctest.ErrorCheck(t, names.DataSyncServiceID), + CheckDestroy: testAccCheckAgentDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/Agent/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckAgentExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Agent/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckAgentExists(ctx, resourceName, &v), + ), + }, + }, + }) +} diff --git a/internal/service/datasync/location_azure_blob_identity_gen_test.go b/internal/service/datasync/location_azure_blob_identity_gen_test.go index 0021b1bdc7de..2cbda4f0ade1 100644 --- a/internal/service/datasync/location_azure_blob_identity_gen_test.go +++ b/internal/service/datasync/location_azure_blob_identity_gen_test.go @@ -332,3 +332,55 @@ func TestAccDataSyncLocationAzureBlob_Identity_ExistingResource(t *testing.T) { }, }) } + +func TestAccDataSyncLocationAzureBlob_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v datasync.DescribeLocationAzureBlobOutput + resourceName := "aws_datasync_location_azure_blob.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { + acctest.PreCheck(ctx, t) + testAccPreCheck(ctx, t) + }, + ErrorCheck: acctest.ErrorCheck(t, names.DataSyncServiceID), + CheckDestroy: testAccCheckLocationAzureBlobDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/LocationAzureBlob/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckLocationAzureBlobExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/LocationAzureBlob/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckLocationAzureBlobExists(ctx, resourceName, &v), + ), + }, + }, + }) +} diff --git a/internal/service/datasync/location_efs_identity_gen_test.go b/internal/service/datasync/location_efs_identity_gen_test.go index 278b88f2cd39..a53466bf3577 100644 --- a/internal/service/datasync/location_efs_identity_gen_test.go +++ b/internal/service/datasync/location_efs_identity_gen_test.go @@ -289,3 +289,50 @@ func TestAccDataSyncLocationEFS_Identity_ExistingResource(t *testing.T) { }, }) } + +func TestAccDataSyncLocationEFS_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v datasync.DescribeLocationEfsOutput + resourceName := "aws_datasync_location_efs.test" + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { + acctest.PreCheck(ctx, t) + testAccPreCheck(ctx, t) + }, + ErrorCheck: acctest.ErrorCheck(t, names.DataSyncServiceID), + CheckDestroy: testAccCheckLocationEFSDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/LocationEFS/basic_v5.100.0/"), + ConfigVariables: config.Variables{}, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckLocationEFSExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/LocationEFS/basic/"), + ConfigVariables: config.Variables{}, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckLocationEFSExists(ctx, resourceName, &v), + ), + }, + }, + }) +} diff --git a/internal/service/datasync/location_hdfs_identity_gen_test.go b/internal/service/datasync/location_hdfs_identity_gen_test.go index 8c3ccfe29918..ea674a0ad283 100644 --- a/internal/service/datasync/location_hdfs_identity_gen_test.go +++ b/internal/service/datasync/location_hdfs_identity_gen_test.go @@ -313,3 +313,55 @@ func TestAccDataSyncLocationHDFS_Identity_ExistingResource(t *testing.T) { }, }) } + +func TestAccDataSyncLocationHDFS_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v datasync.DescribeLocationHdfsOutput + resourceName := "aws_datasync_location_hdfs.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { + acctest.PreCheck(ctx, t) + testAccPreCheck(ctx, t) + }, + ErrorCheck: acctest.ErrorCheck(t, names.DataSyncServiceID), + CheckDestroy: testAccCheckLocationHDFSDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/LocationHDFS/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckLocationHDFSExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/LocationHDFS/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckLocationHDFSExists(ctx, resourceName, &v), + ), + }, + }, + }) +} diff --git a/internal/service/datasync/location_nfs_identity_gen_test.go b/internal/service/datasync/location_nfs_identity_gen_test.go index 091f9e44f16e..97ffc2054c02 100644 --- a/internal/service/datasync/location_nfs_identity_gen_test.go +++ b/internal/service/datasync/location_nfs_identity_gen_test.go @@ -313,3 +313,55 @@ func TestAccDataSyncLocationNFS_Identity_ExistingResource(t *testing.T) { }, }) } + +func TestAccDataSyncLocationNFS_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v datasync.DescribeLocationNfsOutput + resourceName := "aws_datasync_location_nfs.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { + acctest.PreCheck(ctx, t) + testAccPreCheck(ctx, t) + }, + ErrorCheck: acctest.ErrorCheck(t, names.DataSyncServiceID), + CheckDestroy: testAccCheckLocationNFSDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/LocationNFS/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckLocationNFSExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/LocationNFS/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckLocationNFSExists(ctx, resourceName, &v), + ), + }, + }, + }) +} diff --git a/internal/service/datasync/location_object_storage_identity_gen_test.go b/internal/service/datasync/location_object_storage_identity_gen_test.go index f7e533303de8..2ce6e8ccd231 100644 --- a/internal/service/datasync/location_object_storage_identity_gen_test.go +++ b/internal/service/datasync/location_object_storage_identity_gen_test.go @@ -329,3 +329,58 @@ func TestAccDataSyncLocationObjectStorage_Identity_ExistingResource(t *testing.T }, }) } + +func TestAccDataSyncLocationObjectStorage_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v datasync.DescribeLocationObjectStorageOutput + resourceName := "aws_datasync_location_object_storage.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + domain := acctest.RandomDomainName() + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { + acctest.PreCheck(ctx, t) + testAccPreCheck(ctx, t) + }, + ErrorCheck: acctest.ErrorCheck(t, names.DataSyncServiceID), + CheckDestroy: testAccCheckLocationObjectStorageDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/LocationObjectStorage/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + "domain": config.StringVariable(domain), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckLocationObjectStorageExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/LocationObjectStorage/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + "domain": config.StringVariable(domain), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckLocationObjectStorageExists(ctx, resourceName, &v), + ), + }, + }, + }) +} diff --git a/internal/service/datasync/location_s3_identity_gen_test.go b/internal/service/datasync/location_s3_identity_gen_test.go index f787e1dc9586..b3d3c68b79c4 100644 --- a/internal/service/datasync/location_s3_identity_gen_test.go +++ b/internal/service/datasync/location_s3_identity_gen_test.go @@ -313,3 +313,55 @@ func TestAccDataSyncLocationS3_Identity_ExistingResource(t *testing.T) { }, }) } + +func TestAccDataSyncLocationS3_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v datasync.DescribeLocationS3Output + resourceName := "aws_datasync_location_s3.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { + acctest.PreCheck(ctx, t) + testAccPreCheck(ctx, t) + }, + ErrorCheck: acctest.ErrorCheck(t, names.DataSyncServiceID), + CheckDestroy: testAccCheckLocationS3Destroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/LocationS3/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckLocationS3Exists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/LocationS3/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckLocationS3Exists(ctx, resourceName, &v), + ), + }, + }, + }) +} diff --git a/internal/service/datasync/location_smb_identity_gen_test.go b/internal/service/datasync/location_smb_identity_gen_test.go index ed556bb9d2f7..9c27f9fda2a4 100644 --- a/internal/service/datasync/location_smb_identity_gen_test.go +++ b/internal/service/datasync/location_smb_identity_gen_test.go @@ -332,3 +332,55 @@ func TestAccDataSyncLocationSMB_Identity_ExistingResource(t *testing.T) { }, }) } + +func TestAccDataSyncLocationSMB_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v datasync.DescribeLocationSmbOutput + resourceName := "aws_datasync_location_smb.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { + acctest.PreCheck(ctx, t) + testAccPreCheck(ctx, t) + }, + ErrorCheck: acctest.ErrorCheck(t, names.DataSyncServiceID), + CheckDestroy: testAccCheckLocationSMBDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/LocationSMB/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckLocationSMBExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/LocationSMB/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckLocationSMBExists(ctx, resourceName, &v), + ), + }, + }, + }) +} diff --git a/internal/service/datasync/task_identity_gen_test.go b/internal/service/datasync/task_identity_gen_test.go index af0c506fdadc..5bd0a126b407 100644 --- a/internal/service/datasync/task_identity_gen_test.go +++ b/internal/service/datasync/task_identity_gen_test.go @@ -313,3 +313,55 @@ func TestAccDataSyncTask_Identity_ExistingResource(t *testing.T) { }, }) } + +func TestAccDataSyncTask_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v datasync.DescribeTaskOutput + resourceName := "aws_datasync_task.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { + acctest.PreCheck(ctx, t) + testAccPreCheck(ctx, t) + }, + ErrorCheck: acctest.ErrorCheck(t, names.DataSyncServiceID), + CheckDestroy: testAccCheckTaskDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/Task/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckTaskExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Task/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckTaskExists(ctx, resourceName, &v), + ), + }, + }, + }) +} diff --git a/internal/service/devicefarm/device_pool_identity_gen_test.go b/internal/service/devicefarm/device_pool_identity_gen_test.go index e2e006084c50..131235640182 100644 --- a/internal/service/devicefarm/device_pool_identity_gen_test.go +++ b/internal/service/devicefarm/device_pool_identity_gen_test.go @@ -191,3 +191,55 @@ func TestAccDeviceFarmDevicePool_Identity_ExistingResource(t *testing.T) { }, }) } + +func TestAccDeviceFarmDevicePool_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v awstypes.DevicePool + resourceName := "aws_devicefarm_device_pool.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { + acctest.PreCheck(ctx, t) + acctest.PreCheckRegion(t, endpoints.UsWest2RegionID) + }, + ErrorCheck: acctest.ErrorCheck(t, names.DeviceFarmServiceID), + CheckDestroy: testAccCheckDevicePoolDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/DevicePool/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckDevicePoolExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/DevicePool/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckDevicePoolExists(ctx, resourceName, &v), + ), + }, + }, + }) +} diff --git a/internal/service/devicefarm/instance_profile_identity_gen_test.go b/internal/service/devicefarm/instance_profile_identity_gen_test.go index 0418f0d9baed..72d88dd3f1a4 100644 --- a/internal/service/devicefarm/instance_profile_identity_gen_test.go +++ b/internal/service/devicefarm/instance_profile_identity_gen_test.go @@ -191,3 +191,55 @@ func TestAccDeviceFarmInstanceProfile_Identity_ExistingResource(t *testing.T) { }, }) } + +func TestAccDeviceFarmInstanceProfile_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v awstypes.InstanceProfile + resourceName := "aws_devicefarm_instance_profile.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { + acctest.PreCheck(ctx, t) + acctest.PreCheckRegion(t, endpoints.UsWest2RegionID) + }, + ErrorCheck: acctest.ErrorCheck(t, names.DeviceFarmServiceID), + CheckDestroy: testAccCheckInstanceProfileDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/InstanceProfile/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckInstanceProfileExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/InstanceProfile/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckInstanceProfileExists(ctx, resourceName, &v), + ), + }, + }, + }) +} diff --git a/internal/service/devicefarm/network_profile_identity_gen_test.go b/internal/service/devicefarm/network_profile_identity_gen_test.go index 326cbaf98ed9..c0dd43d198eb 100644 --- a/internal/service/devicefarm/network_profile_identity_gen_test.go +++ b/internal/service/devicefarm/network_profile_identity_gen_test.go @@ -191,3 +191,55 @@ func TestAccDeviceFarmNetworkProfile_Identity_ExistingResource(t *testing.T) { }, }) } + +func TestAccDeviceFarmNetworkProfile_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v awstypes.NetworkProfile + resourceName := "aws_devicefarm_network_profile.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { + acctest.PreCheck(ctx, t) + acctest.PreCheckRegion(t, endpoints.UsWest2RegionID) + }, + ErrorCheck: acctest.ErrorCheck(t, names.DeviceFarmServiceID), + CheckDestroy: testAccCheckNetworkProfileDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/NetworkProfile/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckNetworkProfileExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/NetworkProfile/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckNetworkProfileExists(ctx, resourceName, &v), + ), + }, + }, + }) +} diff --git a/internal/service/devicefarm/project_identity_gen_test.go b/internal/service/devicefarm/project_identity_gen_test.go index f8f8cff84940..4586206952f9 100644 --- a/internal/service/devicefarm/project_identity_gen_test.go +++ b/internal/service/devicefarm/project_identity_gen_test.go @@ -191,3 +191,55 @@ func TestAccDeviceFarmProject_Identity_ExistingResource(t *testing.T) { }, }) } + +func TestAccDeviceFarmProject_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v awstypes.Project + resourceName := "aws_devicefarm_project.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { + acctest.PreCheck(ctx, t) + acctest.PreCheckRegion(t, endpoints.UsWest2RegionID) + }, + ErrorCheck: acctest.ErrorCheck(t, names.DeviceFarmServiceID), + CheckDestroy: testAccCheckProjectDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/Project/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckProjectExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Project/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckProjectExists(ctx, resourceName, &v), + ), + }, + }, + }) +} diff --git a/internal/service/devicefarm/test_grid_project_identity_gen_test.go b/internal/service/devicefarm/test_grid_project_identity_gen_test.go index 8ce7437ea40d..b98fb9caec00 100644 --- a/internal/service/devicefarm/test_grid_project_identity_gen_test.go +++ b/internal/service/devicefarm/test_grid_project_identity_gen_test.go @@ -191,3 +191,55 @@ func TestAccDeviceFarmTestGridProject_Identity_ExistingResource(t *testing.T) { }, }) } + +func TestAccDeviceFarmTestGridProject_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v awstypes.TestGridProject + resourceName := "aws_devicefarm_test_grid_project.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { + acctest.PreCheck(ctx, t) + acctest.PreCheckRegion(t, endpoints.UsWest2RegionID) + }, + ErrorCheck: acctest.ErrorCheck(t, names.DeviceFarmServiceID), + CheckDestroy: testAccCheckTestGridProjectDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/TestGridProject/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckTestGridProjectExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/TestGridProject/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckTestGridProjectExists(ctx, resourceName, &v), + ), + }, + }, + }) +} diff --git a/internal/service/devicefarm/upload_identity_gen_test.go b/internal/service/devicefarm/upload_identity_gen_test.go index 70c46595b631..7537fef38c2f 100644 --- a/internal/service/devicefarm/upload_identity_gen_test.go +++ b/internal/service/devicefarm/upload_identity_gen_test.go @@ -194,3 +194,55 @@ func TestAccDeviceFarmUpload_Identity_ExistingResource(t *testing.T) { }, }) } + +func TestAccDeviceFarmUpload_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v awstypes.Upload + resourceName := "aws_devicefarm_upload.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { + acctest.PreCheck(ctx, t) + acctest.PreCheckRegion(t, endpoints.UsWest2RegionID) + }, + ErrorCheck: acctest.ErrorCheck(t, names.DeviceFarmServiceID), + CheckDestroy: testAccCheckUploadDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/Upload/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckUploadExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Upload/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckUploadExists(ctx, resourceName, &v), + ), + }, + }, + }) +} diff --git a/internal/service/dms/replication_config_identity_gen_test.go b/internal/service/dms/replication_config_identity_gen_test.go index 388458195d2f..f9cd3bf169b4 100644 --- a/internal/service/dms/replication_config_identity_gen_test.go +++ b/internal/service/dms/replication_config_identity_gen_test.go @@ -313,3 +313,52 @@ func TestAccDMSReplicationConfig_Identity_ExistingResource(t *testing.T) { }, }) } + +func TestAccDMSReplicationConfig_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v awstypes.ReplicationConfig + resourceName := "aws_dms_replication_config.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.DMSServiceID), + CheckDestroy: testAccCheckReplicationConfigDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/ReplicationConfig/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckReplicationConfigExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/ReplicationConfig/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckReplicationConfigExists(ctx, resourceName, &v), + ), + }, + }, + }) +} diff --git a/internal/service/dynamodb/table_export_identity_gen_test.go b/internal/service/dynamodb/table_export_identity_gen_test.go index c7c86a6f61b3..5033ab13b3a6 100644 --- a/internal/service/dynamodb/table_export_identity_gen_test.go +++ b/internal/service/dynamodb/table_export_identity_gen_test.go @@ -304,3 +304,52 @@ func TestAccDynamoDBTableExport_Identity_ExistingResource(t *testing.T) { }, }) } + +func TestAccDynamoDBTableExport_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v awstypes.ExportDescription + resourceName := "aws_dynamodb_table_export.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.DynamoDBServiceID), + CheckDestroy: acctest.CheckDestroyNoop, + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/TableExport/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckTableExportExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/TableExport/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckTableExportExists(ctx, resourceName, &v), + ), + }, + }, + }) +} diff --git a/internal/service/ec2/ebs_snapshot_block_public_access_identity_gen_test.go b/internal/service/ec2/ebs_snapshot_block_public_access_identity_gen_test.go index 8af681baba7f..abc282a6eaac 100644 --- a/internal/service/ec2/ebs_snapshot_block_public_access_identity_gen_test.go +++ b/internal/service/ec2/ebs_snapshot_block_public_access_identity_gen_test.go @@ -277,3 +277,40 @@ func testAccEC2EBSEBSSnapshotBlockPublicAccess_Identity_ExistingResource(t *test }, }) } + +func testAccEC2EBSEBSSnapshotBlockPublicAccess_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + resourceName := "aws_ebs_snapshot_block_public_access.test" + + acctest.Test(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.EC2ServiceID), + CheckDestroy: testAccCheckEBSSnapshotBlockPublicAccessDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/EBSSnapshotBlockPublicAccess/basic_v5.100.0/"), + ConfigVariables: config.Variables{}, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/EBSSnapshotBlockPublicAccess/basic/"), + ConfigVariables: config.Variables{}, + }, + }, + }) +} diff --git a/internal/service/ec2/ec2_image_block_public_access_identity_gen_test.go b/internal/service/ec2/ec2_image_block_public_access_identity_gen_test.go index 8a29bf04faad..e6afad84cee3 100644 --- a/internal/service/ec2/ec2_image_block_public_access_identity_gen_test.go +++ b/internal/service/ec2/ec2_image_block_public_access_identity_gen_test.go @@ -121,3 +121,40 @@ func testAccEC2ImageBlockPublicAccess_Identity_ExistingResource(t *testing.T) { }, }) } + +func testAccEC2ImageBlockPublicAccess_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + resourceName := "aws_ec2_image_block_public_access.test" + + acctest.Test(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.EC2ServiceID), + CheckDestroy: acctest.CheckDestroyNoop, + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/ImageBlockPublicAccess/basic_v5.100.0/"), + ConfigVariables: config.Variables{}, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/ImageBlockPublicAccess/basic/"), + ConfigVariables: config.Variables{}, + }, + }, + }) +} diff --git a/internal/service/ec2/ec2_serial_console_access_identity_gen_test.go b/internal/service/ec2/ec2_serial_console_access_identity_gen_test.go index 7a1a86c5651e..514fe53a7e06 100644 --- a/internal/service/ec2/ec2_serial_console_access_identity_gen_test.go +++ b/internal/service/ec2/ec2_serial_console_access_identity_gen_test.go @@ -159,3 +159,40 @@ func testAccEC2SerialConsoleAccess_Identity_ExistingResource(t *testing.T) { }, }) } + +func testAccEC2SerialConsoleAccess_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + resourceName := "aws_ec2_serial_console_access.test" + + acctest.Test(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.EC2ServiceID), + CheckDestroy: testAccCheckSerialConsoleAccessDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/SerialConsoleAccess/basic_v5.100.0/"), + ConfigVariables: config.Variables{}, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/SerialConsoleAccess/basic/"), + ConfigVariables: config.Variables{}, + }, + }, + }) +} diff --git a/internal/service/ecs/capacity_provider_identity_gen_test.go b/internal/service/ecs/capacity_provider_identity_gen_test.go index 1ebb2d8f482f..4fb8e08511be 100644 --- a/internal/service/ecs/capacity_provider_identity_gen_test.go +++ b/internal/service/ecs/capacity_provider_identity_gen_test.go @@ -306,3 +306,52 @@ func TestAccECSCapacityProvider_Identity_ExistingResource(t *testing.T) { }, }) } + +func TestAccECSCapacityProvider_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v awstypes.CapacityProvider + resourceName := "aws_ecs_capacity_provider.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.ECSServiceID), + CheckDestroy: testAccCheckCapacityProviderDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/CapacityProvider/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckCapacityProviderExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/CapacityProvider/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckCapacityProviderExists(ctx, resourceName, &v), + ), + }, + }, + }) +} diff --git a/internal/service/elbv2/load_balancer_identity_gen_test.go b/internal/service/elbv2/load_balancer_identity_gen_test.go index 385f59de65e2..412f8a9e3f3b 100644 --- a/internal/service/elbv2/load_balancer_identity_gen_test.go +++ b/internal/service/elbv2/load_balancer_identity_gen_test.go @@ -304,3 +304,52 @@ func TestAccELBV2LoadBalancer_Identity_ExistingResource(t *testing.T) { }, }) } + +func TestAccELBV2LoadBalancer_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v awstypes.LoadBalancer + resourceName := "aws_lb.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.ELBV2ServiceID), + CheckDestroy: testAccCheckLoadBalancerDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/LoadBalancer/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckLoadBalancerExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/LoadBalancer/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckLoadBalancerExists(ctx, resourceName, &v), + ), + }, + }, + }) +} diff --git a/internal/service/glue/resource_policy_identity_gen_test.go b/internal/service/glue/resource_policy_identity_gen_test.go index 93fa0bb81dc4..0e1f8b0c11b3 100644 --- a/internal/service/glue/resource_policy_identity_gen_test.go +++ b/internal/service/glue/resource_policy_identity_gen_test.go @@ -277,3 +277,40 @@ func testAccGlueResourcePolicy_Identity_ExistingResource(t *testing.T) { }, }) } + +func testAccGlueResourcePolicy_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + resourceName := "aws_glue_resource_policy.test" + + acctest.Test(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.GlueServiceID), + CheckDestroy: testAccCheckResourcePolicyDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/ResourcePolicy/basic_v5.100.0/"), + ConfigVariables: config.Variables{}, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/ResourcePolicy/basic/"), + ConfigVariables: config.Variables{}, + }, + }, + }) +} diff --git a/internal/service/iam/role_identity_gen_test.go b/internal/service/iam/role_identity_gen_test.go index f8d07eeca240..b1807f6cd5a1 100644 --- a/internal/service/iam/role_identity_gen_test.go +++ b/internal/service/iam/role_identity_gen_test.go @@ -227,17 +227,9 @@ func TestAccIAMRole_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { ConfigVariables: config.Variables{ acctest.CtRName: config.StringVariable(rName), }, - ConfigPlanChecks: resource.ConfigPlanChecks{ - PreApply: []plancheck.PlanCheck{ - plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), - }, - PostApplyPostRefresh: []plancheck.PlanCheck{ - plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), - }, - }, - ConfigStateChecks: []statecheck.StateCheck{ - tfstatecheck.ExpectNoIdentity(resourceName), - }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckRoleExists(ctx, resourceName, &v), + ), }, }, }) diff --git a/internal/service/iot/event_configurations_identity_gen_test.go b/internal/service/iot/event_configurations_identity_gen_test.go index 1f031fb41d65..26315c1a9c29 100644 --- a/internal/service/iot/event_configurations_identity_gen_test.go +++ b/internal/service/iot/event_configurations_identity_gen_test.go @@ -277,3 +277,40 @@ func testAccIoTEventConfigurations_Identity_ExistingResource(t *testing.T) { }, }) } + +func testAccIoTEventConfigurations_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + resourceName := "aws_iot_event_configurations.test" + + acctest.Test(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.IoTServiceID), + CheckDestroy: acctest.CheckDestroyNoop, + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/EventConfigurations/basic_v5.100.0/"), + ConfigVariables: config.Variables{}, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/EventConfigurations/basic/"), + ConfigVariables: config.Variables{}, + }, + }, + }) +} diff --git a/internal/service/iot/indexing_configuration_identity_gen_test.go b/internal/service/iot/indexing_configuration_identity_gen_test.go index e337c245a4d2..3237a6f467c6 100644 --- a/internal/service/iot/indexing_configuration_identity_gen_test.go +++ b/internal/service/iot/indexing_configuration_identity_gen_test.go @@ -277,3 +277,40 @@ func testAccIoTIndexingConfiguration_Identity_ExistingResource(t *testing.T) { }, }) } + +func testAccIoTIndexingConfiguration_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + resourceName := "aws_iot_indexing_configuration.test" + + acctest.Test(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.IoTServiceID), + CheckDestroy: acctest.CheckDestroyNoop, + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/IndexingConfiguration/basic_v5.100.0/"), + ConfigVariables: config.Variables{}, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/IndexingConfiguration/basic/"), + ConfigVariables: config.Variables{}, + }, + }, + }) +} diff --git a/internal/service/iot/logging_options_identity_gen_test.go b/internal/service/iot/logging_options_identity_gen_test.go index 61f1e65c8880..002462a57bb7 100644 --- a/internal/service/iot/logging_options_identity_gen_test.go +++ b/internal/service/iot/logging_options_identity_gen_test.go @@ -173,3 +173,45 @@ func testAccIoTLoggingOptions_Identity_ExistingResource(t *testing.T) { }, }) } + +func testAccIoTLoggingOptions_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + resourceName := "aws_iot_logging_options.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.Test(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.IoTServiceID), + CheckDestroy: acctest.CheckDestroyNoop, + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/LoggingOptions/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/LoggingOptions/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + }, + }, + }) +} diff --git a/internal/service/macie2/classification_export_configuration_identity_gen_test.go b/internal/service/macie2/classification_export_configuration_identity_gen_test.go index 74ebdfa93b29..441942d976c6 100644 --- a/internal/service/macie2/classification_export_configuration_identity_gen_test.go +++ b/internal/service/macie2/classification_export_configuration_identity_gen_test.go @@ -289,3 +289,47 @@ func testAccMacie2ClassificationExportConfiguration_Identity_ExistingResource(t }, }) } + +func testAccMacie2ClassificationExportConfiguration_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v macie2.GetClassificationExportConfigurationOutput + resourceName := "aws_macie2_classification_export_configuration.test" + + acctest.Test(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.Macie2ServiceID), + CheckDestroy: testAccCheckClassificationExportConfigurationDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/ClassificationExportConfiguration/basic_v5.100.0/"), + ConfigVariables: config.Variables{}, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckClassificationExportConfigurationExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/ClassificationExportConfiguration/basic/"), + ConfigVariables: config.Variables{}, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckClassificationExportConfigurationExists(ctx, resourceName, &v), + ), + }, + }, + }) +} diff --git a/internal/service/rds/certificate_identity_gen_test.go b/internal/service/rds/certificate_identity_gen_test.go index f7fde18dd51b..799578da978d 100644 --- a/internal/service/rds/certificate_identity_gen_test.go +++ b/internal/service/rds/certificate_identity_gen_test.go @@ -289,3 +289,47 @@ func testAccRDSCertificate_Identity_ExistingResource(t *testing.T) { }, }) } + +func testAccRDSCertificate_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v awstypes.Certificate + resourceName := "aws_rds_certificate.test" + + acctest.Test(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.RDSServiceID), + CheckDestroy: testAccCheckCertificateDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/Certificate/basic_v5.100.0/"), + ConfigVariables: config.Variables{}, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckCertificateExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Certificate/basic/"), + ConfigVariables: config.Variables{}, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckCertificateExists(ctx, resourceName, &v), + ), + }, + }, + }) +} diff --git a/internal/service/s3/bucket_identity_gen_test.go b/internal/service/s3/bucket_identity_gen_test.go index 2fd91ed63401..a61e8a6adfd8 100644 --- a/internal/service/s3/bucket_identity_gen_test.go +++ b/internal/service/s3/bucket_identity_gen_test.go @@ -276,3 +276,51 @@ func TestAccS3Bucket_Identity_ExistingResource(t *testing.T) { }, }) } + +func TestAccS3Bucket_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + resourceName := "aws_s3_bucket.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.S3ServiceID), + CheckDestroy: testAccCheckBucketDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/Bucket/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckBucketExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Bucket/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckBucketExists(ctx, resourceName), + ), + }, + }, + }) +} diff --git a/internal/service/s3control/account_public_access_block_identity_gen_test.go b/internal/service/s3control/account_public_access_block_identity_gen_test.go index d0549e12b97d..568fd6b8b920 100644 --- a/internal/service/s3control/account_public_access_block_identity_gen_test.go +++ b/internal/service/s3control/account_public_access_block_identity_gen_test.go @@ -171,3 +171,47 @@ func testAccS3ControlAccountPublicAccessBlock_Identity_ExistingResource(t *testi }, }) } + +func testAccS3ControlAccountPublicAccessBlock_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v awstypes.PublicAccessBlockConfiguration + resourceName := "aws_s3_account_public_access_block.test" + + acctest.Test(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.S3ControlServiceID), + CheckDestroy: testAccCheckAccountPublicAccessBlockDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/AccountPublicAccessBlock/basic_v5.100.0/"), + ConfigVariables: config.Variables{}, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckAccountPublicAccessBlockExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/AccountPublicAccessBlock/basic/"), + ConfigVariables: config.Variables{}, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckAccountPublicAccessBlockExists(ctx, resourceName, &v), + ), + }, + }, + }) +} diff --git a/internal/service/sagemaker/servicecatalog_portfolio_status_identity_gen_test.go b/internal/service/sagemaker/servicecatalog_portfolio_status_identity_gen_test.go index 6513ab96cdc2..1c663754f0c2 100644 --- a/internal/service/sagemaker/servicecatalog_portfolio_status_identity_gen_test.go +++ b/internal/service/sagemaker/servicecatalog_portfolio_status_identity_gen_test.go @@ -289,3 +289,47 @@ func testAccSageMakerServicecatalogPortfolioStatus_Identity_ExistingResource(t * }, }) } + +func testAccSageMakerServicecatalogPortfolioStatus_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v sagemaker.GetSagemakerServicecatalogPortfolioStatusOutput + resourceName := "aws_sagemaker_servicecatalog_portfolio_status.test" + + acctest.Test(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.SageMakerServiceID), + CheckDestroy: acctest.CheckDestroyNoop, + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/ServicecatalogPortfolioStatus/basic_v5.100.0/"), + ConfigVariables: config.Variables{}, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckServicecatalogPortfolioStatusExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/ServicecatalogPortfolioStatus/basic/"), + ConfigVariables: config.Variables{}, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckServicecatalogPortfolioStatusExists(ctx, resourceName, &v), + ), + }, + }, + }) +} diff --git a/internal/service/ssoadmin/application_identity_gen_test.go b/internal/service/ssoadmin/application_identity_gen_test.go index d49f1db73966..f33b86f5212f 100644 --- a/internal/service/ssoadmin/application_identity_gen_test.go +++ b/internal/service/ssoadmin/application_identity_gen_test.go @@ -324,3 +324,55 @@ func TestAccSSOAdminApplication_Identity_ExistingResource(t *testing.T) { }, }) } + +func TestAccSSOAdminApplication_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v ssoadmin.DescribeApplicationOutput + resourceName := "aws_ssoadmin_application.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { + acctest.PreCheck(ctx, t) + acctest.PreCheckSSOAdminInstancesWithRegion(ctx, t, acctest.Region()) + }, + ErrorCheck: acctest.ErrorCheck(t, names.SSOAdminServiceID), + CheckDestroy: testAccCheckApplicationDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/Application/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckApplicationExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Application/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckApplicationExists(ctx, resourceName, &v), + ), + }, + }, + }) +} diff --git a/internal/service/xray/encryption_config_identity_gen_test.go b/internal/service/xray/encryption_config_identity_gen_test.go index 2c0b2ad6fd4c..941bdba0478c 100644 --- a/internal/service/xray/encryption_config_identity_gen_test.go +++ b/internal/service/xray/encryption_config_identity_gen_test.go @@ -289,3 +289,47 @@ func testAccXRayEncryptionConfig_Identity_ExistingResource(t *testing.T) { }, }) } + +func testAccXRayEncryptionConfig_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v awstypes.EncryptionConfig + resourceName := "aws_xray_encryption_config.test" + + acctest.Test(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.XRayServiceID), + CheckDestroy: acctest.CheckDestroyNoop, + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/EncryptionConfig/basic_v5.100.0/"), + ConfigVariables: config.Variables{}, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckEncryptionConfigExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/EncryptionConfig/basic/"), + ConfigVariables: config.Variables{}, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckEncryptionConfigExists(ctx, resourceName, &v), + ), + }, + }, + }) +} diff --git a/internal/service/xray/group_identity_gen_test.go b/internal/service/xray/group_identity_gen_test.go index 78e717e930c3..de5e9b1696ac 100644 --- a/internal/service/xray/group_identity_gen_test.go +++ b/internal/service/xray/group_identity_gen_test.go @@ -304,3 +304,52 @@ func TestAccXRayGroup_Identity_ExistingResource(t *testing.T) { }, }) } + +func TestAccXRayGroup_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v types.Group + resourceName := "aws_xray_group.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.XRayServiceID), + CheckDestroy: testAccCheckGroupDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/Group/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckGroupExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Group/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckGroupExists(ctx, resourceName, &v), + ), + }, + }, + }) +} From e71a229e1e1f0c17d3c26b4836fb052962a43b81 Mon Sep 17 00:00:00 2001 From: Graham Davison Date: Fri, 19 Sep 2025 22:31:57 -0700 Subject: [PATCH 46/81] `aws_rds_integration` tests: use `data.aws_rds_engine_version` --- internal/service/rds/integration_test.go | 26 ++++-- .../testdata/Integration/basic/main_gen.tf | 78 ++++++++++++++++-- .../Integration/basic_v5.100.0/main_gen.tf | 78 ++++++++++++++++-- .../Integration/basic_v6.0.0/main_gen.tf | 78 ++++++++++++++++-- .../Integration/region_override/main_gen.tf | 82 +++++++++++++++++-- .../rds/testdata/tmpl/integration_tags.gtpl | 80 ++++++++++++++++-- 6 files changed, 391 insertions(+), 31 deletions(-) diff --git a/internal/service/rds/integration_test.go b/internal/service/rds/integration_test.go index 86a027d8d4eb..b28788e02991 100644 --- a/internal/service/rds/integration_test.go +++ b/internal/service/rds/integration_test.go @@ -236,9 +236,15 @@ resource "aws_db_subnet_group" "test" { } } +data "aws_rds_engine_version" "test" { + engine = "aurora-mysql" + version = "8.0" + latest = true +} + resource "aws_rds_cluster_parameter_group" "test" { name = %[1]q - family = "aurora-mysql8.0" + family = data.aws_rds_engine_version.test.parameter_group_family dynamic "parameter" { for_each = local.cluster_parameters @@ -252,8 +258,8 @@ resource "aws_rds_cluster_parameter_group" "test" { resource "aws_rds_cluster" "test" { cluster_identifier = %[1]q - engine = "aurora-mysql" - engine_version = "8.0.mysql_aurora.3.05.2" + engine = data.aws_rds_engine_version.test.engine + engine_version = data.aws_rds_engine_version.test.version_actual database_name = "test" master_username = "tfacctest" master_password = "avoid-plaintext-passwords" @@ -266,12 +272,20 @@ resource "aws_rds_cluster" "test" { apply_immediately = true } +data "aws_rds_orderable_db_instance" "test" { + engine = data.aws_rds_engine_version.test.engine + engine_version = data.aws_rds_engine_version.test.version_actual + preferred_instance_classes = [%[2]s] + supports_clusters = true + supports_global_databases = true +} + resource "aws_rds_cluster_instance" "test" { identifier = %[1]q - cluster_identifier = aws_rds_cluster.test.id - instance_class = "db.r6g.large" + cluster_identifier = aws_rds_cluster.test.cluster_identifier engine = aws_rds_cluster.test.engine engine_version = aws_rds_cluster.test.engine_version + instance_class = data.aws_rds_orderable_db_instance.test.instance_class } resource "aws_redshift_cluster" "test" { @@ -289,7 +303,7 @@ resource "aws_redshift_cluster" "test" { publicly_accessible = false encrypted = true } -`, rName)) +`, rName, mainInstanceClasses)) } func testAccIntegrationConfig_base(rName string) string { diff --git a/internal/service/rds/testdata/Integration/basic/main_gen.tf b/internal/service/rds/testdata/Integration/basic/main_gen.tf index e051177b03bd..d4d55036cda7 100644 --- a/internal/service/rds/testdata/Integration/basic/main_gen.tf +++ b/internal/service/rds/testdata/Integration/basic/main_gen.tf @@ -154,9 +154,15 @@ resource "aws_db_subnet_group" "test" { subnet_ids = aws_subnet.test[*].id } +data "aws_rds_engine_version" "test" { + engine = "aurora-mysql" + version = "8.0" + latest = true +} + resource "aws_rds_cluster_parameter_group" "test" { name = var.rName - family = "aurora-mysql8.0" + family = data.aws_rds_engine_version.test.parameter_group_family dynamic "parameter" { for_each = local.cluster_parameters @@ -170,8 +176,8 @@ resource "aws_rds_cluster_parameter_group" "test" { resource "aws_rds_cluster" "test" { cluster_identifier = var.rName - engine = "aurora-mysql" - engine_version = "8.0.mysql_aurora.3.05.2" + engine = data.aws_rds_engine_version.test.engine + engine_version = data.aws_rds_engine_version.test.version_actual database_name = "test" master_username = "tfacctest" master_password = "avoid-plaintext-passwords" @@ -184,12 +190,20 @@ resource "aws_rds_cluster" "test" { apply_immediately = true } +data "aws_rds_orderable_db_instance" "test" { + engine = data.aws_rds_engine_version.test.engine + engine_version = data.aws_rds_engine_version.test.version_actual + preferred_instance_classes = local.mainInstanceClasses + supports_clusters = true + supports_global_databases = true +} + resource "aws_rds_cluster_instance" "test" { identifier = var.rName - cluster_identifier = aws_rds_cluster.test.id - instance_class = "db.r6g.large" + cluster_identifier = aws_rds_cluster.test.cluster_identifier engine = aws_rds_cluster.test.engine engine_version = aws_rds_cluster.test.engine_version + instance_class = data.aws_rds_orderable_db_instance.test.instance_class } resource "aws_redshift_cluster" "test" { @@ -237,6 +251,60 @@ locals { default_exclude_zone_ids = ["usw2-az4", "usgw1-az2"] } +locals { + mainInstanceClasses = [ + "db.t4g.micro", + "db.t3.micro", + "db.t4g.small", + "db.t3.small", + "db.t4g.medium", + "db.t3.medium", + "db.t4g.large", + "db.t3.large", + "db.m6g.large", + "db.m7g.large", + "db.m5.large", + "db.m6i.large", + "db.m6gd.large", + "db.m5d.large", + "db.r6g.large", + "db.m6id.large", + "db.r7g.large", + "db.r5.large", + "db.r6i.large", + "db.r6gd.large", + "db.m6in.large", + "db.t4g.xlarge", + "db.t3.xlarge", + "db.r5d.large", + "db.m6idn.large", + "db.r5b.large", + "db.r6id.large", + "db.m6g.xlarge", + "db.x2g.large", + "db.m7g.xlarge", + "db.m5.xlarge", + "db.m6i.xlarge", + "db.r6in.large", + "db.m6gd.xlarge", + "db.r6idn.large", + "db.m5d.xlarge", + "db.r6g.xlarge", + "db.m6id.xlarge", + "db.r7g.xlarge", + "db.r5.xlarge", + "db.r6i.xlarge", + "db.r6gd.xlarge", + "db.m6in.xlarge", + "db.t4g.2xlarge", + "db.t3.2xlarge", + "db.r5d.xlarge", + "db.m6idn.xlarge", + "db.r5b.xlarge", + "db.r6id.xlarge", + ] +} + variable "rName" { description = "Name for resource" type = string diff --git a/internal/service/rds/testdata/Integration/basic_v5.100.0/main_gen.tf b/internal/service/rds/testdata/Integration/basic_v5.100.0/main_gen.tf index d0dcc92d0583..fb46b3f427fa 100644 --- a/internal/service/rds/testdata/Integration/basic_v5.100.0/main_gen.tf +++ b/internal/service/rds/testdata/Integration/basic_v5.100.0/main_gen.tf @@ -154,9 +154,15 @@ resource "aws_db_subnet_group" "test" { subnet_ids = aws_subnet.test[*].id } +data "aws_rds_engine_version" "test" { + engine = "aurora-mysql" + version = "8.0" + latest = true +} + resource "aws_rds_cluster_parameter_group" "test" { name = var.rName - family = "aurora-mysql8.0" + family = data.aws_rds_engine_version.test.parameter_group_family dynamic "parameter" { for_each = local.cluster_parameters @@ -170,8 +176,8 @@ resource "aws_rds_cluster_parameter_group" "test" { resource "aws_rds_cluster" "test" { cluster_identifier = var.rName - engine = "aurora-mysql" - engine_version = "8.0.mysql_aurora.3.05.2" + engine = data.aws_rds_engine_version.test.engine + engine_version = data.aws_rds_engine_version.test.version_actual database_name = "test" master_username = "tfacctest" master_password = "avoid-plaintext-passwords" @@ -184,12 +190,20 @@ resource "aws_rds_cluster" "test" { apply_immediately = true } +data "aws_rds_orderable_db_instance" "test" { + engine = data.aws_rds_engine_version.test.engine + engine_version = data.aws_rds_engine_version.test.version_actual + preferred_instance_classes = local.mainInstanceClasses + supports_clusters = true + supports_global_databases = true +} + resource "aws_rds_cluster_instance" "test" { identifier = var.rName - cluster_identifier = aws_rds_cluster.test.id - instance_class = "db.r6g.large" + cluster_identifier = aws_rds_cluster.test.cluster_identifier engine = aws_rds_cluster.test.engine engine_version = aws_rds_cluster.test.engine_version + instance_class = data.aws_rds_orderable_db_instance.test.instance_class } resource "aws_redshift_cluster" "test" { @@ -237,6 +251,60 @@ locals { default_exclude_zone_ids = ["usw2-az4", "usgw1-az2"] } +locals { + mainInstanceClasses = [ + "db.t4g.micro", + "db.t3.micro", + "db.t4g.small", + "db.t3.small", + "db.t4g.medium", + "db.t3.medium", + "db.t4g.large", + "db.t3.large", + "db.m6g.large", + "db.m7g.large", + "db.m5.large", + "db.m6i.large", + "db.m6gd.large", + "db.m5d.large", + "db.r6g.large", + "db.m6id.large", + "db.r7g.large", + "db.r5.large", + "db.r6i.large", + "db.r6gd.large", + "db.m6in.large", + "db.t4g.xlarge", + "db.t3.xlarge", + "db.r5d.large", + "db.m6idn.large", + "db.r5b.large", + "db.r6id.large", + "db.m6g.xlarge", + "db.x2g.large", + "db.m7g.xlarge", + "db.m5.xlarge", + "db.m6i.xlarge", + "db.r6in.large", + "db.m6gd.xlarge", + "db.r6idn.large", + "db.m5d.xlarge", + "db.r6g.xlarge", + "db.m6id.xlarge", + "db.r7g.xlarge", + "db.r5.xlarge", + "db.r6i.xlarge", + "db.r6gd.xlarge", + "db.m6in.xlarge", + "db.t4g.2xlarge", + "db.t3.2xlarge", + "db.r5d.xlarge", + "db.m6idn.xlarge", + "db.r5b.xlarge", + "db.r6id.xlarge", + ] +} + variable "rName" { description = "Name for resource" type = string diff --git a/internal/service/rds/testdata/Integration/basic_v6.0.0/main_gen.tf b/internal/service/rds/testdata/Integration/basic_v6.0.0/main_gen.tf index 8d1c97052b77..e6e65a9413b9 100644 --- a/internal/service/rds/testdata/Integration/basic_v6.0.0/main_gen.tf +++ b/internal/service/rds/testdata/Integration/basic_v6.0.0/main_gen.tf @@ -154,9 +154,15 @@ resource "aws_db_subnet_group" "test" { subnet_ids = aws_subnet.test[*].id } +data "aws_rds_engine_version" "test" { + engine = "aurora-mysql" + version = "8.0" + latest = true +} + resource "aws_rds_cluster_parameter_group" "test" { name = var.rName - family = "aurora-mysql8.0" + family = data.aws_rds_engine_version.test.parameter_group_family dynamic "parameter" { for_each = local.cluster_parameters @@ -170,8 +176,8 @@ resource "aws_rds_cluster_parameter_group" "test" { resource "aws_rds_cluster" "test" { cluster_identifier = var.rName - engine = "aurora-mysql" - engine_version = "8.0.mysql_aurora.3.05.2" + engine = data.aws_rds_engine_version.test.engine + engine_version = data.aws_rds_engine_version.test.version_actual database_name = "test" master_username = "tfacctest" master_password = "avoid-plaintext-passwords" @@ -184,12 +190,20 @@ resource "aws_rds_cluster" "test" { apply_immediately = true } +data "aws_rds_orderable_db_instance" "test" { + engine = data.aws_rds_engine_version.test.engine + engine_version = data.aws_rds_engine_version.test.version_actual + preferred_instance_classes = local.mainInstanceClasses + supports_clusters = true + supports_global_databases = true +} + resource "aws_rds_cluster_instance" "test" { identifier = var.rName - cluster_identifier = aws_rds_cluster.test.id - instance_class = "db.r6g.large" + cluster_identifier = aws_rds_cluster.test.cluster_identifier engine = aws_rds_cluster.test.engine engine_version = aws_rds_cluster.test.engine_version + instance_class = data.aws_rds_orderable_db_instance.test.instance_class } resource "aws_redshift_cluster" "test" { @@ -237,6 +251,60 @@ locals { default_exclude_zone_ids = ["usw2-az4", "usgw1-az2"] } +locals { + mainInstanceClasses = [ + "db.t4g.micro", + "db.t3.micro", + "db.t4g.small", + "db.t3.small", + "db.t4g.medium", + "db.t3.medium", + "db.t4g.large", + "db.t3.large", + "db.m6g.large", + "db.m7g.large", + "db.m5.large", + "db.m6i.large", + "db.m6gd.large", + "db.m5d.large", + "db.r6g.large", + "db.m6id.large", + "db.r7g.large", + "db.r5.large", + "db.r6i.large", + "db.r6gd.large", + "db.m6in.large", + "db.t4g.xlarge", + "db.t3.xlarge", + "db.r5d.large", + "db.m6idn.large", + "db.r5b.large", + "db.r6id.large", + "db.m6g.xlarge", + "db.x2g.large", + "db.m7g.xlarge", + "db.m5.xlarge", + "db.m6i.xlarge", + "db.r6in.large", + "db.m6gd.xlarge", + "db.r6idn.large", + "db.m5d.xlarge", + "db.r6g.xlarge", + "db.m6id.xlarge", + "db.r7g.xlarge", + "db.r5.xlarge", + "db.r6i.xlarge", + "db.r6gd.xlarge", + "db.m6in.xlarge", + "db.t4g.2xlarge", + "db.t3.2xlarge", + "db.r5d.xlarge", + "db.m6idn.xlarge", + "db.r5b.xlarge", + "db.r6id.xlarge", + ] +} + variable "rName" { description = "Name for resource" type = string diff --git a/internal/service/rds/testdata/Integration/region_override/main_gen.tf b/internal/service/rds/testdata/Integration/region_override/main_gen.tf index cb2912402087..c384d181f27c 100644 --- a/internal/service/rds/testdata/Integration/region_override/main_gen.tf +++ b/internal/service/rds/testdata/Integration/region_override/main_gen.tf @@ -166,11 +166,19 @@ resource "aws_db_subnet_group" "test" { subnet_ids = aws_subnet.test[*].id } +data "aws_rds_engine_version" "test" { + region = var.region + + engine = "aurora-mysql" + version = "8.0" + latest = true +} + resource "aws_rds_cluster_parameter_group" "test" { region = var.region name = var.rName - family = "aurora-mysql8.0" + family = data.aws_rds_engine_version.test.parameter_group_family dynamic "parameter" { for_each = local.cluster_parameters @@ -186,8 +194,8 @@ resource "aws_rds_cluster" "test" { region = var.region cluster_identifier = var.rName - engine = "aurora-mysql" - engine_version = "8.0.mysql_aurora.3.05.2" + engine = data.aws_rds_engine_version.test.engine + engine_version = data.aws_rds_engine_version.test.version_actual database_name = "test" master_username = "tfacctest" master_password = "avoid-plaintext-passwords" @@ -200,14 +208,24 @@ resource "aws_rds_cluster" "test" { apply_immediately = true } +data "aws_rds_orderable_db_instance" "test" { + region = var.region + + engine = data.aws_rds_engine_version.test.engine + engine_version = data.aws_rds_engine_version.test.version_actual + preferred_instance_classes = local.mainInstanceClasses + supports_clusters = true + supports_global_databases = true +} + resource "aws_rds_cluster_instance" "test" { region = var.region identifier = var.rName - cluster_identifier = aws_rds_cluster.test.id - instance_class = "db.r6g.large" + cluster_identifier = aws_rds_cluster.test.cluster_identifier engine = aws_rds_cluster.test.engine engine_version = aws_rds_cluster.test.engine_version + instance_class = data.aws_rds_orderable_db_instance.test.instance_class } resource "aws_redshift_cluster" "test" { @@ -263,6 +281,60 @@ locals { default_exclude_zone_ids = ["usw2-az4", "usgw1-az2"] } +locals { + mainInstanceClasses = [ + "db.t4g.micro", + "db.t3.micro", + "db.t4g.small", + "db.t3.small", + "db.t4g.medium", + "db.t3.medium", + "db.t4g.large", + "db.t3.large", + "db.m6g.large", + "db.m7g.large", + "db.m5.large", + "db.m6i.large", + "db.m6gd.large", + "db.m5d.large", + "db.r6g.large", + "db.m6id.large", + "db.r7g.large", + "db.r5.large", + "db.r6i.large", + "db.r6gd.large", + "db.m6in.large", + "db.t4g.xlarge", + "db.t3.xlarge", + "db.r5d.large", + "db.m6idn.large", + "db.r5b.large", + "db.r6id.large", + "db.m6g.xlarge", + "db.x2g.large", + "db.m7g.xlarge", + "db.m5.xlarge", + "db.m6i.xlarge", + "db.r6in.large", + "db.m6gd.xlarge", + "db.r6idn.large", + "db.m5d.xlarge", + "db.r6g.xlarge", + "db.m6id.xlarge", + "db.r7g.xlarge", + "db.r5.xlarge", + "db.r6i.xlarge", + "db.r6gd.xlarge", + "db.m6in.xlarge", + "db.t4g.2xlarge", + "db.t3.2xlarge", + "db.r5d.xlarge", + "db.m6idn.xlarge", + "db.r5b.xlarge", + "db.r6id.xlarge", + ] +} + variable "rName" { description = "Name for resource" type = string diff --git a/internal/service/rds/testdata/tmpl/integration_tags.gtpl b/internal/service/rds/testdata/tmpl/integration_tags.gtpl index ca676a8c894c..af774d9657ed 100644 --- a/internal/service/rds/testdata/tmpl/integration_tags.gtpl +++ b/internal/service/rds/testdata/tmpl/integration_tags.gtpl @@ -158,10 +158,17 @@ resource "aws_db_subnet_group" "test" { subnet_ids = aws_subnet.test[*].id } +data "aws_rds_engine_version" "test" { +{{- template "region" }} + engine = "aurora-mysql" + version = "8.0" + latest = true +} + resource "aws_rds_cluster_parameter_group" "test" { {{- template "region" }} name = var.rName - family = "aurora-mysql8.0" + family = data.aws_rds_engine_version.test.parameter_group_family dynamic "parameter" { for_each = local.cluster_parameters @@ -176,8 +183,8 @@ resource "aws_rds_cluster_parameter_group" "test" { resource "aws_rds_cluster" "test" { {{- template "region" }} cluster_identifier = var.rName - engine = "aurora-mysql" - engine_version = "8.0.mysql_aurora.3.05.2" + engine = data.aws_rds_engine_version.test.engine + engine_version = data.aws_rds_engine_version.test.version_actual database_name = "test" master_username = "tfacctest" master_password = "avoid-plaintext-passwords" @@ -190,13 +197,22 @@ resource "aws_rds_cluster" "test" { apply_immediately = true } +data "aws_rds_orderable_db_instance" "test" { +{{- template "region" }} + engine = data.aws_rds_engine_version.test.engine + engine_version = data.aws_rds_engine_version.test.version_actual + preferred_instance_classes = local.mainInstanceClasses + supports_clusters = true + supports_global_databases = true +} + resource "aws_rds_cluster_instance" "test" { {{- template "region" }} identifier = var.rName - cluster_identifier = aws_rds_cluster.test.id - instance_class = "db.r6g.large" + cluster_identifier = aws_rds_cluster.test.cluster_identifier engine = aws_rds_cluster.test.engine engine_version = aws_rds_cluster.test.engine_version + instance_class = data.aws_rds_orderable_db_instance.test.instance_class } resource "aws_redshift_cluster" "test" { @@ -216,3 +232,57 @@ resource "aws_redshift_cluster" "test" { } {{ template "acctest.ConfigVPCWithSubnets" 3 }} + +locals { + mainInstanceClasses = [ + "db.t4g.micro", + "db.t3.micro", + "db.t4g.small", + "db.t3.small", + "db.t4g.medium", + "db.t3.medium", + "db.t4g.large", + "db.t3.large", + "db.m6g.large", + "db.m7g.large", + "db.m5.large", + "db.m6i.large", + "db.m6gd.large", + "db.m5d.large", + "db.r6g.large", + "db.m6id.large", + "db.r7g.large", + "db.r5.large", + "db.r6i.large", + "db.r6gd.large", + "db.m6in.large", + "db.t4g.xlarge", + "db.t3.xlarge", + "db.r5d.large", + "db.m6idn.large", + "db.r5b.large", + "db.r6id.large", + "db.m6g.xlarge", + "db.x2g.large", + "db.m7g.xlarge", + "db.m5.xlarge", + "db.m6i.xlarge", + "db.r6in.large", + "db.m6gd.xlarge", + "db.r6idn.large", + "db.m5d.xlarge", + "db.r6g.xlarge", + "db.m6id.xlarge", + "db.r7g.xlarge", + "db.r5.xlarge", + "db.r6i.xlarge", + "db.r6gd.xlarge", + "db.m6in.xlarge", + "db.t4g.2xlarge", + "db.t3.2xlarge", + "db.r5d.xlarge", + "db.m6idn.xlarge", + "db.r5b.xlarge", + "db.r6id.xlarge", + ] +} From 6622e17e4f44a1c05f71680e62c9da0fdd28fa97 Mon Sep 17 00:00:00 2001 From: Graham Davison Date: Sun, 21 Sep 2025 23:21:35 -0700 Subject: [PATCH 47/81] Generates `ExistingResource_NoRefresh_NoChange` tests for resource types added in v6.0 without identified errors --- .../identitytests/resource_test.go.gtpl | 49 +++++++++++++++++ ...me_access_association_identity_gen_test.go | 52 +++++++++++++++++++ .../appfabric/app_bundle_identity_gen_test.go | 44 ++++++++++++++++ .../account_registration_identity_gen_test.go | 37 +++++++++++++ .../batch/job_queue_identity_gen_test.go | 46 ++++++++++++++++ .../bedrock/custom_model_identity_gen_test.go | 46 ++++++++++++++++ ...logging_configuration_identity_gen_test.go | 45 ++++++++++++++++ .../key_value_store_identity_gen_test.go | 46 ++++++++++++++++ .../connection_identity_gen_test.go | 46 ++++++++++++++++ .../codeconnections/host_identity_gen_test.go | 46 ++++++++++++++++ .../event_sources_config_identity_gen_test.go | 44 ++++++++++++++++ .../service_integration_identity_gen_test.go | 43 +++++++++++++++ .../docdbelastic/cluster_identity_gen_test.go | 46 ++++++++++++++++ .../resource_policy_identity_gen_test.go | 46 ++++++++++++++++ ...ss_account_attachment_identity_gen_test.go | 46 ++++++++++++++++ .../lifecycle_policy_identity_gen_test.go | 45 ++++++++++++++++ .../resource_policy_identity_gen_test.go | 50 ++++++++++++++++++ ...pection_configuration_identity_gen_test.go | 52 +++++++++++++++++++ .../key_identity_gen_test.go | 41 +++++++++++++++ .../rds/integration_identity_gen_test.go | 46 ++++++++++++++++ .../index_identity_gen_test.go | 40 ++++++++++++++ .../view_identity_gen_test.go | 46 ++++++++++++++++ .../automation_rule_identity_gen_test.go | 46 ++++++++++++++++ ...er_automatic_response_identity_gen_test.go | 50 ++++++++++++++++++ .../ssmcontacts/rotation_identity_gen_test.go | 45 ++++++++++++++++ .../trusted_token_issuer_identity_gen_test.go | 49 +++++++++++++++++ 26 files changed, 1192 insertions(+) diff --git a/internal/generate/identitytests/resource_test.go.gtpl b/internal/generate/identitytests/resource_test.go.gtpl index 575f620d2970..49b940c708d5 100644 --- a/internal/generate/identitytests/resource_test.go.gtpl +++ b/internal/generate/identitytests/resource_test.go.gtpl @@ -1098,5 +1098,54 @@ func {{ template "testname" . }}_Identity_RegionOverride(t *testing.T) { }, }) } + + func {{ template "testname" . }}_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + {{- template "Init" . }} + + {{ template "Test" . }}(ctx, t, resource.TestCase{ + {{ template "TestCaseSetupNoProviders" . }} + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + {{ $step := 1 -}} + // Step {{ $step }}: Create pre-Identity + { + {{ if .UseAlternateAccount -}} + ProtoV5ProviderFactories: acctest.ProtoV5FactoriesNamed(ctx, t, providers, acctest.ProviderNameAlternate), + {{ end -}} + ConfigDirectory: config.StaticDirectory("testdata/{{ .Name }}/basic_v{{ .PreIdentityVersion }}/"), + ConfigVariables: config.Variables{ {{ if .Generator }} + acctest.CtRName: config.StringVariable(rName),{{ end }} + {{ template "AdditionalTfVars" . }} + }, + {{ if .HasExistsFunc -}} + Check: resource.ComposeAggregateTestCheckFunc( + {{- template "ExistsCheck" . -}} + ), + {{ end -}} + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step {{ ($step = inc $step) | print }}: Current version + { + {{ if .UseAlternateAccount -}} + ProtoV5ProviderFactories: acctest.ProtoV5FactoriesNamedAlternate(ctx, t, providers), + {{ else -}} + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + {{ end -}} + ConfigDirectory: config.StaticDirectory("testdata/{{ .Name }}/basic/"), + ConfigVariables: config.Variables{ {{ if .Generator }} + acctest.CtRName: config.StringVariable(rName),{{ end }} + {{ template "AdditionalTfVars" . }} + }, + }, + }, + }) + } {{ end }} {{ end }} diff --git a/internal/service/apigateway/domain_name_access_association_identity_gen_test.go b/internal/service/apigateway/domain_name_access_association_identity_gen_test.go index 8804e3cedde7..4349a794618c 100644 --- a/internal/service/apigateway/domain_name_access_association_identity_gen_test.go +++ b/internal/service/apigateway/domain_name_access_association_identity_gen_test.go @@ -336,3 +336,55 @@ func TestAccAPIGatewayDomainNameAccessAssociation_Identity_ExistingResource(t *t }, }) } + +func TestAccAPIGatewayDomainNameAccessAssociation_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v awstypes.DomainNameAccessAssociation + resourceName := "aws_api_gateway_domain_name_access_association.test" + rName := acctest.RandomSubdomain() + privateKeyPEM := acctest.TLSRSAPrivateKeyPEM(t, 2048) + certificatePEM := acctest.TLSRSAX509SelfSignedCertificatePEM(t, privateKeyPEM, rName) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.APIGatewayServiceID), + CheckDestroy: testAccCheckDomainNameAccessAssociationDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/DomainNameAccessAssociation/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtCertificatePEM: config.StringVariable(certificatePEM), + acctest.CtPrivateKeyPEM: config.StringVariable(privateKeyPEM), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckDomainNameAccessAssociationExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/DomainNameAccessAssociation/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtCertificatePEM: config.StringVariable(certificatePEM), + acctest.CtPrivateKeyPEM: config.StringVariable(privateKeyPEM), + }, + }, + }, + }) +} diff --git a/internal/service/appfabric/app_bundle_identity_gen_test.go b/internal/service/appfabric/app_bundle_identity_gen_test.go index 98017b970871..3dc1d6d717e7 100644 --- a/internal/service/appfabric/app_bundle_identity_gen_test.go +++ b/internal/service/appfabric/app_bundle_identity_gen_test.go @@ -303,3 +303,47 @@ func testAccAppFabricAppBundle_Identity_ExistingResource(t *testing.T) { }, }) } + +func testAccAppFabricAppBundle_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v awstypes.AppBundle + resourceName := "aws_appfabric_app_bundle.test" + + acctest.Test(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { + acctest.PreCheck(ctx, t) + acctest.PreCheckRegion(t, endpoints.UsEast1RegionID, endpoints.ApNortheast1RegionID, endpoints.EuWest1RegionID) + }, + ErrorCheck: acctest.ErrorCheck(t, names.AppFabricServiceID), + CheckDestroy: testAccCheckAppBundleDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/AppBundle/basic_v5.100.0/"), + ConfigVariables: config.Variables{}, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckAppBundleExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/AppBundle/basic/"), + ConfigVariables: config.Variables{}, + }, + }, + }) +} diff --git a/internal/service/auditmanager/account_registration_identity_gen_test.go b/internal/service/auditmanager/account_registration_identity_gen_test.go index fa65c07d7797..563c74662f59 100644 --- a/internal/service/auditmanager/account_registration_identity_gen_test.go +++ b/internal/service/auditmanager/account_registration_identity_gen_test.go @@ -277,3 +277,40 @@ func testAccAuditManagerAccountRegistration_Identity_ExistingResource(t *testing }, }) } + +func testAccAuditManagerAccountRegistration_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + resourceName := "aws_auditmanager_account_registration.test" + + acctest.Test(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.AuditManagerServiceID), + CheckDestroy: acctest.CheckDestroyNoop, + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/AccountRegistration/basic_v5.100.0/"), + ConfigVariables: config.Variables{}, + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/AccountRegistration/basic/"), + ConfigVariables: config.Variables{}, + }, + }, + }) +} diff --git a/internal/service/batch/job_queue_identity_gen_test.go b/internal/service/batch/job_queue_identity_gen_test.go index 8a242d43dace..2b0afd0391ec 100644 --- a/internal/service/batch/job_queue_identity_gen_test.go +++ b/internal/service/batch/job_queue_identity_gen_test.go @@ -307,3 +307,49 @@ func TestAccBatchJobQueue_Identity_ExistingResource(t *testing.T) { }, }) } + +func TestAccBatchJobQueue_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v types.JobQueueDetail + resourceName := "aws_batch_job_queue.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.BatchServiceID), + CheckDestroy: testAccCheckJobQueueDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/JobQueue/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckJobQueueExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/JobQueue/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + }, + }, + }) +} diff --git a/internal/service/bedrock/custom_model_identity_gen_test.go b/internal/service/bedrock/custom_model_identity_gen_test.go index 8cd955815ddc..442a2d09be56 100644 --- a/internal/service/bedrock/custom_model_identity_gen_test.go +++ b/internal/service/bedrock/custom_model_identity_gen_test.go @@ -336,3 +336,49 @@ func testAccBedrockCustomModel_Identity_ExistingResource(t *testing.T) { }, }) } + +func testAccBedrockCustomModel_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v bedrock.GetModelCustomizationJobOutput + resourceName := "aws_bedrock_custom_model.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.Test(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.BedrockServiceID), + CheckDestroy: testAccCheckCustomModelDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckCustomModelExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + }, + }, + }) +} diff --git a/internal/service/bedrock/model_invocation_logging_configuration_identity_gen_test.go b/internal/service/bedrock/model_invocation_logging_configuration_identity_gen_test.go index f8f2d99041a7..75a0337a352c 100644 --- a/internal/service/bedrock/model_invocation_logging_configuration_identity_gen_test.go +++ b/internal/service/bedrock/model_invocation_logging_configuration_identity_gen_test.go @@ -310,3 +310,48 @@ func testAccBedrockModelInvocationLoggingConfiguration_Identity_ExistingResource }, }) } + +func testAccBedrockModelInvocationLoggingConfiguration_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + resourceName := "aws_bedrock_model_invocation_logging_configuration.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.Test(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.BedrockServiceID), + CheckDestroy: testAccCheckModelInvocationLoggingConfigurationDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/ModelInvocationLoggingConfiguration/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckModelInvocationLoggingConfigurationExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/ModelInvocationLoggingConfiguration/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + }, + }, + }) +} diff --git a/internal/service/cloudfront/key_value_store_identity_gen_test.go b/internal/service/cloudfront/key_value_store_identity_gen_test.go index b6e7cc8a5889..0c4ab6541138 100644 --- a/internal/service/cloudfront/key_value_store_identity_gen_test.go +++ b/internal/service/cloudfront/key_value_store_identity_gen_test.go @@ -186,3 +186,49 @@ func TestAccCloudFrontKeyValueStore_Identity_ExistingResource(t *testing.T) { }, }) } + +func TestAccCloudFrontKeyValueStore_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v awstypes.KeyValueStore + resourceName := "aws_cloudfront_key_value_store.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.CloudFrontServiceID), + CheckDestroy: testAccCheckKeyValueStoreDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/KeyValueStore/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckKeyValueStoreExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/KeyValueStore/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + }, + }, + }) +} diff --git a/internal/service/codeconnections/connection_identity_gen_test.go b/internal/service/codeconnections/connection_identity_gen_test.go index 229def0611ba..1d58c05845b9 100644 --- a/internal/service/codeconnections/connection_identity_gen_test.go +++ b/internal/service/codeconnections/connection_identity_gen_test.go @@ -305,3 +305,49 @@ func TestAccCodeConnectionsConnection_Identity_ExistingResource(t *testing.T) { }, }) } + +func TestAccCodeConnectionsConnection_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v types.Connection + resourceName := "aws_codeconnections_connection.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.CodeConnectionsServiceID), + CheckDestroy: testAccCheckConnectionDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/Connection/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckConnectionExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Connection/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + }, + }, + }) +} diff --git a/internal/service/codeconnections/host_identity_gen_test.go b/internal/service/codeconnections/host_identity_gen_test.go index 9dcbb9a1a72b..77b6ef662d5c 100644 --- a/internal/service/codeconnections/host_identity_gen_test.go +++ b/internal/service/codeconnections/host_identity_gen_test.go @@ -305,3 +305,49 @@ func TestAccCodeConnectionsHost_Identity_ExistingResource(t *testing.T) { }, }) } + +func TestAccCodeConnectionsHost_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v types.Host + resourceName := "aws_codeconnections_host.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.CodeConnectionsServiceID), + CheckDestroy: testAccCheckHostDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/Host/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckHostExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Host/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + }, + }, + }) +} diff --git a/internal/service/devopsguru/event_sources_config_identity_gen_test.go b/internal/service/devopsguru/event_sources_config_identity_gen_test.go index c758adf8b50c..a2326f37d435 100644 --- a/internal/service/devopsguru/event_sources_config_identity_gen_test.go +++ b/internal/service/devopsguru/event_sources_config_identity_gen_test.go @@ -298,3 +298,47 @@ func testAccDevOpsGuruEventSourcesConfig_Identity_ExistingResource(t *testing.T) }, }) } + +func testAccDevOpsGuruEventSourcesConfig_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v devopsguru.DescribeEventSourcesConfigOutput + resourceName := "aws_devopsguru_event_sources_config.test" + + acctest.Test(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { + acctest.PreCheck(ctx, t) + testAccPreCheck(ctx, t) + }, + ErrorCheck: acctest.ErrorCheck(t, names.DevOpsGuruServiceID), + CheckDestroy: testAccCheckEventSourcesConfigDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/EventSourcesConfig/basic_v5.100.0/"), + ConfigVariables: config.Variables{}, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckEventSourcesConfigExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/EventSourcesConfig/basic/"), + ConfigVariables: config.Variables{}, + }, + }, + }) +} diff --git a/internal/service/devopsguru/service_integration_identity_gen_test.go b/internal/service/devopsguru/service_integration_identity_gen_test.go index 141d012fd4a6..c1bb885a086b 100644 --- a/internal/service/devopsguru/service_integration_identity_gen_test.go +++ b/internal/service/devopsguru/service_integration_identity_gen_test.go @@ -295,3 +295,46 @@ func testAccDevOpsGuruServiceIntegration_Identity_ExistingResource(t *testing.T) }, }) } + +func testAccDevOpsGuruServiceIntegration_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + resourceName := "aws_devopsguru_service_integration.test" + + acctest.Test(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { + acctest.PreCheck(ctx, t) + testAccPreCheck(ctx, t) + }, + ErrorCheck: acctest.ErrorCheck(t, names.DevOpsGuruServiceID), + CheckDestroy: testAccCheckServiceIntegrationDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/ServiceIntegration/basic_v5.100.0/"), + ConfigVariables: config.Variables{}, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckServiceIntegrationExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/ServiceIntegration/basic/"), + ConfigVariables: config.Variables{}, + }, + }, + }) +} diff --git a/internal/service/docdbelastic/cluster_identity_gen_test.go b/internal/service/docdbelastic/cluster_identity_gen_test.go index 79ce28f1d9c9..484ef80b4523 100644 --- a/internal/service/docdbelastic/cluster_identity_gen_test.go +++ b/internal/service/docdbelastic/cluster_identity_gen_test.go @@ -324,3 +324,49 @@ func TestAccDocDBElasticCluster_Identity_ExistingResource(t *testing.T) { }, }) } + +func TestAccDocDBElasticCluster_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v awstypes.Cluster + resourceName := "aws_docdbelastic_cluster.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.DocDBElasticServiceID), + CheckDestroy: testAccCheckClusterDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/Cluster/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckClusterExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Cluster/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + }, + }, + }) +} diff --git a/internal/service/dynamodb/resource_policy_identity_gen_test.go b/internal/service/dynamodb/resource_policy_identity_gen_test.go index 33ccb055fb80..c4de07b480ca 100644 --- a/internal/service/dynamodb/resource_policy_identity_gen_test.go +++ b/internal/service/dynamodb/resource_policy_identity_gen_test.go @@ -324,3 +324,49 @@ func TestAccDynamoDBResourcePolicy_Identity_ExistingResource(t *testing.T) { }, }) } + +func TestAccDynamoDBResourcePolicy_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v dynamodb.GetResourcePolicyOutput + resourceName := "aws_dynamodb_resource_policy.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.DynamoDBServiceID), + CheckDestroy: testAccCheckResourcePolicyDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/ResourcePolicy/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckResourcePolicyExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/ResourcePolicy/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + }, + }, + }) +} diff --git a/internal/service/globalaccelerator/cross_account_attachment_identity_gen_test.go b/internal/service/globalaccelerator/cross_account_attachment_identity_gen_test.go index 917b61339872..88c3c0b50a90 100644 --- a/internal/service/globalaccelerator/cross_account_attachment_identity_gen_test.go +++ b/internal/service/globalaccelerator/cross_account_attachment_identity_gen_test.go @@ -182,3 +182,49 @@ func TestAccGlobalAcceleratorCrossAccountAttachment_Identity_ExistingResource(t }, }) } + +func TestAccGlobalAcceleratorCrossAccountAttachment_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v awstypes.Attachment + resourceName := "aws_globalaccelerator_cross_account_attachment.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.GlobalAcceleratorServiceID), + CheckDestroy: testAccCheckCrossAccountAttachmentDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/CrossAccountAttachment/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckCrossAccountAttachmentExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/CrossAccountAttachment/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + }, + }, + }) +} diff --git a/internal/service/imagebuilder/lifecycle_policy_identity_gen_test.go b/internal/service/imagebuilder/lifecycle_policy_identity_gen_test.go index 33d2f716901b..01e9cbc340ad 100644 --- a/internal/service/imagebuilder/lifecycle_policy_identity_gen_test.go +++ b/internal/service/imagebuilder/lifecycle_policy_identity_gen_test.go @@ -304,3 +304,48 @@ func TestAccImageBuilderLifecyclePolicy_Identity_ExistingResource(t *testing.T) }, }) } + +func TestAccImageBuilderLifecyclePolicy_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + resourceName := "aws_imagebuilder_lifecycle_policy.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.ImageBuilderServiceID), + CheckDestroy: testAccCheckLifecyclePolicyDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/LifecyclePolicy/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckLifecyclePolicyExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/LifecyclePolicy/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + }, + }, + }) +} diff --git a/internal/service/kinesis/resource_policy_identity_gen_test.go b/internal/service/kinesis/resource_policy_identity_gen_test.go index 7aaf58b42f4b..8cf32bb29687 100644 --- a/internal/service/kinesis/resource_policy_identity_gen_test.go +++ b/internal/service/kinesis/resource_policy_identity_gen_test.go @@ -344,3 +344,53 @@ func TestAccKinesisResourcePolicy_Identity_ExistingResource(t *testing.T) { }, }) } + +func TestAccKinesisResourcePolicy_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + resourceName := "aws_kinesis_resource_policy.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + providers := make(map[string]*schema.Provider) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { + acctest.PreCheck(ctx, t) + acctest.PreCheckAlternateAccount(t) + }, + ErrorCheck: acctest.ErrorCheck(t, names.KinesisServiceID), + CheckDestroy: testAccCheckResourcePolicyDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ProtoV5ProviderFactories: acctest.ProtoV5FactoriesNamed(ctx, t, providers, acctest.ProviderNameAlternate), + ConfigDirectory: config.StaticDirectory("testdata/ResourcePolicy/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckResourcePolicyExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5FactoriesNamedAlternate(ctx, t, providers), + ConfigDirectory: config.StaticDirectory("testdata/ResourcePolicy/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + }, + }, + }) +} diff --git a/internal/service/networkfirewall/tls_inspection_configuration_identity_gen_test.go b/internal/service/networkfirewall/tls_inspection_configuration_identity_gen_test.go index 5b778d9b05a6..b80eebf41d21 100644 --- a/internal/service/networkfirewall/tls_inspection_configuration_identity_gen_test.go +++ b/internal/service/networkfirewall/tls_inspection_configuration_identity_gen_test.go @@ -348,3 +348,55 @@ func TestAccNetworkFirewallTLSInspectionConfiguration_Identity_ExistingResource( }, }) } + +func TestAccNetworkFirewallTLSInspectionConfiguration_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v networkfirewall.DescribeTLSInspectionConfigurationOutput + resourceName := "aws_networkfirewall_tls_inspection_configuration.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + common_name := acctest.RandomDomain() + certificate_domain := common_name.RandomSubdomain() + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.NetworkFirewallServiceID), + CheckDestroy: testAccCheckTLSInspectionConfigurationDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/TLSInspectionConfiguration/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + "certificate_domain": config.StringVariable(certificate_domain.String()), + "common_name": config.StringVariable(common_name.String()), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckTLSInspectionConfigurationExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/TLSInspectionConfiguration/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + "certificate_domain": config.StringVariable(certificate_domain.String()), + "common_name": config.StringVariable(common_name.String()), + }, + }, + }, + }) +} diff --git a/internal/service/paymentcryptography/key_identity_gen_test.go b/internal/service/paymentcryptography/key_identity_gen_test.go index ff5ee6c31b3c..b248eb3ec749 100644 --- a/internal/service/paymentcryptography/key_identity_gen_test.go +++ b/internal/service/paymentcryptography/key_identity_gen_test.go @@ -300,3 +300,44 @@ func TestAccPaymentCryptographyKey_Identity_ExistingResource(t *testing.T) { }, }) } + +func TestAccPaymentCryptographyKey_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v paymentcryptography.GetKeyOutput + resourceName := "aws_paymentcryptography_key.test" + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.PaymentCryptographyServiceID), + CheckDestroy: testAccCheckKeyDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/Key/basic_v5.100.0/"), + ConfigVariables: config.Variables{}, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckKeyExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Key/basic/"), + ConfigVariables: config.Variables{}, + }, + }, + }) +} diff --git a/internal/service/rds/integration_identity_gen_test.go b/internal/service/rds/integration_identity_gen_test.go index 46abfc8d024f..c174be613567 100644 --- a/internal/service/rds/integration_identity_gen_test.go +++ b/internal/service/rds/integration_identity_gen_test.go @@ -305,3 +305,49 @@ func TestAccRDSIntegration_Identity_ExistingResource(t *testing.T) { }, }) } + +func TestAccRDSIntegration_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v awstypes.Integration + resourceName := "aws_rds_integration.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.RDSServiceID), + CheckDestroy: testAccCheckIntegrationDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/Integration/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckIntegrationExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Integration/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + }, + }, + }) +} diff --git a/internal/service/resourceexplorer2/index_identity_gen_test.go b/internal/service/resourceexplorer2/index_identity_gen_test.go index 1b3d84484779..90b507d641d4 100644 --- a/internal/service/resourceexplorer2/index_identity_gen_test.go +++ b/internal/service/resourceexplorer2/index_identity_gen_test.go @@ -290,3 +290,43 @@ func testAccResourceExplorer2Index_Identity_ExistingResource(t *testing.T) { }, }) } + +func testAccResourceExplorer2Index_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + resourceName := "aws_resourceexplorer2_index.test" + + acctest.Test(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.ResourceExplorer2ServiceID), + CheckDestroy: testAccCheckIndexDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/Index/basic_v5.100.0/"), + ConfigVariables: config.Variables{}, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckIndexExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Index/basic/"), + ConfigVariables: config.Variables{}, + }, + }, + }) +} diff --git a/internal/service/resourceexplorer2/view_identity_gen_test.go b/internal/service/resourceexplorer2/view_identity_gen_test.go index d9ac41340d6c..2ba6c9be33e4 100644 --- a/internal/service/resourceexplorer2/view_identity_gen_test.go +++ b/internal/service/resourceexplorer2/view_identity_gen_test.go @@ -317,3 +317,49 @@ func testAccResourceExplorer2View_Identity_ExistingResource(t *testing.T) { }, }) } + +func testAccResourceExplorer2View_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v resourceexplorer2.GetViewOutput + resourceName := "aws_resourceexplorer2_view.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.Test(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.ResourceExplorer2ServiceID), + CheckDestroy: testAccCheckViewDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/View/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckViewExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/View/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + }, + }, + }) +} diff --git a/internal/service/securityhub/automation_rule_identity_gen_test.go b/internal/service/securityhub/automation_rule_identity_gen_test.go index 97bd71520038..ef802b56083d 100644 --- a/internal/service/securityhub/automation_rule_identity_gen_test.go +++ b/internal/service/securityhub/automation_rule_identity_gen_test.go @@ -317,3 +317,49 @@ func testAccSecurityHubAutomationRule_Identity_ExistingResource(t *testing.T) { }, }) } + +func testAccSecurityHubAutomationRule_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v awstypes.AutomationRulesConfig + resourceName := "aws_securityhub_automation_rule.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.Test(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.SecurityHubServiceID), + CheckDestroy: testAccCheckAutomationRuleDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/AutomationRule/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckAutomationRuleExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/AutomationRule/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + }, + }, + }) +} diff --git a/internal/service/shield/application_layer_automatic_response_identity_gen_test.go b/internal/service/shield/application_layer_automatic_response_identity_gen_test.go index 83276613c434..2ae179e7bef4 100644 --- a/internal/service/shield/application_layer_automatic_response_identity_gen_test.go +++ b/internal/service/shield/application_layer_automatic_response_identity_gen_test.go @@ -190,3 +190,53 @@ func TestAccShieldApplicationLayerAutomaticResponse_Identity_ExistingResource(t }, }) } + +func TestAccShieldApplicationLayerAutomaticResponse_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v awstypes.ApplicationLayerAutomaticResponseConfiguration + resourceName := "aws_shield_application_layer_automatic_response.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.ParallelTest(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { + acctest.PreCheck(ctx, t) + acctest.PreCheckWAFV2CloudFrontScope(ctx, t) + testAccPreCheck(ctx, t) + }, + ErrorCheck: acctest.ErrorCheck(t, names.ShieldServiceID), + CheckDestroy: testAccCheckApplicationLayerAutomaticResponseDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/ApplicationLayerAutomaticResponse/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckApplicationLayerAutomaticResponseExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/ApplicationLayerAutomaticResponse/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + }, + }, + }) +} diff --git a/internal/service/ssmcontacts/rotation_identity_gen_test.go b/internal/service/ssmcontacts/rotation_identity_gen_test.go index d7e96d1020dd..0bddebfd1696 100644 --- a/internal/service/ssmcontacts/rotation_identity_gen_test.go +++ b/internal/service/ssmcontacts/rotation_identity_gen_test.go @@ -193,3 +193,48 @@ func testAccSSMContactsRotation_Identity_ExistingResource(t *testing.T) { }, }) } + +func testAccSSMContactsRotation_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + resourceName := "aws_ssmcontacts_rotation.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.Test(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.SSMContactsServiceID), + CheckDestroy: testAccCheckRotationDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/Rotation/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckRotationExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Rotation/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + }, + }, + }) +} diff --git a/internal/service/ssoadmin/trusted_token_issuer_identity_gen_test.go b/internal/service/ssoadmin/trusted_token_issuer_identity_gen_test.go index 156a5a82a6f2..25a987ff6427 100644 --- a/internal/service/ssoadmin/trusted_token_issuer_identity_gen_test.go +++ b/internal/service/ssoadmin/trusted_token_issuer_identity_gen_test.go @@ -330,3 +330,52 @@ func testAccSSOAdminTrustedTokenIssuer_Identity_ExistingResource(t *testing.T) { }, }) } + +func testAccSSOAdminTrustedTokenIssuer_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { + ctx := acctest.Context(t) + + var v ssoadmin.DescribeTrustedTokenIssuerOutput + resourceName := "aws_ssoadmin_trusted_token_issuer.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + acctest.Test(ctx, t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { + acctest.PreCheck(ctx, t) + acctest.PreCheckSSOAdminInstancesWithRegion(ctx, t, acctest.Region()) + }, + ErrorCheck: acctest.ErrorCheck(t, names.SSOAdminServiceID), + CheckDestroy: testAccCheckTrustedTokenIssuerDestroy(ctx), + AdditionalCLIOptions: &resource.AdditionalCLIOptions{ + Plan: resource.PlanOptions{ + NoRefresh: true, + }, + }, + Steps: []resource.TestStep{ + // Step 1: Create pre-Identity + { + ConfigDirectory: config.StaticDirectory("testdata/TrustedTokenIssuer/basic_v5.100.0/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckTrustedTokenIssuerExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + tfstatecheck.ExpectNoIdentity(resourceName), + }, + }, + + // Step 2: Current version + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/TrustedTokenIssuer/basic/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + }, + }, + }, + }) +} From d998bc2be91c7e5b43285d94488ef2f44aef3e1d Mon Sep 17 00:00:00 2001 From: Graham Davison Date: Sun, 21 Sep 2025 23:28:32 -0700 Subject: [PATCH 48/81] Removes duplicate test --- internal/service/s3/object_test.go | 53 ------------------------------ 1 file changed, 53 deletions(-) diff --git a/internal/service/s3/object_test.go b/internal/service/s3/object_test.go index 62d08f2c8b2d..be1dab8b32c1 100644 --- a/internal/service/s3/object_test.go +++ b/internal/service/s3/object_test.go @@ -2181,59 +2181,6 @@ func TestAccS3Object_Identity_ExistingResource_NoRefresh_WithChange(t *testing.T }) } -func TestAccS3Object_Identity_ExistingResource_NoRefresh_NoChange(t *testing.T) { - ctx := acctest.Context(t) - var conf s3.GetObjectOutput - rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) - resourceName := "aws_s3_object.object" - - resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, names.IAMServiceID), - CheckDestroy: testAccCheckObjectDestroy(ctx), - AdditionalCLIOptions: &resource.AdditionalCLIOptions{ - Plan: resource.PlanOptions{ - NoRefresh: true, - }, - }, - Steps: []resource.TestStep{ - { - ExternalProviders: map[string]resource.ExternalProvider{ - "aws": { - Source: "hashicorp/aws", - VersionConstraint: "6.0.0", - }, - }, - Config: testAccObjectConfig_basic(rName), - Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckObjectExists(ctx, resourceName, &conf), - ), - ConfigStateChecks: []statecheck.StateCheck{ - tfstatecheck.ExpectNoIdentity(resourceName), - }, - }, - { - ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, - Config: testAccObjectConfig_basic(rName), - Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckObjectExists(ctx, resourceName, &conf), - ), - ConfigPlanChecks: resource.ConfigPlanChecks{ - PreApply: []plancheck.PlanCheck{ - plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), - }, - PostApplyPostRefresh: []plancheck.PlanCheck{ - plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), - }, - }, - ConfigStateChecks: []statecheck.StateCheck{ - tfstatecheck.ExpectNoIdentity(resourceName), - }, - }, - }, - }) -} - func testAccCheckObjectVersionIDDiffers(first, second *s3.GetObjectOutput) resource.TestCheckFunc { return func(s *terraform.State) error { if aws.ToString(first.VersionId) == aws.ToString(second.VersionId) { From 1ac2f7112dc05ec80a94647c9994f62831d4329b Mon Sep 17 00:00:00 2001 From: Jared Baker Date: Mon, 22 Sep 2025 10:29:28 -0400 Subject: [PATCH 49/81] chore: changelog --- .changelog/44375.txt | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 .changelog/44375.txt diff --git a/.changelog/44375.txt b/.changelog/44375.txt new file mode 100644 index 000000000000..416d45ce6ae7 --- /dev/null +++ b/.changelog/44375.txt @@ -0,0 +1,10 @@ +```release-note:note +provider: This release contains both internal provider fixes and a Terraform Plugin SDK V2 update related to a [regression](https://github.com/hashicorp/terraform-provider-aws/issues/44366) which may impact resources that support resource identity +``` + +```release-note:bug +provider: Fix `Missing Resource Identity After Update` errors for non-refreshed and failed updates +``` +```release-note:bug +provider: Fix `Unexpected Identity Change` errors when fully-null identity values in state are updated to valid values +``` From d9d74f3f1de5c765af9bdf729018f1d28be85ba5 Mon Sep 17 00:00:00 2001 From: Jared Baker Date: Mon, 22 Sep 2025 10:45:57 -0400 Subject: [PATCH 50/81] internal/provider/sdkv2(test): rm redundant tests, tidy up ```console % go test ./internal/provider/sdkv2/... ok github.com/hashicorp/terraform-provider-aws/internal/provider/sdkv2 9.018s ? github.com/hashicorp/terraform-provider-aws/internal/provider/sdkv2/identity [no test files] ok github.com/hashicorp/terraform-provider-aws/internal/provider/sdkv2/importer 0.714s ? github.com/hashicorp/terraform-provider-aws/internal/provider/sdkv2/internal/attribute [no test files] ``` --- .../sdkv2/identity_interceptor_test.go | 230 +----------------- 1 file changed, 4 insertions(+), 226 deletions(-) diff --git a/internal/provider/sdkv2/identity_interceptor_test.go b/internal/provider/sdkv2/identity_interceptor_test.go index ff63d7e5b138..eba5ca6a9651 100644 --- a/internal/provider/sdkv2/identity_interceptor_test.go +++ b/internal/provider/sdkv2/identity_interceptor_test.go @@ -194,7 +194,7 @@ func TestIdentityInterceptor_Update(t *testing.T) { "not mutable - fresh resource": { attrName: "name", identitySpec: regionalSingleParameterizedIdentitySpec("name"), - ExpectIdentity: true, // NOW EXPECTS IDENTITY because all attributes are null (bug scenario) + ExpectIdentity: true, Description: "Immutable identity with all null attributes should get populated (bug fix scenario)", }, "v6.0 SDK fix": { @@ -202,7 +202,7 @@ func TestIdentityInterceptor_Update(t *testing.T) { identitySpec: regionalSingleParameterizedIdentitySpec("name", inttypes.WithV6_0SDKv2Fix(), ), - ExpectIdentity: true, // This makes identity mutable, so always expect it + ExpectIdentity: true, Description: "Mutable identity (v6.0 SDK fix) should always get populated on Update", }, "identity fix": { @@ -210,7 +210,7 @@ func TestIdentityInterceptor_Update(t *testing.T) { identitySpec: regionalSingleParameterizedIdentitySpec("name", inttypes.WithIdentityFix(), ), - ExpectIdentity: true, // This makes identity mutable, so always expect it + ExpectIdentity: true, Description: "Mutable identity (identity fix) should always get populated on Update", }, "mutable": { @@ -278,84 +278,6 @@ func TestIdentityInterceptor_Update(t *testing.T) { } } -func TestIdentityInterceptor_Update_PartialNullValues(t *testing.T) { - t.Parallel() - - accountID := "123456789012" - region := "us-west-2" //lintignore:AWSAT003 - name := "a_name" - - resourceSchema := map[string]*schema.Schema{ - "name": { - Type: schema.TypeString, - Required: true, - }, - "type": { - Type: schema.TypeString, - Optional: true, - }, - "region": attribute.Region(), - } - - client := mockClient{ - accountID: accountID, - region: region, - } - - ctx := t.Context() - - // Test immutable identity with some values already set (partial null scenario) - identitySpec := regionalSingleParameterizedIdentitySpec("name") - invocation := newIdentityInterceptor(&identitySpec) - interceptor := invocation.interceptor.(identityInterceptor) - - identitySchema := identity.NewIdentitySchema(identitySpec) - - d := schema.TestResourceDataWithIdentityRaw(t, resourceSchema, identitySchema, nil) - d.SetId("some_id") - d.Set("name", name) - d.Set("region", region) - d.Set("type", "some_type") - - // Simulate partial identity values (some set, some null) by setting some identity attributes - identity, err := d.Identity() - if err != nil { - t.Fatalf("unexpected error getting identity: %v", err) - } - - // Set only account_id, leaving region and name null - // This simulates a scenario where identity was partially set (not the full null bug scenario) - if err := identity.Set(names.AttrAccountID, accountID); err != nil { - t.Fatalf("unexpected error setting account_id in identity: %v", err) - } - - opts := crudInterceptorOptions{ - c: client, - d: d, - when: After, - why: Update, - } - - interceptor.run(ctx, opts) - - identity, err = d.Identity() - if err != nil { - t.Fatalf("unexpected error getting identity: %v", err) - } - - // For partial null scenario, identity should NOT be updated on immutable identity - // because not ALL values are null - if e, a := accountID, identity.Get(names.AttrAccountID); e != a { - t.Errorf("expected account ID to remain %q, got %q", e, a) - } - if identity.Get(names.AttrRegion) != "" { - t.Errorf("expected region to remain empty, got %q", identity.Get(names.AttrRegion)) - } - if identity.Get("name") != "" { - t.Errorf("expected name to remain empty, got %q", identity.Get("name")) - } -} - func regionalSingleParameterizedIdentitySpec(attrName string, opts ...inttypes.IdentityOptsFunc) inttypes.Identity { return inttypes.RegionalSingleParameterIdentity(attrName, opts...) } @@ -401,149 +323,9 @@ func (c mockClient) AwsConfig(context.Context) aws.Config { // nosemgrep:ci.aws- panic("not implemented") //lintignore:R009 } -// TestIdentityInterceptor_ProviderUpgradeBugFix tests the specific bug fix for provider upgrades. -// The bug occurred when upgrading from pre-identity versions (e.g., 6.13.0) to identity-enabled -// versions (e.g., 6.14.0+) caused "Missing Resource Identity After Update" errors. -// -// The fix detects when ALL identity attributes are null (provider upgrade scenario) and -// allows identity population during Update operations only in this specific case. -// See https://github.com/hashicorp/terraform-provider-aws/issues/44330 -func TestIdentityInterceptor_ProviderUpgradeBugFix(t *testing.T) { - t.Parallel() - - testCases := map[string]struct { - identityValues map[string]string // What values are already set in identity - expectPopulation bool // Should identity be populated during Update? - description string - }{ - "all_null_values": { - identityValues: map[string]string{}, // All null - the bug scenario - expectPopulation: true, // Should populate (fix behavior) - description: "Provider upgrade scenario: all identity attributes null should trigger population", - }, - "some_values_set": { - identityValues: map[string]string{ // Some values set - normal scenario - names.AttrAccountID: "123456789012", - names.AttrRegion: "us-west-2", // lintignore:AWSAT003 - // bucket and key remain null - }, - expectPopulation: false, // Should NOT populate (preserves existing behavior) - description: "Normal scenario: partial identity values should not trigger population", - }, - "all_values_set": { - identityValues: map[string]string{ // All values set - names.AttrAccountID: "123456789012", - names.AttrRegion: "us-west-2", // lintignore:AWSAT003 - names.AttrBucket: "test-bucket", - names.AttrKey: "test-key", - }, - expectPopulation: false, // Should NOT populate - description: "Full identity: all values set should not trigger population", - }, - } - - for name, tc := range testCases { - t.Run(name, func(t *testing.T) { - t.Parallel() - - // Create a simple S3-like identity spec for testing - identitySpec := inttypes.Identity{ - Attributes: []inttypes.IdentityAttribute{ - inttypes.StringIdentityAttribute(names.AttrAccountID, false), - inttypes.StringIdentityAttribute(names.AttrRegion, false), - inttypes.StringIdentityAttribute(names.AttrBucket, true), - inttypes.StringIdentityAttribute(names.AttrKey, true), - }, - IsMutable: false, // Immutable identity - key to reproducing bug - IsSetOnUpdate: false, - } - - // Create minimal resource schema - resourceSchema := map[string]*schema.Schema{ - names.AttrBucket: {Type: schema.TypeString, Required: true}, - names.AttrKey: {Type: schema.TypeString, Required: true}, - names.AttrContent: {Type: schema.TypeString, Optional: true}, - } - - identitySchema := identity.NewIdentitySchema(identitySpec) - d := schema.TestResourceDataWithIdentityRaw(t, resourceSchema, identitySchema, nil) - d.SetId("test-id") - d.Set(names.AttrBucket, "test-bucket") - d.Set(names.AttrKey, "test-key") - - // Setup identity with test case values - identity, err := d.Identity() - if err != nil { - t.Fatalf("unexpected error getting identity: %v", err) - } - for attrName, value := range tc.identityValues { - if err := identity.Set(attrName, value); err != nil { - t.Fatalf("unexpected error setting %s in identity: %v", attrName, err) - } - } - - // Test the core fix logic - hasNullValues := identityIsFullyNull(d, &identitySpec) - if tc.expectPopulation && !hasNullValues { - t.Errorf("expected identityIsFullyNull to return true for %s, got false", tc.description) - } - if !tc.expectPopulation && hasNullValues { - t.Errorf("expected identityIsFullyNull to return false for %s, got true", tc.description) - } - - // Test interceptor behavior - interceptor := identityInterceptor{identitySpec: &identitySpec} - client := mockClient{accountID: "123456789012", region: "us-west-2"} // lintignore:AWSAT003 - opts := crudInterceptorOptions{c: client, d: d, when: After, why: Update} - - // Capture identity state before - beforeValues := make(map[string]string) - for _, attr := range identitySpec.Attributes { - value := identity.Get(attr.Name()) - if value != nil { - beforeValues[attr.Name()] = value.(string) - } else { - beforeValues[attr.Name()] = "" - } - } - - // Run interceptor - diags := interceptor.run(context.Background(), opts) - if diags.HasError() { - t.Fatalf("unexpected error running interceptor: %v", diags) - } - - // Check if identity was populated - identity, _ = d.Identity() - wasPopulated := false - for _, attr := range identitySpec.Attributes { - before := beforeValues[attr.Name()] - after := identity.Get(attr.Name()) - afterStr := "" - if after != nil { - afterStr = after.(string) - } - if before == "" && afterStr != "" { - wasPopulated = true - break - } - } - - if tc.expectPopulation && !wasPopulated { - t.Errorf("expected identity to be populated for %s, but it wasn't", tc.description) - } - if !tc.expectPopulation && wasPopulated { - t.Errorf("expected identity NOT to be populated for %s, but it was", tc.description) - } - }) - } -} - -// TestIdentityIsFullyNull tests the core helper function that detects the provider upgrade scenario func TestIdentityIsFullyNull(t *testing.T) { t.Parallel() - // Simple identity spec for testing identitySpec := &inttypes.Identity{ Attributes: []inttypes.IdentityAttribute{ inttypes.StringIdentityAttribute(names.AttrAccountID, false), @@ -585,7 +367,7 @@ func TestIdentityIsFullyNull(t *testing.T) { names.AttrRegion: "", names.AttrBucket: "", }, - expectNull: true, // Empty strings are treated as null + expectNull: true, description: "Empty string values should be treated as null", }, } @@ -594,7 +376,6 @@ func TestIdentityIsFullyNull(t *testing.T) { t.Run(name, func(t *testing.T) { t.Parallel() - // Create minimal test setup resourceSchema := map[string]*schema.Schema{ names.AttrBucket: {Type: schema.TypeString, Required: true}, } @@ -602,7 +383,6 @@ func TestIdentityIsFullyNull(t *testing.T) { d := schema.TestResourceDataWithIdentityRaw(t, resourceSchema, identitySchema, nil) d.SetId("test-id") - // Set identity values identity, err := d.Identity() if err != nil { t.Fatalf("unexpected error getting identity: %v", err) @@ -613,9 +393,7 @@ func TestIdentityIsFullyNull(t *testing.T) { } } - // Test the function result := identityIsFullyNull(d, identitySpec) - if result != tc.expectNull { t.Errorf("%s: expected identityIsFullyNull to return %v, got %v", tc.description, tc.expectNull, result) From f4cc07223c2cf2882e41300e11ce692fae32f66f Mon Sep 17 00:00:00 2001 From: Jared Baker Date: Mon, 22 Sep 2025 11:04:56 -0400 Subject: [PATCH 51/81] chore(deps): bump hashicorp/terraform-plugin-sdk/v2 to `v2.38.1` --- go.mod | 2 +- go.sum | 4 ++-- tools/tfsdk2fw/go.mod | 2 +- tools/tfsdk2fw/go.sum | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 6a6d69cdb6a9..050b0dba7bee 100644 --- a/go.mod +++ b/go.mod @@ -299,7 +299,7 @@ require ( github.com/hashicorp/terraform-plugin-go v0.29.0 github.com/hashicorp/terraform-plugin-log v0.9.0 github.com/hashicorp/terraform-plugin-mux v0.21.0 - github.com/hashicorp/terraform-plugin-sdk/v2 v2.38.0 + github.com/hashicorp/terraform-plugin-sdk/v2 v2.38.1 github.com/hashicorp/terraform-plugin-testing v1.14.0-beta.1 github.com/jaswdr/faker/v2 v2.8.0 github.com/jmespath/go-jmespath v0.4.0 diff --git a/go.sum b/go.sum index f290a0d72fe4..b15fd01692b3 100644 --- a/go.sum +++ b/go.sum @@ -683,8 +683,8 @@ github.com/hashicorp/terraform-plugin-go v0.29.0 h1:1nXKl/nSpaYIUBU1IG/EsDOX0vv+ github.com/hashicorp/terraform-plugin-go v0.29.0/go.mod h1:vYZbIyvxyy0FWSmDHChCqKvI40cFTDGSb3D8D70i9GM= github.com/hashicorp/terraform-plugin-mux v0.21.0 h1:QsEYnzSD2c3zT8zUrUGqaFGhV/Z8zRUlU7FY3ZPJFfw= github.com/hashicorp/terraform-plugin-mux v0.21.0/go.mod h1:Qpt8+6AD7NmL0DS7ASkN0EXpDQ2J/FnnIgeUr1tzr5A= -github.com/hashicorp/terraform-plugin-sdk/v2 v2.38.0 h1:PQP7Crrc7t/ozj+P9x0/lsTzGNy3lVppH8zAJylofaE= -github.com/hashicorp/terraform-plugin-sdk/v2 v2.38.0/go.mod h1:GQhpKVvvuwzD79e8/NZ+xzj+ZpWovdPAe8nfV/skwNU= +github.com/hashicorp/terraform-plugin-sdk/v2 v2.38.1 h1:mlAq/OrMlg04IuJT7NpefI1wwtdpWudnEmjuQs04t/4= +github.com/hashicorp/terraform-plugin-sdk/v2 v2.38.1/go.mod h1:GQhpKVvvuwzD79e8/NZ+xzj+ZpWovdPAe8nfV/skwNU= github.com/hashicorp/terraform-plugin-testing v1.14.0-beta.1 h1:caWmY2Fv/KgDAXU7IVjcBDfIdmr/n6VRYhCLxNmlaXs= github.com/hashicorp/terraform-plugin-testing v1.14.0-beta.1/go.mod h1:jVm3pD9uQAT0X2RSEdcqjju2bCGv5f73DGZFU4v7EAU= github.com/hashicorp/terraform-registry-address v0.4.0 h1:S1yCGomj30Sao4l5BMPjTGZmCNzuv7/GDTDX99E9gTk= diff --git a/tools/tfsdk2fw/go.mod b/tools/tfsdk2fw/go.mod index 9da7ce5369f9..0a199d7dd334 100644 --- a/tools/tfsdk2fw/go.mod +++ b/tools/tfsdk2fw/go.mod @@ -3,7 +3,7 @@ module github.com/hashicorp/terraform-provider-aws/tools/tfsdk2fw go 1.24.6 require ( - github.com/hashicorp/terraform-plugin-sdk/v2 v2.38.0 + github.com/hashicorp/terraform-plugin-sdk/v2 v2.38.1 github.com/hashicorp/terraform-provider-aws v1.60.1-0.20220322001452-8f7a597d0c24 ) diff --git a/tools/tfsdk2fw/go.sum b/tools/tfsdk2fw/go.sum index d2d462a11cd7..8a83fcd34eba 100644 --- a/tools/tfsdk2fw/go.sum +++ b/tools/tfsdk2fw/go.sum @@ -681,8 +681,8 @@ github.com/hashicorp/terraform-plugin-go v0.29.0 h1:1nXKl/nSpaYIUBU1IG/EsDOX0vv+ github.com/hashicorp/terraform-plugin-go v0.29.0/go.mod h1:vYZbIyvxyy0FWSmDHChCqKvI40cFTDGSb3D8D70i9GM= github.com/hashicorp/terraform-plugin-mux v0.21.0 h1:QsEYnzSD2c3zT8zUrUGqaFGhV/Z8zRUlU7FY3ZPJFfw= github.com/hashicorp/terraform-plugin-mux v0.21.0/go.mod h1:Qpt8+6AD7NmL0DS7ASkN0EXpDQ2J/FnnIgeUr1tzr5A= -github.com/hashicorp/terraform-plugin-sdk/v2 v2.38.0 h1:PQP7Crrc7t/ozj+P9x0/lsTzGNy3lVppH8zAJylofaE= -github.com/hashicorp/terraform-plugin-sdk/v2 v2.38.0/go.mod h1:GQhpKVvvuwzD79e8/NZ+xzj+ZpWovdPAe8nfV/skwNU= +github.com/hashicorp/terraform-plugin-sdk/v2 v2.38.1 h1:mlAq/OrMlg04IuJT7NpefI1wwtdpWudnEmjuQs04t/4= +github.com/hashicorp/terraform-plugin-sdk/v2 v2.38.1/go.mod h1:GQhpKVvvuwzD79e8/NZ+xzj+ZpWovdPAe8nfV/skwNU= github.com/hashicorp/terraform-plugin-testing v1.14.0-beta.1 h1:caWmY2Fv/KgDAXU7IVjcBDfIdmr/n6VRYhCLxNmlaXs= github.com/hashicorp/terraform-plugin-testing v1.14.0-beta.1/go.mod h1:jVm3pD9uQAT0X2RSEdcqjju2bCGv5f73DGZFU4v7EAU= github.com/hashicorp/terraform-registry-address v0.4.0 h1:S1yCGomj30Sao4l5BMPjTGZmCNzuv7/GDTDX99E9gTk= From 6f25ce2b2e1e5c4683bed4c5d6a185b24ab95af4 Mon Sep 17 00:00:00 2001 From: Jared Baker Date: Mon, 22 Sep 2025 11:06:11 -0400 Subject: [PATCH 52/81] chore: tidy test comments --- internal/service/iam/role_test.go | 6 +----- internal/service/s3/object_test.go | 2 -- 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/internal/service/iam/role_test.go b/internal/service/iam/role_test.go index 9af528e68fc2..dbba273a64e0 100644 --- a/internal/service/iam/role_test.go +++ b/internal/service/iam/role_test.go @@ -1006,8 +1006,6 @@ func TestAccIAMRole_Identity_ExistingResource_NoRefresh(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckRoleExists(ctx, resourceName, &conf), ), - // No error indicates the identity interceptor properly identified - // a fully null identity on update and set values appropriately. }, }, }) @@ -1044,9 +1042,7 @@ func TestAccIAMRole_Identity_ExistingResource_NoRefreshFailure(t *testing.T) { { ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, Config: testAccRoleConfig_invalidAssumeRolePolicy(rName), - // Caution: Finding this error, which should be found, hides MRIAU - // (Missing Resource Identity After Update) errors. - ExpectError: regexache.MustCompile(`MalformedPolicyDocument: Unknown field invalid`), + ExpectError: regexache.MustCompile(`MalformedPolicyDocument: Unknown field invalid`), }, }, }) diff --git a/internal/service/s3/object_test.go b/internal/service/s3/object_test.go index 56c615932493..a8826d25400b 100644 --- a/internal/service/s3/object_test.go +++ b/internal/service/s3/object_test.go @@ -2153,8 +2153,6 @@ func TestAccS3Object_Identity_ExistingResource_NoRefresh(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckObjectExists(ctx, resourceName, &obj), ), - // We DON'T want this error. - // ExpectError: regexache.MustCompile(`Missing Resource Identity After Update`), }, }, }) From 47d9c4db7774fc660f9af1027625d78d9d467fa8 Mon Sep 17 00:00:00 2001 From: changelogbot Date: Mon, 22 Sep 2025 15:56:42 +0000 Subject: [PATCH 53/81] Update CHANGELOG.md for #44375 --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 56c8cd6021a2..0cdc7a62e1e1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,14 @@ ## 6.15.0 (Unreleased) +NOTES: + +* provider: This release contains both internal provider fixes and a Terraform Plugin SDK V2 update related to a [regression](https://github.com/hashicorp/terraform-provider-aws/issues/44366) which may impact resources that support resource identity ([#44375](https://github.com/hashicorp/terraform-provider-aws/issues/44375)) + +BUG FIXES: + +* provider: Fix `Missing Resource Identity After Update` errors for non-refreshed and failed updates ([#44375](https://github.com/hashicorp/terraform-provider-aws/issues/44375)) +* provider: Fix `Unexpected Identity Change` errors when fully-null identity values in state are updated to valid values ([#44375](https://github.com/hashicorp/terraform-provider-aws/issues/44375)) + ## 6.14.0 (September 18, 2025) FEATURES: From 8a81fc232ba1d0046998106b4f0787a3e4d27691 Mon Sep 17 00:00:00 2001 From: Dirk Avery Date: Mon, 22 Sep 2025 12:13:10 -0400 Subject: [PATCH 54/81] Update changelog version --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0cdc7a62e1e1..d5e8d0771cbd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -## 6.15.0 (Unreleased) +## 6.14.1 (September 22, 2025) NOTES: From deff1a6c6cac3d333f939c11e64af2d290ebfc6d Mon Sep 17 00:00:00 2001 From: hc-github-team-es-release-engineering <82989873+hc-github-team-es-release-engineering@users.noreply.github.com> Date: Mon, 22 Sep 2025 13:14:34 -0400 Subject: [PATCH 55/81] Bumped product version to 6.14.2. --- version/VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version/VERSION b/version/VERSION index eecf8f79bfcc..f821b19e31c0 100644 --- a/version/VERSION +++ b/version/VERSION @@ -1 +1 @@ -6.14.1 \ No newline at end of file +6.14.2 \ No newline at end of file From f5ed7f2de5a951530edf5ddbc01a2cc5e30883ce Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 22 Sep 2025 13:22:46 -0400 Subject: [PATCH 56/81] Add changelog entry for v6.15.0 (#44400) Co-authored-by: changelogbot --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d5e8d0771cbd..d8cf1c36d5df 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,5 @@ +## 6.15.0 (Unreleased) + ## 6.14.1 (September 22, 2025) NOTES: From 21ad3976653595672746e3d836c5ef82a78a9c20 Mon Sep 17 00:00:00 2001 From: Asim Date: Mon, 22 Sep 2025 18:48:49 +0100 Subject: [PATCH 57/81] applied correct planmodifires --- .../odb/cloud_autonomous_vm_cluster.go | 160 ++++++++++++++---- internal/service/odb/cloud_vm_cluster.go | 115 ++++++++++--- .../service/odb/network_peering_connection.go | 22 +++ 3 files changed, 240 insertions(+), 57 deletions(-) diff --git a/internal/service/odb/cloud_autonomous_vm_cluster.go b/internal/service/odb/cloud_autonomous_vm_cluster.go index e330f78fe481..805e0622d4a5 100644 --- a/internal/service/odb/cloud_autonomous_vm_cluster.go +++ b/internal/service/odb/cloud_autonomous_vm_cluster.go @@ -19,6 +19,7 @@ import ( "github.com/hashicorp/terraform-plugin-framework/resource" "github.com/hashicorp/terraform-plugin-framework/resource/schema" "github.com/hashicorp/terraform-plugin-framework/resource/schema/boolplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/float32planmodifier" "github.com/hashicorp/terraform-plugin-framework/resource/schema/float64planmodifier" "github.com/hashicorp/terraform-plugin-framework/resource/schema/int32planmodifier" "github.com/hashicorp/terraform-plugin-framework/resource/schema/listplanmodifier" @@ -83,7 +84,10 @@ func (r *resourceCloudAutonomousVmCluster) Schema(ctx context.Context, req resou Description: "Exadata infrastructure id. Changing this will force terraform to create new resource.", }, "autonomous_data_storage_percentage": schema.Float32Attribute{ - Computed: true, + Computed: true, + PlanModifiers: []planmodifier.Float32{ + float32planmodifier.UseStateForUnknown(), + }, Description: "The progress of the current operation on the Autonomous VM cluster, as a percentage.", }, "autonomous_data_storage_size_in_tbs": schema.Float64Attribute{ @@ -94,24 +98,39 @@ func (r *resourceCloudAutonomousVmCluster) Schema(ctx context.Context, req resou Description: "The data storage size allocated for Autonomous Databases in the Autonomous VM cluster, in TB. Changing this will force terraform to create new resource.", }, "available_autonomous_data_storage_size_in_tbs": schema.Float64Attribute{ - Computed: true, + Computed: true, + PlanModifiers: []planmodifier.Float64{ + float64planmodifier.UseStateForUnknown(), + }, Description: "The available data storage space for Autonomous Databases in the Autonomous VM cluster, in TB.", }, "available_container_databases": schema.Int32Attribute{ - Computed: true, + Computed: true, + PlanModifiers: []planmodifier.Int32{ + int32planmodifier.UseStateForUnknown(), + }, Description: "The number of Autonomous CDBs that you can create with the currently available storage.", }, "available_cpus": schema.Float32Attribute{ - Computed: true, + Computed: true, + PlanModifiers: []planmodifier.Float32{ + float32planmodifier.UseStateForUnknown(), + }, Description: "The number of CPU cores available for allocation to Autonomous Databases", }, "compute_model": schema.StringAttribute{ - CustomType: computeModel, - Computed: true, + CustomType: computeModel, + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, Description: "The compute model of the Autonomous VM cluster: ECPU or OCPU.", }, "cpu_core_count": schema.Int32Attribute{ - Computed: true, + Computed: true, + PlanModifiers: []planmodifier.Int32{ + int32planmodifier.UseStateForUnknown(), + }, Description: "The total number of CPU cores in the Autonomous VM cluster.", }, "cpu_core_count_per_node": schema.Int32Attribute{ @@ -122,24 +141,39 @@ func (r *resourceCloudAutonomousVmCluster) Schema(ctx context.Context, req resou Description: "The number of CPU cores enabled per node in the Autonomous VM cluster.", }, "cpu_percentage": schema.Float32Attribute{ - Computed: true, + Computed: true, + PlanModifiers: []planmodifier.Float32{ + float32planmodifier.UseStateForUnknown(), + }, Description: "The percentage of total CPU cores currently in use in the Autonomous VM cluster.", }, names.AttrCreatedAt: schema.StringAttribute{ - Computed: true, + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, CustomType: timetypes.RFC3339Type{}, Description: "The date and time when the Autonomous VM cluster was created.", }, "data_storage_size_in_gbs": schema.Float64Attribute{ - Computed: true, + Computed: true, + PlanModifiers: []planmodifier.Float64{ + float64planmodifier.UseStateForUnknown(), + }, Description: "The total data storage allocated to the Autonomous VM cluster, in GB.", }, "data_storage_size_in_tbs": schema.Float64Attribute{ - Computed: true, + Computed: true, + PlanModifiers: []planmodifier.Float64{ + float64planmodifier.UseStateForUnknown(), + }, Description: "The total data storage allocated to the Autonomous VM cluster, in TB.", }, "odb_node_storage_size_in_gbs": schema.Int32Attribute{ - Computed: true, + Computed: true, + PlanModifiers: []planmodifier.Int32{ + int32planmodifier.UseStateForUnknown(), + }, Description: " The local node storage allocated to the Autonomous VM cluster, in gigabytes (GB)", }, "db_servers": schema.SetAttribute{ @@ -167,11 +201,17 @@ func (r *resourceCloudAutonomousVmCluster) Schema(ctx context.Context, req resou Description: "The display name of the Autonomous VM cluster. Changing this will force terraform to create new resource.", }, names.AttrDomain: schema.StringAttribute{ - Computed: true, + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, Description: "The domain name of the Autonomous VM cluster.", }, "exadata_storage_in_tbs_lowest_scaled_value": schema.Float64Attribute{ - Computed: true, + Computed: true, + PlanModifiers: []planmodifier.Float64{ + float64planmodifier.UseStateForUnknown(), + }, Description: "The minimum value to which you can scale down the Exadata storage, in TB.", }, "hostname": schema.StringAttribute{ @@ -201,7 +241,10 @@ func (r *resourceCloudAutonomousVmCluster) Schema(ctx context.Context, req resou Description: "The license model for the Autonomous VM cluster. Valid values are LICENSE_INCLUDED or BRING_YOUR_OWN_LICENSE . Changing this will force terraform to create new resource.", }, "max_acds_lowest_scaled_value": schema.Int32Attribute{ - Computed: true, + Computed: true, + PlanModifiers: []planmodifier.Int32{ + int32planmodifier.UseStateForUnknown(), + }, Description: "The minimum value to which you can scale down the maximum number of Autonomous CDBs.", }, "memory_per_oracle_compute_unit_in_gbs": schema.Int32Attribute{ @@ -212,27 +255,45 @@ func (r *resourceCloudAutonomousVmCluster) Schema(ctx context.Context, req resou Description: "The amount of memory allocated per Oracle Compute Unit, in GB. Changing this will force terraform to create new resource.", }, "memory_size_in_gbs": schema.Int32Attribute{ - Computed: true, + Computed: true, + PlanModifiers: []planmodifier.Int32{ + int32planmodifier.UseStateForUnknown(), + }, Description: "The total amount of memory allocated to the Autonomous VM cluster, in gigabytes(GB).", }, "node_count": schema.Int32Attribute{ - Computed: true, + Computed: true, + PlanModifiers: []planmodifier.Int32{ + int32planmodifier.UseStateForUnknown(), + }, Description: "The number of database server nodes in the Autonomous VM cluster.", }, "non_provisionable_autonomous_container_databases": schema.Int32Attribute{ - Computed: true, + Computed: true, + PlanModifiers: []planmodifier.Int32{ + int32planmodifier.UseStateForUnknown(), + }, Description: "The number of Autonomous CDBs that can't be provisioned because of resource constraints.", }, "oci_resource_anchor_name": schema.StringAttribute{ - Computed: true, + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, Description: "The name of the OCI resource anchor associated with this Autonomous VM cluster.", }, "oci_url": schema.StringAttribute{ - Computed: true, + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, Description: "The URL for accessing the OCI console page for this Autonomous VM cluster.", }, "ocid": schema.StringAttribute{ - Computed: true, + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, Description: "The Oracle Cloud Identifier (OCID) of the Autonomous VM cluster.", }, "odb_network_id": schema.StringAttribute{ @@ -243,27 +304,45 @@ func (r *resourceCloudAutonomousVmCluster) Schema(ctx context.Context, req resou Description: "The unique identifier of the ODB network associated with this Autonomous VM Cluster. Changing this will force terraform to create new resource.", }, "percent_progress": schema.Float32Attribute{ - Computed: true, + Computed: true, + PlanModifiers: []planmodifier.Float32{ + float32planmodifier.UseStateForUnknown(), + }, Description: `The progress of the current operation on the Autonomous VM cluster, as a percentage.`, }, "provisionable_autonomous_container_databases": schema.Int32Attribute{ - Computed: true, + Computed: true, + PlanModifiers: []planmodifier.Int32{ + int32planmodifier.UseStateForUnknown(), + }, Description: "The number of Autonomous CDBs that can be provisioned in the Autonomous VM cluster.", }, "provisioned_autonomous_container_databases": schema.Int32Attribute{ - Computed: true, + Computed: true, + PlanModifiers: []planmodifier.Int32{ + int32planmodifier.UseStateForUnknown(), + }, Description: "The number of Autonomous CDBs currently provisioned in the Autonomous VM cluster.", }, "provisioned_cpus": schema.Float32Attribute{ - Computed: true, + Computed: true, + PlanModifiers: []planmodifier.Float32{ + float32planmodifier.UseStateForUnknown(), + }, Description: "The number of CPUs provisioned in the Autonomous VM cluster.", }, "reclaimable_cpus": schema.Float32Attribute{ - Computed: true, + Computed: true, + PlanModifiers: []planmodifier.Float32{ + float32planmodifier.UseStateForUnknown(), + }, Description: "The number of CPU cores that can be reclaimed from terminated or scaled-down Autonomous Databases.", }, "reserved_cpus": schema.Float32Attribute{ - Computed: true, + Computed: true, + PlanModifiers: []planmodifier.Float32{ + float32planmodifier.UseStateForUnknown(), + }, Description: "The number of CPU cores reserved for system operations and redundancy.", }, "scan_listener_port_non_tls": schema.Int32Attribute{ @@ -281,16 +360,25 @@ func (r *resourceCloudAutonomousVmCluster) Schema(ctx context.Context, req resou Description: "The SCAN listener port for TLS (TCP) protocol. The default is 2484. Changing this will force terraform to create new resource.", }, "shape": schema.StringAttribute{ - Computed: true, + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, Description: "The shape of the Exadata infrastructure for the Autonomous VM cluster.", }, names.AttrStatus: schema.StringAttribute{ - CustomType: status, - Computed: true, + CustomType: status, + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, Description: "The status of the Autonomous VM cluster. Possible values include CREATING, AVAILABLE , UPDATING , DELETING , DELETED , FAILED ", }, names.AttrStatusReason: schema.StringAttribute{ - Computed: true, + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, Description: "Additional information about the current status of the Autonomous VM cluster.", }, "time_zone": schema.StringAttribute{ @@ -310,11 +398,17 @@ func (r *resourceCloudAutonomousVmCluster) Schema(ctx context.Context, req resou Description: "The total number of Autonomous Container Databases that can be created with the allocated local storage. Changing this will force terraform to create new resource.", }, "time_ords_certificate_expires": schema.StringAttribute{ - Computed: true, + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, CustomType: timetypes.RFC3339Type{}, }, "time_database_ssl_certificate_expires": schema.StringAttribute{ - Computed: true, + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, CustomType: timetypes.RFC3339Type{}, Description: "The expiration date and time of the database SSL certificate.", }, diff --git a/internal/service/odb/cloud_vm_cluster.go b/internal/service/odb/cloud_vm_cluster.go index 52f92f21488e..d15333af21ed 100644 --- a/internal/service/odb/cloud_vm_cluster.go +++ b/internal/service/odb/cloud_vm_cluster.go @@ -19,6 +19,7 @@ import ( "github.com/hashicorp/terraform-plugin-framework/resource" "github.com/hashicorp/terraform-plugin-framework/resource/schema" "github.com/hashicorp/terraform-plugin-framework/resource/schema/boolplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/float32planmodifier" "github.com/hashicorp/terraform-plugin-framework/resource/schema/float64planmodifier" "github.com/hashicorp/terraform-plugin-framework/resource/schema/int32planmodifier" "github.com/hashicorp/terraform-plugin-framework/resource/schema/listplanmodifier" @@ -124,19 +125,25 @@ func (r *resourceCloudVmCluster) Schema(ctx context.Context, req resource.Schema Description: "The list of database servers for the VM cluster. Changing this will create a new resource.", }, "disk_redundancy": schema.StringAttribute{ - CustomType: diskRedundancyType, - Computed: true, + CustomType: diskRedundancyType, + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, Description: "The type of redundancy for the VM cluster: NORMAL (2-way) or HIGH (3-way).", }, names.AttrDisplayName: schema.StringAttribute{ Required: true, PlanModifiers: []planmodifier.String{ - stringplanmodifier.UseStateForUnknown(), + stringplanmodifier.RequiresReplace(), }, Description: "A user-friendly name for the VM cluster. This member is required. Changing this will create a new resource.", }, names.AttrDomain: schema.StringAttribute{ - Computed: true, + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, Description: "The domain name associated with the VM cluster.", }, "gi_version": schema.StringAttribute{ @@ -150,6 +157,9 @@ func (r *resourceCloudVmCluster) Schema(ctx context.Context, req resource.Schema //prefix. Therefore, we have hostname_prefix and hostname_prefix_computed "hostname_prefix_computed": schema.StringAttribute{ Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, Description: "The host name for the VM cluster. Constraints: - Can't be \"localhost\" or \"hostname\". - Can't contain \"-version\". - The maximum length of the combined hostname and domain is 63 characters. - The hostname must be unique within the subnet. " + "This member is required. Changing this will create a new resource.", }, @@ -162,7 +172,10 @@ func (r *resourceCloudVmCluster) Schema(ctx context.Context, req resource.Schema "This member is required. Changing this will create a new resource.", }, "iorm_config_cache": schema.ListAttribute{ - Computed: true, + Computed: true, + PlanModifiers: []planmodifier.List{ + listplanmodifier.UseStateForUnknown(), + }, CustomType: fwtypes.NewListNestedObjectTypeOf[cloudVMCExadataIormConfigResourceModel](ctx), Description: "The Exadata IORM (I/O Resource Manager) configuration cache details for the VM cluster.", }, @@ -183,7 +196,10 @@ func (r *resourceCloudVmCluster) Schema(ctx context.Context, req resource.Schema Description: "Specifies whether to create a sparse disk group for the VM cluster. Changing this will create a new resource.", }, "last_update_history_entry_id": schema.StringAttribute{ - Computed: true, + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, Description: "The OCID of the most recent maintenance update history entry.", }, "license_model": schema.StringAttribute{ @@ -196,7 +212,10 @@ func (r *resourceCloudVmCluster) Schema(ctx context.Context, req resource.Schema Description: "The Oracle license model to apply to the VM cluster. Default: LICENSE_INCLUDED. Changing this will create a new resource.", }, "listener_port": schema.Int32Attribute{ - Computed: true, + Computed: true, + PlanModifiers: []planmodifier.Int32{ + int32planmodifier.UseStateForUnknown(), + }, Description: "The listener port number configured on the VM cluster.", }, "memory_size_in_gbs": schema.Int32Attribute{ @@ -209,19 +228,31 @@ func (r *resourceCloudVmCluster) Schema(ctx context.Context, req resource.Schema Description: "The amount of memory, in gigabytes (GBs), to allocate for the VM cluster. Changing this will create a new resource.", }, "node_count": schema.Int32Attribute{ - Computed: true, + Computed: true, + PlanModifiers: []planmodifier.Int32{ + int32planmodifier.UseStateForUnknown(), + }, Description: "The total number of nodes in the VM cluster.", }, "ocid": schema.StringAttribute{ - Computed: true, + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, Description: "The OCID (Oracle Cloud Identifier) of the VM cluster.", }, "oci_resource_anchor_name": schema.StringAttribute{ - Computed: true, + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, Description: "The name of the OCI resource anchor associated with the VM cluster.", }, "oci_url": schema.StringAttribute{ - Computed: true, + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, Description: "The HTTPS link to the VM cluster resource in OCI.", }, "odb_network_id": schema.StringAttribute{ @@ -232,25 +263,40 @@ func (r *resourceCloudVmCluster) Schema(ctx context.Context, req resource.Schema Description: "The unique identifier of the ODB network for the VM cluster. This member is required. Changing this will create a new resource.", }, "percent_progress": schema.Float32Attribute{ - Computed: true, + Computed: true, + PlanModifiers: []planmodifier.Float32{ + float32planmodifier.UseStateForUnknown(), + }, Description: "The percentage of progress made on the current operation for the VM cluster.", }, "scan_dns_name": schema.StringAttribute{ - Computed: true, + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, Description: "The fully qualified domain name (FQDN) for the SCAN IP addresses associated with the VM cluster.", }, "scan_dns_record_id": schema.StringAttribute{ - Computed: true, + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, Description: "The OCID of the DNS record for the SCAN IPs linked to the VM cluster.", }, "scan_ip_ids": schema.ListAttribute{ CustomType: fwtypes.ListOfStringType, ElementType: types.StringType, Computed: true, + PlanModifiers: []planmodifier.List{ + listplanmodifier.UseStateForUnknown(), + }, Description: "The list of OCIDs for SCAN IP addresses associated with the VM cluster.", }, "shape": schema.StringAttribute{ - Computed: true, + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, Description: "The hardware model name of the Exadata infrastructure running the VM cluster.", }, "ssh_public_keys": schema.SetAttribute{ @@ -263,20 +309,32 @@ func (r *resourceCloudVmCluster) Schema(ctx context.Context, req resource.Schema Description: "The public key portion of one or more key pairs used for SSH access to the VM cluster. This member is required. Changing this will create a new resource.", }, names.AttrStatus: schema.StringAttribute{ - Computed: true, + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, CustomType: statusType, Description: "The current lifecycle status of the VM cluster.", }, names.AttrStatusReason: schema.StringAttribute{ - Computed: true, + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, Description: "Additional information regarding the current status of the VM cluster.", }, "storage_size_in_gbs": schema.Int32Attribute{ - Computed: true, + Computed: true, + PlanModifiers: []planmodifier.Int32{ + int32planmodifier.UseStateForUnknown(), + }, Description: "The local node storage allocated to the VM cluster, in gigabytes (GB).", }, "system_version": schema.StringAttribute{ - Computed: true, + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, Description: "The operating system version of the image chosen for the VM cluster.", }, "scan_listener_port_tcp": schema.Int32Attribute{ @@ -300,19 +358,28 @@ func (r *resourceCloudVmCluster) Schema(ctx context.Context, req resource.Schema Description: "The configured time zone of the VM cluster. Changing this will create a new resource.", }, "vip_ids": schema.ListAttribute{ - Computed: true, - CustomType: fwtypes.ListOfStringType, + Computed: true, + CustomType: fwtypes.ListOfStringType, + PlanModifiers: []planmodifier.List{ + listplanmodifier.UseStateForUnknown(), + }, ElementType: types.StringType, Description: "The virtual IP (VIP) addresses assigned to the VM cluster. CRS assigns one VIP per node for failover support.", }, names.AttrCreatedAt: schema.StringAttribute{ - Computed: true, + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, CustomType: timetypes.RFC3339Type{}, Description: "The timestamp when the VM cluster was created.", }, "compute_model": schema.StringAttribute{ - CustomType: computeModelType, - Computed: true, + CustomType: computeModelType, + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, Description: "The compute model used when the instance is created or cloned — either ECPU or OCPU. ECPU is a virtualized compute unit; OCPU is a physical processor core with hyper-threading.", }, names.AttrTags: tftags.TagsAttribute(), diff --git a/internal/service/odb/network_peering_connection.go b/internal/service/odb/network_peering_connection.go index c088d5fdcfe8..b1836d9d5d32 100644 --- a/internal/service/odb/network_peering_connection.go +++ b/internal/service/odb/network_peering_connection.go @@ -18,6 +18,7 @@ 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/resource/schema/float32planmodifier" "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" "github.com/hashicorp/terraform-plugin-framework/types" @@ -93,33 +94,54 @@ func (r *resourceNetworkPeeringConnection) Schema(ctx context.Context, req resou Description: "Status of the odb network peering connection.", CustomType: fwtypes.StringEnumType[odbtypes.ResourceStatus](), Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, }, names.AttrStatusReason: schema.StringAttribute{ Description: "The reason for the current status of the ODB peering connection..", Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, }, "odb_network_arn": schema.StringAttribute{ Description: "ARN of the odb network peering connection.", Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, }, "peer_network_arn": schema.StringAttribute{ Description: "ARN of the peer network peering connection.", Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, }, "odb_peering_connection_type": schema.StringAttribute{ Description: "Type of the odb peering connection.", Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, }, names.AttrCreatedAt: schema.StringAttribute{ Description: "Created time of the odb network peering connection.", Computed: true, CustomType: timetypes.RFC3339Type{}, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, }, "percent_progress": schema.Float32Attribute{ Description: "Progress of the odb network peering connection.", Computed: true, + PlanModifiers: []planmodifier.Float32{ + float32planmodifier.UseStateForUnknown(), + }, }, names.AttrTags: tftags.TagsAttribute(), names.AttrTagsAll: tftags.TagsAttributeComputedOnly(), From 9c54bc65f118904d26aed75de2b88bd840556998 Mon Sep 17 00:00:00 2001 From: Asim Date: Mon, 22 Sep 2025 19:04:01 +0100 Subject: [PATCH 58/81] change log added --- .changelog/44401.txt | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changelog/44401.txt diff --git a/.changelog/44401.txt b/.changelog/44401.txt new file mode 100644 index 000000000000..028b9bb32eae --- /dev/null +++ b/.changelog/44401.txt @@ -0,0 +1,5 @@ +```release-note:bug +resource/aws_odb_cloud_vm_cluster : Fixed planmodifier for computed attribute. Fixed planmodifier from display_name attribute. +resource/aws_odb_cloud_autonomous_vm_cluster : Fixed planmodifier for computed attribute. +resource/aws_odb_network_peering_connection : Fixed planmodifier for computed attribute. +``` \ No newline at end of file From 630192cfc977beff177e4d4e687d1eadfc852e53 Mon Sep 17 00:00:00 2001 From: Jared Baker Date: Mon, 22 Sep 2025 14:12:23 -0400 Subject: [PATCH 59/81] r/aws_iam_role(test): semgrep fixes --- internal/service/iam/role_test.go | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/internal/service/iam/role_test.go b/internal/service/iam/role_test.go index 39e268c939dd..b5c4b830ad7b 100644 --- a/internal/service/iam/role_test.go +++ b/internal/service/iam/role_test.go @@ -1003,10 +1003,7 @@ func TestAccIAMRole_Identity_ExistingResource_NoRefresh_OnError(t *testing.T) { { ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, Config: testAccRoleConfig_invalidAssumeRolePolicy(rName), - Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckRoleExists(ctx, resourceName, &conf), - ), - ExpectError: regexache.MustCompile(`MalformedPolicyDocument: Unknown field invalid`), + ExpectError: regexache.MustCompile(`MalformedPolicyDocument: Unknown field invalid`), }, }, }) @@ -1038,10 +1035,7 @@ func TestAccIAMRole_Identity_ExistingResource_OnError(t *testing.T) { { ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, Config: testAccRoleConfig_invalidAssumeRolePolicy(rName), - Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckRoleExists(ctx, resourceName, &conf), - ), - ExpectError: regexache.MustCompile(`MalformedPolicyDocument: Unknown field invalid`), + ExpectError: regexache.MustCompile(`MalformedPolicyDocument: Unknown field invalid`), }, }, }) From 6d17d2982c3abfcf7ab62395969b24d3b01ed11c Mon Sep 17 00:00:00 2001 From: team-tf-cdk <84392119+team-tf-cdk@users.noreply.github.com> Date: Mon, 22 Sep 2025 20:26:13 +0200 Subject: [PATCH 60/81] =?UTF-8?q?cdktf:=20update=20index.html.markdown,r/x?= =?UTF-8?q?ray=5Fsampling=5Frule.html.markdown,r/xray=5Fresource=5Fpolicy.?= =?UTF-8?q?html.markdown,r/xray=5Fgroup.html.markdown,r/xray=5Fencryption?= =?UTF-8?q?=5Fconfig.html.markdown,r/workspacesweb=5Fuser=5Fsettings=5Fass?= =?UTF-8?q?ociation.html.markdown,r/workspacesweb=5Fuser=5Fsettings.html.m?= =?UTF-8?q?arkdown,r/workspacesweb=5Fuser=5Faccess=5Flogging=5Fsettings=5F?= =?UTF-8?q?association.html.markdown,r/workspacesweb=5Fuser=5Faccess=5Flog?= =?UTF-8?q?ging=5Fsettings.html.markdown,r/workspacesweb=5Ftrust=5Fstore?= =?UTF-8?q?=5Fassociation.html.markdown,r/workspacesweb=5Ftrust=5Fstore.ht?= =?UTF-8?q?ml.markdown,r/workspacesweb=5Fsession=5Flogger=5Fassociation.ht?= =?UTF-8?q?ml.markdown,r/workspacesweb=5Fsession=5Flogger.html.markdown,r/?= =?UTF-8?q?workspacesweb=5Fportal.html.markdown,r/workspacesweb=5Fnetwork?= =?UTF-8?q?=5Fsettings=5Fassociation.html.markdown,r/workspacesweb=5Fnetwo?= =?UTF-8?q?rk=5Fsettings.html.markdown,r/workspacesweb=5Fip=5Faccess=5Fset?= =?UTF-8?q?tings=5Fassociation.html.markdown,r/workspacesweb=5Fip=5Faccess?= =?UTF-8?q?=5Fsettings.html.markdown,r/workspacesweb=5Fidentity=5Fprovider?= =?UTF-8?q?.html.markdown,r/workspacesweb=5Fdata=5Fprotection=5Fsettings?= =?UTF-8?q?=5Fassociation.html.markdown,r/workspacesweb=5Fdata=5Fprotectio?= =?UTF-8?q?n=5Fsettings.html.markdown,r/workspacesweb=5Fbrowser=5Fsettings?= =?UTF-8?q?=5Fassociation.html.markdown,r/workspacesweb=5Fbrowser=5Fsettin?= =?UTF-8?q?gs.html.markdown,r/workspaces=5Fworkspace.html.markdown,r/works?= =?UTF-8?q?paces=5Fip=5Fgroup.html.markdown,r/workspaces=5Fdirectory.html.?= =?UTF-8?q?markdown,r/workspaces=5Fconnection=5Falias.html.markdown,r/wafv?= =?UTF-8?q?2=5Fweb=5Facl=5Frule=5Fgroup=5Fassociation.html.markdown,r/wafv?= =?UTF-8?q?2=5Fweb=5Facl=5Flogging=5Fconfiguration.html.markdown,r/wafv2?= =?UTF-8?q?=5Fweb=5Facl=5Fassociation.html.markdown,r/wafv2=5Fweb=5Facl.ht?= =?UTF-8?q?ml.markdown,r/wafv2=5Frule=5Fgroup.html.markdown,r/wafv2=5Frege?= =?UTF-8?q?x=5Fpattern=5Fset.html.markdown,r/wafv2=5Fip=5Fset.html.markdow?= =?UTF-8?q?n,r/wafv2=5Fapi=5Fkey.html.markdown,r/wafregional=5Fxss=5Fmatch?= =?UTF-8?q?=5Fset.html.markdown,r/wafregional=5Fweb=5Facl=5Fassociation.ht?= =?UTF-8?q?ml.markdown,r/wafregional=5Fweb=5Facl.html.markdown,r/wafregion?= =?UTF-8?q?al=5Fsql=5Finjection=5Fmatch=5Fset.html.markdown,r/wafregional?= =?UTF-8?q?=5Fsize=5Fconstraint=5Fset.html.markdown,r/wafregional=5Frule?= =?UTF-8?q?=5Fgroup.html.markdown,r/wafregional=5Frule.html.markdown,r/waf?= =?UTF-8?q?regional=5Fregex=5Fpattern=5Fset.html.markdown,r/wafregional=5F?= =?UTF-8?q?regex=5Fmatch=5Fset.html.markdown,r/wafregional=5Frate=5Fbased?= =?UTF-8?q?=5Frule.html.markdown,r/wafregional=5Fipset.html.markdown,r/waf?= =?UTF-8?q?regional=5Fgeo=5Fmatch=5Fset.html.markdown,r/wafregional=5Fbyte?= =?UTF-8?q?=5Fmatch=5Fset.html.markdown,r/waf=5Fxss=5Fmatch=5Fset.html.mar?= =?UTF-8?q?kdown,r/waf=5Fweb=5Facl.html.markdown,r/waf=5Fsql=5Finjection?= =?UTF-8?q?=5Fmatch=5Fset.html.markdown,r/waf=5Fsize=5Fconstraint=5Fset.ht?= =?UTF-8?q?ml.markdown,r/waf=5Frule=5Fgroup.html.markdown,r/waf=5Frule.htm?= =?UTF-8?q?l.markdown,r/waf=5Fregex=5Fpattern=5Fset.html.markdown,r/waf=5F?= =?UTF-8?q?regex=5Fmatch=5Fset.html.markdown,r/waf=5Frate=5Fbased=5Frule.h?= =?UTF-8?q?tml.markdown,r/waf=5Fipset.html.markdown,r/waf=5Fgeo=5Fmatch=5F?= =?UTF-8?q?set.html.markdown,r/waf=5Fbyte=5Fmatch=5Fset.html.markdown,r/vp?= =?UTF-8?q?n=5Fgateway=5Froute=5Fpropagation.html.markdown,r/vpn=5Fgateway?= =?UTF-8?q?=5Fattachment.html.markdown,r/vpn=5Fgateway.html.markdown,r/vpn?= =?UTF-8?q?=5Fconnection=5Froute.html.markdown,r/vpn=5Fconnection.html.mar?= =?UTF-8?q?kdown,r/vpclattice=5Ftarget=5Fgroup=5Fattachment.html.markdown,?= =?UTF-8?q?r/vpclattice=5Ftarget=5Fgroup.html.markdown,r/vpclattice=5Fserv?= =?UTF-8?q?ice=5Fnetwork=5Fvpc=5Fassociation.html.markdown,r/vpclattice=5F?= =?UTF-8?q?service=5Fnetwork=5Fservice=5Fassociation.html.markdown,r/vpcla?= =?UTF-8?q?ttice=5Fservice=5Fnetwork=5Fresource=5Fassociation.html.markdow?= =?UTF-8?q?n,r/vpclattice=5Fservice=5Fnetwork.html.markdown,r/vpclattice?= =?UTF-8?q?=5Fservice.html.markdown,r/vpclattice=5Fresource=5Fpolicy.html.?= =?UTF-8?q?markdown,r/vpclattice=5Fresource=5Fgateway.html.markdown,r/vpcl?= =?UTF-8?q?attice=5Fresource=5Fconfiguration.html.markdown,r/vpclattice=5F?= =?UTF-8?q?listener=5Frule.html.markdown,r/vpclattice=5Flistener.html.mark?= =?UTF-8?q?down,r/vpclattice=5Fauth=5Fpolicy.html.markdown,r/vpclattice=5F?= =?UTF-8?q?access=5Flog=5Fsubscription.html.markdown,r/vpc=5Fsecurity=5Fgr?= =?UTF-8?q?oup=5Fvpc=5Fassociation.html.markdown,r/vpc=5Fsecurity=5Fgroup?= =?UTF-8?q?=5Fingress=5Frule.html.markdown,r/vpc=5Fsecurity=5Fgroup=5Fegre?= =?UTF-8?q?ss=5Frule.html.markdown,r/vpc=5Froute=5Fserver=5Fvpc=5Fassociat?= =?UTF-8?q?ion.html.markdown,r/vpc=5Froute=5Fserver=5Fpropagation.html.mar?= =?UTF-8?q?kdown,r/vpc=5Froute=5Fserver=5Fpeer.html.markdown,r/vpc=5Froute?= =?UTF-8?q?=5Fserver=5Fendpoint.html.markdown,r/vpc=5Froute=5Fserver.html.?= =?UTF-8?q?markdown,r/vpc=5Fpeering=5Fconnection=5Foptions.html.markdown,r?= =?UTF-8?q?/vpc=5Fpeering=5Fconnection=5Faccepter.html.markdown,r/vpc=5Fpe?= =?UTF-8?q?ering=5Fconnection.html.markdown,r/vpc=5Fnetwork=5Fperformance?= =?UTF-8?q?=5Fmetric=5Fsubscription.html.markdown,r/vpc=5Fipv6=5Fcidr=5Fbl?= =?UTF-8?q?ock=5Fassociation.html.markdown,r/vpc=5Fipv4=5Fcidr=5Fblock=5Fa?= =?UTF-8?q?ssociation.html.markdown,r/vpc=5Fipam=5Fscope.html.markdown,r/v?= =?UTF-8?q?pc=5Fipam=5Fresource=5Fdiscovery=5Fassociation.html.markdown,r/?= =?UTF-8?q?vpc=5Fipam=5Fresource=5Fdiscovery.html.markdown,r/vpc=5Fipam=5F?= =?UTF-8?q?preview=5Fnext=5Fcidr.html.markdown,r/vpc=5Fipam=5Fpool=5Fcidr?= =?UTF-8?q?=5Fallocation.html.markdown,r/vpc=5Fipam=5Fpool=5Fcidr.html.mar?= =?UTF-8?q?kdown,r/vpc=5Fipam=5Fpool.html.markdown,r/vpc=5Fipam=5Forganiza?= =?UTF-8?q?tion=5Fadmin=5Faccount.html.markdown,r/vpc=5Fipam.html.markdown?= =?UTF-8?q?,r/vpc=5Fendpoint=5Fsubnet=5Fassociation.html.markdown,r/vpc=5F?= =?UTF-8?q?endpoint=5Fservice=5Fprivate=5Fdns=5Fverification.html.markdown?= =?UTF-8?q?,r/vpc=5Fendpoint=5Fservice=5Fallowed=5Fprincipal.html.markdown?= =?UTF-8?q?,r/vpc=5Fendpoint=5Fservice.html.markdown,r/vpc=5Fendpoint=5Fse?= =?UTF-8?q?curity=5Fgroup=5Fassociation.html.markdown,r/vpc=5Fendpoint=5Fr?= =?UTF-8?q?oute=5Ftable=5Fassociation.html.markdown,r/vpc=5Fendpoint=5Fpri?= =?UTF-8?q?vate=5Fdns.html.markdown,r/vpc=5Fendpoint=5Fpolicy.html.markdow?= =?UTF-8?q?n,r/vpc=5Fendpoint=5Fconnection=5Fnotification.html.markdown,r/?= =?UTF-8?q?vpc=5Fendpoint=5Fconnection=5Faccepter.html.markdown,r/vpc=5Fen?= =?UTF-8?q?dpoint.html.markdown,r/vpc=5Fdhcp=5Foptions=5Fassociation.html.?= =?UTF-8?q?markdown,r/vpc=5Fdhcp=5Foptions.html.markdown,r/vpc=5Fblock=5Fp?= =?UTF-8?q?ublic=5Faccess=5Foptions.html.markdown,r/vpc=5Fblock=5Fpublic?= =?UTF-8?q?=5Faccess=5Fexclusion.html.markdown,r/vpc.html.markdown,r/volum?= =?UTF-8?q?e=5Fattachment.html.markdown,r/verifiedpermissions=5Fschema.htm?= =?UTF-8?q?l.markdown,r/verifiedpermissions=5Fpolicy=5Ftemplate.html.markd?= =?UTF-8?q?own,r/verifiedpermissions=5Fpolicy=5Fstore.html.markdown,r/veri?= =?UTF-8?q?fiedpermissions=5Fpolicy.html.markdown,r/verifiedpermissions=5F?= =?UTF-8?q?identity=5Fsource.html.markdown,r/verifiedaccess=5Ftrust=5Fprov?= =?UTF-8?q?ider.html.markdown,r/verifiedaccess=5Finstance=5Ftrust=5Fprovid?= =?UTF-8?q?er=5Fattachment.html.markdown,r/verifiedaccess=5Finstance=5Flog?= =?UTF-8?q?ging=5Fconfiguration.html.markdown,r/verifiedaccess=5Finstance.?= =?UTF-8?q?html.markdown,r/verifiedaccess=5Fgroup.html.markdown,r/verified?= =?UTF-8?q?access=5Fendpoint.html.markdown,r/transfer=5Fworkflow.html.mark?= =?UTF-8?q?down,r/transfer=5Fuser.html.markdown,r/transfer=5Ftag.html.mark?= =?UTF-8?q?down,r/transfer=5Fssh=5Fkey.html.markdown,r/transfer=5Fserver.h?= =?UTF-8?q?tml.markdown,r/transfer=5Fprofile.html.markdown,r/transfer=5Fco?= =?UTF-8?q?nnector.html.markdown,r/transfer=5Fcertificate.html.markdown,r/?= =?UTF-8?q?transfer=5Fagreement.html.markdown,r/transfer=5Faccess.html.mar?= =?UTF-8?q?kdown,r/transcribe=5Fvocabulary=5Ffilter.html.markdown,r/transc?= =?UTF-8?q?ribe=5Fvocabulary.html.markdown,r/transcribe=5Fmedical=5Fvocabu?= =?UTF-8?q?lary.html.markdown,r/transcribe=5Flanguage=5Fmodel.html.markdow?= =?UTF-8?q?n,r/timestreamwrite=5Ftable.html.markdown,r/timestreamwrite=5Fd?= =?UTF-8?q?atabase.html.markdown,r/timestreamquery=5Fscheduled=5Fquery.htm?= =?UTF-8?q?l.markdown,r/timestreaminfluxdb=5Fdb=5Finstance.html.markdown,r?= =?UTF-8?q?/timestreaminfluxdb=5Fdb=5Fcluster.html.markdown,r/synthetics?= =?UTF-8?q?=5Fgroup=5Fassociation.html.markdown,r/synthetics=5Fgroup.html.?= =?UTF-8?q?markdown,r/synthetics=5Fcanary.html.markdown,r/swf=5Fdomain.htm?= =?UTF-8?q?l.markdown,r/subnet.html.markdown,r/storagegateway=5Fworking=5F?= =?UTF-8?q?storage.html.markdown,r/storagegateway=5Fupload=5Fbuffer.html.m?= =?UTF-8?q?arkdown,r/storagegateway=5Ftape=5Fpool.html.markdown,r/storageg?= =?UTF-8?q?ateway=5Fstored=5Fiscsi=5Fvolume.html.markdown,r/storagegateway?= =?UTF-8?q?=5Fsmb=5Ffile=5Fshare.html.markdown,r/storagegateway=5Fnfs=5Ffi?= =?UTF-8?q?le=5Fshare.html.markdown,r/storagegateway=5Fgateway.html.markdo?= =?UTF-8?q?wn,r/storagegateway=5Ffile=5Fsystem=5Fassociation.html.markdown?= =?UTF-8?q?,r/storagegateway=5Fcached=5Fiscsi=5Fvolume.html.markdown,r/sto?= =?UTF-8?q?ragegateway=5Fcache.html.markdown,r/ssoadmin=5Ftrusted=5Ftoken?= =?UTF-8?q?=5Fissuer.html.markdown,r/ssoadmin=5Fpermissions=5Fboundary=5Fa?= =?UTF-8?q?ttachment.html.markdown,r/ssoadmin=5Fpermission=5Fset=5Finline?= =?UTF-8?q?=5Fpolicy.html.markdown,r/ssoadmin=5Fpermission=5Fset.html.mark?= =?UTF-8?q?down,r/ssoadmin=5Fmanaged=5Fpolicy=5Fattachment.html.markdown,r?= =?UTF-8?q?/ssoadmin=5Finstance=5Faccess=5Fcontrol=5Fattributes.html.markd?= =?UTF-8?q?own,r/ssoadmin=5Fcustomer=5Fmanaged=5Fpolicy=5Fattachment.html.?= =?UTF-8?q?markdown,r/ssoadmin=5Fapplication=5Fassignment=5Fconfiguration.?= =?UTF-8?q?html.markdown,r/ssoadmin=5Fapplication=5Fassignment.html.markdo?= =?UTF-8?q?wn,r/ssoadmin=5Fapplication=5Faccess=5Fscope.html.markdown,r/ss?= =?UTF-8?q?oadmin=5Fapplication.html.markdown,r/ssoadmin=5Faccount=5Fassig?= =?UTF-8?q?nment.html.markdown,r/ssmquicksetup=5Fconfiguration=5Fmanager.h?= =?UTF-8?q?tml.markdown,r/ssmincidents=5Fresponse=5Fplan.html.markdown,r/s?= =?UTF-8?q?smincidents=5Freplication=5Fset.html.markdown,r/ssmcontacts=5Fr?= =?UTF-8?q?otation.html.markdown,r/ssmcontacts=5Fplan.html.markdown,r/ssmc?= =?UTF-8?q?ontacts=5Fcontact=5Fchannel.html.markdown,r/ssmcontacts=5Fconta?= =?UTF-8?q?ct.html.markdown,r/ssm=5Fservice=5Fsetting.html.markdown,r/ssm?= =?UTF-8?q?=5Fresource=5Fdata=5Fsync.html.markdown,r/ssm=5Fpatch=5Fgroup.h?= =?UTF-8?q?tml.markdown,r/ssm=5Fpatch=5Fbaseline.html.markdown,r/ssm=5Fpar?= =?UTF-8?q?ameter.html.markdown,r/ssm=5Fmaintenance=5Fwindow=5Ftask.html.m?= =?UTF-8?q?arkdown,r/ssm=5Fmaintenance=5Fwindow=5Ftarget.html.markdown,r/s?= =?UTF-8?q?sm=5Fmaintenance=5Fwindow.html.markdown,r/ssm=5Fdocument.html.m?= =?UTF-8?q?arkdown,r/ssm=5Fdefault=5Fpatch=5Fbaseline.html.markdown,r/ssm?= =?UTF-8?q?=5Fassociation.html.markdown,r/ssm=5Factivation.html.markdown,r?= =?UTF-8?q?/sqs=5Fqueue=5Fredrive=5Fpolicy.html.markdown,r/sqs=5Fqueue=5Fr?= =?UTF-8?q?edrive=5Fallow=5Fpolicy.html.markdown,r/sqs=5Fqueue=5Fpolicy.ht?= =?UTF-8?q?ml.markdown,r/sqs=5Fqueue.html.markdown,r/spot=5Finstance=5Freq?= =?UTF-8?q?uest.html.markdown,r/spot=5Ffleet=5Frequest.html.markdown,r/spo?= =?UTF-8?q?t=5Fdatafeed=5Fsubscription.html.markdown,r/sns=5Ftopic=5Fsubsc?= =?UTF-8?q?ription.html.markdown,r/sns=5Ftopic=5Fpolicy.html.markdown,r/sn?= =?UTF-8?q?s=5Ftopic=5Fdata=5Fprotection=5Fpolicy.html.markdown,r/sns=5Fto?= =?UTF-8?q?pic.html.markdown,r/sns=5Fsms=5Fpreferences.html.markdown,r/sns?= =?UTF-8?q?=5Fplatform=5Fapplication.html.markdown,r/snapshot=5Fcreate=5Fv?= =?UTF-8?q?olume=5Fpermission.html.markdown,r/signer=5Fsigning=5Fprofile?= =?UTF-8?q?=5Fpermission.html.markdown,r/signer=5Fsigning=5Fprofile.html.m?= =?UTF-8?q?arkdown,r/signer=5Fsigning=5Fjob.html.markdown,r/shield=5Fsubsc?= =?UTF-8?q?ription.html.markdown,r/shield=5Fprotection=5Fhealth=5Fcheck=5F?= =?UTF-8?q?association.html.markdown,r/shield=5Fprotection=5Fgroup.html.ma?= =?UTF-8?q?rkdown,r/shield=5Fprotection.html.markdown,r/shield=5Fproactive?= =?UTF-8?q?=5Fengagement.html.markdown,r/shield=5Fdrt=5Faccess=5Frole=5Far?= =?UTF-8?q?n=5Fassociation.html.markdown,r/shield=5Fdrt=5Faccess=5Flog=5Fb?= =?UTF-8?q?ucket=5Fassociation.html.markdown,r/shield=5Fapplication=5Flaye?= =?UTF-8?q?r=5Fautomatic=5Fresponse.html.markdown,r/sfn=5Fstate=5Fmachine.?= =?UTF-8?q?html.markdown,r/sfn=5Falias.html.markdown,r/sfn=5Factivity.html?= =?UTF-8?q?.markdown,r/sesv2=5Femail=5Fidentity=5Fpolicy.html.markdown,r/s?= =?UTF-8?q?esv2=5Femail=5Fidentity=5Fmail=5Ffrom=5Fattributes.html.markdow?= =?UTF-8?q?n,r/sesv2=5Femail=5Fidentity=5Ffeedback=5Fattributes.html.markd?= =?UTF-8?q?own,r/sesv2=5Femail=5Fidentity.html.markdown,r/sesv2=5Fdedicate?= =?UTF-8?q?d=5Fip=5Fpool.html.markdown,r/sesv2=5Fdedicated=5Fip=5Fassignme?= =?UTF-8?q?nt.html.markdown,r/sesv2=5Fcontact=5Flist.html.markdown,r/sesv2?= =?UTF-8?q?=5Fconfiguration=5Fset=5Fevent=5Fdestination.html.markdown,r/se?= =?UTF-8?q?sv2=5Fconfiguration=5Fset.html.markdown,r/sesv2=5Faccount=5Fvdm?= =?UTF-8?q?=5Fattributes.html.markdown,r/sesv2=5Faccount=5Fsuppression=5Fa?= =?UTF-8?q?ttributes.html.markdown,r/ses=5Ftemplate.html.markdown,r/ses=5F?= =?UTF-8?q?receipt=5Frule=5Fset.html.markdown,r/ses=5Freceipt=5Frule.html.?= =?UTF-8?q?markdown,r/ses=5Freceipt=5Ffilter.html.markdown,r/ses=5Fidentit?= =?UTF-8?q?y=5Fpolicy.html.markdown,r/ses=5Fidentity=5Fnotification=5Ftopi?= =?UTF-8?q?c.html.markdown,r/ses=5Fevent=5Fdestination.html.markdown,r/ses?= =?UTF-8?q?=5Femail=5Fidentity.html.markdown,r/ses=5Fdomain=5Fmail=5Ffrom.?= =?UTF-8?q?html.markdown,r/ses=5Fdomain=5Fidentity=5Fverification.html.mar?= =?UTF-8?q?kdown,r/ses=5Fdomain=5Fidentity.html.markdown,r/ses=5Fdomain=5F?= =?UTF-8?q?dkim.html.markdown,r/ses=5Fconfiguration=5Fset.html.markdown,r/?= =?UTF-8?q?ses=5Factive=5Freceipt=5Frule=5Fset.html.markdown,r/servicequot?= =?UTF-8?q?as=5Ftemplate=5Fassociation.html.markdown,r/servicequotas=5Ftem?= =?UTF-8?q?plate.html.markdown,r/servicequotas=5Fservice=5Fquota.html.mark?= =?UTF-8?q?down,r/servicecatalogappregistry=5Fattribute=5Fgroup=5Fassociat?= =?UTF-8?q?ion.html.markdown,r/servicecatalogappregistry=5Fattribute=5Fgro?= =?UTF-8?q?up.html.markdown,r/servicecatalogappregistry=5Fapplication.html?= =?UTF-8?q?.markdown,r/servicecatalog=5Ftag=5Foption=5Fresource=5Fassociat?= =?UTF-8?q?ion.html.markdown,r/servicecatalog=5Ftag=5Foption.html.markdown?= =?UTF-8?q?,r/servicecatalog=5Fservice=5Faction.html.markdown,r/servicecat?= =?UTF-8?q?alog=5Fprovisioning=5Fartifact.html.markdown,r/servicecatalog?= =?UTF-8?q?=5Fprovisioned=5Fproduct.html.markdown,r/servicecatalog=5Fprodu?= =?UTF-8?q?ct=5Fportfolio=5Fassociation.html.markdown,r/servicecatalog=5Fp?= =?UTF-8?q?roduct.html.markdown,r/servicecatalog=5Fprincipal=5Fportfolio?= =?UTF-8?q?=5Fassociation.html.markdown,r/servicecatalog=5Fportfolio=5Fsha?= =?UTF-8?q?re.html.markdown,r/servicecatalog=5Fportfolio.html.markdown,r/s?= =?UTF-8?q?ervicecatalog=5Forganizations=5Faccess.html.markdown,r/servicec?= =?UTF-8?q?atalog=5Fconstraint.html.markdown,r/servicecatalog=5Fbudget=5Fr?= =?UTF-8?q?esource=5Fassociation.html.markdown,r/service=5Fdiscovery=5Fser?= =?UTF-8?q?vice.html.markdown,r/service=5Fdiscovery=5Fpublic=5Fdns=5Fnames?= =?UTF-8?q?pace.html.markdown,r/service=5Fdiscovery=5Fprivate=5Fdns=5Fname?= =?UTF-8?q?space.html.markdown,r/service=5Fdiscovery=5Finstance.html.markd?= =?UTF-8?q?own,r/service=5Fdiscovery=5Fhttp=5Fnamespace.html.markdown,r/se?= =?UTF-8?q?rverlessapplicationrepository=5Fcloudformation=5Fstack.html.mar?= =?UTF-8?q?kdown,r/securitylake=5Fsubscriber=5Fnotification.html.markdown,?= =?UTF-8?q?r/securitylake=5Fsubscriber.html.markdown,r/securitylake=5Fdata?= =?UTF-8?q?=5Flake.html.markdown,r/securitylake=5Fcustom=5Flog=5Fsource.ht?= =?UTF-8?q?ml.markdown,r/securitylake=5Faws=5Flog=5Fsource.html.markdown,r?= =?UTF-8?q?/securityhub=5Fstandards=5Fsubscription.html.markdown,r/securit?= =?UTF-8?q?yhub=5Fstandards=5Fcontrol=5Fassociation.html.markdown,r/securi?= =?UTF-8?q?tyhub=5Fstandards=5Fcontrol.html.markdown,r/securityhub=5Fprodu?= =?UTF-8?q?ct=5Fsubscription.html.markdown,r/securityhub=5Forganization=5F?= =?UTF-8?q?configuration.html.markdown,r/securityhub=5Forganization=5Fadmi?= =?UTF-8?q?n=5Faccount.html.markdown,r/securityhub=5Fmember.html.markdown,?= =?UTF-8?q?r/securityhub=5Finvite=5Faccepter.html.markdown,r/securityhub?= =?UTF-8?q?=5Finsight.html.markdown,r/securityhub=5Ffinding=5Faggregator.h?= =?UTF-8?q?tml.markdown,r/securityhub=5Fconfiguration=5Fpolicy=5Fassociati?= =?UTF-8?q?on.markdown,r/securityhub=5Fconfiguration=5Fpolicy.html.markdow?= =?UTF-8?q?n,r/securityhub=5Fautomation=5Frule.html.markdown,r/securityhub?= =?UTF-8?q?=5Faction=5Ftarget.html.markdown,r/securityhub=5Faccount.html.m?= =?UTF-8?q?arkdown,r/security=5Fgroup=5Frule.html.markdown,r/security=5Fgr?= =?UTF-8?q?oup.html.markdown,r/secretsmanager=5Fsecret=5Fversion.html.mark?= =?UTF-8?q?down,r/secretsmanager=5Fsecret=5Frotation.html.markdown,r/secre?= =?UTF-8?q?tsmanager=5Fsecret=5Fpolicy.html.markdown,r/secretsmanager=5Fse?= =?UTF-8?q?cret.html.markdown,r/schemas=5Fschema.html.markdown,r/schemas?= =?UTF-8?q?=5Fregistry=5Fpolicy.html.markdown,r/schemas=5Fregistry.html.ma?= =?UTF-8?q?rkdown,r/schemas=5Fdiscoverer.html.markdown,r/scheduler=5Fsched?= =?UTF-8?q?ule=5Fgroup.html.markdown,r/scheduler=5Fschedule.html.markdown,?= =?UTF-8?q?r/sagemaker=5Fworkteam.html.markdown,r/sagemaker=5Fworkforce.ht?= =?UTF-8?q?ml.markdown,r/sagemaker=5Fuser=5Fprofile.html.markdown,r/sagema?= =?UTF-8?q?ker=5Fstudio=5Flifecycle=5Fconfig.html.markdown,r/sagemaker=5Fs?= =?UTF-8?q?pace.html.markdown,r/sagemaker=5Fservicecatalog=5Fportfolio=5Fs?= =?UTF-8?q?tatus.html.markdown,r/sagemaker=5Fproject.html.markdown,r/sagem?= =?UTF-8?q?aker=5Fpipeline.html.markdown,r/sagemaker=5Fnotebook=5Finstance?= =?UTF-8?q?=5Flifecycle=5Fconfiguration.html.markdown,r/sagemaker=5Fnotebo?= =?UTF-8?q?ok=5Finstance.html.markdown,r/sagemaker=5Fmonitoring=5Fschedule?= =?UTF-8?q?.html.markdown,r/sagemaker=5Fmodel=5Fpackage=5Fgroup=5Fpolicy.h?= =?UTF-8?q?tml.markdown,r/sagemaker=5Fmodel=5Fpackage=5Fgroup.html.markdow?= =?UTF-8?q?n,r/sagemaker=5Fmodel.html.markdown,r/sagemaker=5Fmlflow=5Ftrac?= =?UTF-8?q?king=5Fserver.html.markdown,r/sagemaker=5Fimage=5Fversion.html.?= =?UTF-8?q?markdown,r/sagemaker=5Fimage.html.markdown,r/sagemaker=5Fhuman?= =?UTF-8?q?=5Ftask=5Fui.html.markdown,r/sagemaker=5Fhub.html.markdown,r/sa?= =?UTF-8?q?gemaker=5Fflow=5Fdefinition.html.markdown,r/sagemaker=5Ffeature?= =?UTF-8?q?=5Fgroup.html.markdown,r/sagemaker=5Fendpoint=5Fconfiguration.h?= =?UTF-8?q?tml.markdown,r/sagemaker=5Fendpoint.html.markdown,r/sagemaker?= =?UTF-8?q?=5Fdomain.html.markdown,r/sagemaker=5Fdevice=5Ffleet.html.markd?= =?UTF-8?q?own,r/sagemaker=5Fdevice.html.markdown,r/sagemaker=5Fdata=5Fqua?= =?UTF-8?q?lity=5Fjob=5Fdefinition.html.markdown,r/sagemaker=5Fcode=5Frepo?= =?UTF-8?q?sitory.html.markdown,r/sagemaker=5Fapp=5Fimage=5Fconfig.html.ma?= =?UTF-8?q?rkdown,r/sagemaker=5Fapp.html.markdown,r/s3tables=5Ftable=5Fpol?= =?UTF-8?q?icy.html.markdown,r/s3tables=5Ftable=5Fbucket=5Fpolicy.html.mar?= =?UTF-8?q?kdown,r/s3tables=5Ftable=5Fbucket.html.markdown,r/s3tables=5Fta?= =?UTF-8?q?ble.html.markdown,r/s3tables=5Fnamespace.html.markdown,r/s3outp?= =?UTF-8?q?osts=5Fendpoint.html.markdown,r/s3control=5Fstorage=5Flens=5Fco?= =?UTF-8?q?nfiguration.html.markdown,r/s3control=5Fobject=5Flambda=5Facces?= =?UTF-8?q?s=5Fpoint=5Fpolicy.html.markdown,r/s3control=5Fobject=5Flambda?= =?UTF-8?q?=5Faccess=5Fpoint.html.markdown,r/s3control=5Fmulti=5Fregion=5F?= =?UTF-8?q?access=5Fpoint=5Fpolicy.html.markdown,r/s3control=5Fmulti=5Freg?= =?UTF-8?q?ion=5Faccess=5Fpoint.html.markdown,r/s3control=5Fdirectory=5Fbu?= =?UTF-8?q?cket=5Faccess=5Fpoint=5Fscope.html.markdown,r/s3control=5Fbucke?= =?UTF-8?q?t=5Fpolicy.html.markdown,r/s3control=5Fbucket=5Flifecycle=5Fcon?= =?UTF-8?q?figuration.html.markdown,r/s3control=5Fbucket.html.markdown,r/s?= =?UTF-8?q?3control=5Faccess=5Fpoint=5Fpolicy.html.markdown,r/s3control=5F?= =?UTF-8?q?access=5Fgrants=5Flocation.html.markdown,r/s3control=5Faccess?= =?UTF-8?q?=5Fgrants=5Finstance=5Fresource=5Fpolicy.html.markdown,r/s3cont?= =?UTF-8?q?rol=5Faccess=5Fgrants=5Finstance.html.markdown,r/s3control=5Fac?= =?UTF-8?q?cess=5Fgrant.html.markdown,r/s3=5Fobject=5Fcopy.html.markdown,r?= =?UTF-8?q?/s3=5Fobject.html.markdown,r/s3=5Fdirectory=5Fbucket.html.markd?= =?UTF-8?q?own,r/s3=5Fbucket=5Fwebsite=5Fconfiguration.html.markdown,r/s3?= =?UTF-8?q?=5Fbucket=5Fversioning.html.markdown,r/s3=5Fbucket=5Fserver=5Fs?= =?UTF-8?q?ide=5Fencryption=5Fconfiguration.html.markdown,r/s3=5Fbucket=5F?= =?UTF-8?q?request=5Fpayment=5Fconfiguration.html.markdown,r/s3=5Fbucket?= =?UTF-8?q?=5Freplication=5Fconfiguration.html.markdown,r/s3=5Fbucket=5Fpu?= =?UTF-8?q?blic=5Faccess=5Fblock.html.markdown,r/s3=5Fbucket=5Fpolicy.html?= =?UTF-8?q?.markdown,r/s3=5Fbucket=5Fownership=5Fcontrols.html.markdown,r/?= =?UTF-8?q?s3=5Fbucket=5Fobject=5Flock=5Fconfiguration.html.markdown,r/s3?= =?UTF-8?q?=5Fbucket=5Fobject.html.markdown,r/s3=5Fbucket=5Fnotification.h?= =?UTF-8?q?tml.markdown,r/s3=5Fbucket=5Fmetric.html.markdown,r/s3=5Fbucket?= =?UTF-8?q?=5Fmetadata=5Fconfiguration.html.markdown,r/s3=5Fbucket=5Floggi?= =?UTF-8?q?ng.html.markdown,r/s3=5Fbucket=5Flifecycle=5Fconfiguration.html?= =?UTF-8?q?.markdown,r/s3=5Fbucket=5Finventory.html.markdown,r/s3=5Fbucket?= =?UTF-8?q?=5Fintelligent=5Ftiering=5Fconfiguration.html.markdown,r/s3=5Fb?= =?UTF-8?q?ucket=5Fcors=5Fconfiguration.html.markdown,r/s3=5Fbucket=5Fanal?= =?UTF-8?q?ytics=5Fconfiguration.html.markdown,r/s3=5Fbucket=5Facl.html.ma?= =?UTF-8?q?rkdown,r/s3=5Fbucket=5Faccelerate=5Fconfiguration.html.markdown?= =?UTF-8?q?,r/s3=5Fbucket.html.markdown,r/s3=5Faccount=5Fpublic=5Faccess?= =?UTF-8?q?=5Fblock.html.markdown,r/s3=5Faccess=5Fpoint.html.markdown,r/ru?= =?UTF-8?q?m=5Fmetrics=5Fdestination.html.markdown,r/rum=5Fapp=5Fmonitor.h?= =?UTF-8?q?tml.markdown,r/route=5Ftable=5Fassociation.html.markdown,r/rout?= =?UTF-8?q?e=5Ftable.html.markdown,r/route53recoveryreadiness=5Fresource?= =?UTF-8?q?=5Fset.html.markdown,r/route53recoveryreadiness=5Frecovery=5Fgr?= =?UTF-8?q?oup.html.markdown,r/route53recoveryreadiness=5Freadiness=5Fchec?= =?UTF-8?q?k.html.markdown,r/route53recoveryreadiness=5Fcell.html.markdown?= =?UTF-8?q?,r/route53recoverycontrolconfig=5Fsafety=5Frule.html.markdown,r?= =?UTF-8?q?/route53recoverycontrolconfig=5Frouting=5Fcontrol.html.markdown?= =?UTF-8?q?,r/route53recoverycontrolconfig=5Fcontrol=5Fpanel.html.markdown?= =?UTF-8?q?,r/route53recoverycontrolconfig=5Fcluster.html.markdown,r/route?= =?UTF-8?q?53profiles=5Fresource=5Fassociation.html.markdown,r/route53prof?= =?UTF-8?q?iles=5Fprofile.html.markdown,r/route53profiles=5Fassociation.ht?= =?UTF-8?q?ml.markdown,r/route53domains=5Fregistered=5Fdomain.html.markdow?= =?UTF-8?q?n,r/route53domains=5Fdomain.html.markdown,r/route53domains=5Fde?= =?UTF-8?q?legation=5Fsigner=5Frecord.html.markdown,r/route53=5Fzone=5Fass?= =?UTF-8?q?ociation.html.markdown,r/route53=5Fzone.html.markdown,r/route53?= =?UTF-8?q?=5Fvpc=5Fassociation=5Fauthorization.html.markdown,r/route53=5F?= =?UTF-8?q?traffic=5Fpolicy=5Finstance.html.markdown,r/route53=5Ftraffic?= =?UTF-8?q?=5Fpolicy.html.markdown,r/route53=5Fresolver=5Frule=5Fassociati?= =?UTF-8?q?on.html.markdown,r/route53=5Fresolver=5Frule.html.markdown,r/ro?= =?UTF-8?q?ute53=5Fresolver=5Fquery=5Flog=5Fconfig=5Fassociation.html.mark?= =?UTF-8?q?down,r/route53=5Fresolver=5Fquery=5Flog=5Fconfig.html.markdown,?= =?UTF-8?q?r/route53=5Fresolver=5Ffirewall=5Frule=5Fgroup=5Fassociation.ht?= =?UTF-8?q?ml.markdown,r/route53=5Fresolver=5Ffirewall=5Frule=5Fgroup.html?= =?UTF-8?q?.markdown,r/route53=5Fresolver=5Ffirewall=5Frule.html.markdown,?= =?UTF-8?q?r/route53=5Fresolver=5Ffirewall=5Fdomain=5Flist.html.markdown,r?= =?UTF-8?q?/route53=5Fresolver=5Ffirewall=5Fconfig.html.markdown,r/route53?= =?UTF-8?q?=5Fresolver=5Fendpoint.html.markdown,r/route53=5Fresolver=5Fdns?= =?UTF-8?q?sec=5Fconfig.html.markdown,r/route53=5Fresolver=5Fconfig.html.m?= =?UTF-8?q?arkdown,r/route53=5Frecords=5Fexclusive.html.markdown,r/route53?= =?UTF-8?q?=5Frecord.html.markdown,r/route53=5Fquery=5Flog.html.markdown,r?= =?UTF-8?q?/route53=5Fkey=5Fsigning=5Fkey.html.markdown,r/route53=5Fhosted?= =?UTF-8?q?=5Fzone=5Fdnssec.html.markdown,r/route53=5Fhealth=5Fcheck.html.?= =?UTF-8?q?markdown,r/route53=5Fdelegation=5Fset.html.markdown,r/route53?= =?UTF-8?q?=5Fcidr=5Flocation.html.markdown,r/route53=5Fcidr=5Fcollection.?= =?UTF-8?q?html.markdown,r/route.html.markdown,r/rolesanywhere=5Ftrust=5Fa?= =?UTF-8?q?nchor.html.markdown,r/rolesanywhere=5Fprofile.html.markdown,r/r?= =?UTF-8?q?esourcegroups=5Fresource.html.markdown,r/resourcegroups=5Fgroup?= =?UTF-8?q?.html.markdown,r/resourceexplorer2=5Fview.html.markdown,r/resou?= =?UTF-8?q?rceexplorer2=5Findex.html.markdown,r/resiliencehub=5Fresiliency?= =?UTF-8?q?=5Fpolicy.html.markdown,r/rekognition=5Fstream=5Fprocessor.html?= =?UTF-8?q?.markdown,r/rekognition=5Fproject.html.markdown,r/rekognition?= =?UTF-8?q?=5Fcollection.html.markdown,r/redshiftserverless=5Fworkgroup.ht?= =?UTF-8?q?ml.markdown,r/redshiftserverless=5Fusage=5Flimit.html.markdown,?= =?UTF-8?q?r/redshiftserverless=5Fsnapshot.html.markdown,r/redshiftserverl?= =?UTF-8?q?ess=5Fresource=5Fpolicy.html.markdown,r/redshiftserverless=5Fna?= =?UTF-8?q?mespace.html.markdown,r/redshiftserverless=5Fendpoint=5Faccess.?= =?UTF-8?q?html.markdown,r/redshiftserverless=5Fcustom=5Fdomain=5Fassociat?= =?UTF-8?q?ion.html.markdown,r/redshiftdata=5Fstatement.html.markdown,r/re?= =?UTF-8?q?dshift=5Fusage=5Flimit.html.markdown,r/redshift=5Fsubnet=5Fgrou?= =?UTF-8?q?p.html.markdown,r/redshift=5Fsnapshot=5Fschedule=5Fassociation.?= =?UTF-8?q?html.markdown,r/redshift=5Fsnapshot=5Fschedule.html.markdown,r/?= =?UTF-8?q?redshift=5Fsnapshot=5Fcopy=5Fgrant.html.markdown,r/redshift=5Fs?= =?UTF-8?q?napshot=5Fcopy.html.markdown,r/redshift=5Fscheduled=5Faction.ht?= =?UTF-8?q?ml.markdown,r/redshift=5Fresource=5Fpolicy.html.markdown,r/reds?= =?UTF-8?q?hift=5Fpartner.html.markdown,r/redshift=5Fparameter=5Fgroup.htm?= =?UTF-8?q?l.markdown,r/redshift=5Flogging.html.markdown,r/redshift=5Finte?= =?UTF-8?q?gration.html.markdown,r/redshift=5Fhsm=5Fconfiguration.html.mar?= =?UTF-8?q?kdown,r/redshift=5Fhsm=5Fclient=5Fcertificate.html.markdown,r/r?= =?UTF-8?q?edshift=5Fevent=5Fsubscription.html.markdown,r/redshift=5Fendpo?= =?UTF-8?q?int=5Fauthorization.html.markdown,r/redshift=5Fendpoint=5Facces?= =?UTF-8?q?s.html.markdown,r/redshift=5Fdata=5Fshare=5Fconsumer=5Fassociat?= =?UTF-8?q?ion.html.markdown,r/redshift=5Fdata=5Fshare=5Fauthorization.htm?= =?UTF-8?q?l.markdown,r/redshift=5Fcluster=5Fsnapshot.html.markdown,r/reds?= =?UTF-8?q?hift=5Fcluster=5Fiam=5Froles.html.markdown,r/redshift=5Fcluster?= =?UTF-8?q?.html.markdown,r/redshift=5Fauthentication=5Fprofile.html.markd?= =?UTF-8?q?own,r/rds=5Fshard=5Fgroup.html.markdown,r/rds=5Freserved=5Finst?= =?UTF-8?q?ance.html.markdown,r/rds=5Fintegration.html.markdown,r/rds=5Fin?= =?UTF-8?q?stance=5Fstate.html.markdown,r/rds=5Fglobal=5Fcluster.html.mark?= =?UTF-8?q?down,r/rds=5Fexport=5Ftask.html.markdown,r/rds=5Fcustom=5Fdb=5F?= =?UTF-8?q?engine=5Fversion.markdown,r/rds=5Fcluster=5Fsnapshot=5Fcopy.htm?= =?UTF-8?q?l.markdown,r/rds=5Fcluster=5Frole=5Fassociation.html.markdown,r?= =?UTF-8?q?/rds=5Fcluster=5Fparameter=5Fgroup.html.markdown,r/rds=5Fcluste?= =?UTF-8?q?r=5Finstance.html.markdown,r/rds=5Fcluster=5Fendpoint.html.mark?= =?UTF-8?q?down,r/rds=5Fcluster=5Factivity=5Fstream.html.markdown,r/rds=5F?= =?UTF-8?q?cluster.html.markdown,r/rds=5Fcertificate.html.markdown,r/rbin?= =?UTF-8?q?=5Frule.html.markdown,r/ram=5Fsharing=5Fwith=5Forganization.htm?= =?UTF-8?q?l.markdown,r/ram=5Fresource=5Fshare=5Faccepter.html.markdown,r/?= =?UTF-8?q?ram=5Fresource=5Fshare.html.markdown,r/ram=5Fresource=5Fassocia?= =?UTF-8?q?tion.html.markdown,r/ram=5Fprincipal=5Fassociation.html.markdow?= =?UTF-8?q?n,r/quicksight=5Fvpc=5Fconnection.html.markdown,r/quicksight=5F?= =?UTF-8?q?user=5Fcustom=5Fpermission.html.markdown,r/quicksight=5Fuser.ht?= =?UTF-8?q?ml.markdown,r/quicksight=5Ftheme.html.markdown,r/quicksight=5Ft?= =?UTF-8?q?emplate=5Falias.html.markdown,r/quicksight=5Ftemplate.html.mark?= =?UTF-8?q?down,r/quicksight=5Frole=5Fmembership.html.markdown,r/quicksigh?= =?UTF-8?q?t=5Frole=5Fcustom=5Fpermission.html.markdown,r/quicksight=5Fref?= =?UTF-8?q?resh=5Fschedule.html.markdown,r/quicksight=5Fnamespace.html.mar?= =?UTF-8?q?kdown,r/quicksight=5Fkey=5Fregistration.html.markdown,r/quicksi?= =?UTF-8?q?ght=5Fip=5Frestriction.html.markdown,r/quicksight=5Fingestion.h?= =?UTF-8?q?tml.markdown,r/quicksight=5Fiam=5Fpolicy=5Fassignment.html.mark?= =?UTF-8?q?down,r/quicksight=5Fgroup=5Fmembership.html.markdown,r/quicksig?= =?UTF-8?q?ht=5Fgroup.html.markdown,r/quicksight=5Ffolder=5Fmembership.htm?= =?UTF-8?q?l.markdown,r/quicksight=5Ffolder.html.markdown,r/quicksight=5Fd?= =?UTF-8?q?ata=5Fsource.html.markdown,r/quicksight=5Fdata=5Fset.html.markd?= =?UTF-8?q?own,r/quicksight=5Fdashboard.html.markdown,r/quicksight=5Fcusto?= =?UTF-8?q?m=5Fpermissions.html.markdown,r/quicksight=5Fanalysis.html.mark?= =?UTF-8?q?down,r/quicksight=5Faccount=5Fsubscription.html.markdown,r/quic?= =?UTF-8?q?ksight=5Faccount=5Fsettings.html.markdown,r/qldb=5Fstream.html.?= =?UTF-8?q?markdown,r/qldb=5Fledger.html.markdown,r/qbusiness=5Fapplicatio?= =?UTF-8?q?n.html.markdown,r/proxy=5Fprotocol=5Fpolicy.html.markdown,r/pro?= =?UTF-8?q?metheus=5Fworkspace=5Fconfiguration.html.markdown,r/prometheus?= =?UTF-8?q?=5Fworkspace.html.markdown,r/prometheus=5Fscraper.html.markdown?= =?UTF-8?q?,r/prometheus=5Frule=5Fgroup=5Fnamespace.html.markdown,r/promet?= =?UTF-8?q?heus=5Fquery=5Flogging=5Fconfiguration.html.markdown,r/promethe?= =?UTF-8?q?us=5Falert=5Fmanager=5Fdefinition.html.markdown,r/placement=5Fg?= =?UTF-8?q?roup.html.markdown,r/pipes=5Fpipe.html.markdown,r/pinpointsmsvo?= =?UTF-8?q?icev2=5Fphone=5Fnumber.html.markdown,r/pinpointsmsvoicev2=5Fopt?= =?UTF-8?q?=5Fout=5Flist.html.markdown,r/pinpointsmsvoicev2=5Fconfiguratio?= =?UTF-8?q?n=5Fset.html.markdown,r/pinpoint=5Fsms=5Fchannel.html.markdown,?= =?UTF-8?q?r/pinpoint=5Fgcm=5Fchannel.html.markdown,r/pinpoint=5Fevent=5Fs?= =?UTF-8?q?tream.html.markdown,r/pinpoint=5Femail=5Ftemplate.markdown,r/pi?= =?UTF-8?q?npoint=5Femail=5Fchannel.html.markdown,r/pinpoint=5Fbaidu=5Fcha?= =?UTF-8?q?nnel.html.markdown,r/pinpoint=5Fapp.html.markdown,r/pinpoint=5F?= =?UTF-8?q?apns=5Fvoip=5Fsandbox=5Fchannel.html.markdown,r/pinpoint=5Fapns?= =?UTF-8?q?=5Fvoip=5Fchannel.html.markdown,r/pinpoint=5Fapns=5Fsandbox=5Fc?= =?UTF-8?q?hannel.html.markdown,r/pinpoint=5Fapns=5Fchannel.html.markdown,?= =?UTF-8?q?r/pinpoint=5Fadm=5Fchannel.html.markdown,r/paymentcryptography?= =?UTF-8?q?=5Fkey=5Falias.html.markdown,r/paymentcryptography=5Fkey.html.m?= =?UTF-8?q?arkdown,r/osis=5Fpipeline.html.markdown,r/organizations=5Fresou?= =?UTF-8?q?rce=5Fpolicy.html.markdown,r/organizations=5Fpolicy=5Fattachmen?= =?UTF-8?q?t.html.markdown,r/organizations=5Fpolicy.html.markdown,r/organi?= =?UTF-8?q?zations=5Forganizational=5Funit.html.markdown,r/organizations?= =?UTF-8?q?=5Forganization.html.markdown,r/organizations=5Fdelegated=5Fadm?= =?UTF-8?q?inistrator.html.markdown,r/organizations=5Faccount.html.markdow?= =?UTF-8?q?n,r/opensearchserverless=5Fvpc=5Fendpoint.html.markdown,r/opens?= =?UTF-8?q?earchserverless=5Fsecurity=5Fpolicy.html.markdown,r/opensearchs?= =?UTF-8?q?erverless=5Fsecurity=5Fconfig.html.markdown,r/opensearchserverl?= =?UTF-8?q?ess=5Flifecycle=5Fpolicy.html.markdown,r/opensearchserverless?= =?UTF-8?q?=5Fcollection.html.markdown,r/opensearchserverless=5Faccess=5Fp?= =?UTF-8?q?olicy.html.markdown,r/opensearch=5Fvpc=5Fendpoint.html.markdown?= =?UTF-8?q?,r/opensearch=5Fpackage=5Fassociation.html.markdown,r/opensearc?= =?UTF-8?q?h=5Fpackage.html.markdown,r/opensearch=5Foutbound=5Fconnection.?= =?UTF-8?q?html.markdown,r/opensearch=5Finbound=5Fconnection=5Faccepter.ht?= =?UTF-8?q?ml.markdown,r/opensearch=5Fdomain=5Fsaml=5Foptions.html.markdow?= =?UTF-8?q?n,r/opensearch=5Fdomain=5Fpolicy.html.markdown,r/opensearch=5Fd?= =?UTF-8?q?omain.html.markdown,r/opensearch=5Fauthorize=5Fvpc=5Fendpoint?= =?UTF-8?q?=5Faccess.html.markdown,r/odb=5Fnetwork=5Fpeering=5Fconnection.?= =?UTF-8?q?html.markdown,r/odb=5Fnetwork.html.markdown,r/odb=5Fcloud=5Fvm?= =?UTF-8?q?=5Fcluster.html.markdown,r/odb=5Fcloud=5Fexadata=5Finfrastructu?= =?UTF-8?q?re.html.markdown,r/odb=5Fcloud=5Fautonomous=5Fvm=5Fcluster.html?= =?UTF-8?q?.markdown,r/oam=5Fsink=5Fpolicy.html.markdown,r/oam=5Fsink.html?= =?UTF-8?q?.markdown,r/oam=5Flink.html.markdown,r/notificationscontacts=5F?= =?UTF-8?q?email=5Fcontact.html.markdown,r/notifications=5Fnotification=5F?= =?UTF-8?q?hub.html.markdown,r/notifications=5Fnotification=5Fconfiguratio?= =?UTF-8?q?n.html.markdown,r/notifications=5Fevent=5Frule.html.markdown,r/?= =?UTF-8?q?notifications=5Fchannel=5Fassociation.html.markdown,r/networkmo?= =?UTF-8?q?nitor=5Fprobe.html.markdown,r/networkmonitor=5Fmonitor.html.mar?= =?UTF-8?q?kdown,r/networkmanager=5Fvpc=5Fattachment.html.markdown,r/netwo?= =?UTF-8?q?rkmanager=5Ftransit=5Fgateway=5Froute=5Ftable=5Fattachment.html?= =?UTF-8?q?.markdown,r/networkmanager=5Ftransit=5Fgateway=5Fregistration.h?= =?UTF-8?q?tml.markdown,r/networkmanager=5Ftransit=5Fgateway=5Fpeering.htm?= =?UTF-8?q?l.markdown,r/networkmanager=5Ftransit=5Fgateway=5Fconnect=5Fpee?= =?UTF-8?q?r=5Fassociation.html.markdown,r/networkmanager=5Fsite=5Fto=5Fsi?= =?UTF-8?q?te=5Fvpn=5Fattachment.html.markdown,r/networkmanager=5Fsite.htm?= =?UTF-8?q?l.markdown,r/networkmanager=5Flink=5Fassociation.html.markdown,?= =?UTF-8?q?r/networkmanager=5Flink.html.markdown,r/networkmanager=5Fglobal?= =?UTF-8?q?=5Fnetwork.html.markdown,r/networkmanager=5Fdx=5Fgateway=5Fatta?= =?UTF-8?q?chment.html.markdown,r/networkmanager=5Fdevice.html.markdown,r/?= =?UTF-8?q?networkmanager=5Fcustomer=5Fgateway=5Fassociation.html.markdown?= =?UTF-8?q?,r/networkmanager=5Fcore=5Fnetwork=5Fpolicy=5Fattachment.html.m?= =?UTF-8?q?arkdown,r/networkmanager=5Fcore=5Fnetwork.html.markdown,r/netwo?= =?UTF-8?q?rkmanager=5Fconnection.html.markdown,r/networkmanager=5Fconnect?= =?UTF-8?q?=5Fpeer.html.markdown,r/networkmanager=5Fconnect=5Fattachment.h?= =?UTF-8?q?tml.markdown,r/networkmanager=5Fattachment=5Faccepter.html.mark?= =?UTF-8?q?down,r/networkfirewall=5Fvpc=5Fendpoint=5Fassociation.html.mark?= =?UTF-8?q?down,r/networkfirewall=5Ftls=5Finspection=5Fconfiguration.html.?= =?UTF-8?q?markdown,r/networkfirewall=5Frule=5Fgroup.html.markdown,r/netwo?= =?UTF-8?q?rkfirewall=5Fresource=5Fpolicy.html.markdown,r/networkfirewall?= =?UTF-8?q?=5Flogging=5Fconfiguration.html.markdown,r/networkfirewall=5Ffi?= =?UTF-8?q?rewall=5Ftransit=5Fgateway=5Fattachment=5Faccepter.html.markdow?= =?UTF-8?q?n,r/networkfirewall=5Ffirewall=5Fpolicy.html.markdown,r/network?= =?UTF-8?q?firewall=5Ffirewall.html.markdown,r/network=5Finterface=5Fsg=5F?= =?UTF-8?q?attachment.html.markdown,r/network=5Finterface=5Fpermission.htm?= =?UTF-8?q?l.markdown,r/network=5Finterface=5Fattachment.html.markdown,r/n?= =?UTF-8?q?etwork=5Finterface.html.markdown,r/network=5Facl=5Frule.html.ma?= =?UTF-8?q?rkdown,r/network=5Facl=5Fassociation.html.markdown,r/network=5F?= =?UTF-8?q?acl.html.markdown,r/neptunegraph=5Fgraph.html.markdown,r/neptun?= =?UTF-8?q?e=5Fsubnet=5Fgroup.html.markdown,r/neptune=5Fparameter=5Fgroup.?= =?UTF-8?q?html.markdown,r/neptune=5Fglobal=5Fcluster.html.markdown,r/nept?= =?UTF-8?q?une=5Fevent=5Fsubscription.html.markdown,r/neptune=5Fcluster=5F?= =?UTF-8?q?snapshot.html.markdown,r/neptune=5Fcluster=5Fparameter=5Fgroup.?= =?UTF-8?q?html.markdown,r/neptune=5Fcluster=5Finstance.html.markdown,r/ne?= =?UTF-8?q?ptune=5Fcluster=5Fendpoint.html.markdown,r/neptune=5Fcluster.ht?= =?UTF-8?q?ml.markdown,r/nat=5Fgateway=5Feip=5Fassociation.html.markdown,r?= =?UTF-8?q?/nat=5Fgateway.html.markdown,r/mwaa=5Fenvironment.html.markdown?= =?UTF-8?q?,r/mskconnect=5Fworker=5Fconfiguration.html.markdown,r/mskconne?= =?UTF-8?q?ct=5Fcustom=5Fplugin.html.markdown,r/mskconnect=5Fconnector.htm?= =?UTF-8?q?l.markdown,r/msk=5Fvpc=5Fconnection.html.markdown,r/msk=5Fsingl?= =?UTF-8?q?e=5Fscram=5Fsecret=5Fassociation.html.markdown,r/msk=5Fserverle?= =?UTF-8?q?ss=5Fcluster.html.markdown,r/msk=5Fscram=5Fsecret=5Fassociation?= =?UTF-8?q?.html.markdown,r/msk=5Freplicator.html.markdown,r/msk=5Fconfigu?= =?UTF-8?q?ration.html.markdown,r/msk=5Fcluster=5Fpolicy.html.markdown,r/m?= =?UTF-8?q?sk=5Fcluster.html.markdown,r/mq=5Fconfiguration.html.markdown,r?= =?UTF-8?q?/mq=5Fbroker.html.markdown,r/memorydb=5Fuser.html.markdown,r/me?= =?UTF-8?q?morydb=5Fsubnet=5Fgroup.html.markdown,r/memorydb=5Fsnapshot.htm?= =?UTF-8?q?l.markdown,r/memorydb=5Fparameter=5Fgroup.html.markdown,r/memor?= =?UTF-8?q?ydb=5Fmulti=5Fregion=5Fcluster.html.markdown,r/memorydb=5Fclust?= =?UTF-8?q?er.html.markdown,r/memorydb=5Facl.html.markdown,r/medialive=5Fm?= =?UTF-8?q?ultiplex=5Fprogram.html.markdown,r/medialive=5Fmultiplex.html.m?= =?UTF-8?q?arkdown,r/medialive=5Finput=5Fsecurity=5Fgroup.html.markdown,r/?= =?UTF-8?q?medialive=5Finput.html.markdown,r/medialive=5Fchannel.html.mark?= =?UTF-8?q?down,r/media=5Fstore=5Fcontainer=5Fpolicy.html.markdown,r/media?= =?UTF-8?q?=5Fstore=5Fcontainer.html.markdown,r/media=5Fpackagev2=5Fchanne?= =?UTF-8?q?l=5Fgroup.html.markdown,r/media=5Fpackage=5Fchannel.html.markdo?= =?UTF-8?q?wn,r/media=5Fconvert=5Fqueue.html.markdown,r/main=5Froute=5Ftab?= =?UTF-8?q?le=5Fassociation.html.markdown,r/macie2=5Forganization=5Fconfig?= =?UTF-8?q?uration.html.markdown,r/macie2=5Forganization=5Fadmin=5Faccount?= =?UTF-8?q?.html.markdown,r/macie2=5Fmember.html.markdown,r/macie2=5Finvit?= =?UTF-8?q?ation=5Faccepter.html.markdown,r/macie2=5Ffindings=5Ffilter.htm?= =?UTF-8?q?l.markdown,r/macie2=5Fcustom=5Fdata=5Fidentifier.html.markdown,?= =?UTF-8?q?r/macie2=5Fclassification=5Fjob.html.markdown,r/macie2=5Fclassi?= =?UTF-8?q?fication=5Fexport=5Fconfiguration.html.markdown,r/macie2=5Facco?= =?UTF-8?q?unt.html.markdown,r/m2=5Fenvironment.html.markdown,r/m2=5Fdeplo?= =?UTF-8?q?yment.html.markdown,r/m2=5Fapplication.html.markdown,r/location?= =?UTF-8?q?=5Ftracker=5Fassociation.html.markdown,r/location=5Ftracker.htm?= =?UTF-8?q?l.markdown,r/location=5Froute=5Fcalculator.html.markdown,r/loca?= =?UTF-8?q?tion=5Fplace=5Findex.html.markdown,r/location=5Fmap.html.markdo?= =?UTF-8?q?wn,r/location=5Fgeofence=5Fcollection.html.markdown,r/load=5Fba?= =?UTF-8?q?lancer=5Fpolicy.html.markdown,r/load=5Fbalancer=5Flistener=5Fpo?= =?UTF-8?q?licy.html.markdown,r/load=5Fbalancer=5Fbackend=5Fserver=5Fpolic?= =?UTF-8?q?y.html.markdown,r/lightsail=5Fstatic=5Fip=5Fattachment.html.mar?= =?UTF-8?q?kdown,r/lightsail=5Fstatic=5Fip.html.markdown,r/lightsail=5Flb?= =?UTF-8?q?=5Fstickiness=5Fpolicy.html.markdown,r/lightsail=5Flb=5Fhttps?= =?UTF-8?q?=5Fredirection=5Fpolicy.html.markdown,r/lightsail=5Flb=5Fcertif?= =?UTF-8?q?icate=5Fattachment.html.markdown,r/lightsail=5Flb=5Fcertificate?= =?UTF-8?q?.html.markdown,r/lightsail=5Flb=5Fattachment.html.markdown,r/li?= =?UTF-8?q?ghtsail=5Flb.html.markdown,r/lightsail=5Fkey=5Fpair.html.markdo?= =?UTF-8?q?wn,r/lightsail=5Finstance=5Fpublic=5Fports.html.markdown,r/ligh?= =?UTF-8?q?tsail=5Finstance.html.markdown,r/lightsail=5Fdomain=5Fentry.htm?= =?UTF-8?q?l.markdown,r/lightsail=5Fdomain.html.markdown,r/lightsail=5Fdis?= =?UTF-8?q?tribution.html.markdown,r/lightsail=5Fdisk=5Fattachment.html.ma?= =?UTF-8?q?rkdown,r/lightsail=5Fdisk.html.markdown,r/lightsail=5Fdatabase.?= =?UTF-8?q?html.markdown,r/lightsail=5Fcontainer=5Fservice=5Fdeployment=5F?= =?UTF-8?q?version.html.markdown,r/lightsail=5Fcontainer=5Fservice.html.ma?= =?UTF-8?q?rkdown,r/lightsail=5Fcertificate.html.markdown,r/lightsail=5Fbu?= =?UTF-8?q?cket=5Fresource=5Faccess.html.markdown,r/lightsail=5Fbucket=5Fa?= =?UTF-8?q?ccess=5Fkey.html.markdown,r/lightsail=5Fbucket.html.markdown,r/?= =?UTF-8?q?licensemanager=5Flicense=5Fconfiguration.html.markdown,r/licens?= =?UTF-8?q?emanager=5Fgrant=5Faccepter.html.markdown,r/licensemanager=5Fgr?= =?UTF-8?q?ant.html.markdown,r/licensemanager=5Fassociation.html.markdown,?= =?UTF-8?q?r/lexv2models=5Fslot=5Ftype.html.markdown,r/lexv2models=5Fslot.?= =?UTF-8?q?html.markdown,r/lexv2models=5Fintent.html.markdown,r/lexv2model?= =?UTF-8?q?s=5Fbot=5Fversion.html.markdown,r/lexv2models=5Fbot=5Flocale.ht?= =?UTF-8?q?ml.markdown,r/lexv2models=5Fbot.html.markdown,r/lex=5Fslot=5Fty?= =?UTF-8?q?pe.html.markdown,r/lex=5Fintent.html.markdown,r/lex=5Fbot=5Fali?= =?UTF-8?q?as.html.markdown,r/lex=5Fbot.html.markdown,r/lb=5Ftrust=5Fstore?= =?UTF-8?q?=5Frevocation.html.markdown,r/lb=5Ftrust=5Fstore.html.markdown,?= =?UTF-8?q?r/lb=5Ftarget=5Fgroup=5Fattachment.html.markdown,r/lb=5Ftarget?= =?UTF-8?q?=5Fgroup.html.markdown,r/lb=5Fssl=5Fnegotiation=5Fpolicy.html.m?= =?UTF-8?q?arkdown,r/lb=5Flistener=5Frule.html.markdown,r/lb=5Flistener=5F?= =?UTF-8?q?certificate.html.markdown,r/lb=5Flistener.html.markdown,r/lb=5F?= =?UTF-8?q?cookie=5Fstickiness=5Fpolicy.html.markdown,r/lb.html.markdown,r?= =?UTF-8?q?/launch=5Ftemplate.html.markdown,r/launch=5Fconfiguration.html.?= =?UTF-8?q?markdown,r/lambda=5Fruntime=5Fmanagement=5Fconfig.html.markdown?= =?UTF-8?q?,r/lambda=5Fprovisioned=5Fconcurrency=5Fconfig.html.markdown,r/?= =?UTF-8?q?lambda=5Fpermission.html.markdown,r/lambda=5Flayer=5Fversion=5F?= =?UTF-8?q?permission.html.markdown,r/lambda=5Flayer=5Fversion.html.markdo?= =?UTF-8?q?wn,r/lambda=5Finvocation.html.markdown,r/lambda=5Ffunction=5Fur?= =?UTF-8?q?l.html.markdown,r/lambda=5Ffunction=5Frecursion=5Fconfig.html.m?= =?UTF-8?q?arkdown,r/lambda=5Ffunction=5Fevent=5Finvoke=5Fconfig.html.mark?= =?UTF-8?q?down,r/lambda=5Ffunction.html.markdown,r/lambda=5Fevent=5Fsourc?= =?UTF-8?q?e=5Fmapping.html.markdown,r/lambda=5Fcode=5Fsigning=5Fconfig.ht?= =?UTF-8?q?ml.markdown,r/lambda=5Falias.html.markdown,r/lakeformation=5Fre?= =?UTF-8?q?source=5Flf=5Ftags.html.markdown,r/lakeformation=5Fresource=5Fl?= =?UTF-8?q?f=5Ftag.html.markdown,r/lakeformation=5Fresource.html.markdown,?= =?UTF-8?q?r/lakeformation=5Fpermissions.html.markdown,r/lakeformation=5Fo?= =?UTF-8?q?pt=5Fin.html.markdown,r/lakeformation=5Flf=5Ftag.html.markdown,?= =?UTF-8?q?r/lakeformation=5Fdata=5Flake=5Fsettings.html.markdown,r/lakefo?= =?UTF-8?q?rmation=5Fdata=5Fcells=5Ffilter.html.markdown,r/kms=5Freplica?= =?UTF-8?q?=5Fkey.html.markdown,r/kms=5Freplica=5Fexternal=5Fkey.html.mark?= =?UTF-8?q?down,r/kms=5Fkey=5Fpolicy.html.markdown,r/kms=5Fkey.html.markdo?= =?UTF-8?q?wn,r/kms=5Fgrant.html.markdown,r/kms=5Fexternal=5Fkey.html.mark?= =?UTF-8?q?down,r/kms=5Fcustom=5Fkey=5Fstore.html.markdown,r/kms=5Fciphert?= =?UTF-8?q?ext.html.markdown,r/kms=5Falias.html.markdown,r/kinesisanalytic?= =?UTF-8?q?sv2=5Fapplication=5Fsnapshot.html.markdown,r/kinesisanalyticsv2?= =?UTF-8?q?=5Fapplication.html.markdown,r/kinesis=5Fvideo=5Fstream.html.ma?= =?UTF-8?q?rkdown,r/kinesis=5Fstream=5Fconsumer.html.markdown,r/kinesis=5F?= =?UTF-8?q?stream.html.markdown,r/kinesis=5Fresource=5Fpolicy.html.markdow?= =?UTF-8?q?n,r/kinesis=5Ffirehose=5Fdelivery=5Fstream.html.markdown,r/kine?= =?UTF-8?q?sis=5Fanalytics=5Fapplication.html.markdown,r/keyspaces=5Ftable?= =?UTF-8?q?.html.markdown,r/keyspaces=5Fkeyspace.html.markdown,r/key=5Fpai?= =?UTF-8?q?r.html.markdown,r/kendra=5Fthesaurus.html.markdown,r/kendra=5Fq?= =?UTF-8?q?uery=5Fsuggestions=5Fblock=5Flist.html.markdown,r/kendra=5Finde?= =?UTF-8?q?x.html.markdown,r/kendra=5Ffaq.html.markdown,r/kendra=5Fexperie?= =?UTF-8?q?nce.html.markdown,r/kendra=5Fdata=5Fsource.html.markdown,r/ivsc?= =?UTF-8?q?hat=5Froom.html.markdown,r/ivschat=5Flogging=5Fconfiguration.ht?= =?UTF-8?q?ml.markdown,r/ivs=5Frecording=5Fconfiguration.html.markdown,r/i?= =?UTF-8?q?vs=5Fplayback=5Fkey=5Fpair.html.markdown,r/ivs=5Fchannel.html.m?= =?UTF-8?q?arkdown,r/iot=5Ftopic=5Frule=5Fdestination.html.markdown,r/iot?= =?UTF-8?q?=5Ftopic=5Frule.html.markdown,r/iot=5Fthing=5Ftype.html.markdow?= =?UTF-8?q?n,r/iot=5Fthing=5Fprincipal=5Fattachment.html.markdown,r/iot=5F?= =?UTF-8?q?thing=5Fgroup=5Fmembership.html.markdown,r/iot=5Fthing=5Fgroup.?= =?UTF-8?q?html.markdown,r/iot=5Fthing.html.markdown,r/iot=5Frole=5Falias.?= =?UTF-8?q?html.markdown,r/iot=5Fprovisioning=5Ftemplate.html.markdown,r/i?= =?UTF-8?q?ot=5Fpolicy=5Fattachment.html.markdown,r/iot=5Fpolicy.html.mark?= =?UTF-8?q?down,r/iot=5Flogging=5Foptions.html.markdown,r/iot=5Findexing?= =?UTF-8?q?=5Fconfiguration.html.markdown,r/iot=5Fevent=5Fconfigurations.h?= =?UTF-8?q?tml.markdown,r/iot=5Fdomain=5Fconfiguration.html.markdown,r/iot?= =?UTF-8?q?=5Fcertificate.html.markdown,r/iot=5Fca=5Fcertificate.html.mark?= =?UTF-8?q?down,r/iot=5Fbilling=5Fgroup.html.markdown,r/iot=5Fauthorizer.h?= =?UTF-8?q?tml.markdown,r/internetmonitor=5Fmonitor.html.markdown,r/intern?= =?UTF-8?q?et=5Fgateway=5Fattachment.html.markdown,r/internet=5Fgateway.ht?= =?UTF-8?q?ml.markdown,r/instance.html.markdown,r/inspector=5Fresource=5Fg?= =?UTF-8?q?roup.html.markdown,r/inspector=5Fassessment=5Ftemplate.html.mar?= =?UTF-8?q?kdown,r/inspector=5Fassessment=5Ftarget.html.markdown,r/inspect?= =?UTF-8?q?or2=5Forganization=5Fconfiguration.html.markdown,r/inspector2?= =?UTF-8?q?=5Fmember=5Fassociation.html.markdown,r/inspector2=5Ffilter.htm?= =?UTF-8?q?l.markdown,r/inspector2=5Fenabler.html.markdown,r/inspector2=5F?= =?UTF-8?q?delegated=5Fadmin=5Faccount.html.markdown,r/imagebuilder=5Fwork?= =?UTF-8?q?flow.html.markdown,r/imagebuilder=5Flifecycle=5Fpolicy.html.mar?= =?UTF-8?q?kdown,r/imagebuilder=5Finfrastructure=5Fconfiguration.html.mark?= =?UTF-8?q?down,r/imagebuilder=5Fimage=5Frecipe.html.markdown,r/imagebuild?= =?UTF-8?q?er=5Fimage=5Fpipeline.html.markdown,r/imagebuilder=5Fimage.html?= =?UTF-8?q?.markdown,r/imagebuilder=5Fdistribution=5Fconfiguration.html.ma?= =?UTF-8?q?rkdown,r/imagebuilder=5Fcontainer=5Frecipe.html.markdown,r/imag?= =?UTF-8?q?ebuilder=5Fcomponent.html.markdown,r/identitystore=5Fuser.html.?= =?UTF-8?q?markdown,r/identitystore=5Fgroup=5Fmembership.html.markdown,r/i?= =?UTF-8?q?dentitystore=5Fgroup.html.markdown,r/iam=5Fvirtual=5Fmfa=5Fdevi?= =?UTF-8?q?ce.html.markdown,r/iam=5Fuser=5Fssh=5Fkey.html.markdown,r/iam?= =?UTF-8?q?=5Fuser=5Fpolicy=5Fattachments=5Fexclusive.html.markdown,r/iam?= =?UTF-8?q?=5Fuser=5Fpolicy=5Fattachment.html.markdown,r/iam=5Fuser=5Fpoli?= =?UTF-8?q?cy.html.markdown,r/iam=5Fuser=5Fpolicies=5Fexclusive.html.markd?= =?UTF-8?q?own,r/iam=5Fuser=5Flogin=5Fprofile.html.markdown,r/iam=5Fuser?= =?UTF-8?q?=5Fgroup=5Fmembership.html.markdown,r/iam=5Fuser.html.markdown,?= =?UTF-8?q?r/iam=5Fsigning=5Fcertificate.html.markdown,r/iam=5Fservice=5Fs?= =?UTF-8?q?pecific=5Fcredential.html.markdown,r/iam=5Fservice=5Flinked=5Fr?= =?UTF-8?q?ole.html.markdown,r/iam=5Fserver=5Fcertificate.html.markdown,r/?= =?UTF-8?q?iam=5Fsecurity=5Ftoken=5Fservice=5Fpreferences.html.markdown,r/?= =?UTF-8?q?iam=5Fsaml=5Fprovider.html.markdown,r/iam=5Frole=5Fpolicy=5Fatt?= =?UTF-8?q?achments=5Fexclusive.html.markdown,r/iam=5Frole=5Fpolicy=5Fatta?= =?UTF-8?q?chment.html.markdown,r/iam=5Frole=5Fpolicy.html.markdown,r/iam?= =?UTF-8?q?=5Frole=5Fpolicies=5Fexclusive.html.markdown,r/iam=5Frole.html.?= =?UTF-8?q?markdown,r/iam=5Fpolicy=5Fattachment.html.markdown,r/iam=5Fpoli?= =?UTF-8?q?cy.html.markdown,r/iam=5Forganizations=5Ffeatures.html.markdown?= =?UTF-8?q?,r/iam=5Fopenid=5Fconnect=5Fprovider.html.markdown,r/iam=5Finst?= =?UTF-8?q?ance=5Fprofile.html.markdown,r/iam=5Fgroup=5Fpolicy=5Fattachmen?= =?UTF-8?q?ts=5Fexclusive.html.markdown,r/iam=5Fgroup=5Fpolicy=5Fattachmen?= =?UTF-8?q?t.html.markdown,r/iam=5Fgroup=5Fpolicy.html.markdown,r/iam=5Fgr?= =?UTF-8?q?oup=5Fpolicies=5Fexclusive.html.markdown,r/iam=5Fgroup=5Fmember?= =?UTF-8?q?ship.html.markdown,r/iam=5Fgroup.html.markdown,r/iam=5Faccount?= =?UTF-8?q?=5Fpassword=5Fpolicy.html.markdown,r/iam=5Faccount=5Falias.html?= =?UTF-8?q?.markdown,r/iam=5Faccess=5Fkey.html.markdown,r/guardduty=5Fthre?= =?UTF-8?q?atintelset.html.markdown,r/guardduty=5Fpublishing=5Fdestination?= =?UTF-8?q?.html.markdown,r/guardduty=5Forganization=5Fconfiguration=5Ffea?= =?UTF-8?q?ture.html.markdown,r/guardduty=5Forganization=5Fconfiguration.h?= =?UTF-8?q?tml.markdown,r/guardduty=5Forganization=5Fadmin=5Faccount.html.?= =?UTF-8?q?markdown,r/guardduty=5Fmember=5Fdetector=5Ffeature.html.markdow?= =?UTF-8?q?n,r/guardduty=5Fmember.html.markdown,r/guardduty=5Fmalware=5Fpr?= =?UTF-8?q?otection=5Fplan.html.markdown,r/guardduty=5Fipset.html.markdown?= =?UTF-8?q?,r/guardduty=5Finvite=5Faccepter.html.markdown,r/guardduty=5Ffi?= =?UTF-8?q?lter.html.markdown,r/guardduty=5Fdetector=5Ffeature.html.markdo?= =?UTF-8?q?wn,r/guardduty=5Fdetector.html.markdown,r/grafana=5Fworkspace?= =?UTF-8?q?=5Fservice=5Faccount=5Ftoken.html.markdown,r/grafana=5Fworkspac?= =?UTF-8?q?e=5Fservice=5Faccount.html.markdown,r/grafana=5Fworkspace=5Fsam?= =?UTF-8?q?l=5Fconfiguration.html.markdown,r/grafana=5Fworkspace=5Fapi=5Fk?= =?UTF-8?q?ey.html.markdown,r/grafana=5Fworkspace.html.markdown,r/grafana?= =?UTF-8?q?=5Frole=5Fassociation.html.markdown,r/grafana=5Flicense=5Fassoc?= =?UTF-8?q?iation.html.markdown,r/glue=5Fworkflow.html.markdown,r/glue=5Fu?= =?UTF-8?q?ser=5Fdefined=5Ffunction.html.markdown,r/glue=5Ftrigger.html.ma?= =?UTF-8?q?rkdown,r/glue=5Fsecurity=5Fconfiguration.html.markdown,r/glue?= =?UTF-8?q?=5Fschema.html.markdown,r/glue=5Fresource=5Fpolicy.html.markdow?= =?UTF-8?q?n,r/glue=5Fregistry.html.markdown,r/glue=5Fpartition=5Findex.ht?= =?UTF-8?q?ml.markdown,r/glue=5Fpartition.html.markdown,r/glue=5Fml=5Ftran?= =?UTF-8?q?sform.html.markdown,r/glue=5Fjob.html.markdown,r/glue=5Fdev=5Fe?= =?UTF-8?q?ndpoint.html.markdown,r/glue=5Fdata=5Fquality=5Fruleset.html.ma?= =?UTF-8?q?rkdown,r/glue=5Fdata=5Fcatalog=5Fencryption=5Fsettings.html.mar?= =?UTF-8?q?kdown,r/glue=5Fcrawler.html.markdown,r/glue=5Fconnection.html.m?= =?UTF-8?q?arkdown,r/glue=5Fclassifier.html.markdown,r/glue=5Fcatalog=5Fta?= =?UTF-8?q?ble=5Foptimizer.html.markdown,r/glue=5Fcatalog=5Ftable.html.mar?= =?UTF-8?q?kdown,r/glue=5Fcatalog=5Fdatabase.html.markdown,r/globalacceler?= =?UTF-8?q?ator=5Flistener.html.markdown,r/globalaccelerator=5Fendpoint=5F?= =?UTF-8?q?group.html.markdown,r/globalaccelerator=5Fcustom=5Frouting=5Fli?= =?UTF-8?q?stener.html.markdown,r/globalaccelerator=5Fcustom=5Frouting=5Fe?= =?UTF-8?q?ndpoint=5Fgroup.html.markdown,r/globalaccelerator=5Fcustom=5Fro?= =?UTF-8?q?uting=5Faccelerator.html.markdown,r/globalaccelerator=5Fcross?= =?UTF-8?q?=5Faccount=5Fattachment.html.markdown,r/globalaccelerator=5Facc?= =?UTF-8?q?elerator.html.markdown,r/glacier=5Fvault=5Flock.html.markdown,r?= =?UTF-8?q?/glacier=5Fvault.html.markdown,r/gamelift=5Fscript.html.markdow?= =?UTF-8?q?n,r/gamelift=5Fgame=5Fsession=5Fqueue.html.markdown,r/gamelift?= =?UTF-8?q?=5Fgame=5Fserver=5Fgroup.html.markdown,r/gamelift=5Ffleet.html.?= =?UTF-8?q?markdown,r/gamelift=5Fbuild.html.markdown,r/gamelift=5Falias.ht?= =?UTF-8?q?ml.markdown,r/fsx=5Fwindows=5Ffile=5Fsystem.html.markdown,r/fsx?= =?UTF-8?q?=5Fs3=5Faccess=5Fpoint=5Fattachment.html.markdown,r/fsx=5Fopenz?= =?UTF-8?q?fs=5Fvolume.html.markdown,r/fsx=5Fopenzfs=5Fsnapshot.html.markd?= =?UTF-8?q?own,r/fsx=5Fopenzfs=5Ffile=5Fsystem.html.markdown,r/fsx=5Fontap?= =?UTF-8?q?=5Fvolume.html.markdown,r/fsx=5Fontap=5Fstorage=5Fvirtual=5Fmac?= =?UTF-8?q?hine.html.markdown,r/fsx=5Fontap=5Ffile=5Fsystem.html.markdown,?= =?UTF-8?q?r/fsx=5Flustre=5Ffile=5Fsystem.html.markdown,r/fsx=5Ffile=5Fcac?= =?UTF-8?q?he.html.markdown,r/fsx=5Fdata=5Frepository=5Fassociation.html.m?= =?UTF-8?q?arkdown,r/fsx=5Fbackup.html.markdown,r/fms=5Fresource=5Fset.htm?= =?UTF-8?q?l.markdown,r/fms=5Fpolicy.html.markdown,r/fms=5Fadmin=5Faccount?= =?UTF-8?q?.html.markdown,r/flow=5Flog.html.markdown,r/fis=5Fexperiment=5F?= =?UTF-8?q?template.html.markdown,r/finspace=5Fkx=5Fvolume.html.markdown,r?= =?UTF-8?q?/finspace=5Fkx=5Fuser.html.markdown,r/finspace=5Fkx=5Fscaling?= =?UTF-8?q?=5Fgroup.html.markdown,r/finspace=5Fkx=5Fenvironment.html.markd?= =?UTF-8?q?own,r/finspace=5Fkx=5Fdataview.html.markdown,r/finspace=5Fkx=5F?= =?UTF-8?q?database.html.markdown,r/finspace=5Fkx=5Fcluster.html.markdown,?= =?UTF-8?q?r/evidently=5Fsegment.html.markdown,r/evidently=5Fproject.html.?= =?UTF-8?q?markdown,r/evidently=5Flaunch.html.markdown,r/evidently=5Ffeatu?= =?UTF-8?q?re.html.markdown,r/emrserverless=5Fapplication.html.markdown,r/?= =?UTF-8?q?emrcontainers=5Fvirtual=5Fcluster.html.markdown,r/emrcontainers?= =?UTF-8?q?=5Fjob=5Ftemplate.html.markdown,r/emr=5Fstudio=5Fsession=5Fmapp?= =?UTF-8?q?ing.html.markdown,r/emr=5Fstudio.html.markdown,r/emr=5Fsecurity?= =?UTF-8?q?=5Fconfiguration.html.markdown,r/emr=5Fmanaged=5Fscaling=5Fpoli?= =?UTF-8?q?cy.html.markdown,r/emr=5Finstance=5Fgroup.html.markdown,r/emr?= =?UTF-8?q?=5Finstance=5Ffleet.html.markdown,r/emr=5Fcluster.html.markdown?= =?UTF-8?q?,r/emr=5Fblock=5Fpublic=5Faccess=5Fconfiguration.html.markdown,?= =?UTF-8?q?r/elb=5Fattachment.html.markdown,r/elb.html.markdown,r/elastict?= =?UTF-8?q?ranscoder=5Fpreset.html.markdown,r/elastictranscoder=5Fpipeline?= =?UTF-8?q?.html.markdown,r/elasticsearch=5Fvpc=5Fendpoint.html.markdown,r?= =?UTF-8?q?/elasticsearch=5Fdomain=5Fsaml=5Foptions.html.markdown,r/elasti?= =?UTF-8?q?csearch=5Fdomain=5Fpolicy.html.markdown,r/elasticsearch=5Fdomai?= =?UTF-8?q?n.html.markdown,r/elasticache=5Fuser=5Fgroup=5Fassociation.html?= =?UTF-8?q?.markdown,r/elasticache=5Fuser=5Fgroup.html.markdown,r/elastica?= =?UTF-8?q?che=5Fuser.html.markdown,r/elasticache=5Fsubnet=5Fgroup.html.ma?= =?UTF-8?q?rkdown,r/elasticache=5Fserverless=5Fcache.html.markdown,r/elast?= =?UTF-8?q?icache=5Freserved=5Fcache=5Fnode.html.markdown,r/elasticache=5F?= =?UTF-8?q?replication=5Fgroup.html.markdown,r/elasticache=5Fparameter=5Fg?= =?UTF-8?q?roup.html.markdown,r/elasticache=5Fglobal=5Freplication=5Fgroup?= =?UTF-8?q?.html.markdown,r/elasticache=5Fcluster.html.markdown,r/elastic?= =?UTF-8?q?=5Fbeanstalk=5Fenvironment.html.markdown,r/elastic=5Fbeanstalk?= =?UTF-8?q?=5Fconfiguration=5Ftemplate.html.markdown,r/elastic=5Fbeanstalk?= =?UTF-8?q?=5Fapplication=5Fversion.html.markdown,r/elastic=5Fbeanstalk=5F?= =?UTF-8?q?application.html.markdown,r/eks=5Fpod=5Fidentity=5Fassociation.?= =?UTF-8?q?html.markdown,r/eks=5Fnode=5Fgroup.html.markdown,r/eks=5Fidenti?= =?UTF-8?q?ty=5Fprovider=5Fconfig.html.markdown,r/eks=5Ffargate=5Fprofile.?= =?UTF-8?q?html.markdown,r/eks=5Fcluster.html.markdown,r/eks=5Faddon.html.?= =?UTF-8?q?markdown,r/eks=5Faccess=5Fpolicy=5Fassociation.html.markdown,r/?= =?UTF-8?q?eks=5Faccess=5Fentry.html.markdown,r/eip=5Fdomain=5Fname.html.m?= =?UTF-8?q?arkdown,r/eip=5Fassociation.html.markdown,r/eip.html.markdown,r?= =?UTF-8?q?/egress=5Fonly=5Finternet=5Fgateway.html.markdown,r/efs=5Frepli?= =?UTF-8?q?cation=5Fconfiguration.html.markdown,r/efs=5Fmount=5Ftarget.htm?= =?UTF-8?q?l.markdown,r/efs=5Ffile=5Fsystem=5Fpolicy.html.markdown,r/efs?= =?UTF-8?q?=5Ffile=5Fsystem.html.markdown,r/efs=5Fbackup=5Fpolicy.html.mar?= =?UTF-8?q?kdown,r/efs=5Faccess=5Fpoint.html.markdown,r/ecs=5Ftask=5Fset.h?= =?UTF-8?q?tml.markdown,r/ecs=5Ftask=5Fdefinition.html.markdown,r/ecs=5Fta?= =?UTF-8?q?g.html.markdown,r/ecs=5Fservice.html.markdown,r/ecs=5Fcluster?= =?UTF-8?q?=5Fcapacity=5Fproviders.html.markdown,r/ecs=5Fcluster.html.mark?= =?UTF-8?q?down,r/ecs=5Fcapacity=5Fprovider.html.markdown,r/ecs=5Faccount?= =?UTF-8?q?=5Fsetting=5Fdefault.html.markdown,r/ecrpublic=5Frepository=5Fp?= =?UTF-8?q?olicy.html.markdown,r/ecrpublic=5Frepository.html.markdown,r/ec?= =?UTF-8?q?r=5Frepository=5Fpolicy.html.markdown,r/ecr=5Frepository=5Fcrea?= =?UTF-8?q?tion=5Ftemplate.html.markdown,r/ecr=5Frepository.html.markdown,?= =?UTF-8?q?r/ecr=5Freplication=5Fconfiguration.html.markdown,r/ecr=5Fregis?= =?UTF-8?q?try=5Fscanning=5Fconfiguration.html.markdown,r/ecr=5Fregistry?= =?UTF-8?q?=5Fpolicy.html.markdown,r/ecr=5Fpull=5Fthrough=5Fcache=5Frule.h?= =?UTF-8?q?tml.markdown,r/ecr=5Flifecycle=5Fpolicy.html.markdown,r/ecr=5Fa?= =?UTF-8?q?ccount=5Fsetting.html.markdown,r/ec2=5Ftransit=5Fgateway=5Fvpc?= =?UTF-8?q?=5Fattachment=5Faccepter.html.markdown,r/ec2=5Ftransit=5Fgatewa?= =?UTF-8?q?y=5Fvpc=5Fattachment.html.markdown,r/ec2=5Ftransit=5Fgateway=5F?= =?UTF-8?q?route=5Ftable=5Fpropagation.html.markdown,r/ec2=5Ftransit=5Fgat?= =?UTF-8?q?eway=5Froute=5Ftable=5Fassociation.html.markdown,r/ec2=5Ftransi?= =?UTF-8?q?t=5Fgateway=5Froute=5Ftable.html.markdown,r/ec2=5Ftransit=5Fgat?= =?UTF-8?q?eway=5Froute.html.markdown,r/ec2=5Ftransit=5Fgateway=5Fprefix?= =?UTF-8?q?=5Flist=5Freference.html.markdown,r/ec2=5Ftransit=5Fgateway=5Fp?= =?UTF-8?q?olicy=5Ftable=5Fassociation.html.markdown,r/ec2=5Ftransit=5Fgat?= =?UTF-8?q?eway=5Fpolicy=5Ftable.html.markdown,r/ec2=5Ftransit=5Fgateway?= =?UTF-8?q?=5Fpeering=5Fattachment=5Faccepter.html.markdown,r/ec2=5Ftransi?= =?UTF-8?q?t=5Fgateway=5Fpeering=5Fattachment.html.markdown,r/ec2=5Ftransi?= =?UTF-8?q?t=5Fgateway=5Fmulticast=5Fgroup=5Fsource.html.markdown,r/ec2=5F?= =?UTF-8?q?transit=5Fgateway=5Fmulticast=5Fgroup=5Fmember.html.markdown,r/?= =?UTF-8?q?ec2=5Ftransit=5Fgateway=5Fmulticast=5Fdomain=5Fassociation.html?= =?UTF-8?q?.markdown,r/ec2=5Ftransit=5Fgateway=5Fmulticast=5Fdomain.html.m?= =?UTF-8?q?arkdown,r/ec2=5Ftransit=5Fgateway=5Fdefault=5Froute=5Ftable=5Fp?= =?UTF-8?q?ropagation.html.markdown,r/ec2=5Ftransit=5Fgateway=5Fdefault=5F?= =?UTF-8?q?route=5Ftable=5Fassociation.html.markdown,r/ec2=5Ftransit=5Fgat?= =?UTF-8?q?eway=5Fconnect=5Fpeer.html.markdown,r/ec2=5Ftransit=5Fgateway?= =?UTF-8?q?=5Fconnect.html.markdown,r/ec2=5Ftransit=5Fgateway.html.markdow?= =?UTF-8?q?n,r/ec2=5Ftraffic=5Fmirror=5Ftarget.html.markdown,r/ec2=5Ftraff?= =?UTF-8?q?ic=5Fmirror=5Fsession.html.markdown,r/ec2=5Ftraffic=5Fmirror=5F?= =?UTF-8?q?filter=5Frule.html.markdown,r/ec2=5Ftraffic=5Fmirror=5Ffilter.h?= =?UTF-8?q?tml.markdown,r/ec2=5Ftag.html.markdown,r/ec2=5Fsubnet=5Fcidr=5F?= =?UTF-8?q?reservation.html.markdown,r/ec2=5Fserial=5Fconsole=5Faccess.htm?= =?UTF-8?q?l.markdown,r/ec2=5Fnetwork=5Finsights=5Fpath.html.markdown,r/ec?= =?UTF-8?q?2=5Fnetwork=5Finsights=5Fanalysis.html.markdown,r/ec2=5Fmanaged?= =?UTF-8?q?=5Fprefix=5Flist=5Fentry.html.markdown,r/ec2=5Fmanaged=5Fprefix?= =?UTF-8?q?=5Flist.html.markdown,r/ec2=5Flocal=5Fgateway=5Froute=5Ftable?= =?UTF-8?q?=5Fvpc=5Fassociation.html.markdown,r/ec2=5Flocal=5Fgateway=5Fro?= =?UTF-8?q?ute.html.markdown,r/ec2=5Finstance=5Fstate.html.markdown,r/ec2?= =?UTF-8?q?=5Finstance=5Fmetadata=5Fdefaults.html.markdown,r/ec2=5Finstanc?= =?UTF-8?q?e=5Fconnect=5Fendpoint.html.markdown,r/ec2=5Fimage=5Fblock=5Fpu?= =?UTF-8?q?blic=5Faccess.markdown,r/ec2=5Fhost.html.markdown,r/ec2=5Ffleet?= =?UTF-8?q?.html.markdown,r/ec2=5Fdefault=5Fcredit=5Fspecification.html.ma?= =?UTF-8?q?rkdown,r/ec2=5Fclient=5Fvpn=5Froute.html.markdown,r/ec2=5Fclien?= =?UTF-8?q?t=5Fvpn=5Fnetwork=5Fassociation.html.markdown,r/ec2=5Fclient=5F?= =?UTF-8?q?vpn=5Fendpoint.html.markdown,r/ec2=5Fclient=5Fvpn=5Fauthorizati?= =?UTF-8?q?on=5Frule.html.markdown,r/ec2=5Fcarrier=5Fgateway.html.markdown?= =?UTF-8?q?,r/ec2=5Fcapacity=5Freservation.html.markdown,r/ec2=5Fcapacity?= =?UTF-8?q?=5Fblock=5Freservation.html.markdown,r/ec2=5Favailability=5Fzon?= =?UTF-8?q?e=5Fgroup.html.markdown,r/ebs=5Fvolume.html.markdown,r/ebs=5Fsn?= =?UTF-8?q?apshot=5Fimport.html.markdown,r/ebs=5Fsnapshot=5Fcopy.html.mark?= =?UTF-8?q?down,r/ebs=5Fsnapshot=5Fblock=5Fpublic=5Faccess.html.markdown,r?= =?UTF-8?q?/ebs=5Fsnapshot.html.markdown,r/ebs=5Ffast=5Fsnapshot=5Frestore?= =?UTF-8?q?.html.markdown,r/ebs=5Fencryption=5Fby=5Fdefault.html.markdown,?= =?UTF-8?q?r/ebs=5Fdefault=5Fkms=5Fkey.html.markdown,r/dynamodb=5Ftag.html?= =?UTF-8?q?.markdown,r/dynamodb=5Ftable=5Freplica.html.markdown,r/dynamodb?= =?UTF-8?q?=5Ftable=5Fitem.html.markdown,r/dynamodb=5Ftable=5Fexport.html.?= =?UTF-8?q?markdown,r/dynamodb=5Ftable.html.markdown,r/dynamodb=5Fresource?= =?UTF-8?q?=5Fpolicy.html.markdown,r/dynamodb=5Fkinesis=5Fstreaming=5Fdest?= =?UTF-8?q?ination.html.markdown,r/dynamodb=5Fglobal=5Ftable.html.markdown?= =?UTF-8?q?,r/dynamodb=5Fcontributor=5Finsights.html.markdown,r/dx=5Ftrans?= =?UTF-8?q?it=5Fvirtual=5Finterface.html.markdown,r/dx=5Fpublic=5Fvirtual?= =?UTF-8?q?=5Finterface.html.markdown,r/dx=5Fprivate=5Fvirtual=5Finterface?= =?UTF-8?q?.html.markdown,r/dx=5Fmacsec=5Fkey=5Fassociation.html.markdown,?= =?UTF-8?q?r/dx=5Flag.html.markdown,r/dx=5Fhosted=5Ftransit=5Fvirtual=5Fin?= =?UTF-8?q?terface=5Faccepter.html.markdown,r/dx=5Fhosted=5Ftransit=5Fvirt?= =?UTF-8?q?ual=5Finterface.html.markdown,r/dx=5Fhosted=5Fpublic=5Fvirtual?= =?UTF-8?q?=5Finterface=5Faccepter.html.markdown,r/dx=5Fhosted=5Fpublic=5F?= =?UTF-8?q?virtual=5Finterface.html.markdown,r/dx=5Fhosted=5Fprivate=5Fvir?= =?UTF-8?q?tual=5Finterface=5Faccepter.html.markdown,r/dx=5Fhosted=5Fpriva?= =?UTF-8?q?te=5Fvirtual=5Finterface.html.markdown,r/dx=5Fhosted=5Fconnecti?= =?UTF-8?q?on.html.markdown,r/dx=5Fgateway=5Fassociation=5Fproposal.html.m?= =?UTF-8?q?arkdown,r/dx=5Fgateway=5Fassociation.html.markdown,r/dx=5Fgatew?= =?UTF-8?q?ay.html.markdown,r/dx=5Fconnection=5Fconfirmation.html.markdown?= =?UTF-8?q?,r/dx=5Fconnection=5Fassociation.html.markdown,r/dx=5Fconnectio?= =?UTF-8?q?n.html.markdown,r/dx=5Fbgp=5Fpeer.html.markdown,r/dsql=5Fcluste?= =?UTF-8?q?r=5Fpeering.html.markdown,r/dsql=5Fcluster.html.markdown,r/drs?= =?UTF-8?q?=5Freplication=5Fconfiguration=5Ftemplate.html.markdown,r/docdb?= =?UTF-8?q?elastic=5Fcluster.html.markdown,r/docdb=5Fsubnet=5Fgroup.html.m?= =?UTF-8?q?arkdown,r/docdb=5Fglobal=5Fcluster.html.markdown,r/docdb=5Feven?= =?UTF-8?q?t=5Fsubscription.html.markdown,r/docdb=5Fcluster=5Fsnapshot.htm?= =?UTF-8?q?l.markdown,r/docdb=5Fcluster=5Fparameter=5Fgroup.html.markdown,?= =?UTF-8?q?r/docdb=5Fcluster=5Finstance.html.markdown,r/docdb=5Fcluster.ht?= =?UTF-8?q?ml.markdown,r/dms=5Fs3=5Fendpoint.html.markdown,r/dms=5Freplica?= =?UTF-8?q?tion=5Ftask.html.markdown,r/dms=5Freplication=5Fsubnet=5Fgroup.?= =?UTF-8?q?html.markdown,r/dms=5Freplication=5Finstance.html.markdown,r/dm?= =?UTF-8?q?s=5Freplication=5Fconfig.html.markdown,r/dms=5Fevent=5Fsubscrip?= =?UTF-8?q?tion.html.markdown,r/dms=5Fendpoint.html.markdown,r/dms=5Fcerti?= =?UTF-8?q?ficate.html.markdown,r/dlm=5Flifecycle=5Fpolicy.html.markdown,r?= =?UTF-8?q?/directory=5Fservice=5Ftrust.html.markdown,r/directory=5Fservic?= =?UTF-8?q?e=5Fshared=5Fdirectory=5Faccepter.html.markdown,r/directory=5Fs?= =?UTF-8?q?ervice=5Fshared=5Fdirectory.html.markdown,r/directory=5Fservice?= =?UTF-8?q?=5Fregion.html.markdown,r/directory=5Fservice=5Fradius=5Fsettin?= =?UTF-8?q?gs.html.markdown,r/directory=5Fservice=5Flog=5Fsubscription.htm?= =?UTF-8?q?l.markdown,r/directory=5Fservice=5Fdirectory.html.markdown,r/di?= =?UTF-8?q?rectory=5Fservice=5Fconditional=5Fforwarder.html.markdown,r/dev?= =?UTF-8?q?opsguru=5Fservice=5Fintegration.html.markdown,r/devopsguru=5Fre?= =?UTF-8?q?source=5Fcollection.html.markdown,r/devopsguru=5Fnotification?= =?UTF-8?q?=5Fchannel.html.markdown,r/devopsguru=5Fevent=5Fsources=5Fconfi?= =?UTF-8?q?g.html.markdown,r/devicefarm=5Fupload.html.markdown,r/devicefar?= =?UTF-8?q?m=5Ftest=5Fgrid=5Fproject.html.markdown,r/devicefarm=5Fproject.?= =?UTF-8?q?html.markdown,r/devicefarm=5Fnetwork=5Fprofile.html.markdown,r/?= =?UTF-8?q?devicefarm=5Finstance=5Fprofile.html.markdown,r/devicefarm=5Fde?= =?UTF-8?q?vice=5Fpool.html.markdown,r/detective=5Forganization=5Fconfigur?= =?UTF-8?q?ation.html.markdown,r/detective=5Forganization=5Fadmin=5Faccoun?= =?UTF-8?q?t.html.markdown,r/detective=5Fmember.html.markdown,r/detective?= =?UTF-8?q?=5Finvitation=5Faccepter.html.markdown,r/detective=5Fgraph.html?= =?UTF-8?q?.markdown,r/default=5Fvpc=5Fdhcp=5Foptions.html.markdown,r/defa?= =?UTF-8?q?ult=5Fvpc.html.markdown,r/default=5Fsubnet.html.markdown,r/defa?= =?UTF-8?q?ult=5Fsecurity=5Fgroup.html.markdown,r/default=5Froute=5Ftable.?= =?UTF-8?q?html.markdown,r/default=5Fnetwork=5Facl.html.markdown,r/db=5Fsu?= =?UTF-8?q?bnet=5Fgroup.html.markdown,r/db=5Fsnapshot=5Fcopy.html.markdown?= =?UTF-8?q?,r/db=5Fsnapshot.html.markdown,r/db=5Fproxy=5Ftarget.html.markd?= =?UTF-8?q?own,r/db=5Fproxy=5Fendpoint.html.markdown,r/db=5Fproxy=5Fdefaul?= =?UTF-8?q?t=5Ftarget=5Fgroup.html.markdown,r/db=5Fproxy.html.markdown,r/d?= =?UTF-8?q?b=5Fparameter=5Fgroup.html.markdown,r/db=5Foption=5Fgroup.html.?= =?UTF-8?q?markdown,r/db=5Finstance=5Frole=5Fassociation.html.markdown,r/d?= =?UTF-8?q?b=5Finstance=5Fautomated=5Fbackups=5Freplication.html.markdown,?= =?UTF-8?q?r/db=5Finstance.html.markdown,r/db=5Fevent=5Fsubscription.html.?= =?UTF-8?q?markdown,r/db=5Fcluster=5Fsnapshot.html.markdown,r/dax=5Fsubnet?= =?UTF-8?q?=5Fgroup.html.markdown,r/dax=5Fparameter=5Fgroup.html.markdown,?= =?UTF-8?q?r/dax=5Fcluster.html.markdown,r/datazone=5Fuser=5Fprofile.html.?= =?UTF-8?q?markdown,r/datazone=5Fproject.html.markdown,r/datazone=5Fglossa?= =?UTF-8?q?ry=5Fterm.html.markdown,r/datazone=5Fglossary.html.markdown,r/d?= =?UTF-8?q?atazone=5Fform=5Ftype.html.markdown,r/datazone=5Fenvironment=5F?= =?UTF-8?q?profile.html.markdown,r/datazone=5Fenvironment=5Fblueprint=5Fco?= =?UTF-8?q?nfiguration.html.markdown,r/datazone=5Fenvironment.html.markdow?= =?UTF-8?q?n,r/datazone=5Fdomain.html.markdown,r/datazone=5Fasset=5Ftype.h?= =?UTF-8?q?tml.markdown,r/datasync=5Ftask.html.markdown,r/datasync=5Flocat?= =?UTF-8?q?ion=5Fsmb.html.markdown,r/datasync=5Flocation=5Fs3.html.markdow?= =?UTF-8?q?n,r/datasync=5Flocation=5Fobject=5Fstorage.html.markdown,r/data?= =?UTF-8?q?sync=5Flocation=5Fnfs.html.markdown,r/datasync=5Flocation=5Fhdf?= =?UTF-8?q?s.html.markdown,r/datasync=5Flocation=5Ffsx=5Fwindows=5Ffile=5F?= =?UTF-8?q?system.html.markdown,r/datasync=5Flocation=5Ffsx=5Fopenzfs=5Ffi?= =?UTF-8?q?le=5Fsystem.html.markdown,r/datasync=5Flocation=5Ffsx=5Fontap?= =?UTF-8?q?=5Ffile=5Fsystem.html.markdown,r/datasync=5Flocation=5Ffsx=5Flu?= =?UTF-8?q?stre=5Ffile=5Fsystem.html.markdown,r/datasync=5Flocation=5Fefs.?= =?UTF-8?q?html.markdown,r/datasync=5Flocation=5Fazure=5Fblob.html.markdow?= =?UTF-8?q?n,r/datasync=5Fagent.html.markdown,r/datapipeline=5Fpipeline=5F?= =?UTF-8?q?definition.html.markdown,r/datapipeline=5Fpipeline.html.markdow?= =?UTF-8?q?n,r/dataexchange=5Frevision=5Fassets.html.markdown,r/dataexchan?= =?UTF-8?q?ge=5Frevision.html.markdown,r/dataexchange=5Fevent=5Faction.htm?= =?UTF-8?q?l.markdown,r/dataexchange=5Fdata=5Fset.html.markdown,r/customer?= =?UTF-8?q?profiles=5Fprofile.html.markdown,r/customerprofiles=5Fdomain.ht?= =?UTF-8?q?ml.markdown,r/customer=5Fgateway.html.markdown,r/cur=5Freport?= =?UTF-8?q?=5Fdefinition.html.markdown,r/costoptimizationhub=5Fpreferences?= =?UTF-8?q?.html.markdown,r/costoptimizationhub=5Fenrollment=5Fstatus.html?= =?UTF-8?q?.markdown,r/controltower=5Flanding=5Fzone.html.markdown,r/contr?= =?UTF-8?q?oltower=5Fcontrol.html.markdown,r/controltower=5Fbaseline.html.?= =?UTF-8?q?markdown,r/connect=5Fvocabulary.html.markdown,r/connect=5Fuser?= =?UTF-8?q?=5Fhierarchy=5Fstructure.html.markdown,r/connect=5Fuser=5Fhiera?= =?UTF-8?q?rchy=5Fgroup.html.markdown,r/connect=5Fuser.html.markdown,r/con?= =?UTF-8?q?nect=5Fsecurity=5Fprofile.html.markdown,r/connect=5Frouting=5Fp?= =?UTF-8?q?rofile.html.markdown,r/connect=5Fquick=5Fconnect.html.markdown,?= =?UTF-8?q?r/connect=5Fqueue.html.markdown,r/connect=5Fphone=5Fnumber=5Fco?= =?UTF-8?q?ntact=5Fflow=5Fassociation.html.markdown,r/connect=5Fphone=5Fnu?= =?UTF-8?q?mber.html.markdown,r/connect=5Flambda=5Ffunction=5Fassociation.?= =?UTF-8?q?html.markdown,r/connect=5Finstance=5Fstorage=5Fconfig.html.mark?= =?UTF-8?q?down,r/connect=5Finstance.html.markdown,r/connect=5Fhours=5Fof?= =?UTF-8?q?=5Foperation.html.markdown,r/connect=5Fcontact=5Fflow=5Fmodule.?= =?UTF-8?q?html.markdown,r/connect=5Fcontact=5Fflow.html.markdown,r/connec?= =?UTF-8?q?t=5Fbot=5Fassociation.html.markdown,r/config=5Fretention=5Fconf?= =?UTF-8?q?iguration.html.markdown,r/config=5Fremediation=5Fconfiguration.?= =?UTF-8?q?html.markdown,r/config=5Forganization=5Fmanaged=5Frule.html.mar?= =?UTF-8?q?kdown,r/config=5Forganization=5Fcustom=5Frule.html.markdown,r/c?= =?UTF-8?q?onfig=5Forganization=5Fcustom=5Fpolicy=5Frule.html.markdown,r/c?= =?UTF-8?q?onfig=5Forganization=5Fconformance=5Fpack.html.markdown,r/confi?= =?UTF-8?q?g=5Fdelivery=5Fchannel.html.markdown,r/config=5Fconformance=5Fp?= =?UTF-8?q?ack.html.markdown,r/config=5Fconfiguration=5Frecorder=5Fstatus.?= =?UTF-8?q?html.markdown,r/config=5Fconfiguration=5Frecorder.html.markdown?= =?UTF-8?q?,r/config=5Fconfiguration=5Faggregator.html.markdown,r/config?= =?UTF-8?q?=5Fconfig=5Frule.html.markdown,r/config=5Faggregate=5Fauthoriza?= =?UTF-8?q?tion.html.markdown,r/computeoptimizer=5Frecommendation=5Fprefer?= =?UTF-8?q?ences.html.markdown,r/computeoptimizer=5Fenrollment=5Fstatus.ht?= =?UTF-8?q?ml.markdown,r/comprehend=5Fentity=5Frecognizer.html.markdown,r/?= =?UTF-8?q?comprehend=5Fdocument=5Fclassifier.html.markdown,r/cognito=5Fus?= =?UTF-8?q?er=5Fpool=5Fui=5Fcustomization.html.markdown,r/cognito=5Fuser?= =?UTF-8?q?=5Fpool=5Fdomain.html.markdown,r/cognito=5Fuser=5Fpool=5Fclient?= =?UTF-8?q?.html.markdown,r/cognito=5Fuser=5Fpool.html.markdown,r/cognito?= =?UTF-8?q?=5Fuser=5Fin=5Fgroup.html.markdown,r/cognito=5Fuser=5Fgroup.htm?= =?UTF-8?q?l.markdown,r/cognito=5Fuser.html.markdown,r/cognito=5Frisk=5Fco?= =?UTF-8?q?nfiguration.html.markdown,r/cognito=5Fresource=5Fserver.html.ma?= =?UTF-8?q?rkdown,r/cognito=5Fmanaged=5Fuser=5Fpool=5Fclient.html.markdown?= =?UTF-8?q?,r/cognito=5Fmanaged=5Flogin=5Fbranding.html.markdown,r/cognito?= =?UTF-8?q?=5Flog=5Fdelivery=5Fconfiguration.html.markdown,r/cognito=5Fide?= =?UTF-8?q?ntity=5Fprovider.html.markdown,r/cognito=5Fidentity=5Fpool=5Fro?= =?UTF-8?q?les=5Fattachment.html.markdown,r/cognito=5Fidentity=5Fpool=5Fpr?= =?UTF-8?q?ovider=5Fprincipal=5Ftag.html.markdown,r/cognito=5Fidentity=5Fp?= =?UTF-8?q?ool.html.markdown,r/codestarnotifications=5Fnotification=5Frule?= =?UTF-8?q?.html.markdown,r/codestarconnections=5Fhost.html.markdown,r/cod?= =?UTF-8?q?estarconnections=5Fconnection.html.markdown,r/codepipeline=5Fwe?= =?UTF-8?q?bhook.html.markdown,r/codepipeline=5Fcustom=5Faction=5Ftype.htm?= =?UTF-8?q?l.markdown,r/codepipeline.html.markdown,r/codegurureviewer=5Fre?= =?UTF-8?q?pository=5Fassociation.html.markdown,r/codeguruprofiler=5Fprofi?= =?UTF-8?q?ling=5Fgroup.html.markdown,r/codedeploy=5Fdeployment=5Fgroup.ht?= =?UTF-8?q?ml.markdown,r/codedeploy=5Fdeployment=5Fconfig.html.markdown,r/?= =?UTF-8?q?codedeploy=5Fapp.html.markdown,r/codeconnections=5Fhost.html.ma?= =?UTF-8?q?rkdown,r/codeconnections=5Fconnection.html.markdown,r/codecommi?= =?UTF-8?q?t=5Ftrigger.html.markdown,r/codecommit=5Frepository.html.markdo?= =?UTF-8?q?wn,r/codecommit=5Fapproval=5Frule=5Ftemplate=5Fassociation.html?= =?UTF-8?q?.markdown,r/codecommit=5Fapproval=5Frule=5Ftemplate.html.markdo?= =?UTF-8?q?wn,r/codecatalyst=5Fsource=5Frepository.html.markdown,r/codecat?= =?UTF-8?q?alyst=5Fproject.html.markdown,r/codecatalyst=5Fdev=5Fenvironmen?= =?UTF-8?q?t.html.markdown,r/codebuild=5Fwebhook.html.markdown,r/codebuild?= =?UTF-8?q?=5Fsource=5Fcredential.html.markdown,r/codebuild=5Fresource=5Fp?= =?UTF-8?q?olicy.html.markdown,r/codebuild=5Freport=5Fgroup.html.markdown,?= =?UTF-8?q?r/codebuild=5Fproject.html.markdown,r/codebuild=5Ffleet.html.ma?= =?UTF-8?q?rkdown,r/codeartifact=5Frepository=5Fpermissions=5Fpolicy.html.?= =?UTF-8?q?markdown,r/codeartifact=5Frepository.html.markdown,r/codeartifa?= =?UTF-8?q?ct=5Fdomain=5Fpermissions=5Fpolicy.html.markdown,r/codeartifact?= =?UTF-8?q?=5Fdomain.html.markdown,r/cloudwatch=5Fquery=5Fdefinition.html.?= =?UTF-8?q?markdown,r/cloudwatch=5Fmetric=5Fstream.html.markdown,r/cloudwa?= =?UTF-8?q?tch=5Fmetric=5Falarm.html.markdown,r/cloudwatch=5Flog=5Fsubscri?= =?UTF-8?q?ption=5Ffilter.html.markdown,r/cloudwatch=5Flog=5Fstream.html.m?= =?UTF-8?q?arkdown,r/cloudwatch=5Flog=5Fresource=5Fpolicy.html.markdown,r/?= =?UTF-8?q?cloudwatch=5Flog=5Fmetric=5Ffilter.html.markdown,r/cloudwatch?= =?UTF-8?q?=5Flog=5Findex=5Fpolicy.html.markdown,r/cloudwatch=5Flog=5Fgrou?= =?UTF-8?q?p.html.markdown,r/cloudwatch=5Flog=5Fdestination=5Fpolicy.html.?= =?UTF-8?q?markdown,r/cloudwatch=5Flog=5Fdestination.html.markdown,r/cloud?= =?UTF-8?q?watch=5Flog=5Fdelivery=5Fsource.html.markdown,r/cloudwatch=5Flo?= =?UTF-8?q?g=5Fdelivery=5Fdestination=5Fpolicy.html.markdown,r/cloudwatch?= =?UTF-8?q?=5Flog=5Fdelivery=5Fdestination.html.markdown,r/cloudwatch=5Flo?= =?UTF-8?q?g=5Fdelivery.html.markdown,r/cloudwatch=5Flog=5Fdata=5Fprotecti?= =?UTF-8?q?on=5Fpolicy.html.markdown,r/cloudwatch=5Flog=5Fanomaly=5Fdetect?= =?UTF-8?q?or.html.markdown,r/cloudwatch=5Flog=5Faccount=5Fpolicy.html.mar?= =?UTF-8?q?kdown,r/cloudwatch=5Fevent=5Ftarget.html.markdown,r/cloudwatch?= =?UTF-8?q?=5Fevent=5Frule.html.markdown,r/cloudwatch=5Fevent=5Fpermission?= =?UTF-8?q?.html.markdown,r/cloudwatch=5Fevent=5Fendpoint.html.markdown,r/?= =?UTF-8?q?cloudwatch=5Fevent=5Fconnection.html.markdown,r/cloudwatch=5Fev?= =?UTF-8?q?ent=5Fbus=5Fpolicy.html.markdown,r/cloudwatch=5Fevent=5Fbus.htm?= =?UTF-8?q?l.markdown,r/cloudwatch=5Fevent=5Farchive.html.markdown,r/cloud?= =?UTF-8?q?watch=5Fevent=5Fapi=5Fdestination.html.markdown,r/cloudwatch=5F?= =?UTF-8?q?dashboard.html.markdown,r/cloudwatch=5Fcontributor=5Fmanaged=5F?= =?UTF-8?q?insight=5Frule.html.markdown,r/cloudwatch=5Fcontributor=5Finsig?= =?UTF-8?q?ht=5Frule.html.markdown,r/cloudwatch=5Fcomposite=5Falarm.html.m?= =?UTF-8?q?arkdown,r/cloudtrail=5Forganization=5Fdelegated=5Fadmin=5Faccou?= =?UTF-8?q?nt.html.markdown,r/cloudtrail=5Fevent=5Fdata=5Fstore.html.markd?= =?UTF-8?q?own,r/cloudtrail.html.markdown,r/cloudsearch=5Fdomain=5Fservice?= =?UTF-8?q?=5Faccess=5Fpolicy.html.markdown,r/cloudsearch=5Fdomain.html.ma?= =?UTF-8?q?rkdown,r/cloudhsm=5Fv2=5Fhsm.html.markdown,r/cloudhsm=5Fv2=5Fcl?= =?UTF-8?q?uster.html.markdown,r/cloudfrontkeyvaluestore=5Fkeys=5Fexclusiv?= =?UTF-8?q?e.html.markdown,r/cloudfrontkeyvaluestore=5Fkey.html.markdown,r?= =?UTF-8?q?/cloudfront=5Fvpc=5Forigin.html.markdown,r/cloudfront=5Frespons?= =?UTF-8?q?e=5Fheaders=5Fpolicy.html.markdown,r/cloudfront=5Frealtime=5Flo?= =?UTF-8?q?g=5Fconfig.html.markdown,r/cloudfront=5Fpublic=5Fkey.html.markd?= =?UTF-8?q?own,r/cloudfront=5Forigin=5Frequest=5Fpolicy.html.markdown,r/cl?= =?UTF-8?q?oudfront=5Forigin=5Faccess=5Fidentity.html.markdown,r/cloudfron?= =?UTF-8?q?t=5Forigin=5Faccess=5Fcontrol.html.markdown,r/cloudfront=5Fmoni?= =?UTF-8?q?toring=5Fsubscription.html.markdown,r/cloudfront=5Fkey=5Fvalue?= =?UTF-8?q?=5Fstore.html.markdown,r/cloudfront=5Fkey=5Fgroup.html.markdown?= =?UTF-8?q?,r/cloudfront=5Ffunction.html.markdown,r/cloudfront=5Ffield=5Fl?= =?UTF-8?q?evel=5Fencryption=5Fprofile.html.markdown,r/cloudfront=5Ffield?= =?UTF-8?q?=5Flevel=5Fencryption=5Fconfig.html.markdown,r/cloudfront=5Fdis?= =?UTF-8?q?tribution.html.markdown,r/cloudfront=5Fcontinuous=5Fdeployment?= =?UTF-8?q?=5Fpolicy.html.markdown,r/cloudfront=5Fcache=5Fpolicy.html.mark?= =?UTF-8?q?down,r/cloudformation=5Ftype.html.markdown,r/cloudformation=5Fs?= =?UTF-8?q?tack=5Fset=5Finstance.html.markdown,r/cloudformation=5Fstack=5F?= =?UTF-8?q?set.html.markdown,r/cloudformation=5Fstack=5Finstances.html.mar?= =?UTF-8?q?kdown,r/cloudformation=5Fstack.html.markdown,r/cloudcontrolapi?= =?UTF-8?q?=5Fresource.html.markdown,r/cloud9=5Fenvironment=5Fmembership.h?= =?UTF-8?q?tml.markdown,r/cloud9=5Fenvironment=5Fec2.html.markdown,r/clean?= =?UTF-8?q?rooms=5Fmembership.html.markdown,r/cleanrooms=5Fconfigured=5Fta?= =?UTF-8?q?ble.html.markdown,r/cleanrooms=5Fcollaboration.html.markdown,r/?= =?UTF-8?q?chimesdkvoice=5Fvoice=5Fprofile=5Fdomain.html.markdown,r/chimes?= =?UTF-8?q?dkvoice=5Fsip=5Frule.html.markdown,r/chimesdkvoice=5Fsip=5Fmedi?= =?UTF-8?q?a=5Fapplication.html.markdown,r/chimesdkvoice=5Fglobal=5Fsettin?= =?UTF-8?q?gs.html.markdown,r/chimesdkmediapipelines=5Fmedia=5Finsights=5F?= =?UTF-8?q?pipeline=5Fconfiguration.html.markdown,r/chime=5Fvoice=5Fconnec?= =?UTF-8?q?tor=5Ftermination=5Fcredentials.html.markdown,r/chime=5Fvoice?= =?UTF-8?q?=5Fconnector=5Ftermination.html.markdown,r/chime=5Fvoice=5Fconn?= =?UTF-8?q?ector=5Fstreaming.html.markdown,r/chime=5Fvoice=5Fconnector=5Fo?= =?UTF-8?q?rigination.html.markdown,r/chime=5Fvoice=5Fconnector=5Flogging.?= =?UTF-8?q?html.markdown,r/chime=5Fvoice=5Fconnector=5Fgroup.html.markdown?= =?UTF-8?q?,r/chime=5Fvoice=5Fconnector.html.markdown,r/chatbot=5Fteams=5F?= =?UTF-8?q?channel=5Fconfiguration.html.markdown,r/chatbot=5Fslack=5Fchann?= =?UTF-8?q?el=5Fconfiguration.html.markdown,r/ce=5Fcost=5Fcategory.html.ma?= =?UTF-8?q?rkdown,r/ce=5Fcost=5Fallocation=5Ftag.html.markdown,r/ce=5Fanom?= =?UTF-8?q?aly=5Fsubscription.html.markdown,r/ce=5Fanomaly=5Fmonitor.html.?= =?UTF-8?q?markdown,r/budgets=5Fbudget=5Faction.html.markdown,r/budgets=5F?= =?UTF-8?q?budget.html.markdown,r/bedrockagent=5Fprompt.html.markdown,r/be?= =?UTF-8?q?drockagent=5Fknowledge=5Fbase.html.markdown,r/bedrockagent=5Ffl?= =?UTF-8?q?ow.html.markdown,r/bedrockagent=5Fdata=5Fsource.html.markdown,r?= =?UTF-8?q?/bedrockagent=5Fagent=5Fknowledge=5Fbase=5Fassociation.html.mar?= =?UTF-8?q?kdown,r/bedrockagent=5Fagent=5Fcollaborator.html.markdown,r/bed?= =?UTF-8?q?rockagent=5Fagent=5Falias.html.markdown,r/bedrockagent=5Fagent?= =?UTF-8?q?=5Faction=5Fgroup.html.markdown,r/bedrockagent=5Fagent.html.mar?= =?UTF-8?q?kdown,r/bedrock=5Fprovisioned=5Fmodel=5Fthroughput.html.markdow?= =?UTF-8?q?n,r/bedrock=5Fmodel=5Finvocation=5Flogging=5Fconfiguration.html?= =?UTF-8?q?.markdown,r/bedrock=5Finference=5Fprofile.html.markdown,r/bedro?= =?UTF-8?q?ck=5Fguardrail=5Fversion.html.markdown,r/bedrock=5Fguardrail.ht?= =?UTF-8?q?ml.markdown,r/bedrock=5Fcustom=5Fmodel.html.markdown,r/bcmdatae?= =?UTF-8?q?xports=5Fexport.html.markdown,r/batch=5Fscheduling=5Fpolicy.htm?= =?UTF-8?q?l.markdown,r/batch=5Fjob=5Fqueue.html.markdown,r/batch=5Fjob=5F?= =?UTF-8?q?definition.html.markdown,r/batch=5Fcompute=5Fenvironment.html.m?= =?UTF-8?q?arkdown,r/backup=5Fvault=5Fpolicy.html.markdown,r/backup=5Fvaul?= =?UTF-8?q?t=5Fnotifications.html.markdown,r/backup=5Fvault=5Flock=5Fconfi?= =?UTF-8?q?guration.html.markdown,r/backup=5Fvault.html.markdown,r/backup?= =?UTF-8?q?=5Fselection.html.markdown,r/backup=5Frestore=5Ftesting=5Fselec?= =?UTF-8?q?tion.html.markdown,r/backup=5Frestore=5Ftesting=5Fplan.html.mar?= =?UTF-8?q?kdown,r/backup=5Freport=5Fplan.html.markdown,r/backup=5Fregion?= =?UTF-8?q?=5Fsettings.html.markdown,r/backup=5Fplan.html.markdown,r/backu?= =?UTF-8?q?p=5Flogically=5Fair=5Fgapped=5Fvault.html.markdown,r/backup=5Fg?= =?UTF-8?q?lobal=5Fsettings.html.markdown,r/backup=5Fframework.html.markdo?= =?UTF-8?q?wn,r/autoscalingplans=5Fscaling=5Fplan.html.markdown,r/autoscal?= =?UTF-8?q?ing=5Ftraffic=5Fsource=5Fattachment.html.markdown,r/autoscaling?= =?UTF-8?q?=5Fschedule.html.markdown,r/autoscaling=5Fpolicy.html.markdown,?= =?UTF-8?q?r/autoscaling=5Fnotification.html.markdown,r/autoscaling=5Flife?= =?UTF-8?q?cycle=5Fhook.html.markdown,r/autoscaling=5Fgroup=5Ftag.html.mar?= =?UTF-8?q?kdown,r/autoscaling=5Fgroup.html.markdown,r/autoscaling=5Fattac?= =?UTF-8?q?hment.html.markdown,r/auditmanager=5Forganization=5Fadmin=5Facc?= =?UTF-8?q?ount=5Fregistration.html.markdown,r/auditmanager=5Fframework=5F?= =?UTF-8?q?share.html.markdown,r/auditmanager=5Fframework.html.markdown,r/?= =?UTF-8?q?auditmanager=5Fcontrol.html.markdown,r/auditmanager=5Fassessmen?= =?UTF-8?q?t=5Freport.html.markdown,r/auditmanager=5Fassessment=5Fdelegati?= =?UTF-8?q?on.html.markdown,r/auditmanager=5Fassessment.html.markdown,r/au?= =?UTF-8?q?ditmanager=5Faccount=5Fregistration.html.markdown,r/athena=5Fwo?= =?UTF-8?q?rkgroup.html.markdown,r/athena=5Fprepared=5Fstatement.html.mark?= =?UTF-8?q?down,r/athena=5Fnamed=5Fquery.html.markdown,r/athena=5Fdatabase?= =?UTF-8?q?.html.markdown,r/athena=5Fdata=5Fcatalog.html.markdown,r/athena?= =?UTF-8?q?=5Fcapacity=5Freservation.html.markdown,r/appsync=5Ftype.html.m?= =?UTF-8?q?arkdown,r/appsync=5Fsource=5Fapi=5Fassociation.html.markdown,r/?= =?UTF-8?q?appsync=5Fresolver.html.markdown,r/appsync=5Fgraphql=5Fapi.html?= =?UTF-8?q?.markdown,r/appsync=5Ffunction.html.markdown,r/appsync=5Fdomain?= =?UTF-8?q?=5Fname=5Fapi=5Fassociation.html.markdown,r/appsync=5Fdomain=5F?= =?UTF-8?q?name.html.markdown,r/appsync=5Fdatasource.html.markdown,r/appsy?= =?UTF-8?q?nc=5Fchannel=5Fnamespace.html.markdown,r/appsync=5Fapi=5Fkey.ht?= =?UTF-8?q?ml.markdown,r/appsync=5Fapi=5Fcache.html.markdown,r/appsync=5Fa?= =?UTF-8?q?pi.html.markdown,r/appstream=5Fuser=5Fstack=5Fassociation.html.?= =?UTF-8?q?markdown,r/appstream=5Fuser.html.markdown,r/appstream=5Fstack.h?= =?UTF-8?q?tml.markdown,r/appstream=5Fimage=5Fbuilder.html.markdown,r/apps?= =?UTF-8?q?tream=5Ffleet=5Fstack=5Fassociation.html.markdown,r/appstream?= =?UTF-8?q?=5Ffleet.html.markdown,r/appstream=5Fdirectory=5Fconfig.html.ma?= =?UTF-8?q?rkdown,r/apprunner=5Fvpc=5Fingress=5Fconnection.html.markdown,r?= =?UTF-8?q?/apprunner=5Fvpc=5Fconnector.html.markdown,r/apprunner=5Fservic?= =?UTF-8?q?e.html.markdown,r/apprunner=5Fobservability=5Fconfiguration.htm?= =?UTF-8?q?l.markdown,r/apprunner=5Fdeployment.html.markdown,r/apprunner?= =?UTF-8?q?=5Fdefault=5Fauto=5Fscaling=5Fconfiguration=5Fversion.html.mark?= =?UTF-8?q?down,r/apprunner=5Fcustom=5Fdomain=5Fassociation.html.markdown,?= =?UTF-8?q?r/apprunner=5Fconnection.html.markdown,r/apprunner=5Fauto=5Fsca?= =?UTF-8?q?ling=5Fconfiguration=5Fversion.html.markdown,r/appmesh=5Fvirtua?= =?UTF-8?q?l=5Fservice.html.markdown,r/appmesh=5Fvirtual=5Frouter.html.mar?= =?UTF-8?q?kdown,r/appmesh=5Fvirtual=5Fnode.html.markdown,r/appmesh=5Fvirt?= =?UTF-8?q?ual=5Fgateway.html.markdown,r/appmesh=5Froute.html.markdown,r/a?= =?UTF-8?q?ppmesh=5Fmesh.html.markdown,r/appmesh=5Fgateway=5Froute.html.ma?= =?UTF-8?q?rkdown,r/applicationinsights=5Fapplication.html.markdown,r/appi?= =?UTF-8?q?ntegrations=5Fevent=5Fintegration.html.markdown,r/appintegratio?= =?UTF-8?q?ns=5Fdata=5Fintegration.html.markdown,r/appflow=5Fflow.html.mar?= =?UTF-8?q?kdown,r/appflow=5Fconnector=5Fprofile.html.markdown,r/appfabric?= =?UTF-8?q?=5Fingestion=5Fdestination.html.markdown,r/appfabric=5Fingestio?= =?UTF-8?q?n.html.markdown,r/appfabric=5Fapp=5Fbundle.html.markdown,r/appf?= =?UTF-8?q?abric=5Fapp=5Fauthorization=5Fconnection.html.markdown,r/appfab?= =?UTF-8?q?ric=5Fapp=5Fauthorization.html.markdown,r/appconfig=5Fhosted=5F?= =?UTF-8?q?configuration=5Fversion.html.markdown,r/appconfig=5Fextension?= =?UTF-8?q?=5Fassociation.html.markdown,r/appconfig=5Fextension.html.markd?= =?UTF-8?q?own,r/appconfig=5Fenvironment.html.markdown,r/appconfig=5Fdeplo?= =?UTF-8?q?yment=5Fstrategy.html.markdown,r/appconfig=5Fdeployment.html.ma?= =?UTF-8?q?rkdown,r/appconfig=5Fconfiguration=5Fprofile.html.markdown,r/ap?= =?UTF-8?q?pconfig=5Fapplication.html.markdown,r/appautoscaling=5Ftarget.h?= =?UTF-8?q?tml.markdown,r/appautoscaling=5Fscheduled=5Faction.html.markdow?= =?UTF-8?q?n,r/appautoscaling=5Fpolicy.html.markdown,r/app=5Fcookie=5Fstic?= =?UTF-8?q?kiness=5Fpolicy.html.markdown,r/apigatewayv2=5Fvpc=5Flink.html.?= =?UTF-8?q?markdown,r/apigatewayv2=5Fstage.html.markdown,r/apigatewayv2=5F?= =?UTF-8?q?route=5Fresponse.html.markdown,r/apigatewayv2=5Froute.html.mark?= =?UTF-8?q?down,r/apigatewayv2=5Fmodel.html.markdown,r/apigatewayv2=5Finte?= =?UTF-8?q?gration=5Fresponse.html.markdown,r/apigatewayv2=5Fintegration.h?= =?UTF-8?q?tml.markdown,r/apigatewayv2=5Fdomain=5Fname.html.markdown,r/api?= =?UTF-8?q?gatewayv2=5Fdeployment.html.markdown,r/apigatewayv2=5Fauthorize?= =?UTF-8?q?r.html.markdown,r/apigatewayv2=5Fapi=5Fmapping.html.markdown,r/?= =?UTF-8?q?apigatewayv2=5Fapi.html.markdown,r/api=5Fgateway=5Fvpc=5Flink.h?= =?UTF-8?q?tml.markdown,r/api=5Fgateway=5Fusage=5Fplan=5Fkey.html.markdown?= =?UTF-8?q?,r/api=5Fgateway=5Fusage=5Fplan.html.markdown,r/api=5Fgateway?= =?UTF-8?q?=5Fstage.html.markdown,r/api=5Fgateway=5Frest=5Fapi=5Fput.markd?= =?UTF-8?q?own,r/api=5Fgateway=5Frest=5Fapi=5Fpolicy.html.markdown,r/api?= =?UTF-8?q?=5Fgateway=5Frest=5Fapi.html.markdown,r/api=5Fgateway=5Fresourc?= =?UTF-8?q?e.html.markdown,r/api=5Fgateway=5Frequest=5Fvalidator.html.mark?= =?UTF-8?q?down,r/api=5Fgateway=5Fmodel.html.markdown,r/api=5Fgateway=5Fme?= =?UTF-8?q?thod=5Fsettings.html.markdown,r/api=5Fgateway=5Fmethod=5Frespon?= =?UTF-8?q?se.html.markdown,r/api=5Fgateway=5Fmethod.html.markdown,r/api?= =?UTF-8?q?=5Fgateway=5Fintegration=5Fresponse.html.markdown,r/api=5Fgatew?= =?UTF-8?q?ay=5Fintegration.html.markdown,r/api=5Fgateway=5Fgateway=5Fresp?= =?UTF-8?q?onse.html.markdown,r/api=5Fgateway=5Fdomain=5Fname=5Faccess=5Fa?= =?UTF-8?q?ssociation.html.markdown,r/api=5Fgateway=5Fdomain=5Fname.html.m?= =?UTF-8?q?arkdown,r/api=5Fgateway=5Fdocumentation=5Fversion.html.markdown?= =?UTF-8?q?,r/api=5Fgateway=5Fdocumentation=5Fpart.html.markdown,r/api=5Fg?= =?UTF-8?q?ateway=5Fdeployment.html.markdown,r/api=5Fgateway=5Fclient=5Fce?= =?UTF-8?q?rtificate.html.markdown,r/api=5Fgateway=5Fbase=5Fpath=5Fmapping?= =?UTF-8?q?.html.markdown,r/api=5Fgateway=5Fauthorizer.html.markdown,r/api?= =?UTF-8?q?=5Fgateway=5Fapi=5Fkey.html.markdown,r/api=5Fgateway=5Faccount.?= =?UTF-8?q?html.markdown,r/amplify=5Fwebhook.html.markdown,r/amplify=5Fdom?= =?UTF-8?q?ain=5Fassociation.html.markdown,r/amplify=5Fbranch.html.markdow?= =?UTF-8?q?n,r/amplify=5Fbackend=5Fenvironment.html.markdown,r/amplify=5Fa?= =?UTF-8?q?pp.html.markdown,r/ami=5Flaunch=5Fpermission.html.markdown,r/am?= =?UTF-8?q?i=5Ffrom=5Finstance.html.markdown,r/ami=5Fcopy.html.markdown,r/?= =?UTF-8?q?ami.html.markdown,r/acmpca=5Fpolicy.html.markdown,r/acmpca=5Fpe?= =?UTF-8?q?rmission.html.markdown,r/acmpca=5Fcertificate=5Fauthority=5Fcer?= =?UTF-8?q?tificate.html.markdown,r/acmpca=5Fcertificate=5Fauthority.html.?= =?UTF-8?q?markdown,r/acmpca=5Fcertificate.html.markdown,r/acm=5Fcertifica?= =?UTF-8?q?te=5Fvalidation.html.markdown,r/acm=5Fcertificate.html.markdown?= =?UTF-8?q?,r/account=5Fregion.markdown,r/account=5Fprimary=5Fcontact.html?= =?UTF-8?q?.markdown,r/account=5Falternate=5Fcontact.html.markdown,r/acces?= =?UTF-8?q?sanalyzer=5Farchive=5Frule.html.markdown,r/accessanalyzer=5Fana?= =?UTF-8?q?lyzer.html.markdown,list-resources/instance.html.markdown,list-?= =?UTF-8?q?resources/iam=5Frole.html.markdown,list-resources/cloudwatch=5F?= =?UTF-8?q?log=5Fgroup.html.markdown,list-resources/batch=5Fjob=5Fqueue.ht?= =?UTF-8?q?ml.markdown,guides/version-6-upgrade.html.markdown,guides/versi?= =?UTF-8?q?on-5-upgrade.html.markdown,guides/version-4-upgrade.html.markdo?= =?UTF-8?q?wn,guides/version-3-upgrade.html.markdown,guides/version-2-upgr?= =?UTF-8?q?ade.html.markdown,guides/using-aws-with-awscc-provider.html.mar?= =?UTF-8?q?kdown,guides/resource-tagging.html.markdown,guides/enhanced-reg?= =?UTF-8?q?ion-support.html.markdown,guides/custom-service-endpoints.html.?= =?UTF-8?q?markdown,guides/continuous-validation-examples.html.markdown,fu?= =?UTF-8?q?nctions/trim=5Fiam=5Frole=5Fpath.html.markdown,functions/arn=5F?= =?UTF-8?q?parse.html.markdown,functions/arn=5Fbuild.html.markdown,ephemer?= =?UTF-8?q?al-resources/ssm=5Fparameter.html.markdown,ephemeral-resources/?= =?UTF-8?q?secretsmanager=5Fsecret=5Fversion.html.markdown,ephemeral-resou?= =?UTF-8?q?rces/secretsmanager=5Frandom=5Fpassword.html.markdown,ephemeral?= =?UTF-8?q?-resources/lambda=5Finvocation.html.markdown,ephemeral-resource?= =?UTF-8?q?s/kms=5Fsecrets.html.markdown,ephemeral-resources/eks=5Fcluster?= =?UTF-8?q?=5Fauth.html.markdown,ephem=E2=80=A6=20(#44391)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...oudfront_create_invalidation.html.markdown | 126 ++++++++++ .../actions/ec2_stop_instance.html.markdown | 100 ++++++++ .../actions/lambda_invoke.html.markdown | 169 ++++++++++++++ .../actions/ses_send_email.html.markdown | 147 ++++++++++++ .../python/actions/sns_publish.html.markdown | 127 ++++++++++ .../python/d/billing_views.html.markdown | 76 ++++++ .../python/d/ce_cost_category.html.markdown | 4 +- .../d/elasticache_subnet_group.html.markdown | 4 +- .../d/iam_server_certificate.html.markdown | 29 +-- .../cdktf/python/d/instance.html.markdown | 17 +- .../cdktf/python/d/instances.html.markdown | 17 +- .../d/media_convert_queue.html.markdown | 4 +- .../cdktf/python/d/memorydb_acl.html.markdown | 4 +- .../python/d/memorydb_cluster.html.markdown | 4 +- .../d/memorydb_parameter_group.html.markdown | 4 +- .../python/d/memorydb_snapshot.html.markdown | 4 +- .../d/memorydb_subnet_group.html.markdown | 4 +- .../python/d/memorydb_user.html.markdown | 4 +- ..._cloud_autonomous_vm_cluster.html.markdown | 99 ++++++++ ...cloud_exadata_infrastructure.html.markdown | 90 +++++++ .../d/odb_cloud_vm_cluster.html.markdown | 92 ++++++++ .../cdktf/python/d/odb_network.html.markdown | 71 ++++++ ...b_network_peering_connection.html.markdown | 63 +++++ ...andards_control_associations.html.markdown | 4 +- .../d/workspaces_workspace.html.markdown | 4 +- ...enid_token_for_developer_identity.markdown | 3 +- .../batch_job_queue.html.markdown | 35 +++ .../cloudwatch_log_group.html.markdown | 35 +++ .../list-resources/iam_role.html.markdown | 34 +++ .../list-resources/instance.html.markdown | 68 ++++++ .../r/appflow_connector_profile.html.markdown | 28 ++- .../cdktf/python/r/appflow_flow.html.markdown | 28 ++- .../python/r/autoscaling_group.html.markdown | 4 +- .../r/cloudfront_distribution.html.markdown | 85 +++++-- .../cloudfront_key_value_store.html.markdown | 27 ++- .../cloudfrontkeyvaluestore_key.html.markdown | 29 ++- .../r/cloudwatch_event_rule.html.markdown | 34 ++- .../r/cloudwatch_event_target.html.markdown | 36 ++- .../r/cloudwatch_log_group.html.markdown | 32 ++- .../r/cloudwatch_metric_alarm.html.markdown | 32 ++- ...o_log_delivery_configuration.html.markdown | 28 ++- .../cdktf/python/r/dx_gateway.html.markdown | 32 ++- .../r/ecr_lifecycle_policy.html.markdown | 6 +- .../python/r/ecr_repository.html.markdown | 6 +- .../r/ecr_repository_policy.html.markdown | 6 +- .../cdktf/python/r/ecs_service.html.markdown | 3 +- .../cdktf/python/r/iam_role.html.markdown | 31 ++- .../python/r/iam_role_policy.html.markdown | 33 ++- .../iam_role_policy_attachment.html.markdown | 33 ++- .../r/imagebuilder_image_recipe.html.markdown | 4 +- .../cdktf/python/r/instance.html.markdown | 6 +- .../cdktf/python/r/kms_alias.html.markdown | 6 +- .../docs/cdktf/python/r/kms_key.html.markdown | 6 +- .../python/r/lambda_function.html.markdown | 30 ++- .../python/r/lambda_permission.html.markdown | 37 ++- ..._cloud_autonomous_vm_cluster.html.markdown | 201 ++++++++++++++++ ...cloud_exadata_infrastructure.html.markdown | 172 ++++++++++++++ .../r/odb_cloud_vm_cluster.html.markdown | 175 ++++++++++++++ .../cdktf/python/r/odb_network.html.markdown | 116 +++++++++ ...b_network_peering_connection.html.markdown | 102 ++++++++ .../r/organizations_account.html.markdown | 33 ++- ...ions_delegated_administrator.html.markdown | 29 ++- .../organizations_organization.html.markdown | 31 ++- ...izations_organizational_unit.html.markdown | 27 ++- ...anizations_policy_attachment.html.markdown | 33 ++- .../python/r/rds_global_cluster.html.markdown | 11 +- .../docs/cdktf/python/r/route.html.markdown | 14 +- .../python/r/route53_record.html.markdown | 42 +++- .../r/route53_resolver_rule.html.markdown | 6 +- ...53_resolver_rule_association.html.markdown | 6 +- .../cdktf/python/r/route_table.html.markdown | 6 +- .../cdktf/python/r/s3_bucket.html.markdown | 32 ++- .../python/r/s3_bucket_acl.html.markdown | 30 ++- ...s3_bucket_cors_configuration.html.markdown | 29 ++- .../python/r/s3_bucket_logging.html.markdown | 29 ++- .../python/r/s3_bucket_object.html.markdown | 30 ++- .../python/r/s3_bucket_policy.html.markdown | 32 ++- ...ide_encryption_configuration.html.markdown | 29 ++- .../r/s3_bucket_versioning.html.markdown | 29 ++- ...bucket_website_configuration.html.markdown | 29 ++- .../cdktf/python/r/s3_object.html.markdown | 30 ++- .../r/sagemaker_user_profile.html.markdown | 34 ++- ...ecretsmanager_secret_version.html.markdown | 6 +- .../python/r/security_group.html.markdown | 32 ++- .../python/r/sfn_state_machine.html.markdown | 23 +- .../cdktf/python/r/sqs_queue.html.markdown | 32 ++- .../python/r/ssm_association.html.markdown | 6 +- .../cdktf/python/r/ssm_document.html.markdown | 6 +- .../r/ssm_maintenance_window.html.markdown | 6 +- ...sm_maintenance_window_target.html.markdown | 6 +- .../ssm_maintenance_window_task.html.markdown | 6 +- .../python/r/ssm_parameter.html.markdown | 6 +- .../python/r/ssm_patch_baseline.html.markdown | 6 +- .../docs/cdktf/python/r/subnet.html.markdown | 32 ++- .../cdktf/python/r/vpc_endpoint.html.markdown | 6 +- ...c_security_group_egress_rule.html.markdown | 6 +- ..._security_group_ingress_rule.html.markdown | 6 +- ...curity_group_vpc_association.html.markdown | 30 ++- .../python/r/wafv2_web_acl.html.markdown | 28 ++- ...oudfront_create_invalidation.html.markdown | 148 ++++++++++++ .../actions/ec2_stop_instance.html.markdown | 109 +++++++++ .../actions/lambda_invoke.html.markdown | 200 ++++++++++++++++ .../actions/ses_send_email.html.markdown | 168 +++++++++++++ .../actions/sns_publish.html.markdown | 142 +++++++++++ .../typescript/d/billing_views.html.markdown | 87 +++++++ .../d/ce_cost_category.html.markdown | 4 +- .../d/elasticache_subnet_group.html.markdown | 4 +- .../d/iam_server_certificate.html.markdown | 32 +-- .../cdktf/typescript/d/instance.html.markdown | 17 +- .../typescript/d/instances.html.markdown | 17 +- .../d/media_convert_queue.html.markdown | 4 +- .../typescript/d/memorydb_acl.html.markdown | 4 +- .../d/memorydb_cluster.html.markdown | 4 +- .../d/memorydb_parameter_group.html.markdown | 4 +- .../d/memorydb_snapshot.html.markdown | 4 +- .../d/memorydb_subnet_group.html.markdown | 4 +- .../typescript/d/memorydb_user.html.markdown | 4 +- ..._cloud_autonomous_vm_cluster.html.markdown | 102 ++++++++ ...cloud_exadata_infrastructure.html.markdown | 93 ++++++++ .../d/odb_cloud_vm_cluster.html.markdown | 95 ++++++++ .../typescript/d/odb_network.html.markdown | 74 ++++++ ...b_network_peering_connection.html.markdown | 66 ++++++ ...andards_control_associations.html.markdown | 4 +- .../d/workspaces_workspace.html.markdown | 4 +- ...enid_token_for_developer_identity.markdown | 3 +- .../batch_job_queue.html.markdown | 38 +++ .../cloudwatch_log_group.html.markdown | 38 +++ .../list-resources/iam_role.html.markdown | 37 +++ .../list-resources/instance.html.markdown | 74 ++++++ .../r/appflow_connector_profile.html.markdown | 28 ++- .../typescript/r/appflow_flow.html.markdown | 28 ++- .../r/autoscaling_group.html.markdown | 4 +- .../r/cloudfront_distribution.html.markdown | 103 ++++++-- .../cloudfront_key_value_store.html.markdown | 27 ++- .../cloudfrontkeyvaluestore_key.html.markdown | 29 ++- .../r/cloudwatch_event_rule.html.markdown | 34 ++- .../r/cloudwatch_event_target.html.markdown | 36 ++- .../r/cloudwatch_log_group.html.markdown | 32 ++- .../r/cloudwatch_metric_alarm.html.markdown | 36 ++- ...o_log_delivery_configuration.html.markdown | 28 ++- .../typescript/r/dx_gateway.html.markdown | 32 ++- .../r/ecr_lifecycle_policy.html.markdown | 6 +- .../typescript/r/ecr_repository.html.markdown | 6 +- .../r/ecr_repository_policy.html.markdown | 6 +- .../typescript/r/ecs_service.html.markdown | 3 +- .../cdktf/typescript/r/iam_role.html.markdown | 31 ++- .../r/iam_role_policy.html.markdown | 33 ++- .../iam_role_policy_attachment.html.markdown | 33 ++- .../r/imagebuilder_image_recipe.html.markdown | 4 +- .../cdktf/typescript/r/instance.html.markdown | 6 +- .../typescript/r/kms_alias.html.markdown | 6 +- .../cdktf/typescript/r/kms_key.html.markdown | 6 +- .../r/lambda_function.html.markdown | 32 ++- .../r/lambda_permission.html.markdown | 37 ++- ..._cloud_autonomous_vm_cluster.html.markdown | 220 ++++++++++++++++++ ...cloud_exadata_infrastructure.html.markdown | 191 +++++++++++++++ .../r/odb_cloud_vm_cluster.html.markdown | 183 +++++++++++++++ .../typescript/r/odb_network.html.markdown | 122 ++++++++++ ...b_network_peering_connection.html.markdown | 112 +++++++++ .../r/organizations_account.html.markdown | 33 ++- ...ions_delegated_administrator.html.markdown | 29 ++- .../organizations_organization.html.markdown | 31 ++- ...izations_organizational_unit.html.markdown | 27 ++- ...anizations_policy_attachment.html.markdown | 33 ++- .../r/rds_global_cluster.html.markdown | 11 +- .../cdktf/typescript/r/route.html.markdown | 14 +- .../typescript/r/route53_record.html.markdown | 46 +++- .../r/route53_resolver_rule.html.markdown | 6 +- ...53_resolver_rule_association.html.markdown | 6 +- .../typescript/r/route_table.html.markdown | 6 +- .../typescript/r/s3_bucket.html.markdown | 32 ++- .../typescript/r/s3_bucket_acl.html.markdown | 30 ++- ...s3_bucket_cors_configuration.html.markdown | 29 ++- .../r/s3_bucket_logging.html.markdown | 29 ++- .../r/s3_bucket_object.html.markdown | 30 ++- .../r/s3_bucket_policy.html.markdown | 32 ++- ...ide_encryption_configuration.html.markdown | 29 ++- .../r/s3_bucket_versioning.html.markdown | 29 ++- ...bucket_website_configuration.html.markdown | 29 ++- .../typescript/r/s3_object.html.markdown | 30 ++- .../r/sagemaker_user_profile.html.markdown | 34 ++- ...ecretsmanager_secret_version.html.markdown | 6 +- .../typescript/r/security_group.html.markdown | 32 ++- .../r/sfn_state_machine.html.markdown | 23 +- .../typescript/r/sqs_queue.html.markdown | 32 ++- .../r/ssm_association.html.markdown | 6 +- .../typescript/r/ssm_document.html.markdown | 6 +- .../r/ssm_maintenance_window.html.markdown | 6 +- ...sm_maintenance_window_target.html.markdown | 6 +- .../ssm_maintenance_window_task.html.markdown | 6 +- .../typescript/r/ssm_parameter.html.markdown | 6 +- .../r/ssm_patch_baseline.html.markdown | 6 +- .../cdktf/typescript/r/subnet.html.markdown | 32 ++- .../typescript/r/vpc_endpoint.html.markdown | 6 +- ...c_security_group_egress_rule.html.markdown | 6 +- ..._security_group_ingress_rule.html.markdown | 6 +- ...curity_group_vpc_association.html.markdown | 30 ++- .../typescript/r/wafv2_web_acl.html.markdown | 16 +- 198 files changed, 6985 insertions(+), 483 deletions(-) create mode 100644 website/docs/cdktf/python/actions/cloudfront_create_invalidation.html.markdown create mode 100644 website/docs/cdktf/python/actions/ec2_stop_instance.html.markdown create mode 100644 website/docs/cdktf/python/actions/lambda_invoke.html.markdown create mode 100644 website/docs/cdktf/python/actions/ses_send_email.html.markdown create mode 100644 website/docs/cdktf/python/actions/sns_publish.html.markdown create mode 100644 website/docs/cdktf/python/d/billing_views.html.markdown create mode 100644 website/docs/cdktf/python/d/odb_cloud_autonomous_vm_cluster.html.markdown create mode 100644 website/docs/cdktf/python/d/odb_cloud_exadata_infrastructure.html.markdown create mode 100644 website/docs/cdktf/python/d/odb_cloud_vm_cluster.html.markdown create mode 100644 website/docs/cdktf/python/d/odb_network.html.markdown create mode 100644 website/docs/cdktf/python/d/odb_network_peering_connection.html.markdown create mode 100644 website/docs/cdktf/python/list-resources/batch_job_queue.html.markdown create mode 100644 website/docs/cdktf/python/list-resources/cloudwatch_log_group.html.markdown create mode 100644 website/docs/cdktf/python/list-resources/iam_role.html.markdown create mode 100644 website/docs/cdktf/python/list-resources/instance.html.markdown create mode 100644 website/docs/cdktf/python/r/odb_cloud_autonomous_vm_cluster.html.markdown create mode 100644 website/docs/cdktf/python/r/odb_cloud_exadata_infrastructure.html.markdown create mode 100644 website/docs/cdktf/python/r/odb_cloud_vm_cluster.html.markdown create mode 100644 website/docs/cdktf/python/r/odb_network.html.markdown create mode 100644 website/docs/cdktf/python/r/odb_network_peering_connection.html.markdown create mode 100644 website/docs/cdktf/typescript/actions/cloudfront_create_invalidation.html.markdown create mode 100644 website/docs/cdktf/typescript/actions/ec2_stop_instance.html.markdown create mode 100644 website/docs/cdktf/typescript/actions/lambda_invoke.html.markdown create mode 100644 website/docs/cdktf/typescript/actions/ses_send_email.html.markdown create mode 100644 website/docs/cdktf/typescript/actions/sns_publish.html.markdown create mode 100644 website/docs/cdktf/typescript/d/billing_views.html.markdown create mode 100644 website/docs/cdktf/typescript/d/odb_cloud_autonomous_vm_cluster.html.markdown create mode 100644 website/docs/cdktf/typescript/d/odb_cloud_exadata_infrastructure.html.markdown create mode 100644 website/docs/cdktf/typescript/d/odb_cloud_vm_cluster.html.markdown create mode 100644 website/docs/cdktf/typescript/d/odb_network.html.markdown create mode 100644 website/docs/cdktf/typescript/d/odb_network_peering_connection.html.markdown create mode 100644 website/docs/cdktf/typescript/list-resources/batch_job_queue.html.markdown create mode 100644 website/docs/cdktf/typescript/list-resources/cloudwatch_log_group.html.markdown create mode 100644 website/docs/cdktf/typescript/list-resources/iam_role.html.markdown create mode 100644 website/docs/cdktf/typescript/list-resources/instance.html.markdown create mode 100644 website/docs/cdktf/typescript/r/odb_cloud_autonomous_vm_cluster.html.markdown create mode 100644 website/docs/cdktf/typescript/r/odb_cloud_exadata_infrastructure.html.markdown create mode 100644 website/docs/cdktf/typescript/r/odb_cloud_vm_cluster.html.markdown create mode 100644 website/docs/cdktf/typescript/r/odb_network.html.markdown create mode 100644 website/docs/cdktf/typescript/r/odb_network_peering_connection.html.markdown diff --git a/website/docs/cdktf/python/actions/cloudfront_create_invalidation.html.markdown b/website/docs/cdktf/python/actions/cloudfront_create_invalidation.html.markdown new file mode 100644 index 000000000000..ced7fc065b4d --- /dev/null +++ b/website/docs/cdktf/python/actions/cloudfront_create_invalidation.html.markdown @@ -0,0 +1,126 @@ +--- +subcategory: "CloudFront" +layout: "aws" +page_title: "AWS: aws_cloudfront_create_invalidation" +description: |- + Invalidates CloudFront distribution cache for specified paths. +--- + + + +# Action: aws_cloudfront_create_invalidation + +~> **Note:** `aws_cloudfront_create_invalidation` is in beta. Its interface and behavior may change as the feature evolves, and breaking changes are possible. It is offered as a technical preview without compatibility guarantees until Terraform 1.14 is generally available. + +Invalidates CloudFront distribution cache for specified paths. This action creates an invalidation request and waits for it to complete. + +For information about CloudFront cache invalidation, see the [Amazon CloudFront Developer Guide](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Invalidation.html). For specific information about creating invalidation requests, see the [CreateInvalidation](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CreateInvalidation.html) page in the Amazon CloudFront API Reference. + +~> **Note:** CloudFront invalidation requests can take several minutes to complete. This action will wait for the invalidation to finish before continuing. You can only have a limited number of invalidation requests in progress at any given time. + +## Example Usage + +### Basic 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 DataResource, TerraformStack +# +# Provider bindings are generated by running `cdktf get`. +# See https://cdk.tf/provider-generation for more details. +# +from imports.aws.cloudfront_distribution import CloudfrontDistribution +class MyConvertedCode(TerraformStack): + def __init__(self, scope, name, *, defaultCacheBehavior, enabled, origin, restrictions, viewerCertificate): + super().__init__(scope, name) + CloudfrontDistribution(self, "example", + default_cache_behavior=default_cache_behavior, + enabled=enabled, + origin=origin, + restrictions=restrictions, + viewer_certificate=viewer_certificate + ) + terraform_data_example = DataResource(self, "example_1", + input="trigger-invalidation", + lifecycle=TerraformResourceLifecycle( + action_trigger=[{ + "actions": [aws_cloudfront_create_invalidation.example], + "events": [before_create, before_update] + } + ] + ) + ) + # This allows the Terraform resource name to match the original name. You can remove the call if you don't need them to match. + terraform_data_example.override_logical_id("example") +``` + +### Invalidate Specific Paths + +```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) +``` + +### With Custom Caller Reference + +```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) +``` + +### CI/CD Pipeline Integration + +Use this action in your deployment pipeline to invalidate cache after updating static assets: + +```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 DataResource, TerraformStack +class MyConvertedCode(TerraformStack): + def __init__(self, scope, name): + super().__init__(scope, name) + DataResource(self, "deploy_complete", + depends_on=[assets], + input=deployment_id, + lifecycle=TerraformResourceLifecycle( + action_trigger=[{ + "actions": [aws_cloudfront_create_invalidation.post_deploy], + "events": [before_create, before_update] + } + ] + ) + ) +``` + +### Environment-Specific Invalidation + +```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) +``` + +## Argument Reference + +This action supports the following arguments: + +* `distribution_id` - (Required) ID of the CloudFront distribution to invalidate cache for. Must be a valid CloudFront distribution ID (e.g., E1GHKQ2EXAMPLE). +* `paths` - (Required) List of file paths or patterns to invalidate. Use `/*` to invalidate all files. Supports specific files (`/index.html`), directory wildcards (`/images/*`), or all files (`/*`). Maximum of 3000 paths per invalidation request. Note: The first 1,000 invalidation paths per month are free, additional paths are charged per path. +* `caller_reference` - (Optional) Unique identifier for the invalidation request. If not provided, one will be generated automatically. Maximum length of 128 characters. +* `timeout` - (Optional) Timeout in seconds to wait for the invalidation to complete. Defaults to 900 seconds (15 minutes). Must be between 60 and 3600 seconds. Invalidation requests typically take 5-15 minutes to process. + + \ No newline at end of file diff --git a/website/docs/cdktf/python/actions/ec2_stop_instance.html.markdown b/website/docs/cdktf/python/actions/ec2_stop_instance.html.markdown new file mode 100644 index 000000000000..225ec79feb9e --- /dev/null +++ b/website/docs/cdktf/python/actions/ec2_stop_instance.html.markdown @@ -0,0 +1,100 @@ +--- +subcategory: "EC2 (Elastic Compute Cloud)" +layout: "aws" +page_title: "AWS: aws_ec2_stop_instance" +description: |- + Stops an EC2 instance. +--- + + + +# Action: aws_ec2_stop_instance + +~> **Note:** `aws_ec2_stop_instance` is in alpha. Its interface and behavior may change as the feature evolves, and breaking changes are possible. It is offered as a technical preview without compatibility guarantees until Terraform 1.14 is generally available. + +Stops an EC2 instance. This action will gracefully stop the instance and wait for it to reach the stopped state. + +For information about Amazon EC2, see the [Amazon EC2 User Guide](https://docs.aws.amazon.com/ec2/latest/userguide/). For specific information about stopping instances, see the [StopInstances](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_StopInstances.html) page in the Amazon EC2 API Reference. + +~> **Note:** This action directly stops EC2 instances which will interrupt running workloads. Ensure proper coordination with your applications before using this action. + +## 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.instance import Instance +class MyConvertedCode(TerraformStack): + def __init__(self, scope, name): + super().__init__(scope, name) + Instance(self, "example", + ami=Token.as_string(amazon_linux.id), + instance_type="t3.micro", + tags={ + "Name": "example-instance" + } + ) +``` + +### Force Stop + +```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) +``` + +### Maintenance Window + +```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, DataResource, TerraformStack +# +# Provider bindings are generated by running `cdktf get`. +# See https://cdk.tf/provider-generation for more details. +# +from imports.aws.instance import Instance +class MyConvertedCode(TerraformStack): + def __init__(self, scope, name): + super().__init__(scope, name) + web_server = Instance(self, "web_server", + ami=Token.as_string(amazon_linux.id), + instance_type="t3.micro", + tags={ + "Name": "web-server" + } + ) + DataResource(self, "maintenance_trigger", + depends_on=[web_server], + input=maintenance_window.value, + lifecycle=TerraformResourceLifecycle( + action_trigger=[{ + "actions": [aws_ec2_stop_instance.maintenance], + "events": [before_create, before_update] + } + ] + ) + ) +``` + +## Argument Reference + +This action supports the following arguments: + +* `instance_id` - (Required) ID of the EC2 instance to stop. Must be a valid EC2 instance ID (e.g., i-1234567890abcdef0). +* `force` - (Optional) Forces the instance to stop. The instance does not have an opportunity to flush file system caches or file system metadata. If you use this option, you must perform file system check and repair procedures. This option is not recommended for Windows instances. Default: `false`. +* `timeout` - (Optional) Timeout in seconds to wait for the instance to stop. Must be between 30 and 3600 seconds. Default: `600`. + + \ No newline at end of file diff --git a/website/docs/cdktf/python/actions/lambda_invoke.html.markdown b/website/docs/cdktf/python/actions/lambda_invoke.html.markdown new file mode 100644 index 000000000000..da209f94ab3c --- /dev/null +++ b/website/docs/cdktf/python/actions/lambda_invoke.html.markdown @@ -0,0 +1,169 @@ +--- +subcategory: "Lambda" +layout: "aws" +page_title: "AWS: aws_lambda_invoke" +description: |- + Invokes an AWS Lambda function with the specified payload. +--- + + + +# Action: aws_lambda_invoke + +~> **Note:** `aws_lambda_invoke` is in beta. Its interface and behavior may change as the feature evolves, and breaking changes are possible. It is offered as a technical preview without compatibility guarantees until Terraform 1.14 is generally available. + +Invokes an AWS Lambda function with the specified payload. This action allows for imperative invocation of Lambda functions with full control over invocation parameters. + +For information about AWS Lambda functions, see the [AWS Lambda Developer Guide](https://docs.aws.amazon.com/lambda/latest/dg/). For specific information about invoking Lambda functions, see the [Invoke](https://docs.aws.amazon.com/lambda/latest/api/API_Invoke.html) page in the AWS Lambda API Reference. + +~> **Note:** Synchronous invocations will wait for the function to complete execution, while asynchronous invocations return immediately after the request is _accepted_. + +## Example Usage + +### Basic 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 DataResource, TerraformStack +# +# Provider bindings are generated by running `cdktf get`. +# See https://cdk.tf/provider-generation for more details. +# +from imports.aws.lambda_function import LambdaFunction +class MyConvertedCode(TerraformStack): + def __init__(self, scope, name, *, functionName, role): + super().__init__(scope, name) + LambdaFunction(self, "example", + function_name=function_name, + role=role + ) + terraform_data_example = DataResource(self, "example_1", + input="trigger-lambda", + lifecycle=TerraformResourceLifecycle( + action_trigger=[{ + "actions": [aws_lambda_invoke.example], + "events": [before_create, before_update] + } + ] + ) + ) + # This allows the Terraform resource name to match the original name. You can remove the call if you don't need them to match. + terraform_data_example.override_logical_id("example") +``` + +### Invoke with Function 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) +``` + +### Asynchronous Invocation + +```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) +``` + +### Dry Run Validation + +```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) +``` + +### With Log Capture + +```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) +``` + +### Mobile Application Context + +```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) +``` + +### CI/CD Pipeline Integration + +Use this action in your deployment pipeline to trigger post-deployment functions: + +```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 DataResource, TerraformStack +class MyConvertedCode(TerraformStack): + def __init__(self, scope, name): + super().__init__(scope, name) + DataResource(self, "deploy_complete", + depends_on=[api], + input=deployment_id, + lifecycle=TerraformResourceLifecycle( + action_trigger=[{ + "actions": [aws_lambda_invoke.warmup], + "events": [before_create, before_update] + } + ] + ) + ) +``` + +### Environment-Specific Processing + +```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) +``` + +### Complex Payload with Dynamic Content + +```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) +``` + +## Argument Reference + +This action supports the following arguments: + +* `client_context` - (Optional) Up to 3,583 bytes of base64-encoded data about the invoking client to pass to the function in the context object. This is only used for mobile applications and should contain information about the client application and device. +* `function_name` - (Required) Name, ARN, or partial ARN of the Lambda function to invoke. You can specify a function name (e.g., `my-function`), a qualified function name (e.g., `my-function:PROD`), or a partial ARN (e.g., `123456789012:function:my-function`). +* `invocation_type` - (Optional) Invocation type. Valid values are `RequestResponse` (default) for synchronous invocation that waits for the function to complete and returns the response, `Event` for asynchronous invocation that returns immediately after the request is accepted, and `DryRun` to validate parameters and verify permissions without actually executing the function. +* `log_type` - (Optional) Set to `Tail` to include the execution log in the response. Only applies to synchronous invocations (`RequestResponse` invocation type). Defaults to `None`. When set to `Tail`, the last 4 KB of the execution log is included in the response. +* `payload` - (Required) JSON payload to send to the Lambda function. This should be a valid JSON string that represents the event data for your function. The payload size limit is 6 MB for synchronous invocations and 256 KB for asynchronous invocations. +* `qualifier` - (Optional) Version or alias of the Lambda function to invoke. If not specified, the `$LATEST` version will be invoked. Can be a version number (e.g., `1`) or an alias (e.g., `PROD`). + + \ No newline at end of file diff --git a/website/docs/cdktf/python/actions/ses_send_email.html.markdown b/website/docs/cdktf/python/actions/ses_send_email.html.markdown new file mode 100644 index 000000000000..2e63e33c3c8f --- /dev/null +++ b/website/docs/cdktf/python/actions/ses_send_email.html.markdown @@ -0,0 +1,147 @@ +--- +subcategory: "SES (Simple Email)" +layout: "aws" +page_title: "AWS: aws_ses_send_email" +description: |- + Sends an email using Amazon SES. +--- + + + +# Action: aws_ses_send_email + +~> **Note:** `aws_ses_send_email` is in beta. Its interface and behavior may change as the feature evolves, and breaking changes are possible. It is offered as a technical preview without compatibility guarantees until Terraform 1.14 is generally available. + +Sends an email using Amazon SES. This action allows for imperative email sending with full control over recipients, content, and formatting. + +For information about Amazon SES, see the [Amazon SES Developer Guide](https://docs.aws.amazon.com/ses/latest/dg/). For specific information about sending emails, see the [SendEmail](https://docs.aws.amazon.com/ses/latest/APIReference/API_SendEmail.html) page in the Amazon SES API Reference. + +~> **Note:** All email addresses used must be verified in Amazon SES or belong to a verified domain. Due to the difficulty in testing, your help is important in discovering and reporting issues. + +## Example Usage + +### Basic 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 DataResource, TerraformStack +# +# Provider bindings are generated by running `cdktf get`. +# See https://cdk.tf/provider-generation for more details. +# +from imports.aws.ses_email_identity import SesEmailIdentity +class MyConvertedCode(TerraformStack): + def __init__(self, scope, name): + super().__init__(scope, name) + SesEmailIdentity(self, "example", + email="sender@example.com" + ) + terraform_data_example = DataResource(self, "example_1", + input="send-notification", + lifecycle=TerraformResourceLifecycle( + action_trigger=[{ + "actions": [aws_ses_send_email.example], + "events": [before_create, before_update] + } + ] + ) + ) + # This allows the Terraform resource name to match the original name. You can remove the call if you don't need them to match. + terraform_data_example.override_logical_id("example") +``` + +### HTML Email with Multiple Recipients + +```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) +``` + +### Deployment Notification + +```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 DataResource, TerraformStack +class MyConvertedCode(TerraformStack): + def __init__(self, scope, name): + super().__init__(scope, name) + DataResource(self, "deployment", + depends_on=[app], + input=deployment_id.value, + lifecycle=TerraformResourceLifecycle( + action_trigger=[{ + "actions": [aws_ses_send_email.deploy_notification], + "events": [after_create] + } + ] + ) + ) +``` + +### Alert Email with Dynamic Content + +```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) +``` + +### Multi-format Email + +```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) +``` + +### Conditional Email Sending + +```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) +``` + +### Batch Processing Notification + +```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) +``` + +## Argument Reference + +This action supports the following arguments: + +* `bcc_addresses` - (Optional) List of email addresses for the BCC: field of the message. Recipients in this list will receive the email but their addresses will not be visible to other recipients. +* `cc_addresses` - (Optional) List of email addresses for the CC: field of the message. Recipients in this list will receive the email and their addresses will be visible to all recipients. +* `html_body` - (Optional) Message body in HTML format. Either `text_body` or `html_body` (or both) must be specified. HTML content allows for rich formatting including links, images, and styling. +* `reply_to_addresses` - (Optional) List of reply-to email addresses for the message. If the recipient replies to the message, each reply-to address will receive the reply. If not specified, replies will go to the source address. +* `return_path` - (Optional) Email address that bounces and complaints will be forwarded to when feedback forwarding is enabled. This is useful for handling delivery failures and spam complaints. +* `source` - (Required) Email address that is sending the email. This address must be either individually verified with Amazon SES, or from a domain that has been verified with Amazon SES. +* `subject` - (Required) Subject of the message: A short summary of the content, which will appear in the recipient's inbox. +* `text_body` - (Optional) Message body in text format. Either `text_body` or `html_body` (or both) must be specified. Text format ensures compatibility with all email clients. +* `to_addresses` - (Optional) List of email addresses for the To: field of the message. These are the primary recipients of the email. + + \ No newline at end of file diff --git a/website/docs/cdktf/python/actions/sns_publish.html.markdown b/website/docs/cdktf/python/actions/sns_publish.html.markdown new file mode 100644 index 000000000000..8a70c9e44eeb --- /dev/null +++ b/website/docs/cdktf/python/actions/sns_publish.html.markdown @@ -0,0 +1,127 @@ +--- +subcategory: "SNS (Simple Notification)" +layout: "aws" +page_title: "AWS: aws_sns_publish" +description: |- + Publishes a message to an Amazon SNS topic. +--- + + + +# Action: aws_sns_publish + +~> **Note:** `aws_sns_publish` is in beta. Its interface and behavior may change as the feature evolves, and breaking changes are possible. It is offered as a technical preview without compatibility guarantees until Terraform 1.14 is generally available. + +Publishes a message to an Amazon SNS topic. This action allows for imperative message publishing with full control over message attributes and structure. + +For information about Amazon SNS, see the [Amazon SNS Developer Guide](https://docs.aws.amazon.com/sns/latest/dg/). For specific information about publishing messages, see the [Publish](https://docs.aws.amazon.com/sns/latest/api/API_Publish.html) page in the Amazon SNS API Reference. + +## Example Usage + +### Basic 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 DataResource, TerraformStack +# +# Provider bindings are generated by running `cdktf get`. +# See https://cdk.tf/provider-generation for more details. +# +from imports.aws.sns_topic import SnsTopic +class MyConvertedCode(TerraformStack): + def __init__(self, scope, name): + super().__init__(scope, name) + SnsTopic(self, "example", + name="example-topic" + ) + terraform_data_example = DataResource(self, "example_1", + input="trigger-message", + lifecycle=TerraformResourceLifecycle( + action_trigger=[{ + "actions": [aws_sns_publish.example], + "events": [before_create, before_update] + } + ] + ) + ) + # This allows the Terraform resource name to match the original name. You can remove the call if you don't need them to match. + terraform_data_example.override_logical_id("example") +``` + +### Message with Subject + +```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) +``` + +### JSON Message Structure + +```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) +``` + +### Message with Attributes + +```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) +``` + +### Deployment Notification + +```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 DataResource, TerraformStack +class MyConvertedCode(TerraformStack): + def __init__(self, scope, name): + super().__init__(scope, name) + DataResource(self, "deploy_trigger", + depends_on=[app, main], + input=deployment_id.value, + lifecycle=TerraformResourceLifecycle( + action_trigger=[{ + "actions": [aws_sns_publish.deploy_complete], + "events": [before_create, before_update] + } + ] + ) + ) +``` + +## Argument Reference + +This action supports the following arguments: + +* `message` - (Required) Message to publish. For JSON message structure, this should be a JSON object with protocol-specific messages. Maximum size is 256 KB. +* `message_attributes` - (Optional) Message attributes to include with the message. Each attribute consists of a name, data type, and value. Up to 10 attributes are allowed. [See below.](#message-attributes) +* `message_structure` - (Optional) Set to `json` if you want to send different messages for each protocol. If not specified, the message will be sent as-is to all protocols. +* `subject` - (Optional) Optional subject for the message. Only used for email and email-json protocols. Maximum length is 100 characters. +* `topic_arn` - (Required) ARN of the SNS topic to publish the message to. + +### Message Attributes + +The `message_attributes` block supports: + +* `data_type` - (Required) Data type of the message attribute. Valid values are `String`, `Number`, and `Binary`. +* `map_block_key` - (Required) Name of the message attribute (used as map key). Must be unique within the message. +* `string_value` - (Required) Value of the message attribute. + + \ No newline at end of file diff --git a/website/docs/cdktf/python/d/billing_views.html.markdown b/website/docs/cdktf/python/d/billing_views.html.markdown new file mode 100644 index 000000000000..b1bdc9cb08ee --- /dev/null +++ b/website/docs/cdktf/python/d/billing_views.html.markdown @@ -0,0 +1,76 @@ +--- +subcategory: "Billing" +layout: "aws" +page_title: "AWS: aws_billing_views" +description: |- + Retrieve a list of AWS Billing Views. +--- + + + +# Data Source: aws_billing_views + +Provides details about an AWS Billing Views. + +## 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 TerraformOutput, Fn, TerraformStack +# +# Provider bindings are generated by running `cdktf get`. +# See https://cdk.tf/provider-generation for more details. +# +from imports.aws.data_aws_billing_views import DataAwsBillingViews +class MyConvertedCode(TerraformStack): + def __init__(self, scope, name): + super().__init__(scope, name) + example = DataAwsBillingViews(self, "example", + billing_view_types=["PRIMARY"] + ) + TerraformOutput(self, "primary_view_arn_by_types", + value=Fn.lookup_nested(example.billing_view, ["0", "arn"]) + ) +``` + +```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 +# +# Provider bindings are generated by running `cdktf get`. +# See https://cdk.tf/provider-generation for more details. +# +from imports.aws.data_aws_billing_views import DataAwsBillingViews +class MyConvertedCode(TerraformStack): + def __init__(self, scope, name): + super().__init__(scope, name) + example = DataAwsBillingViews(self, "example") + TerraformOutput(self, "primary_view_arn_by_name", + value=Fn.lookup_nested("${[ for view in ${" + example.billing_view + "} : view.arn if view.name == \"Primary View\"]}", ["0"]) + ) + TerraformOutput(self, "view_arns", + value="${[ for view in ${" + example.billing_view + "} : view.arn]}" + ) +``` + +## Argument Reference + +The following arguments are optional: + +* `billing_view_types` - (Optional) List of billing view types to retrieve. Valid values are `PRIMARY`, `BILLING_GROUP`, `CUSTOM`. + +## Attribute Reference + +This data source exports the following attributes in addition to the arguments above: + +* `billing_view` - List of billing view objects with the following attributes: + * `arn` - ARN of the billing view. + * `description` - Description of the billing view. + * `name` - Name of the billing view. + * `owner_account_id` - Account ID of the billing view owner. + + \ No newline at end of file diff --git a/website/docs/cdktf/python/d/ce_cost_category.html.markdown b/website/docs/cdktf/python/d/ce_cost_category.html.markdown index 4768e50cff5f..396328da4dce 100644 --- a/website/docs/cdktf/python/d/ce_cost_category.html.markdown +++ b/website/docs/cdktf/python/d/ce_cost_category.html.markdown @@ -8,7 +8,7 @@ description: |- -# Resource: aws_ce_cost_category +# Data Source: aws_ce_cost_category Provides details about a specific CostExplorer Cost Category. @@ -102,4 +102,4 @@ This data source exports the following attributes in addition to the arguments a * `type` - Parameter type. * `values` - Parameter values. - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/d/elasticache_subnet_group.html.markdown b/website/docs/cdktf/python/d/elasticache_subnet_group.html.markdown index 32e62fa22bc3..fcef7594807a 100644 --- a/website/docs/cdktf/python/d/elasticache_subnet_group.html.markdown +++ b/website/docs/cdktf/python/d/elasticache_subnet_group.html.markdown @@ -8,7 +8,7 @@ description: |- -# Resource: aws_elasticache_subnet_group +# Data Source: aws_elasticache_subnet_group Provides information about a ElastiCache Subnet Group. @@ -49,4 +49,4 @@ This data source exports the following attributes in addition to the arguments a * `tags` - Map of tags assigned to the subnet group. * `vpc_id` - The Amazon Virtual Private Cloud identifier (VPC ID) of the cache subnet group. - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/d/iam_server_certificate.html.markdown b/website/docs/cdktf/python/d/iam_server_certificate.html.markdown index 4f5e74ee6afa..db797caf678a 100644 --- a/website/docs/cdktf/python/d/iam_server_certificate.html.markdown +++ b/website/docs/cdktf/python/d/iam_server_certificate.html.markdown @@ -65,31 +65,4 @@ This data source exports the following attributes in addition to the arguments a * `certificate_body` is the public key certificate (PEM-encoded). This is useful when [configuring back-end instance authentication](http://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-create-https-ssl-load-balancer.html) policy for load balancer * `certificate_chain` is the public key certificate chain (PEM-encoded) if exists, empty otherwise -## Import - -In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import an IAM server certificate using `name`. 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.iam_server_certificate import IamServerCertificate -class MyConvertedCode(TerraformStack): - def __init__(self, scope, name): - super().__init__(scope, name) - IamServerCertificate.generate_config_for_import(self, "example", "example") -``` - -Using `terraform import`, import an IAM server certificate using `name`. For example: - -```console -% terraform import aws_iam_server_certificate.example example -``` - -Import will read in the certificate body, certificate chain (if it exists), ID, name, path, and ARN. It will not retrieve the private key which is not available through the AWS API. - - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/d/instance.html.markdown b/website/docs/cdktf/python/d/instance.html.markdown index 1edf7f5160c5..7602e014adb0 100644 --- a/website/docs/cdktf/python/d/instance.html.markdown +++ b/website/docs/cdktf/python/d/instance.html.markdown @@ -47,9 +47,10 @@ This data source supports the following arguments: * `instance_id` - (Optional) Specify the exact Instance ID with which to populate the data source. * `instance_tags` - (Optional) Map of tags, each pair of which must exactly match a pair on the desired Instance. -* `filter` - (Optional) One or more name/value pairs to use as filters. There are -several valid keys, for a full reference, check out -[describe-instances in the AWS CLI reference][1]. +* `filter` - (Optional) One or more filters to apply to the search. + If multiple `filter` blocks are provided, they all must be true. + For a full reference of filter names, see [describe-instances in the AWS CLI reference][1]. + See [`filter` Block](#filter-block) below. * `get_password_data` - (Optional) If true, wait for password data to become available and retrieve it. Useful for getting the administrator password for instances running Microsoft Windows. The password data is exported to the `password_data` attribute. See [GetPasswordData](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_GetPasswordData.html) for more information. * `get_user_data` - (Optional) Retrieve Base64 encoded User Data contents into the `user_data_base64` attribute. A SHA-1 hash of the User Data contents will always be present in the `user_data` attribute. Defaults to `false`. @@ -59,6 +60,14 @@ several valid keys, for a full reference, check out Terraform will fail. Ensure that your search is specific enough to return a single Instance ID only. +### `filter` Block + +The `filter` block supports the following arguments: + +* `name` - (Required) Name of the filter. + For a full reference of filter names, see [describe-instances in the AWS CLI reference][1]. +* `values` - (Required) One or more values to match. + ## Attribute Reference `id` is set to the ID of the found Instance. In addition, the following attributes @@ -149,4 +158,4 @@ interpolation. [1]: http://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/d/instances.html.markdown b/website/docs/cdktf/python/d/instances.html.markdown index 5c146b36f0f4..f46c13740387 100644 --- a/website/docs/cdktf/python/d/instances.html.markdown +++ b/website/docs/cdktf/python/d/instances.html.markdown @@ -70,9 +70,18 @@ This data source supports the following arguments: * `instance_tags` - (Optional) Map of tags, each pair of which must exactly match a pair on desired instances. * `instance_state_names` - (Optional) List of instance states that should be applicable to the desired instances. The permitted values are: `pending, running, shutting-down, stopped, stopping, terminated`. The default value is `running`. -* `filter` - (Optional) One or more name/value pairs to use as filters. There are -several valid keys, for a full reference, check out -[describe-instances in the AWS CLI reference][1]. +* `filter` - (Optional) One or more filters to apply to the search. + If multiple `filter` blocks are provided, they all must be true. + For a full reference of filter names, see [describe-instances in the AWS CLI reference][1]. + See [`filter` Block](#filter-block) below. + +### `filter` Block + +The `filter` block supports the following arguments: + +* `name` - (Required) Name of the filter. + For a full reference of filter names, see [describe-instances in the AWS CLI reference][1]. +* `values` - (Required) One or more values to match. ## Attribute Reference @@ -92,4 +101,4 @@ This data source exports the following attributes in addition to the arguments a [1]: http://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/d/media_convert_queue.html.markdown b/website/docs/cdktf/python/d/media_convert_queue.html.markdown index c53e793985c1..a1246a43679d 100644 --- a/website/docs/cdktf/python/d/media_convert_queue.html.markdown +++ b/website/docs/cdktf/python/d/media_convert_queue.html.markdown @@ -8,7 +8,7 @@ description: |- -# Resource: aws_media_convert_queue +# Data Source: aws_media_convert_queue Retrieve information about a AWS Elemental MediaConvert Queue. @@ -47,4 +47,4 @@ This data source exports the following attributes in addition to the arguments a * `status` - The status of the queue. * `tags` - A map of tags assigned to the resource, including those inherited from the provider [`default_tags` configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-configuration-block). - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/d/memorydb_acl.html.markdown b/website/docs/cdktf/python/d/memorydb_acl.html.markdown index 5a9670541ea3..e2e64c3ba26d 100644 --- a/website/docs/cdktf/python/d/memorydb_acl.html.markdown +++ b/website/docs/cdktf/python/d/memorydb_acl.html.markdown @@ -8,7 +8,7 @@ description: |- -# Resource: aws_memorydb_acl +# Data Source: aws_memorydb_acl Provides information about a MemoryDB ACL. @@ -48,4 +48,4 @@ This data source exports the following attributes in addition to the arguments a * `tags` - Map of tags assigned to the ACL. * `user_names` - Set of MemoryDB user names included in this ACL. - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/d/memorydb_cluster.html.markdown b/website/docs/cdktf/python/d/memorydb_cluster.html.markdown index 3fb83b08c0b6..6ec1ad88f1c4 100644 --- a/website/docs/cdktf/python/d/memorydb_cluster.html.markdown +++ b/website/docs/cdktf/python/d/memorydb_cluster.html.markdown @@ -8,7 +8,7 @@ description: |- -# Resource: aws_memorydb_cluster +# Data Source: aws_memorydb_cluster Provides information about a MemoryDB Cluster. @@ -81,4 +81,4 @@ This data source exports the following attributes in addition to the arguments a * `tls_enabled` - When true, in-transit encryption is enabled for the cluster. * `tags` - Map of tags assigned to the cluster. - \ No newline at end of file + \ No newline at end of file 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 9e2224d29a40..d57eab5f8028 100644 --- a/website/docs/cdktf/python/d/memorydb_parameter_group.html.markdown +++ b/website/docs/cdktf/python/d/memorydb_parameter_group.html.markdown @@ -8,7 +8,7 @@ description: |- -# Resource: aws_memorydb_parameter_group +# Data Source: aws_memorydb_parameter_group Provides information about a MemoryDB Parameter Group. @@ -51,4 +51,4 @@ This data source exports the following attributes in addition to the arguments a * `value` - Value of the parameter. * `tags` - Map of tags assigned to the parameter group. - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/d/memorydb_snapshot.html.markdown b/website/docs/cdktf/python/d/memorydb_snapshot.html.markdown index 549590bd8a7e..76330f29869a 100644 --- a/website/docs/cdktf/python/d/memorydb_snapshot.html.markdown +++ b/website/docs/cdktf/python/d/memorydb_snapshot.html.markdown @@ -8,7 +8,7 @@ description: |- -# Resource: aws_memorydb_snapshot +# Data Source: aws_memorydb_snapshot Provides information about a MemoryDB Snapshot. @@ -64,4 +64,4 @@ This data source exports the following attributes in addition to the arguments a * `source` - Whether the snapshot is from an automatic backup (`automated`) or was created manually (`manual`). * `tags` - Map of tags assigned to the snapshot. - \ No newline at end of file + \ No newline at end of file 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 0a74587c4fe2..6c0413c3b32f 100644 --- a/website/docs/cdktf/python/d/memorydb_subnet_group.html.markdown +++ b/website/docs/cdktf/python/d/memorydb_subnet_group.html.markdown @@ -8,7 +8,7 @@ description: |- -# Resource: aws_memorydb_subnet_group +# Data Source: aws_memorydb_subnet_group Provides information about a MemoryDB Subnet Group. @@ -49,4 +49,4 @@ This data source exports the following attributes in addition to the arguments a * `vpc_id` - VPC in which the subnet group exists. * `tags` - Map of tags assigned to the subnet group. - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/d/memorydb_user.html.markdown b/website/docs/cdktf/python/d/memorydb_user.html.markdown index 18a0a6a894d9..e568ed4b818d 100644 --- a/website/docs/cdktf/python/d/memorydb_user.html.markdown +++ b/website/docs/cdktf/python/d/memorydb_user.html.markdown @@ -8,7 +8,7 @@ description: |- -# Resource: aws_memorydb_user +# Data Source: aws_memorydb_user Provides information about a MemoryDB User. @@ -51,4 +51,4 @@ This data source exports the following attributes in addition to the arguments a * `minimum_engine_version` - Minimum engine version supported for the user. * `tags` - Map of tags assigned to the user. - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/d/odb_cloud_autonomous_vm_cluster.html.markdown b/website/docs/cdktf/python/d/odb_cloud_autonomous_vm_cluster.html.markdown new file mode 100644 index 000000000000..8cc3284ecfa4 --- /dev/null +++ b/website/docs/cdktf/python/d/odb_cloud_autonomous_vm_cluster.html.markdown @@ -0,0 +1,99 @@ +--- +subcategory: "Oracle Database@AWS" +layout: "AWS: aws_odb_cloud_autonomous_vm_cluster" +page_title: "AWS: aws_odb_cloud_autonomous_vm_cluster" +description: |- + Terraform data source for managing cloud autonomous vm cluster resource in AWS for Oracle Database@AWS. +--- + + + +# Data Source: aws_odb_cloud_autonomous_vm_cluster + +Terraform data source for managing cloud autonomous vm cluster resource in AWS for Oracle Database@AWS. + +You can find out more about Oracle Database@AWS from [User Guide](https://docs.aws.amazon.com/odb/latest/UserGuide/what-is-odb.html). + +## 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 TerraformStack +# +# Provider bindings are generated by running `cdktf get`. +# See https://cdk.tf/provider-generation for more details. +# +from imports.aws.data_aws_odb_cloud_autonomous_vm_cluster import DataAwsOdbCloudAutonomousVmCluster +class MyConvertedCode(TerraformStack): + def __init__(self, scope, name): + super().__init__(scope, name) + DataAwsOdbCloudAutonomousVmCluster(self, "example", + id="example" + ) +``` + +## Argument Reference + +The following arguments are optional: + +* `id` - (Required) The unique identifier of the cloud autonomous vm cluster. +* `region` - (Optional) Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the [provider configuration](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#aws-configuration-reference). + +## Attribute Reference + +This data source exports the following attributes in addition to the arguments above: + +* `arn` - The Amazon Resource Name (ARN) for the Exadata infrastructure. +* `cloud_exadata_infrastructure_id` - Cloud exadata infrastructure id associated with this cloud autonomous VM cluster. +* `autonomous_data_storage_percentage` - The percentage of data storage currently in use for Autonomous Databases in the Autonomous VM cluster. +* `autonomous_data_storage_size_in_tbs` - The data storage size allocated for Autonomous Databases in the Autonomous VM cluster, in TB. +* `available_autonomous_data_storage_size_in_tbs` - The available data storage space for Autonomous Databases in the Autonomous VM cluster, in TB. +* `available_container_databases` - The number of Autonomous CDBs that you can create with the currently available storage. +* `available_cpus` - The number of CPU cores available for allocation to Autonomous Databases. +* `compute_model` - The compute model of the Autonomous VM cluster: ECPU or OCPU. +* `cpu_core_count` - The total number of CPU cores in the Autonomous VM cluster. +* `cpu_core_count_per_node` - The number of CPU cores enabled per node in the Autonomous VM cluster. +* `cpu_percentage` - he percentage of total CPU cores currently in use in the Autonomous VM cluster. +* `created_at` - The date and time when the Autonomous VM cluster was created. +* `data_storage_size_in_gbs` - The total data storage allocated to the Autonomous VM cluster, in GB. +* `data_storage_size_in_tbs` - The total data storage allocated to the Autonomous VM cluster, in TB. +* `odb_node_storage_size_in_gbs` - The local node storage allocated to the Autonomous VM cluster, in gigabytes (GB). +* `db_servers` - The list of database servers associated with the Autonomous VM cluster. +* `description` - The user-provided description of the Autonomous VM cluster. +* `display_name` - The display name of the Autonomous VM cluster. +* `domain` - The domain name of the Autonomous VM cluster. +* `exadata_storage_in_tbs_lowest_scaled_value` - The minimum value to which you can scale down the Exadata storage, in TB. +* `hostname` - The hostname of the Autonomous VM cluster. +* `is_mtls_enabled_vm_cluster` - Indicates whether mutual TLS (mTLS) authentication is enabled for the Autonomous VM cluster. +* `license_model` - The Oracle license model that applies to the Autonomous VM cluster. Valid values are LICENSE_INCLUDED or BRING_YOUR_OWN_LICENSE. +* `max_acds_lowest_scaled_value` - The minimum value to which you can scale down the maximum number of Autonomous CDBs. +* `memory_per_oracle_compute_unit_in_gbs` - The amount of memory allocated per Oracle Compute Unit, in GB. +* `memory_size_in_gbs` - The total amount of memory allocated to the Autonomous VM cluster, in gigabytes (GB). +* `node_count` - The number of database server nodes in the Autonomous VM cluster. +* `non_provisionable_autonomous_container_databases` - The number of Autonomous CDBs that can't be provisioned because of resource constraints. +* `oci_resource_anchor_name` - The name of the OCI resource anchor associated with this Autonomous VM cluster. +* `oci_url` - The URL for accessing the OCI console page for this Autonomous VM cluster. +* `ocid` - The Oracle Cloud Identifier (OCID) of the Autonomous VM cluster. +* `odb_network_id` - The unique identifier of the ODB network associated with this Autonomous VM cluster. +* `percent_progress` - The progress of the current operation on the Autonomous VM cluster, as a percentage. +* `provisionable_autonomous_container_databases` - The number of Autonomous CDBs that can be provisioned in the Autonomous VM cluster. +* `provisioned_autonomous_container_databases` - The number of Autonomous CDBs currently provisioned in the Autonomous VM cluster. +* `provisioned_cpus` - The number of CPU cores currently provisioned in the Autonomous VM cluster. +* `reclaimable_cpus` - The number of CPU cores that can be reclaimed from terminated or scaled-down Autonomous Databases. +* `reserved_cpus` - The number of CPU cores reserved for system operations and redundancy. +* `scan_listener_port_non_tls` - The SCAN listener port for non-TLS (TCP) protocol. The default is 1521. +* `scan_listener_port_tls` - The SCAN listener port for TLS (TCP) protocol. The default is 2484. +* `shape` - The shape of the Exadata infrastructure for the Autonomous VM cluster. +* `status` - The status of the Autonomous VM cluster. +* `status_reason` - Additional information about the current status of the Autonomous VM cluster. +* `time_database_ssl_certificate_expires` - The expiration date and time of the database SSL certificate. +* `time_ords_certificate_expires` - The expiration date and time of the Oracle REST Data Services (ORDS)certificate. +* `time_zone` - The time zone of the Autonomous VM cluster. +* `total_container_databases` - The total number of Autonomous Container Databases that can be created with the allocated local storage. +* `tags` - A map of tags to assign to the exadata infrastructure. If configured with a provider [`default_tags` configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-configuration-block) present, tags with matching keys will overwrite those defined at the provider-level. +* `maintenance_window` - The maintenance window for the Autonomous VM cluster. + + \ No newline at end of file diff --git a/website/docs/cdktf/python/d/odb_cloud_exadata_infrastructure.html.markdown b/website/docs/cdktf/python/d/odb_cloud_exadata_infrastructure.html.markdown new file mode 100644 index 000000000000..ac19df1a8b12 --- /dev/null +++ b/website/docs/cdktf/python/d/odb_cloud_exadata_infrastructure.html.markdown @@ -0,0 +1,90 @@ +--- +subcategory: "Oracle Database@AWS" +layout: "AWS: aws_odb_cloud_exadata_infrastructure" +page_title: "AWS: aws_odb_cloud_exadata_infrastructure" +description: |- + Terraform data source for managing exadata infrastructure resource in AWS for Oracle Database@AWS. +--- + + + +# Data Source: aws_odb_cloud_exadata_infrastructure + +Terraform data source for exadata infrastructure resource in AWS for Oracle Database@AWS. + +You can find out more about Oracle Database@AWS from [User Guide](https://docs.aws.amazon.com/odb/latest/UserGuide/what-is-odb.html). + +## 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 TerraformStack +# +# Provider bindings are generated by running `cdktf get`. +# See https://cdk.tf/provider-generation for more details. +# +from imports.aws.data_aws_odb_cloud_exadata_infrastructure import DataAwsOdbCloudExadataInfrastructure +class MyConvertedCode(TerraformStack): + def __init__(self, scope, name): + super().__init__(scope, name) + DataAwsOdbCloudExadataInfrastructure(self, "example", + id="example" + ) +``` + +## Argument Reference + +The following arguments are required: + +* `id` - (Required) The unique identifier of the Exadata infrastructure. + +The following arguments are optional: + +* `region` - (Optional) Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the [provider configuration](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#aws-configuration-reference). + +## Attribute Reference + +This data source exports the following attributes in addition to the arguments above: + +* `activated_storage_count` - The number of storage servers requested for the Exadata infrastructure. +* `additional_storage_count` - The number of storage servers requested for the Exadata infrastructure. +* `availability_zone` - The name of the Availability Zone (AZ) where the Exadata infrastructure is located. +* `availability_zone_id` - The AZ ID of the AZ where the Exadata infrastructure is located. +* `arn` - The Amazon Resource Name (ARN) for the Exadata infrastructure. +* `id` - The unique identifier of the Exadata infrastructure. +* `compute_count` - The number of database servers for the Exadata infrastructure. +* `cpu_count` - The total number of CPU cores that are allocated to the Exadata infrastructure. +* `data_storage_size_in_tbs` - The size of the Exadata infrastructure's data disk group, in terabytes (TB). +* `db_node_storage_size_in_gbs` - The size of the storage available on each database node, in gigabytes (GB). +* `db_server_version` - The version of the Exadata infrastructure. +* `display_name` - The display name of the Exadata infrastructure. +* `last_maintenance_run_id` - The Oracle Cloud Identifier (OCID) of the last maintenance run for the Exadata infrastructure. +* `max_cpu_count` - The total number of CPU cores available on the Exadata infrastructure. +* `max_data_storage_in_tbs` - The total amount of data disk group storage, in terabytes (TB), that's available on the Exadata infrastructure. +* `max_db_node_storage_size_in_gbs` - The total amount of local node storage, in gigabytes (GB), that's available on the Exadata infrastructure. +* `max_memory_in_gbs` - The total amount of memory, in gigabytes (GB), that's available on the Exadata infrastructure. +* `memory_size_in_gbs` - The amount of memory, in gigabytes (GB), that's allocated on the Exadata infrastructure. +* `monthly_db_server_version` - The monthly software version of the database servers installed on the Exadata infrastructure. +* `monthly_storage_server_version` - The monthly software version of the storage servers installed on the Exadata infrastructure. +* `next_maintenance_run_id` - The OCID of the next maintenance run for the Exadata infrastructure. +* `oci_resource_anchor_name` - The name of the OCI resource anchor for the Exadata infrastructure. +* `oci_url` - The HTTPS link to the Exadata infrastructure in OCI. +* `ocid` - The OCID of the Exadata infrastructure in OCI. +* `percent_progress` - The amount of progress made on the current operation on the Exadata infrastructure expressed as a percentage. +* `shape` - The model name of the Exadata infrastructure. +* `status` - The status of the Exadata infrastructure. +* `status_reason` - Additional information about the status of the Exadata infrastructure. +* `storage_count` - The number of storage servers that are activated for the Exadata infrastructure. +* `storage_server_version` - The software version of the storage servers on the Exadata infrastructure. +* `total_storage_size_in_gbs` - The total amount of storage, in gigabytes (GB), on the Exadata infrastructure. +* `compute_model` - The OCI compute model used when you create or clone an instance: ECPU or OCPU. An ECPU is an abstracted measure of compute resources. ECPUs are based on the number of cores elastically allocated from a pool of compute and storage servers. An OCPU is a legacy physical measure of compute resources. OCPUs are based on the physical core of a processor with hyper-threading enabled. +* `created_at` - The time when the Exadata infrastructure was created. +* `database_server_type` - The database server model type of the Exadata infrastructure. For the list of valid model names, use the ListDbSystemShapes operation. +* `storage_server_type` - The storage server model type of the Exadata infrastructure. For the list of valid model names, use the ListDbSystemShapes operation. +* `maintenance_window` - The scheduling details of the maintenance window. Patching and system updates take place during the maintenance window. +* `tags` - (Optional) A map of tags to assign to the exadata infrastructure. If configured with a provider [`default_tags` configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-configuration-block) present, tags with matching keys will overwrite those defined at the provider-level. + + \ No newline at end of file diff --git a/website/docs/cdktf/python/d/odb_cloud_vm_cluster.html.markdown b/website/docs/cdktf/python/d/odb_cloud_vm_cluster.html.markdown new file mode 100644 index 000000000000..be8488b57169 --- /dev/null +++ b/website/docs/cdktf/python/d/odb_cloud_vm_cluster.html.markdown @@ -0,0 +1,92 @@ +--- +subcategory: "Oracle Database@AWS" +layout: "AWS: aws_odb_cloud_vm_cluster" +page_title: "AWS: aws_odb_cloud_vm_cluster" +description: |- + Terraform data source for managing cloud vm cluster resource in AWS for Oracle Database@AWS. +--- + + + +# Data Source: aws_odb_cloud_vm_cluster + +Terraform data source for Exadata Infrastructure resource in AWS for Oracle Database@AWS. + +You can find out more about Oracle Database@AWS from [User Guide](https://docs.aws.amazon.com/odb/latest/UserGuide/what-is-odb.html). + +## 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 TerraformStack +# +# Provider bindings are generated by running `cdktf get`. +# See https://cdk.tf/provider-generation for more details. +# +from imports.aws. import DataAwsOdbDbServersList +class MyConvertedCode(TerraformStack): + def __init__(self, scope, name): + super().__init__(scope, name) + DataAwsOdbDbServersList(self, "example", + cloud_exadata_infrastructure_id="example-id" + ) +``` + +## Argument Reference + +The following arguments are required: + +* `id` - (Required) The unique identifier of the Exadata infrastructure. + +The following arguments are optional: + +* `region` - (Optional) Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the [provider configuration](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#aws-configuration-reference). + +## Attribute Reference + +This data source exports the following attributes in addition to the arguments above: + +* `arn` - The Amazon Resource Name (ARN) for the cloud vm cluster. +* `cloud_exadata_infrastructure_id` - The ID of the Cloud Exadata Infrastructure. +* `cluster_name` - The name of the Grid Infrastructure (GI) cluster. +* `cpu_core_count` - The number of CPU cores enabled on the VM cluster. +* `data_storage_size_in_tbs` - The size of the data disk group, in terabytes (TB), that's allocated for the VM cluster. +* `db_node_storage_size_in_gbs` - The amount of local node storage, in gigabytes (GB), that's allocated for the VM cluster. +* `db_servers` - The list of database servers for the VM cluster. +* `disk_redundancy` - The type of redundancy configured for the VM cluster. NORMAL is 2-way redundancy. HIGH is 3-way redundancy. +* `display_name` - The display name of the VM cluster. +* `domain` - The domain name of the VM cluster. +* `gi_version` - The software version of the Oracle Grid Infrastructure (GI) for the VM cluster. +* `hostname_prefix_computed` - The computed hostname prefix for the VM cluster. +* `is_local_backup_enabled` - Indicates whether database backups to local Exadata storage is enabled for the VM cluster. +* `is_sparse_disk_group_enabled` - Indicates whether the VM cluster is configured with a sparse disk group. +* `last_update_history_entry_id` - The Oracle Cloud ID (OCID) of the last maintenance update history entry. +* `license_model` - The Oracle license model applied to the VM cluster. +* `listener_port` - The port number configured for the listener on the VM cluster. +* `memory_size_in_gbs` - The amount of memory, in gigabytes (GB), that's allocated for the VM cluster. +* `node_count` - The number of nodes in the VM cluster. +* `ocid` - The OCID of the VM cluster. +* `oci_resource_anchor_name` - The name of the OCI Resource Anchor. +* `oci_url` - The HTTPS link to the VM cluster in OCI. +* `odb_network_id` - The ID of the ODB network. +* `percent_progress` - The amount of progress made on the current operation on the VM cluster, expressed as a percentage. +* `scan_dns_name` - The FQDN of the DNS record for the Single Client Access Name (SCAN) IP addresses that are associated with the VM cluster. +* `scan_dns_record_id` - The OCID of the DNS record for the SCAN IP addresses that are associated with the VM cluster. +* `scan_ip_ids` - The OCID of the SCAN IP addresses that are associated with the VM cluster. +* `shape` - The hardware model name of the Exadata infrastructure that's running the VM cluster. +* `ssh_public_keys` - The public key portion of one or more key pairs used for SSH access to the VM cluster. +* `status` - The status of the VM cluster. +* `status_reason` - Additional information about the status of the VM cluster. +* `storage_size_in_gbs` - The amount of local node storage, in gigabytes (GB), that's allocated to the VM cluster. +* `system_version` - The operating system version of the image chosen for the VM cluster. +* `timezone` - The time zone of the VM cluster. +* `vip_ids` - The virtual IP (VIP) addresses that are associated with the VM cluster. Oracle's Cluster Ready Services (CRS) creates and maintains one VIP address for each node in the VM cluster to enable failover. If one node fails, the VIP is reassigned to another active node in the cluster. +* `created_at` - The time when the VM cluster was created. +* `compute_model` - The OCI model compute model used when you create or clone an instance: ECPU or OCPU. An ECPU is an abstracted measure of compute resources. ECPUs are based on the number of cores elastically allocated from a pool of compute and storage servers. An OCPU is a legacy physical measure of compute resources. OCPUs are based on the physical core of a processor with hyper-threading enabled. +* `data_collection_options` - The set of diagnostic collection options enabled for the VM cluster. +* `iorm_config_cache` - The ExadataIormConfig cache details for the VM cluster. + + \ No newline at end of file diff --git a/website/docs/cdktf/python/d/odb_network.html.markdown b/website/docs/cdktf/python/d/odb_network.html.markdown new file mode 100644 index 000000000000..62be78e581a6 --- /dev/null +++ b/website/docs/cdktf/python/d/odb_network.html.markdown @@ -0,0 +1,71 @@ +--- +subcategory: "Oracle Database@AWS" +layout: "AWS: aws_odb_network" +page_title: "AWS: aws_odb_network" +description: |- + Terraform data source to retrieve odb network for Oracle Database@AWS. +--- + + + +# Data Source: aws_odb_network + +Terraform data source for to retrieve network resource in AWS for Oracle Database@AWS. + +## 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 TerraformStack +# +# Provider bindings are generated by running `cdktf get`. +# See https://cdk.tf/provider-generation for more details. +# +from imports.aws.data_aws_odb_network import DataAwsOdbNetwork +class MyConvertedCode(TerraformStack): + def __init__(self, scope, name): + super().__init__(scope, name) + DataAwsOdbNetwork(self, "example", + id="example" + ) +``` + +## Argument Reference + +The following arguments are required: + +* `id` - (Required) Unique identifier of the odb network resource. + +The following arguments are optional: + +* `region` - (Optional) Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the [provider configuration](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#aws-configuration-reference). + +## Attribute Reference + +This resource exports the following attributes in addition to the arguments above: + +* `id` - Unique identifier of the odb network resource. +* `arn` - Amazon Resource Name (ARN) of the odb network resource. +* `display_name` - Display name for the network resource. +* `availability_zone_id` - The AZ ID of the AZ where the ODB network is located. +* `availability_zone` - The availability zone where the ODB network is located. +* `backup_subnet_cidr` - The CIDR range of the backup subnet for the ODB network. +* `client_subnet_cidr` - The CIDR notation for the network resource. +* `custom_domain_name` - The name of the custom domain that the network is located. +* `default_dns_prefix` - The default DNS prefix for the network resource. +* `oci_network_anchor_id` - The unique identifier of the OCI network anchor for the ODB network. +* `oci_network_anchor_url` - The URL of the OCI network anchor for the ODB network. +* `oci_resource_anchor_name` - The name of the OCI resource anchor for the ODB network. +* `oci_vcn_id` - The unique identifier Oracle Cloud ID (OCID) of the OCI VCN for the ODB network. +* `oci_vcn_url` - The URL of the OCI VCN for the ODB network. +* `percent_progress` - The amount of progress made on the current operation on the ODB network, expressed as a percentage. +* `peered_cidrs` - The list of CIDR ranges from the peered VPC that are allowed access to the ODB network. Please refer odb network peering documentation. +* `status` - The status of the network resource. +* `status_reason` - Additional information about the current status of the ODB network. +* `created_at` - The date and time when the ODB network was created. +* `managed_services` - The managed services configuration for the ODB network. + + \ No newline at end of file diff --git a/website/docs/cdktf/python/d/odb_network_peering_connection.html.markdown b/website/docs/cdktf/python/d/odb_network_peering_connection.html.markdown new file mode 100644 index 000000000000..f31c364d307a --- /dev/null +++ b/website/docs/cdktf/python/d/odb_network_peering_connection.html.markdown @@ -0,0 +1,63 @@ +--- +subcategory: "Oracle Database@AWS" +layout: "AWS: aws_odb_network_peering_connection" +page_title: "AWS: aws_odb_network_peering_connection" +description: |- + Terraform data source for managing oracle database network peering resource in AWS. +--- + + + +# Data Source: aws_odb_network_peering_connection + +Terraform data source for managing oracle database network peering resource in AWS. + +You can find out more about Oracle Database@AWS from [User Guide](https://docs.aws.amazon.com/odb/latest/UserGuide/what-is-odb.html). + +## 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 TerraformStack +# +# Provider bindings are generated by running `cdktf get`. +# See https://cdk.tf/provider-generation for more details. +# +from imports.aws.data_aws_odb_network_peering_connection import DataAwsOdbNetworkPeeringConnection +class MyConvertedCode(TerraformStack): + def __init__(self, scope, name): + super().__init__(scope, name) + DataAwsOdbNetworkPeeringConnection(self, "example", + id="example" + ) +``` + +## Argument Reference + +The following arguments are required: + +* `id` - (Required) The unique identifier of the Exadata infrastructure. + +The following arguments are optional: + +* `region` - (Optional) Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the [provider configuration](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#aws-configuration-reference). + +## Attribute Reference + +This data source exports the following attributes in addition to the arguments above: + +* `display_name` - Display name of the ODB network peering connection. +* `status` - Status of the ODB network peering connection. +* `status_reason` - Status of the ODB network peering connection. +* `odb_network_arn` - ARN of the ODB network peering connection. +* `arn` - The Amazon Resource Name (ARN) for the Exadata infrastructure. +* `peer_network_arn` - ARN of the peer network peering connection. +* `odb_peering_connection_type` - Type of the ODB peering connection. +* `created_at` - Created time of the ODB network peering connection. +* `percent_progress` - Progress of the ODB network peering connection. +* `tags` - Tags applied to the resource. + + \ No newline at end of file diff --git a/website/docs/cdktf/python/d/securityhub_standards_control_associations.html.markdown b/website/docs/cdktf/python/d/securityhub_standards_control_associations.html.markdown index a44cc5d0f59a..88480f910127 100644 --- a/website/docs/cdktf/python/d/securityhub_standards_control_associations.html.markdown +++ b/website/docs/cdktf/python/d/securityhub_standards_control_associations.html.markdown @@ -8,7 +8,7 @@ description: |- -# Resource: aws_securityhub_standards_control_associations +# Data Source: aws_securityhub_standards_control_associations Terraform data source for managing an AWS Security Hub Standards Control Associations. @@ -65,4 +65,4 @@ See [`standards_control_associations`](#standards_control_associations-attribute * `updated_at` - Last time that a control's enablement status in a specified standard was updated. * `updated_reason` - Reason for updating a control's enablement status in a specified standard. - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/d/workspaces_workspace.html.markdown b/website/docs/cdktf/python/d/workspaces_workspace.html.markdown index bc911959d3a4..f8d1e567bc88 100644 --- a/website/docs/cdktf/python/d/workspaces_workspace.html.markdown +++ b/website/docs/cdktf/python/d/workspaces_workspace.html.markdown @@ -8,7 +8,7 @@ description: |- -# Resource: aws_workspaces_workspace +# Data Source: aws_workspaces_workspace Use this data source to get information about a workspace in [AWS Workspaces](https://docs.aws.amazon.com/workspaces/latest/adminguide/amazon-workspaces.html) Service. @@ -85,4 +85,4 @@ This data source exports the following attributes in addition to the arguments a * `computer_name` - Name of the WorkSpace, as seen by the operating system. * `state` - Operational state of the WorkSpace. - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/ephemeral-resources/cognito_identity_openid_token_for_developer_identity.markdown b/website/docs/cdktf/python/ephemeral-resources/cognito_identity_openid_token_for_developer_identity.markdown index e0599cea54d0..52e232ba3760 100644 --- a/website/docs/cdktf/python/ephemeral-resources/cognito_identity_openid_token_for_developer_identity.markdown +++ b/website/docs/cdktf/python/ephemeral-resources/cognito_identity_openid_token_for_developer_identity.markdown @@ -7,7 +7,6 @@ description: |- --- - # Ephemeral: aws_cognito_identity_openid_token_for_developer_identity @@ -60,4 +59,4 @@ This resource exports the following attributes in addition to the arguments abov * `token` - An OpenID token. - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/list-resources/batch_job_queue.html.markdown b/website/docs/cdktf/python/list-resources/batch_job_queue.html.markdown new file mode 100644 index 000000000000..74b15f606a20 --- /dev/null +++ b/website/docs/cdktf/python/list-resources/batch_job_queue.html.markdown @@ -0,0 +1,35 @@ +--- +subcategory: "Batch" +layout: "aws" +page_title: "AWS: aws_batch_job_queue" +description: |- + Lists Batch Job Queue resources. +--- + + + +# List Resource: aws_batch_job_queue + +~> **Note:** The `aws_batch_job_queue` List Resource is in beta. Its interface and behavior may change as the feature evolves, and breaking changes are possible. It is offered as a technical preview without compatibility guarantees until Terraform 1.14 is generally available. + +Lists Batch Job Queue resources. + +## Example 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 TerraformStack +class MyConvertedCode(TerraformStack): + def __init__(self, scope, name): + super().__init__(scope, name) +``` + +## Argument Reference + +This list resource supports the following arguments: + +* `region` - (Optional) [Region](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints) to query. + Defaults to the Region set in the [provider configuration](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#aws-configuration-reference). + + \ No newline at end of file diff --git a/website/docs/cdktf/python/list-resources/cloudwatch_log_group.html.markdown b/website/docs/cdktf/python/list-resources/cloudwatch_log_group.html.markdown new file mode 100644 index 000000000000..baae960d3a96 --- /dev/null +++ b/website/docs/cdktf/python/list-resources/cloudwatch_log_group.html.markdown @@ -0,0 +1,35 @@ +--- +subcategory: "CloudWatch Logs" +layout: "aws" +page_title: "AWS: aws_cloudwatch_log_group" +description: |- + Lists CloudWatch Logs Log Group resources. +--- + + + +# List Resource: aws_cloudwatch_log_group + +~> **Note:** The `aws_cloudwatch_log_group` List Resource is in beta. Its interface and behavior may change as the feature evolves, and breaking changes are possible. It is offered as a technical preview without compatibility guarantees until Terraform 1.14 is generally available. + +Lists CloudWatch Logs Log Group resources. + +## Example 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 TerraformStack +class MyConvertedCode(TerraformStack): + def __init__(self, scope, name): + super().__init__(scope, name) +``` + +## Argument Reference + +This list resource supports the following arguments: + +* `region` - (Optional) [Region](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints) to query. + Defaults to the Region set in the [provider configuration](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#aws-configuration-reference). + + \ No newline at end of file diff --git a/website/docs/cdktf/python/list-resources/iam_role.html.markdown b/website/docs/cdktf/python/list-resources/iam_role.html.markdown new file mode 100644 index 000000000000..2364a91001eb --- /dev/null +++ b/website/docs/cdktf/python/list-resources/iam_role.html.markdown @@ -0,0 +1,34 @@ +--- +subcategory: "IAM (Identity & Access Management)" +layout: "aws" +page_title: "AWS: aws_iam_role" +description: |- + Lists IAM Role resources. +--- + + + +# List Resource: aws_iam_role + +~> **Note:** The `aws_iam_role` List Resource is in beta. Its interface and behavior may change as the feature evolves, and breaking changes are possible. It is offered as a technical preview without compatibility guarantees until Terraform 1.14 is generally available. + +Lists IAM Role resources. + +Excludes Service-Linked Roles (see "AWS service-linked role" in [IAM Roles Terms and Concepts documentation](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#id_roles_terms-and-concepts)). + +## Example 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 TerraformStack +class MyConvertedCode(TerraformStack): + def __init__(self, scope, name): + super().__init__(scope, name) +``` + +## Argument Reference + +This list resource does not support any arguments. + + \ No newline at end of file diff --git a/website/docs/cdktf/python/list-resources/instance.html.markdown b/website/docs/cdktf/python/list-resources/instance.html.markdown new file mode 100644 index 000000000000..b69ef666c898 --- /dev/null +++ b/website/docs/cdktf/python/list-resources/instance.html.markdown @@ -0,0 +1,68 @@ +--- +subcategory: "EC2 (Elastic Compute Cloud)" +layout: "aws" +page_title: "AWS: aws_instance" +description: |- + Lists EC2 Instance resources. +--- + + + +# List Resource: aws_instance + +~> **Note:** The `aws_instance` List Resource is in beta. Its interface and behavior may change as the feature evolves, and breaking changes are possible. It is offered as a technical preview without compatibility guarantees until Terraform 1.14 is generally available. + +Lists EC2 Instance resources. + +By default, EC2 Instances managed by an Auto Scaling Group and EC2 Instances in either the `terminated` or `shutting-down` state are excluded. + +## 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 TerraformStack +class MyConvertedCode(TerraformStack): + def __init__(self, scope, name): + super().__init__(scope, name) +``` + +### Filter Usage + +This example will return instances in the `stopped` state. + +```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) +``` + +## Argument Reference + +This list resource supports the following arguments: + +* `filter` - (Optional) One or more filters to apply to the search. + If multiple `filter` blocks are provided, they all must be true. + For a full reference of filter names, see [describe-instances in the AWS CLI reference][1]. + See [`filter` Block](#filter-block) below. +* `include_auto_scaled` - (Optional) Whether to include EC2 instances that are managed by an Auto Scaling Group. + Default value is `false`. +* `region` - (Optional) [Region](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints) to query. + Defaults to the Region set in the [provider configuration](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#aws-configuration-reference). + +### `filter` Block + +The `filter` block supports the following arguments: + +* `name` - (Required) Name of the filter. + For a full reference of filter names, see [describe-instances in the AWS CLI reference][1]. +* `values` - (Required) One or more values to match. + +[1]: http://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html + + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/appflow_connector_profile.html.markdown b/website/docs/cdktf/python/r/appflow_connector_profile.html.markdown index d21ffa3059e2..ab1bbc3f118e 100644 --- a/website/docs/cdktf/python/r/appflow_connector_profile.html.markdown +++ b/website/docs/cdktf/python/r/appflow_connector_profile.html.markdown @@ -340,6 +340,32 @@ This resource exports the following attributes in addition to the arguments abov ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_appflow_connector_profile.example + identity = { + name = "example_profile" + } +} + +resource "aws_appflow_connector_profile" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `name` (String) Name of the Appflow connector profile. + +#### Optional + +* `account_id` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import AppFlow Connector Profile using the connector profile `name`. For example: ```python @@ -366,4 +392,4 @@ Using `terraform import`, import AppFlow Connector Profile using the connector p [1]: https://docs.aws.amazon.com/appflow/1.0/APIReference/Welcome.html [2]: https://docs.aws.amazon.com/appflow/1.0/APIReference/API_CreateConnectorProfile.html - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/appflow_flow.html.markdown b/website/docs/cdktf/python/r/appflow_flow.html.markdown index 1cad26308088..e6c5297af867 100644 --- a/website/docs/cdktf/python/r/appflow_flow.html.markdown +++ b/website/docs/cdktf/python/r/appflow_flow.html.markdown @@ -436,6 +436,32 @@ This resource exports the following attributes in addition to the arguments abov ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_appflow_flow.example + identity = { + name = "example-flow" + } +} + +resource "aws_appflow_flow" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `name` (String) Name of the AppFlow flow. + +#### Optional + +* `account_id` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import AppFlow flows using the `name`. For example: ```python @@ -459,4 +485,4 @@ Using `terraform import`, import AppFlow flows using the `name`. For example: % terraform import aws_appflow_flow.example example-flow ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/autoscaling_group.html.markdown b/website/docs/cdktf/python/r/autoscaling_group.html.markdown index 4ed5c1218f6d..34a15dc3c1a8 100644 --- a/website/docs/cdktf/python/r/autoscaling_group.html.markdown +++ b/website/docs/cdktf/python/r/autoscaling_group.html.markdown @@ -780,7 +780,7 @@ This configuration block supports the following: - `instance_warmup` - (Optional) Number of seconds until a newly launched instance is configured and ready to use. Default behavior is to use the Auto Scaling Group's health check grace period. - `max_healthy_percentage` - (Optional) Amount of capacity in the Auto Scaling group that can be in service and healthy, or pending, to support your workload when an instance refresh is in place, as a percentage of the desired capacity of the Auto Scaling group. Values must be between `100` and `200`, defaults to `100`. - `min_healthy_percentage` - (Optional) Amount of capacity in the Auto Scaling group that must remain healthy during an instance refresh to allow the operation to continue, as a percentage of the desired capacity of the Auto Scaling group. Defaults to `90`. - - `skip_matching` - (Optional) Replace instances that already have your desired configuration. Defaults to `false`. + - `skip_matching` - (Optional) Skip replacing instances that already have your desired configuration. Defaults to `false`. - `auto_rollback` - (Optional) Automatically rollback if instance refresh fails. Defaults to `false`. This option may only be set to `true` when specifying a `launch_template` or `mixed_instances_policy`. - `alarm_specification` - (Optional) Alarm Specification for Instance Refresh. - `alarms` - (Required) List of Cloudwatch alarms. If any of these alarms goes into ALARM state, Instance Refresh is failed. @@ -953,4 +953,4 @@ Using `terraform import`, import Auto Scaling Groups using the `name`. For examp % terraform import aws_autoscaling_group.web web-asg ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/cloudfront_distribution.html.markdown b/website/docs/cdktf/python/r/cloudfront_distribution.html.markdown index cf15e2dcadd3..bb27b69311c2 100644 --- a/website/docs/cdktf/python/r/cloudfront_distribution.html.markdown +++ b/website/docs/cdktf/python/r/cloudfront_distribution.html.markdown @@ -25,30 +25,48 @@ The example below creates a CloudFront distribution with an S3 origin. ```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 +from cdktf import Token, TerraformIterator, TerraformStack # # Provider bindings are generated by running `cdktf get`. # See https://cdk.tf/provider-generation for more details. # from imports.aws.cloudfront_distribution import CloudfrontDistribution +from imports.aws.cloudfront_origin_access_control import CloudfrontOriginAccessControl +from imports.aws.data_aws_acm_certificate import DataAwsAcmCertificate +from imports.aws.data_aws_iam_policy_document import DataAwsIamPolicyDocument +from imports.aws.data_aws_route53_zone import DataAwsRoute53Zone +from imports.aws.route53_record import Route53Record from imports.aws.s3_bucket import S3Bucket -from imports.aws.s3_bucket_acl import S3BucketAcl +from imports.aws.s3_bucket_policy import S3BucketPolicy class MyConvertedCode(TerraformStack): def __init__(self, scope, name): super().__init__(scope, name) + my_domain = "mydomain.com" s3_origin_id = "myS3Origin" + default_var = CloudfrontOriginAccessControl(self, "default", + name="default-oac", + origin_access_control_origin_type="s3", + signing_behavior="always", + signing_protocol="sigv4" + ) b = S3Bucket(self, "b", bucket="mybucket", tags={ "Name": "My bucket" } ) - S3BucketAcl(self, "b_acl", - acl="private", - bucket=b.id + data_aws_acm_certificate_my_domain = DataAwsAcmCertificate(self, "my_domain", + domain="*.${" + my_domain + "}", + region="us-east-1", + statuses=["ISSUED"] ) - CloudfrontDistribution(self, "s3_distribution", - aliases=["mysite.example.com", "yoursite.example.com"], + data_aws_route53_zone_my_domain = DataAwsRoute53Zone(self, "my_domain_3", + name=my_domain + ) + # This allows the Terraform resource name to match the original name. You can remove the call if you don't need them to match. + data_aws_route53_zone_my_domain.override_logical_id("my_domain") + s3_distribution = CloudfrontDistribution(self, "s3_distribution", + aliases=["mysite.${" + my_domain + "}", "yoursite.${" + my_domain + "}"], comment="Some comment", default_cache_behavior=CloudfrontDistributionDefaultCacheBehavior( allowed_methods=["DELETE", "GET", "HEAD", "OPTIONS", "PATCH", "POST", "PUT" @@ -69,11 +87,6 @@ class MyConvertedCode(TerraformStack): default_root_object="index.html", enabled=True, is_ipv6_enabled=True, - logging_config=CloudfrontDistributionLoggingConfig( - bucket="mylogs.s3.amazonaws.com", - include_cookies=False, - prefix="myprefix" - ), ordered_cache_behavior=[CloudfrontDistributionOrderedCacheBehavior( allowed_methods=["GET", "HEAD", "OPTIONS"], cached_methods=["GET", "HEAD", "OPTIONS"], @@ -126,9 +139,53 @@ class MyConvertedCode(TerraformStack): "Environment": "production" }, viewer_certificate=CloudfrontDistributionViewerCertificate( - cloudfront_default_certificate=True + acm_certificate_arn=Token.as_string(data_aws_acm_certificate_my_domain.arn), + ssl_support_method="sni-only" ) ) + # In most cases loops should be handled in the programming language context and + # not inside of the Terraform context. If you are looping over something external, e.g. a variable or a file input + # you should consider using a for loop. If you are looping over something only known to Terraform, e.g. a result of a data source + # you need to keep this like it is. + cloudfront_for_each_iterator = TerraformIterator.from_list( + Token.as_any(s3_distribution.aliases)) + Route53Record(self, "cloudfront", + alias=Route53RecordAlias( + evaluate_target_health=False, + name=s3_distribution.domain_name, + zone_id=s3_distribution.hosted_zone_id + ), + name=Token.as_string(cloudfront_for_each_iterator.value), + type="A", + zone_id=Token.as_string(data_aws_route53_zone_my_domain.zone_id), + for_each=cloudfront_for_each_iterator + ) + origin_bucket_policy = DataAwsIamPolicyDocument(self, "origin_bucket_policy", + statement=[DataAwsIamPolicyDocumentStatement( + actions=["s3:GetObject", "s3:PutObject"], + condition=[DataAwsIamPolicyDocumentStatementCondition( + test="StringEquals", + values=[s3_distribution.arn], + variable="AWS:SourceArn" + ) + ], + effect="Allow", + principals=[DataAwsIamPolicyDocumentStatementPrincipals( + identifiers=["cloudfront.amazonaws.com"], + type="Service" + ) + ], + resources=["${" + b.arn + "}/*"], + sid="AllowCloudFrontServicePrincipalReadWrite" + ) + ] + ) + aws_s3_bucket_policy_b = S3BucketPolicy(self, "b_7", + bucket=b.bucket, + policy=Token.as_string(origin_bucket_policy.json) + ) + # 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_s3_bucket_policy_b.override_logical_id("b") ``` ### With Failover Routing @@ -678,4 +735,4 @@ Using `terraform import`, import CloudFront Distributions using the `id`. For ex % terraform import aws_cloudfront_distribution.distribution E74FTE3EXAMPLE ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/cloudfront_key_value_store.html.markdown b/website/docs/cdktf/python/r/cloudfront_key_value_store.html.markdown index 493a9c253633..7332a3c42234 100644 --- a/website/docs/cdktf/python/r/cloudfront_key_value_store.html.markdown +++ b/website/docs/cdktf/python/r/cloudfront_key_value_store.html.markdown @@ -60,6 +60,31 @@ This resource exports the following attributes in addition to the arguments abov ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_cloudfront_key_value_store.example + identity = { + name = "example_store" + } +} + +resource "aws_cloudfront_key_value_store" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `name` (String) Name of the CloudFront Key Value Store. + +#### Optional + +* `account_id` (String) AWS Account where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import CloudFront Key Value Store using the `name`. For example: ```python @@ -83,4 +108,4 @@ Using `terraform import`, import CloudFront Key Value Store using the `name`. Fo % terraform import aws_cloudfront_key_value_store.example example_store ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/cloudfrontkeyvaluestore_key.html.markdown b/website/docs/cdktf/python/r/cloudfrontkeyvaluestore_key.html.markdown index 58337a4b5b99..8d54aed3ec15 100644 --- a/website/docs/cdktf/python/r/cloudfrontkeyvaluestore_key.html.markdown +++ b/website/docs/cdktf/python/r/cloudfrontkeyvaluestore_key.html.markdown @@ -61,6 +61,33 @@ This resource exports the following attributes in addition to the arguments abov ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_cloudfrontkeyvaluestore_key.example + identity = { + key_value_store_arn = "arn:aws:cloudfront::111111111111:key-value-store/8562g61f-caba-2845-9d99-b97diwae5d3c" + key = "someKey" + } +} + +resource "aws_cloudfrontkeyvaluestore_key" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `key_value_store_arn` (String) ARN of the CloudFront Key Value Store. +* `key` (String) Key name. + +#### Optional + +* `account_id` (String) AWS Account where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import CloudFront KeyValueStore Key using the `key_value_store_arn` and 'key' separated by `,`. For example: ```python @@ -84,4 +111,4 @@ Using `terraform import`, import CloudFront KeyValueStore Key using the `key_val % terraform import aws_cloudfrontkeyvaluestore_key.example arn:aws:cloudfront::111111111111:key-value-store/8562g61f-caba-2845-9d99-b97diwae5d3c,someKey ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/cloudwatch_event_rule.html.markdown b/website/docs/cdktf/python/r/cloudwatch_event_rule.html.markdown index 70ce93b54cfa..68f7b6b0fe12 100644 --- a/website/docs/cdktf/python/r/cloudwatch_event_rule.html.markdown +++ b/website/docs/cdktf/python/r/cloudwatch_event_rule.html.markdown @@ -87,6 +87,34 @@ This resource exports the following attributes in addition to the arguments abov ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_cloudwatch_event_rule.example + identity = { + name = "capture-console-sign-in" + event_bus_name = "example-event-bus" + } +} + +resource "aws_cloudwatch_event_rule" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `name` (String) Name of the EventBridge rule. + +#### Optional + +* `account_id` (String) AWS Account where this resource is managed. +* `event_bus_name` (String) Name of the event bus. +* `region` (String) Region where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import EventBridge Rules using the `event_bus_name/rule_name` (if you omit `event_bus_name`, the `default` event bus will be used). For example: ```python @@ -101,13 +129,13 @@ from imports.aws.cloudwatch_event_rule import CloudwatchEventRule class MyConvertedCode(TerraformStack): def __init__(self, scope, name): super().__init__(scope, name) - CloudwatchEventRule.generate_config_for_import(self, "console", "example-event-bus/capture-console-sign-in") + CloudwatchEventRule.generate_config_for_import(self, "example", "example-event-bus/capture-console-sign-in") ``` Using `terraform import`, import EventBridge Rules using the `event_bus_name/rule_name` (if you omit `event_bus_name`, the `default` event bus will be used). For example: ```console -% terraform import aws_cloudwatch_event_rule.console example-event-bus/capture-console-sign-in +% terraform import aws_cloudwatch_event_rule.example example-event-bus/capture-console-sign-in ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/cloudwatch_event_target.html.markdown b/website/docs/cdktf/python/r/cloudwatch_event_target.html.markdown index 71bc2b77816d..fb4234d9d0be 100644 --- a/website/docs/cdktf/python/r/cloudwatch_event_target.html.markdown +++ b/website/docs/cdktf/python/r/cloudwatch_event_target.html.markdown @@ -765,6 +765,36 @@ This resource exports no additional attributes. ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_cloudwatch_event_target.example + identity = { + event_bus_name = "default" + rule = "rule-name" + target_id = "target-id" + } +} + +resource "aws_cloudwatch_event_target" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `event_bus_name` (String) Event bus name for the target. +* `rule` (String) Rule name for the target. +* `target_id` (String) Target ID. + +#### Optional + +* `account_id` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import EventBridge Targets using `event_bus_name/rule-name/target-id` (if you omit `event_bus_name`, the `default` event bus will be used). For example: ```python @@ -779,13 +809,13 @@ from imports.aws.cloudwatch_event_target import CloudwatchEventTarget class MyConvertedCode(TerraformStack): def __init__(self, scope, name): super().__init__(scope, name) - CloudwatchEventTarget.generate_config_for_import(self, "testEventTarget", "rule-name/target-id") + CloudwatchEventTarget.generate_config_for_import(self, "example", "rule-name/target-id") ``` Using `terraform import`, import EventBridge Targets using `event_bus_name/rule-name/target-id` (if you omit `event_bus_name`, the `default` event bus will be used). For example: ```console -% terraform import aws_cloudwatch_event_target.test-event-target rule-name/target-id +% terraform import aws_cloudwatch_event_target.example rule-name/target-id ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/cloudwatch_log_group.html.markdown b/website/docs/cdktf/python/r/cloudwatch_log_group.html.markdown index 40d654ae89e5..6409e4f5f4ca 100644 --- a/website/docs/cdktf/python/r/cloudwatch_log_group.html.markdown +++ b/website/docs/cdktf/python/r/cloudwatch_log_group.html.markdown @@ -61,6 +61,32 @@ This resource exports the following attributes in addition to the arguments abov ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_cloudwatch_log_group.example + identity = { + name = "yada" + } +} + +resource "aws_cloudwatch_log_group" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `name` (String) Name of the CloudWatch log group. + +#### Optional + +* `account_id` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import Cloudwatch Log Groups using the `name`. For example: ```python @@ -75,13 +101,13 @@ from imports.aws.cloudwatch_log_group import CloudwatchLogGroup class MyConvertedCode(TerraformStack): def __init__(self, scope, name): super().__init__(scope, name) - CloudwatchLogGroup.generate_config_for_import(self, "testGroup", "yada") + CloudwatchLogGroup.generate_config_for_import(self, "example", "yada") ``` Using `terraform import`, import Cloudwatch Log Groups using the `name`. For example: ```console -% terraform import aws_cloudwatch_log_group.test_group yada +% terraform import aws_cloudwatch_log_group.example yada ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/cloudwatch_metric_alarm.html.markdown b/website/docs/cdktf/python/r/cloudwatch_metric_alarm.html.markdown index c0ece3e48548..4852bc67e521 100644 --- a/website/docs/cdktf/python/r/cloudwatch_metric_alarm.html.markdown +++ b/website/docs/cdktf/python/r/cloudwatch_metric_alarm.html.markdown @@ -295,6 +295,32 @@ This resource exports the following attributes in addition to the arguments abov ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_cloudwatch_metric_alarm.example + identity = { + alarm_name = "alarm-12345" + } +} + +resource "aws_cloudwatch_metric_alarm" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `alarm_name` (String) Name of the CloudWatch metric alarm. + +#### Optional + +* `account_id` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import CloudWatch Metric Alarm using the `alarm_name`. For example: ```python @@ -309,13 +335,13 @@ from imports.aws.cloudwatch_metric_alarm import CloudwatchMetricAlarm class MyConvertedCode(TerraformStack): def __init__(self, scope, name): super().__init__(scope, name) - CloudwatchMetricAlarm.generate_config_for_import(self, "test", "alarm-12345") + CloudwatchMetricAlarm.generate_config_for_import(self, "example", "alarm-12345") ``` Using `terraform import`, import CloudWatch Metric Alarm using the `alarm_name`. For example: ```console -% terraform import aws_cloudwatch_metric_alarm.test alarm-12345 +% terraform import aws_cloudwatch_metric_alarm.example alarm-12345 ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/cognito_log_delivery_configuration.html.markdown b/website/docs/cdktf/python/r/cognito_log_delivery_configuration.html.markdown index a78d6ac18c17..d793b7008552 100644 --- a/website/docs/cdktf/python/r/cognito_log_delivery_configuration.html.markdown +++ b/website/docs/cdktf/python/r/cognito_log_delivery_configuration.html.markdown @@ -246,6 +246,32 @@ This resource exports the following attributes in addition to the arguments abov ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_cognito_log_delivery_configuration.example + identity = { + user_pool_id = "us-west-2_example123" + } +} + +resource "aws_cognito_log_delivery_configuration" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `user_pool_id` (String) ID of the Cognito User Pool. + +#### Optional + +* `account_id` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import Cognito IDP (Identity Provider) Log Delivery Configuration using the `user_pool_id`. For example: ```python @@ -269,4 +295,4 @@ Using `terraform import`, import Cognito IDP (Identity Provider) Log Delivery Co % terraform import aws_cognito_log_delivery_configuration.example us-west-2_example123 ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/dx_gateway.html.markdown b/website/docs/cdktf/python/r/dx_gateway.html.markdown index e94834028a3d..71e7d2017a32 100644 --- a/website/docs/cdktf/python/r/dx_gateway.html.markdown +++ b/website/docs/cdktf/python/r/dx_gateway.html.markdown @@ -56,6 +56,32 @@ This resource exports the following attributes in addition to the arguments abov ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_dx_gateway.example + identity = { + id = "abcd1234-dcba-5678-be23-cdef9876ab45" + } +} + +resource "aws_dx_gateway" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `id` (String) ID of the Direct Connect Gateway. + +#### Optional + +* `account_id` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import Direct Connect Gateways using the gateway `id`. For example: ```python @@ -70,13 +96,13 @@ from imports.aws.dx_gateway import DxGateway class MyConvertedCode(TerraformStack): def __init__(self, scope, name): super().__init__(scope, name) - DxGateway.generate_config_for_import(self, "test", "abcd1234-dcba-5678-be23-cdef9876ab45") + DxGateway.generate_config_for_import(self, "example", "abcd1234-dcba-5678-be23-cdef9876ab45") ``` Using `terraform import`, import Direct Connect Gateways using the gateway `id`. For example: ```console -% terraform import aws_dx_gateway.test abcd1234-dcba-5678-be23-cdef9876ab45 +% terraform import aws_dx_gateway.example abcd1234-dcba-5678-be23-cdef9876ab45 ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/ecr_lifecycle_policy.html.markdown b/website/docs/cdktf/python/r/ecr_lifecycle_policy.html.markdown index c4d6eff0dd41..430641cee6a0 100644 --- a/website/docs/cdktf/python/r/ecr_lifecycle_policy.html.markdown +++ b/website/docs/cdktf/python/r/ecr_lifecycle_policy.html.markdown @@ -110,8 +110,8 @@ resource "aws_ecr_lifecycle_policy" "example" { #### Optional -- `account_id` (String) AWS Account where this resource is managed. -- `region` (String) Region where this resource is managed. +* `account_id` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import ECR Lifecycle Policy using the name of the repository. For example: @@ -136,4 +136,4 @@ Using `terraform import`, import ECR Lifecycle Policy using the name of the repo % terraform import aws_ecr_lifecycle_policy.example tf-example ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/ecr_repository.html.markdown b/website/docs/cdktf/python/r/ecr_repository.html.markdown index d37aa19efd1f..a9b79b90f7af 100644 --- a/website/docs/cdktf/python/r/ecr_repository.html.markdown +++ b/website/docs/cdktf/python/r/ecr_repository.html.markdown @@ -128,8 +128,8 @@ resource "aws_ecr_repository" "service" { #### Optional -- `account_id` (String) AWS Account where this resource is managed. -- `region` (String) Region where this resource is managed. +* `account_id` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import ECR Repositories using the `name`. For example: @@ -154,4 +154,4 @@ Using `terraform import`, import ECR Repositories using the `name`. For example: % terraform import aws_ecr_repository.service test-service ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/ecr_repository_policy.html.markdown b/website/docs/cdktf/python/r/ecr_repository_policy.html.markdown index a441c730777f..7d3f3371668e 100644 --- a/website/docs/cdktf/python/r/ecr_repository_policy.html.markdown +++ b/website/docs/cdktf/python/r/ecr_repository_policy.html.markdown @@ -97,8 +97,8 @@ resource "aws_ecr_repository_policy" "example" { #### Optional -- `account_id` (String) AWS Account where this resource is managed. -- `region` (String) Region where this resource is managed. +* `account_id` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import ECR Repository Policy using the repository name. For example: @@ -123,4 +123,4 @@ Using `terraform import`, import ECR Repository Policy using the repository name % terraform import aws_ecr_repository_policy.example example ``` - \ 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 36fc82cffdda..47b0b57bee57 100644 --- a/website/docs/cdktf/python/r/ecs_service.html.markdown +++ b/website/docs/cdktf/python/r/ecs_service.html.markdown @@ -307,6 +307,7 @@ The `lifecycle_hook` configuration block supports the following: * `hook_target_arn` - (Required) ARN of the Lambda function to invoke for the lifecycle hook. * `role_arn` - (Required) ARN of the IAM role that grants the service permission to invoke the Lambda function. * `lifecycle_stages` - (Required) Stages during the deployment when the hook should be invoked. Valid values: `RECONCILE_SERVICE`, `PRE_SCALE_UP`, `POST_SCALE_UP`, `TEST_TRAFFIC_SHIFT`, `POST_TEST_TRAFFIC_SHIFT`, `PRODUCTION_TRAFFIC_SHIFT`, `POST_PRODUCTION_TRAFFIC_SHIFT`. +* `hook_details` - (Optional) Custom parameters that Amazon ECS will pass to the hook target invocations (such as a Lambda function). ### deployment_circuit_breaker @@ -511,4 +512,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/iam_role.html.markdown b/website/docs/cdktf/python/r/iam_role.html.markdown index 9c23dab5703a..455c6373f6d8 100644 --- a/website/docs/cdktf/python/r/iam_role.html.markdown +++ b/website/docs/cdktf/python/r/iam_role.html.markdown @@ -282,6 +282,31 @@ This resource exports the following attributes in addition to the arguments abov ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_iam_role.example + identity = { + name = "developer_name" + } +} + +resource "aws_iam_role" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `name` (String) Name of the IAM role. + +#### Optional + +* `account_id` (String) AWS Account where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import IAM Roles using the `name`. For example: ```python @@ -296,13 +321,13 @@ from imports.aws.iam_role import IamRole class MyConvertedCode(TerraformStack): def __init__(self, scope, name): super().__init__(scope, name) - IamRole.generate_config_for_import(self, "developer", "developer_name") + IamRole.generate_config_for_import(self, "example", "developer_name") ``` Using `terraform import`, import IAM Roles using the `name`. For example: ```console -% terraform import aws_iam_role.developer developer_name +% terraform import aws_iam_role.example developer_name ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/iam_role_policy.html.markdown b/website/docs/cdktf/python/r/iam_role_policy.html.markdown index e6e5b000c82c..f5b7f1cec54a 100644 --- a/website/docs/cdktf/python/r/iam_role_policy.html.markdown +++ b/website/docs/cdktf/python/r/iam_role_policy.html.markdown @@ -82,6 +82,33 @@ This resource exports no additional attributes. ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_iam_role_policy.example + identity = { + role = "role_of_mypolicy_name" + name = "mypolicy_name" + } +} + +resource "aws_iam_role_policy" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `role` (String) Name of the IAM role. +* `name` (String) Name of the role policy. + +#### Optional + +* `account_id` (String) AWS Account where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import IAM Role Policies using the `role_name:role_policy_name`. For example: ```python @@ -96,13 +123,13 @@ from imports.aws.iam_role_policy import IamRolePolicy class MyConvertedCode(TerraformStack): def __init__(self, scope, name): super().__init__(scope, name) - IamRolePolicy.generate_config_for_import(self, "mypolicy", "role_of_mypolicy_name:mypolicy_name") + IamRolePolicy.generate_config_for_import(self, "example", "role_of_mypolicy_name:mypolicy_name") ``` Using `terraform import`, import IAM Role Policies using the `role_name:role_policy_name`. For example: ```console -% terraform import aws_iam_role_policy.mypolicy role_of_mypolicy_name:mypolicy_name +% terraform import aws_iam_role_policy.example role_of_mypolicy_name:mypolicy_name ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/iam_role_policy_attachment.html.markdown b/website/docs/cdktf/python/r/iam_role_policy_attachment.html.markdown index 1cec19c93311..9bf709ae9e6c 100644 --- a/website/docs/cdktf/python/r/iam_role_policy_attachment.html.markdown +++ b/website/docs/cdktf/python/r/iam_role_policy_attachment.html.markdown @@ -83,6 +83,33 @@ This resource exports no additional attributes. ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_iam_role_policy_attachment.example + identity = { + role = "test-role" + policy_arn = "arn:aws:iam::xxxxxxxxxxxx:policy/test-policy" + } +} + +resource "aws_iam_role_policy_attachment" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `role` (String) Name of the IAM role. +* `policy_arn` (String) ARN of the IAM policy. + +#### Optional + +* `account_id` (String) AWS Account where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import IAM role policy attachments using the role name and policy arn separated by `/`. For example: ```python @@ -97,13 +124,13 @@ from imports.aws.iam_role_policy_attachment import IamRolePolicyAttachment class MyConvertedCode(TerraformStack): def __init__(self, scope, name): super().__init__(scope, name) - IamRolePolicyAttachment.generate_config_for_import(self, "testAttach", "test-role/arn:aws:iam::xxxxxxxxxxxx:policy/test-policy") + IamRolePolicyAttachment.generate_config_for_import(self, "example", "test-role/arn:aws:iam::xxxxxxxxxxxx:policy/test-policy") ``` Using `terraform import`, import IAM role policy attachments using the role name and policy arn separated by `/`. For example: ```console -% terraform import aws_iam_role_policy_attachment.test-attach test-role/arn:aws:iam::xxxxxxxxxxxx:policy/test-policy +% terraform import aws_iam_role_policy_attachment.example test-role/arn:aws:iam::xxxxxxxxxxxx:policy/test-policy ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/imagebuilder_image_recipe.html.markdown b/website/docs/cdktf/python/r/imagebuilder_image_recipe.html.markdown index e40c0886bb58..beb1f80cd716 100644 --- a/website/docs/cdktf/python/r/imagebuilder_image_recipe.html.markdown +++ b/website/docs/cdktf/python/r/imagebuilder_image_recipe.html.markdown @@ -60,7 +60,7 @@ The following arguments are required: * `component` - (Required) Ordered configuration block(s) with components for the image recipe. Detailed below. * `name` - (Required) Name of the image recipe. -* `parent_image` - (Required) The image recipe uses this image as a base from which to build your customized image. The value can be the base image ARN or an AMI ID. +* `parent_image` - (Required) The image recipe uses this image as a base from which to build your customized image. The value can be the base image ARN, an AMI ID, or an SSM Parameter referencing the AMI. For an SSM Parameter, enter the prefix `ssm:`, followed by the parameter name or ARN. * `version` - (Required) The semantic version of the image recipe, which specifies the version in the following format, with numeric values in each position to indicate a specific version: major.minor.patch. For example: 1.0.0. The following arguments are optional: @@ -161,4 +161,4 @@ Using `terraform import`, import `aws_imagebuilder_image_recipe` resources using % terraform import aws_imagebuilder_image_recipe.example arn:aws:imagebuilder:us-east-1:123456789012:image-recipe/example/1.0.0 ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/instance.html.markdown b/website/docs/cdktf/python/r/instance.html.markdown index b1bf1e60cac3..5d8d699dbf64 100644 --- a/website/docs/cdktf/python/r/instance.html.markdown +++ b/website/docs/cdktf/python/r/instance.html.markdown @@ -573,8 +573,8 @@ resource "aws_instance" "example" { #### Optional -- `account_id` (String) AWS Account where this resource is managed. -- `region` (String) Region where this resource is managed. +* `account_id` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import instances using the `id`. For example: @@ -599,4 +599,4 @@ Using `terraform import`, import instances using the `id`. For example: % terraform import aws_instance.web i-12345678 ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/kms_alias.html.markdown b/website/docs/cdktf/python/r/kms_alias.html.markdown index 6a75c5a9e5a7..43f82137c4f1 100644 --- a/website/docs/cdktf/python/r/kms_alias.html.markdown +++ b/website/docs/cdktf/python/r/kms_alias.html.markdown @@ -80,8 +80,8 @@ resource "aws_kms_alias" "example" { #### Optional -- `account_id` (String) AWS Account where this resource is managed. -- `region` (String) Region where this resource is managed. +* `account_id` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import KMS aliases using the `name`. For example: @@ -106,4 +106,4 @@ Using `terraform import`, import KMS aliases using the `name`. For example: % terraform import aws_kms_alias.a alias/my-key-alias ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/kms_key.html.markdown b/website/docs/cdktf/python/r/kms_key.html.markdown index e0ff2bf232da..313bf83d9be0 100644 --- a/website/docs/cdktf/python/r/kms_key.html.markdown +++ b/website/docs/cdktf/python/r/kms_key.html.markdown @@ -357,8 +357,8 @@ resource "aws_kms_key" "example" { #### Optional -- `account_id` (String) AWS Account where this resource is managed. -- `region` (String) Region where this resource is managed. +* `account_id` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import KMS Keys using the `id`. For example: @@ -383,4 +383,4 @@ Using `terraform import`, import KMS Keys using the `id`. For example: % terraform import aws_kms_key.a 1234abcd-12ab-34cd-56ef-1234567890ab ``` - \ 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 21800fc84325..36401e11f936 100644 --- a/website/docs/cdktf/python/r/lambda_function.html.markdown +++ b/website/docs/cdktf/python/r/lambda_function.html.markdown @@ -640,6 +640,8 @@ The following arguments are optional: ### vpc_config Configuration Block +~> **NOTE:** If `subnet_ids`, `security_group_ids` and `ipv6_allowed_for_dual_stack` are empty then `vpc_config` is considered to be empty or unset. + * `ipv6_allowed_for_dual_stack` - (Optional) Whether to allow outbound IPv6 traffic on VPC functions connected to dual-stack subnets. Default: `false`. * `security_group_ids` - (Required) List of security group IDs associated with the Lambda function. * `subnet_ids` - (Required) List of subnet IDs associated with the Lambda function. @@ -672,6 +674,32 @@ This resource exports the following attributes in addition to the arguments abov ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_lambda_function.example + identity = { + function_name = "example" + } +} + +resource "aws_lambda_function" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `function_name` (String) Name of the Lambda function. + +#### Optional + +* `account_id` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import Lambda Functions using the `function_name`. For example: ```python @@ -695,4 +723,4 @@ Using `terraform import`, import Lambda Functions using the `function_name`. For % terraform import aws_lambda_function.example example ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/lambda_permission.html.markdown b/website/docs/cdktf/python/r/lambda_permission.html.markdown index 2c995eb515db..9de4213e1062 100644 --- a/website/docs/cdktf/python/r/lambda_permission.html.markdown +++ b/website/docs/cdktf/python/r/lambda_permission.html.markdown @@ -307,6 +307,35 @@ This resource exports no additional attributes. ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_lambda_permission.example + identity = { + function_name = "my_test_lambda_function" + statement_id = "AllowExecutionFromCloudWatch" + } +} + +resource "aws_lambda_permission" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `function_name` (String) Lambda function name. +* `statement_id` (String) Statement ID for the permission. + +#### Optional + +* `account_id` (String) AWS Account where this resource is managed. +* `qualifier` (String) Qualifier for the function version or alias. +* `region` (String) Region where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import Lambda permission statements using function_name/statement_id with an optional qualifier. For example: ```python @@ -321,7 +350,7 @@ from imports.aws.lambda_permission import LambdaPermission class MyConvertedCode(TerraformStack): def __init__(self, scope, name): super().__init__(scope, name) - LambdaPermission.generate_config_for_import(self, "testLambdaPermission", "my_test_lambda_function/AllowExecutionFromCloudWatch") + LambdaPermission.generate_config_for_import(self, "example", "my_test_lambda_function/AllowExecutionFromCloudWatch") ``` Using `qualifier`: @@ -338,14 +367,14 @@ from imports.aws.lambda_permission import LambdaPermission class MyConvertedCode(TerraformStack): def __init__(self, scope, name): super().__init__(scope, name) - LambdaPermission.generate_config_for_import(self, "testLambdaPermission", "my_test_lambda_function:qualifier_name/AllowExecutionFromCloudWatch") + LambdaPermission.generate_config_for_import(self, "example", "my_test_lambda_function:qualifier_name/AllowExecutionFromCloudWatch") ``` For backwards compatibility, the following legacy `terraform import` commands are also supported: ```console % terraform import aws_lambda_permission.example my_test_lambda_function/AllowExecutionFromCloudWatch -% terraform import aws_lambda_permission.test_lambda_permission my_test_lambda_function:qualifier_name/AllowExecutionFromCloudWatch +% terraform import aws_lambda_permission.example my_test_lambda_function:qualifier_name/AllowExecutionFromCloudWatch ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/odb_cloud_autonomous_vm_cluster.html.markdown b/website/docs/cdktf/python/r/odb_cloud_autonomous_vm_cluster.html.markdown new file mode 100644 index 000000000000..1bdb35a7f88d --- /dev/null +++ b/website/docs/cdktf/python/r/odb_cloud_autonomous_vm_cluster.html.markdown @@ -0,0 +1,201 @@ +--- +subcategory: "Oracle Database@AWS" +layout: "AWS: aws_odb_cloud_autonomous_vm_cluster" +page_title: "AWS: aws_odb_cloud_autonomous_vm_cluster" +description: |- + Terraform resource managing cloud autonomous vm cluster in AWS for Oracle Database@AWS. +--- + + + +# Resource: aws_odb_cloud_autonomous_vm_cluster + +Terraform resource managing cloud autonomous vm cluster in AWS for Oracle Database@AWS. + +You can find out more about Oracle Database@AWS from [User Guide](https://docs.aws.amazon.com/odb/latest/UserGuide/what-is-odb.html). + +## 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 TerraformStack +# +# Provider bindings are generated by running `cdktf get`. +# See https://cdk.tf/provider-generation for more details. +# +from imports.aws.odb_cloud_autonomous_vm_cluster import OdbCloudAutonomousVmCluster +class MyConvertedCode(TerraformStack): + def __init__(self, scope, name): + super().__init__(scope, name) + OdbCloudAutonomousVmCluster(self, "avmc_with_all_params", + autonomous_data_storage_size_in_tbs=5, + cloud_exadata_infrastructure_id="", + cpu_core_count_per_node=40, + db_servers=["", ""], + description="my first avmc", + display_name="Ofake_my avmc", + license_model="LICENSE_INCLUDED", + maintenance_window=[OdbCloudAutonomousVmClusterMaintenanceWindow( + days_of_week=[OdbCloudAutonomousVmClusterMaintenanceWindowDaysOfWeek( + name="MONDAY" + ), OdbCloudAutonomousVmClusterMaintenanceWindowDaysOfWeek( + name="TUESDAY" + ) + ], + hours_of_day=[4, 16], + lead_time_in_weeks=3, + months=[OdbCloudAutonomousVmClusterMaintenanceWindowMonths( + name="FEBRUARY" + ), OdbCloudAutonomousVmClusterMaintenanceWindowMonths( + name="MAY" + ), OdbCloudAutonomousVmClusterMaintenanceWindowMonths( + name="AUGUST" + ), OdbCloudAutonomousVmClusterMaintenanceWindowMonths( + name="NOVEMBER" + ) + ], + preference="CUSTOM_PREFERENCE", + weeks_of_month=[2, 4] + ) + ], + memory_per_oracle_compute_unit_in_gbs=2, + odb_network_id="", + scan_listener_port_non_tls=1024, + scan_listener_port_tls=8561, + tags={ + "env": "dev" + }, + time_zone="UTC", + total_container_databases=1 + ) + OdbCloudAutonomousVmCluster(self, "avmc_with_minimum_parameters", + autonomous_data_storage_size_in_tbs=5, + cloud_exadata_infrastructure_id="", + cpu_core_count_per_node=40, + db_servers=[""], + display_name="Ofake-avmc-my_avmc", + license_model="LICENSE_INCLUDED", + maintenance_window=[OdbCloudAutonomousVmClusterMaintenanceWindow( + preference="NO_PREFERENCE" + ) + ], + memory_per_oracle_compute_unit_in_gbs=2, + odb_network_id="", + scan_listener_port_non_tls=1024, + scan_listener_port_tls=8561, + total_container_databases=1 + ) +``` + +## Argument Reference + +The following arguments are required: + +* `cloud_exadata_infrastructure_id` - (Required) Exadata infrastructure id. Changing this will force terraform to create new resource. +* `autonomous_data_storage_size_in_tbs` - (Required) The data storage size allocated for Autonomous Databases in the Autonomous VM cluster, in TB. Changing this will force terraform to create new resource. +* `cpu_core_count_per_node` - (Required) The number of CPU cores enabled per node in the Autonomous VM cluster. Changing this will force terraform to create new resource. +* `db_servers` - (Required) The database servers in the Autonomous VM cluster. Changing this will force terraform to create new resource. +* `display_name` - (Required) The display name of the Autonomous VM cluster. Changing this will force terraform to create new resource. +* `memory_per_oracle_compute_unit_in_gbs` - (Required) The amount of memory allocated per Oracle Compute Unit, in GB. Changing this will force terraform to create new resource. +* `odb_network_id` - (Required) The unique identifier of the ODB network associated with this Autonomous VM Cluster. Changing this will force terraform to create new resource. +* `scan_listener_port_non_tls` - (Required) The SCAN listener port for non-TLS (TCP) protocol. The default is 1521. Changing this will force terraform to create new resource. +* `scan_listener_port_tls` - (Required) The SCAN listener port for TLS (TCP) protocol. The default is 2484. Changing this will force terraform to create new resource. +* `total_container_databases` - (Required) The total number of Autonomous Container Databases that can be created with the allocated local storage. Changing this will force terraform to create new resource. +* `maintenance_window` - (Required) The maintenance window of the Autonomous VM cluster. Changing this will force terraform to create new resource. + +The following arguments are optional: + +* `description` - (Optional) The description of the Autonomous VM cluster. +* `is_mtls_enabled_vm_cluster` - (Optional) Indicates whether mutual TLS (mTLS) authentication is enabled for the Autonomous VM cluster. Changing this will force terraform to create new resource. +* `license_model` - (Optional) The license model for the Autonomous VM cluster. Valid values are LICENSE_INCLUDED or BRING_YOUR_OWN_LICENSE. Changing this will force terraform to create new resource. +* `time_zone` - (Optional) The time zone of the Autonomous VM cluster. Changing this will force terraform to create new resource. +* `region` - (Optional) Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the [provider configuration](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#aws-configuration-reference). +* `tags` - (Optional) A map of tags to assign to the exadata infrastructure. If configured with a provider [`default_tags` configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-configuration-block) present, tags with matching keys will overwrite those defined at the provider-level. + +### maintenance_window + +* `preference` - (Required) The preference for the maintenance window scheduling. Changing this will force terraform to create new resource. +* `days_of_week` - (Optional) The days of the week when maintenance can be performed. Changing this will force terraform to create new resource. +* `hours_of_day` - (Optional) The hours of the day when maintenance can be performed. Changing this will force terraform to create new resource. +* `lead_time_in_weeks` - (Optional) The lead time in weeks before the maintenance window. Changing this will force terraform to create new resource. +* `months` - (Optional) The months when maintenance can be performed. Changing this will force terraform to create new resource. +* `weeks_of_month` - (Optional) Indicates whether to skip release updates during maintenance. Changing this will force terraform to create new resource. + +## Attribute Reference + +This resource exports the following attributes in addition to the arguments above: + +* `arn` - The Amazon Resource Name (ARN) for the Exadata infrastructure. +* `autonomous_data_storage_percentage` - The progress of the current operation on the Autonomous VM cluster, as a percentage. +* `available_autonomous_data_storage_size_in_tbs` - The available data storage space for Autonomous Databases in the Autonomous VM cluster, in TB. +* `available_container_databases` - The number of Autonomous CDBs that you can create with the currently available storage. +* `available_cpus` - The number of CPU cores available for allocation to Autonomous Databases. +* `compute_model` - The compute model of the Autonomous VM cluster: ECPU or OCPU. +* `cpu_core_count` - The total number of CPU cores in the Autonomous VM cluster. +* `cpu_percentage` - The percentage of total CPU cores currently in use in the Autonomous VM cluster. +* `created_at` - The date and time when the Autonomous VM cluster was created. +* `data_storage_size_in_gbs` - The total data storage allocated to the Autonomous VM cluster, in GB. +* `data_storage_size_in_tbs` - The total data storage allocated to the Autonomous VM cluster, in TB. +* `odb_node_storage_size_in_gbs` - The local node storage allocated to the Autonomous VM cluster, in gigabytes (GB). +* `domain` - The domain name of the Autonomous VM cluster. +* `exadata_storage_in_tbs_lowest_scaled_value` - The minimum value to which you can scale down the Exadata storage, in TB. +* `hostname` - The hostname of the Autonomous VM cluster. +* `license_model` - The license model for the Autonomous VM cluster. Valid values are LICENSE_INCLUDED or BRING_YOUR_OWN_LICENSE. +* `max_acds_lowest_scaled_value` - The minimum value to which you can scale down the maximum number of Autonomous CDBs. +* `memory_size_in_gbs` - The total amount of memory allocated to the Autonomous VM cluster, in gigabytes(GB). +* `node_count` - The number of database server nodes in the Autonomous VM cluster. +* `non_provisionable_autonomous_container_databases` - The number of Autonomous CDBs that can't be provisioned because of resource constraints. +* `oci_resource_anchor_name` - The name of the OCI resource anchor associated with this Autonomous VM cluster. +* `oci_url` - The URL for accessing the OCI console page for this Autonomous VM cluster. +* `ocid` - The Oracle Cloud Identifier (OCID) of the Autonomous VM cluster. +* `percent_progress` - The progress of the current operation on the Autonomous VM cluster, as a percentage. +* `provisionable_autonomous_container_databases` - The number of Autonomous CDBs that can be provisioned in the Autonomous VM cluster. +* `provisioned_autonomous_container_databases` - The number of Autonomous CDBs currently provisioned in the Autonomous VM cluster. +* `provisioned_cpus` - The number of CPUs provisioned in the Autonomous VM cluster. +* `reclaimable_cpus` - The number of CPU cores that can be reclaimed from terminated or scaled-down Autonomous Databases. +* `reserved_cpus` - The number of CPU cores reserved for system operations and redundancy. +* `shape` - The shape of the Exadata infrastructure for the Autonomous VM cluster. +* `status` - The status of the Autonomous VM cluster. Possible values include CREATING, AVAILABLE, UPDATING, DELETING, DELETED, FAILED. +* `status_reason` - Additional information about the current status of the Autonomous VM cluster. +* `time_zone` - The time zone of the Autonomous VM cluster. +* `time_ords_certificate_expires` - The expiration date and time of the ORDS certificate. +* `time_database_ssl_certificate_expires` - The expiration date and time of the database SSL certificate. +* `tags_all` - The combined set of user-defined and provider-defined tags. + +## Timeouts + +[Configuration options](https://developer.hashicorp.com/terraform/language/resources/syntax#operation-timeouts): + +* `create` - (Default `24h`) +* `update` - (Default `24h`) +* `delete` - (Default `24h`) + +## Import + +In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import OpenSearch Ingestion Pipeline using the `id`. 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.odb_cloud_autonomous_vm_cluster import OdbCloudAutonomousVmCluster +class MyConvertedCode(TerraformStack): + def __init__(self, scope, name): + super().__init__(scope, name) + OdbCloudAutonomousVmCluster.generate_config_for_import(self, "example", "example") +``` + +Using `terraform import`, import cloud autonomous vm cluster `id`. For example: + +```console +% terraform import aws_odb_cloud_autonomous_vm_cluster.example example +``` + + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/odb_cloud_exadata_infrastructure.html.markdown b/website/docs/cdktf/python/r/odb_cloud_exadata_infrastructure.html.markdown new file mode 100644 index 000000000000..978757df67ad --- /dev/null +++ b/website/docs/cdktf/python/r/odb_cloud_exadata_infrastructure.html.markdown @@ -0,0 +1,172 @@ +--- +subcategory: "Oracle Database@AWS" +layout: "aws" +page_title: "AWS: aws_odb_cloud_exadata_infrastructure" +description: |- + Terraform resource for managing exadata infrastructure resource for Oracle Database@AWS. +--- + + + +# Resource: aws_odb_cloud_exadata_infrastructure + +Terraform resource for managing exadata infrastructure resource in AWS for Oracle Database@AWS. + +## 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 TerraformStack +# +# Provider bindings are generated by running `cdktf get`. +# See https://cdk.tf/provider-generation for more details. +# +from imports.aws.odb_cloud_exadata_infrastructure import OdbCloudExadataInfrastructure +class MyConvertedCode(TerraformStack): + def __init__(self, scope, name): + super().__init__(scope, name) + OdbCloudExadataInfrastructure(self, "example", + availability_zone_id="use1-az6", + compute_count=2, + customer_contacts_to_send_to_oci=[OdbCloudExadataInfrastructureCustomerContactsToSendToOci( + email="abc@example.com" + ), OdbCloudExadataInfrastructureCustomerContactsToSendToOci( + email="def@example.com" + ) + ], + database_server_type="X11M", + display_name="my-exa-infra", + maintenance_window=[OdbCloudExadataInfrastructureMaintenanceWindow( + custom_action_timeout_in_mins=16, + days_of_week=[OdbCloudExadataInfrastructureMaintenanceWindowDaysOfWeek( + name="MONDAY" + ), OdbCloudExadataInfrastructureMaintenanceWindowDaysOfWeek( + name="TUESDAY" + ) + ], + hours_of_day=[11, 16], + is_custom_action_timeout_enabled=True, + lead_time_in_weeks=3, + months=[OdbCloudExadataInfrastructureMaintenanceWindowMonths( + name="FEBRUARY" + ), OdbCloudExadataInfrastructureMaintenanceWindowMonths( + name="MAY" + ), OdbCloudExadataInfrastructureMaintenanceWindowMonths( + name="AUGUST" + ), OdbCloudExadataInfrastructureMaintenanceWindowMonths( + name="NOVEMBER" + ) + ], + patching_mode="ROLLING", + preference="CUSTOM_PREFERENCE", + weeks_of_month=[2, 4] + ) + ], + shape="Exadata.X11M", + storage_count=3, + storage_server_type="X11M-HC", + tags={ + "env": "dev" + } + ) +``` + +## Argument Reference + +The following arguments are required: + +* `display_name` - (Required) The user-friendly name for the Exadata infrastructure. Changing this will force terraform to create a new resource. +* `shape` - (Required) The model name of the Exadata infrastructure. Changing this will force terraform to create new resource. +* `storage_count` - (Required) The number of storage servers that are activated for the Exadata infrastructure. Changing this will force terraform to create new resource. +* `compute_count` - (Required) The number of compute instances that the Exadata infrastructure is located. Changing this will force terraform to create new resource. +* `availability_zone_id` - (Required) The AZ ID of the AZ where the Exadata infrastructure is located. Changing this will force terraform to create new resource. + +The following arguments are optional: + +* `customer_contacts_to_send_to_oci` - (Optional) The email addresses of contacts to receive notification from Oracle about maintenance updates for the Exadata infrastructure. Changing this will force terraform to create new resource. +* `availability_zone`: (Optional) The name of the Availability Zone (AZ) where the Exadata infrastructure is located. Changing this will force terraform to create new resource. +* `database_server_type` - (Optional) The database server model type of the Exadata infrastructure. For the list of valid model names, use the ListDbSystemShapes operation. This is a mandatory parameter for Exadata.X11M system shape. Changing this will force terraform to create new resource. +* `storage_server_type` - (Optional) The storage server model type of the Exadata infrastructure. For the list of valid model names, use the ListDbSystemShapes operation. This is a mandatory parameter for Exadata.X11M system shape. Changing this will force terraform to create new resource. +* `tags` - (Optional) A map of tags to assign to the exadata infrastructure. If configured with a provider [`default_tags` configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-configuration-block) present, tags with matching keys will overwrite those defined at the provider-level. +* `region` - (Optional) Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the [provider configuration](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#aws-configuration-reference). + +### maintenance_window + +* `custom_action_timeout_in_mins` - (Required) The custom action timeout in minutes for the maintenance window. +* `is_custom_action_timeout_enabled` - (Required) ndicates whether custom action timeout is enabled for the maintenance window. +* `patching_mode` - (Required) The patching mode for the maintenance window. +* `preference` - (Required) The preference for the maintenance window scheduling. +* `days_of_week` - (Optional) The days of the week when maintenance can be performed. +* `hours_of_day` - (Optional) The hours of the day when maintenance can be performed. +* `lead_time_in_weeks` - (Optional) The lead time in weeks before the maintenance window. +* `months` - (Optional) The months when maintenance can be performed. +* `weeks_of_month` - (Optional) The weeks of the month when maintenance can be performed. + +## Attribute Reference + +This resource exports the following attributes in addition to the arguments above: + +* `id` - Unique identifier for the pipeline. +* `arn` - Amazon Resource Name (ARN) of the pipeline. +* `activated_storage_count` - The number of storage servers requested for the Exadata infrastructure. +* `additional_storage_count` - The number of storage servers requested for the Exadata infrastructure. +* `available_storage_size_in_gbs` - The amount of available storage, in gigabytes (GB), for the Exadata infrastructure. +* `cpu_count` - The total number of CPU cores that are allocated to the Exadata infrastructure. +* `data_storage_size_in_tbs` - The size of the Exadata infrastructure's data disk group, in terabytes (TB). +* `db_node_storage_size_in_gbs` - The size of the Exadata infrastructure's local node storage, in gigabytes (GB). +* `db_server_version` - The software version of the database servers (dom0) in the Exadata infrastructure. +* `last_maintenance_run_id` - The Oracle Cloud Identifier (OCID) of the last maintenance run for the Exadata infrastructure. +* `max_cpu_count` - The total number of CPU cores available on the Exadata infrastructure. +* `max_data_storage_in_tbs` - The total amount of data disk group storage, in terabytes (TB), that's available on the Exadata infrastructure. +* `max_db_node_storage_size_in_gbs` - The total amount of local node storage, in gigabytes (GB), that's available on the Exadata infrastructure. +* `max_memory_in_gbs` - The total amount of memory in gigabytes (GB) available on the Exadata infrastructure. +* `monthly_db_server_version` - The monthly software version of the database servers in the Exadata infrastructure. +* `monthly_storage_server_version` - The monthly software version of the storage servers installed on the Exadata infrastructure. +* `next_maintenance_run_id` - The OCID of the next maintenance run for the Exadata infrastructure. +* `ocid` - The OCID of the Exadata infrastructure. +* `oci_resource_anchor_name` - The name of the OCI resource anchor for the Exadata infrastructure. +* `percent_progress` - The amount of progress made on the current operation on the Exadata infrastructure, expressed as a percentage. +* `status` - The current status of the Exadata infrastructure. +* `status_reason` - Additional information about the status of the Exadata infrastructure. +* `storage_server_version` - The software version of the storage servers on the Exadata infrastructure. +* `total_storage_size_in_gbs` - The total amount of storage, in gigabytes (GB), on the Exadata infrastructure. +* `created_at` - The time when the Exadata infrastructure was created. +* `compute_model` - The OCI model compute model used when you create or clone an instance: ECPU or OCPU. + +## Timeouts + +[Configuration options](https://developer.hashicorp.com/terraform/language/resources/syntax#operation-timeouts): + +* `create` - (Default `24h`) +* `update` - (Default `24h`) +* `delete` - (Default `24h`) + +## Import + +In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import OpenSearch Ingestion Pipeline using the `id`. 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.odb_cloud_exadata_infrastructure import OdbCloudExadataInfrastructure +class MyConvertedCode(TerraformStack): + def __init__(self, scope, name): + super().__init__(scope, name) + OdbCloudExadataInfrastructure.generate_config_for_import(self, "example", "example") +``` + +Using `terraform import`, import Exadata Infrastructure using the `id`. For example: + +```console +% terraform import aws_odb_cloud_exadata_infrastructure.example example +``` + + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/odb_cloud_vm_cluster.html.markdown b/website/docs/cdktf/python/r/odb_cloud_vm_cluster.html.markdown new file mode 100644 index 000000000000..5dd4f284526b --- /dev/null +++ b/website/docs/cdktf/python/r/odb_cloud_vm_cluster.html.markdown @@ -0,0 +1,175 @@ +--- +subcategory: "Oracle Database@AWS" +layout: "AWS: aws_odb_cloud_vm_cluster" +page_title: "AWS: aws_odb_cloud_vm_cluster" +description: |- + Terraform resource for managing cloud vm cluster resource in AWS for Oracle Database@AWS. +--- + + + +# Resource: aws_odb_cloud_vm_cluster + +Terraform data source for Exadata Infrastructure resource in AWS for Oracle Database@AWS. + +You can find out more about Oracle Database@AWS from [User Guide](https://docs.aws.amazon.com/odb/latest/UserGuide/what-is-odb.html). + +## 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 TerraformStack +# +# Provider bindings are generated by running `cdktf get`. +# See https://cdk.tf/provider-generation for more details. +# +from imports.aws.odb_cloud_vm_cluster import OdbCloudVmCluster +class MyConvertedCode(TerraformStack): + def __init__(self, scope, name): + super().__init__(scope, name) + OdbCloudVmCluster(self, "with_all_parameters", + cloud_exadata_infrastructure_id="exa_gjrmtxl4qk", + cluster_name="julia-13", + cpu_core_count=6, + data_collection_options=[OdbCloudVmClusterDataCollectionOptions( + is_diagnostics_events_enabled=True, + is_health_monitoring_enabled=True, + is_incident_logs_enabled=True + ) + ], + data_storage_size_in_tbs=20, + db_node_storage_size_in_gbs=120, + db_servers=["my-dbserver-1", "my-db-server-2"], + display_name="my-vmc", + gi_version="23.0.0.0", + hostname_prefix="apollo12", + is_local_backup_enabled=True, + is_sparse_diskgroup_enabled=True, + license_model="LICENSE_INCLUDED", + memory_size_in_gbs=60, + odb_network_id="odbnet_3l9st3litg", + scan_listener_port_tcp=1521, + ssh_public_keys=["my-ssh-key"], + tags={ + "env": "dev" + }, + timezone="UTC" + ) + OdbCloudVmCluster(self, "with_minimum_parameter", + cloud_exadata_infrastructure_id="exa_gjrmtxl4qk", + cpu_core_count=6, + data_collection_options=[OdbCloudVmClusterDataCollectionOptions( + is_diagnostics_events_enabled=False, + is_health_monitoring_enabled=False, + is_incident_logs_enabled=False + ) + ], + data_storage_size_in_tbs=20, + db_node_storage_size_in_gbs=120, + db_servers=["db-server-1", "db-server-2"], + display_name="my-exa-infra", + gi_version="23.0.0.0", + hostname_prefix="apollo12", + is_local_backup_enabled=True, + is_sparse_diskgroup_enabled=True, + license_model="LICENSE_INCLUDED", + memory_size_in_gbs=60, + odb_network_id="odbnet_3l9st3litg", + ssh_public_keys=["public-ssh-key"] + ) +``` + +## Argument Reference + +The following arguments are required: + +* `cloud_exadata_infrastructure_id` - (Required) The unique identifier of the Exadata infrastructure for this VM cluster. Changing this will create a new resource. +* `cpu_core_count` - (Required) The number of CPU cores to enable on the VM cluster. Changing this will create a new resource. +* `db_servers` - (Required) The list of database servers for the VM cluster. Changing this will create a new resource. +* `display_name` - (Required) A user-friendly name for the VM cluster. Changing this will create a new resource. +* `gi_version` - (Required) A valid software version of Oracle Grid Infrastructure (GI). To get the list of valid values, use the ListGiVersions operation and specify the shape of the Exadata infrastructure. Example: 19.0.0.0 Changing this will create a new resource. +* `hostname_prefix` - (Required) The host name prefix for the VM cluster. Constraints: - Can't be "localhost" or "hostname". - Can't contain "-version". - The maximum length of the combined hostname and domain is 63 characters. - The hostname must be unique within the subnet. Changing this will create a new resource. +* `odb_network_id` - (Required) The unique identifier of the ODB network for the VM cluster. Changing this will create a new resource. +* `ssh_public_keys` - (Required) The public key portion of one or more key pairs used for SSH access to the VM cluster. Changing this will create a new resource. +* `data_collection_options` - (Required) The set of preferences for the various diagnostic collection options for the VM cluster. + +The following arguments are optional: + +* `cluster_name` - (Optional) The name of the Grid Infrastructure (GI) cluster. Changing this will create a new resource. +* `data_storage_size_in_tbs` - (Optional) The size of the data disk group, in terabytes (TBs), to allocate for the VM cluster. Changing this will create a new resource. +* `db_node_storage_size_in_gbs` - (Optional) The amount of local node storage, in gigabytes (GBs), to allocate for the VM cluster. Changing this will create a new resource. +* `is_local_backup_enabled` - (Optional) Specifies whether to enable database backups to local Exadata storage for the VM cluster. Changing this will create a new resource. +* `is_sparse_diskgroup_enabled` - (Optional) Specifies whether to create a sparse disk group for the VM cluster. Changing this will create a new resource. +* `license_model` - (Optional) The Oracle license model to apply to the VM cluster. Default: LICENSE_INCLUDED. Changing this will create a new resource. +* `memory_size_in_gbs` - (Optional) The amount of memory, in gigabytes (GBs), to allocate for the VM cluster. Changing this will create a new resource. +* `scan_listener_port_tcp` - (Optional) The port number for TCP connections to the single client access name (SCAN) listener. Valid values: 1024–8999, except 2484, 6100, 6200, 7060, 7070, 7085, and 7879. Default: 1521. Changing this will create a new resource. +* `timezone` - (Optional) The configured time zone of the VM cluster. Changing this will create a new resource. +* `region` - (Optional) Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the [provider configuration](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#aws-configuration-reference). +* `tags` - (Optional) A map of tags to assign to the exadata infrastructure. If configured with a provider [`default_tags` configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-configuration-block) present, tags with matching keys will overwrite those defined at the provider-level. + +## Attribute Reference + +This data source exports the following attributes in addition to the arguments above: + +* `arn` - The Amazon Resource Name (ARN) for the cloud vm cluster. +* `disk_redundancy` - The type of redundancy for the VM cluster: NORMAL (2-way) or HIGH (3-way). +* `AttrDomain` - The domain name associated with the VM cluster. +* `hostname_prefix_computed` - The host name for the VM cluster. Constraints: - Can't be "localhost" or "hostname". - Can't contain "-version". - The maximum length of the combined hostname and domain is 63 characters. - The hostname must be unique within the subnet. This member is required. Changing this will create a new resource. +* `iorm_config_cache` - The Exadata IORM (I/O Resource Manager) configuration cache details for the VM cluster. +* `last_update_history_entry_id` - The OCID of the most recent maintenance update history entry. +* `listener_port` - The listener port number configured on the VM cluster. +* `node_count` - The total number of nodes in the VM cluster. +* `ocid` - The OCID (Oracle Cloud Identifier) of the VM cluster. +* `oci_resource_anchor_name` - The name of the OCI resource anchor associated with the VM cluster. +* `oci_url` - The HTTPS link to the VM cluster resource in OCI. +* `percent_progress` - The percentage of progress made on the current operation for the VM cluster. +* `scan_dns_name` - The fully qualified domain name (FQDN) for the SCAN IP addresses associated with the VM cluster. +* `scan_dns_record_id` - The OCID of the DNS record for the SCAN IPs linked to the VM cluster. +* `scan_ip_ids` - The list of OCIDs for SCAN IP addresses associated with the VM cluster. +* `shape` - The hardware model name of the Exadata infrastructure running the VM cluster. +* `status` - The current lifecycle status of the VM cluster. +* `status_reason` - Additional information regarding the current status of the VM cluster. +* `storage_size_in_gbs` - The local node storage allocated to the VM cluster, in gigabytes (GB). +* `system_version` - The operating system version of the image chosen for the VM cluster. +* `vip_ids` - The virtual IP (VIP) addresses assigned to the VM cluster. CRS assigns one VIP per node for failover support. +* `created_at` - The timestamp when the VM cluster was created. +* `compute_model` - The compute model used when the instance is created or cloned — either ECPU or OCPU. ECPU is a virtualized compute unit; OCPU is a physical processor core with hyper-threading. +* `tags_all` - The combined set of user-defined and provider-defined tags. + +## Timeouts + +[Configuration options](https://developer.hashicorp.com/terraform/language/resources/syntax#operation-timeouts): + +* `create` - (Default `24h`) +* `update` - (Default `24h`) +* `delete` - (Default `24h`) + +## Import + +In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import OpenSearch Ingestion Pipeline using the `id`. 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.odb_cloud_vm_cluster import OdbCloudVmCluster +class MyConvertedCode(TerraformStack): + def __init__(self, scope, name): + super().__init__(scope, name) + OdbCloudVmCluster.generate_config_for_import(self, "example", "example") +``` + +Using `terraform import`, import cloud vm cluster using the `id`. For example: + +```console +% terraform import aws_odb_cloud_vm_cluster.example example +``` + + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/odb_network.html.markdown b/website/docs/cdktf/python/r/odb_network.html.markdown new file mode 100644 index 000000000000..349f407b5295 --- /dev/null +++ b/website/docs/cdktf/python/r/odb_network.html.markdown @@ -0,0 +1,116 @@ +--- +subcategory: "Oracle Database@AWS" +layout: "AWS: aws_odb_network" +page_title: "AWS: aws_odb_network" +description: |- + Terraform resource for managing odb network of an Oracle Database@AWS. +--- + + + +# Resource: aws_odb_network + +Terraform resource for managing odb Network resource in AWS for Oracle Database@AWS. + +## 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 TerraformStack +# +# Provider bindings are generated by running `cdktf get`. +# See https://cdk.tf/provider-generation for more details. +# +from imports.aws.odb_network import OdbNetwork +class MyConvertedCode(TerraformStack): + def __init__(self, scope, name): + super().__init__(scope, name) + OdbNetwork(self, "example", + availability_zone_id="use1-az6", + backup_subnet_cidr="10.2.1.0/24", + client_subnet_cidr="10.2.0.0/24", + display_name="odb-my-net", + s3_access="DISABLED", + tags={ + "env": "dev" + }, + zero_etl_access="DISABLED" + ) +``` + +## Argument Reference + +The following arguments are required: + +* `display_name` - (Required) The user-friendly name for the odb network. Changing this will force terraform to create a new resource. +* `availability_zone_id` - (Required) The AZ ID of the AZ where the ODB network is located. Changing this will force terraform to create new resource. +* `client_subnet_cidr` - (Required) The CIDR notation for the network resource. Changing this will force terraform to create new resource. +* `backup_subnet_cidr` - (Required) The CIDR range of the backup subnet for the ODB network. Changing this will force terraform to create new resource. +* `s3_access` - (Required) Specifies the configuration for Amazon S3 access from the ODB network. +* `zero_etl_access` - (Required) Specifies the configuration for Zero-ETL access from the ODB network. + +The following arguments are optional: + +* `custom_domain_name` - (Optional) The name of the custom domain that the network is located. Custom_domain_name and default_dns_prefix both can't be given. Changing this will force terraform to create new resource. +* `availability_zone` - (Optional) The name of the Availability Zone (AZ) where the odb network is located. Changing this will force terraform to create new resource. Make sure availability_zone maps correctly with availability_zone_id. +* `s3_policy_document` - (Optional) Specifies the endpoint policy for Amazon S3 access from the ODB network. +* `default_dns_prefix` - (Optional) The default DNS prefix for the network resource. Changing this will force terraform to create new resource. Changing this will force terraform to create new resource. +* `tags` - (Optional) A map of tags to assign to the exadata infrastructure. If configured with a provider [`default_tags` configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-configuration-block) present, tags with matching keys will overwrite those defined at the provider-level. +* `region` - (Optional) Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the [provider configuration](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#aws-configuration-reference). + +## Attribute Reference + +This resource exports the following attributes in addition to the arguments above: + +* `id` - Unique identifier of the odb network resource. +* `arn` - Amazon Resource Name (ARN) of the odb network resource. +* `oci_dns_forwarding_configs` - The number of storage servers requested for the Exadata infrastructure. +* `peered_cidrs` - The list of CIDR ranges from the peered VPC that are allowed access to the ODB network. Please refer odb network peering documentation. +* `oci_network_anchor_id` - The unique identifier of the OCI network anchor for the ODB network. +* `oci_network_anchor_url` -The URL of the OCI network anchor for the ODB network. +* `oci_resource_anchor_name` - The name of the OCI resource anchor for the ODB network. +* `oci_vcn_id` - The unique identifier Oracle Cloud ID (OCID) of the OCI VCN for the ODB network. +* `oci_vcn_url` - The URL of the OCI VCN for the ODB network. +* `percent_progress` - The amount of progress made on the current operation on the ODB network, expressed as a percentage. +* `managed_services` - The name of the OCI resource anchor for the Exadata infrastructure. +* `status` - The status of the network resource. +* `status_reason` - Additional information about the current status of the ODB network. +* `created_at` - The date and time when the ODB network was created. + +## Timeouts + +[Configuration options](https://developer.hashicorp.com/terraform/language/resources/syntax#operation-timeouts): + +* `create` - (Default `24h`) +* `update` - (Default `24h`) +* `delete` - (Default `24h`) + +## Import + +In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import OpenSearch Ingestion Pipeline using the `id`. 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.odb_network import OdbNetwork +class MyConvertedCode(TerraformStack): + def __init__(self, scope, name): + super().__init__(scope, name) + OdbNetwork.generate_config_for_import(self, "example", "example") +``` + +Using `terraform import`, import Odb Network using the `id`. For example: + +```console +% terraform import aws_odb_network.example example +``` + + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/odb_network_peering_connection.html.markdown b/website/docs/cdktf/python/r/odb_network_peering_connection.html.markdown new file mode 100644 index 000000000000..ede72d98f7e2 --- /dev/null +++ b/website/docs/cdktf/python/r/odb_network_peering_connection.html.markdown @@ -0,0 +1,102 @@ +--- +subcategory: "Oracle Database@AWS" +layout: "AWS: aws_odb_network_peering_connection" +page_title: "AWS: aws_odb_network_peering_connection" +description: |- + Terraform resource for managing oracle database network peering resource in AWS. +--- + + + +# Resource: aws_odb_network_peering_connection + +Terraform resource for managing oracle database network peering resource in AWS. + +You can find out more about Oracle Database@AWS from [User Guide](https://docs.aws.amazon.com/odb/latest/UserGuide/what-is-odb.html). + +## 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 TerraformStack +# +# Provider bindings are generated by running `cdktf get`. +# See https://cdk.tf/provider-generation for more details. +# +from imports.aws.odb_network_peering_connection import OdbNetworkPeeringConnection +class MyConvertedCode(TerraformStack): + def __init__(self, scope, name): + super().__init__(scope, name) + OdbNetworkPeeringConnection(self, "example", + display_name="example", + odb_network_id="my-odb-network-id", + peer_network_id="my-vpc-id", + tags={ + "env": "dev" + } + ) +``` + +## Argument Reference + +The following arguments are required: + +* `odb_network_id` - (Required) The unique identifier of the ODB network that initiates the peering connection. A sample ID is `odbpcx-abcdefgh12345678`. Changing this will force Terraform to create a new resource. +* `peer_network_id` - (Required) The unique identifier of the ODB peering connection. Changing this will force Terraform to create a new resource. +* `display_name` - (Required) Display name of the ODB network peering connection. Changing this will force Terraform to create a new resource. + +The following arguments are optional: + +* `region` - (Optional) Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the [provider configuration](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#aws-configuration-reference). +* `tags` - (Optional) A map of tags to assign to the resource. If configured with a provider [`default_tags` configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-configuration-block) present, tags with matching keys will overwrite those defined at the provider-level. + +## Attribute Reference + +This data source exports the following attributes in addition to the arguments above: + +* `status` - Status of the ODB network peering connection. +* `status_reason` - The reason for the current status of the ODB peering connection. +* `odb_network_arn` - ARN of the ODB network peering connection. +* `peer_network_arn` - ARN of the peer network peering connection. +* `odb_peering_connection_type` - Type of the ODB peering connection. +* `created_at` - Created time of the ODB network peering connection. +* `percent_progress` - Progress of the ODB network peering connection. +* `tags_all` - A map of tags assigned to the resource, including inherited tags. + +## Timeouts + +[Configuration options](https://developer.hashicorp.com/terraform/language/resources/syntax#operation-timeouts): + +* `create` - (Default `24h`) +* `update` - (Default `24h`) +* `delete` - (Default `24h`) + +## Import + +In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import OpenSearch Ingestion Pipeline using the `id`. 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.odb_network_peering_connection import OdbNetworkPeeringConnection +class MyConvertedCode(TerraformStack): + def __init__(self, scope, name): + super().__init__(scope, name) + OdbNetworkPeeringConnection.generate_config_for_import(self, "example", "example") +``` + +Using `terraform import`, import odb network peering using the `id`. For example: + +```console +% terraform import aws_odb_network_peering_connection.example example +``` + + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/organizations_account.html.markdown b/website/docs/cdktf/python/r/organizations_account.html.markdown index 410a10aff0ec..972346da3f0e 100644 --- a/website/docs/cdktf/python/r/organizations_account.html.markdown +++ b/website/docs/cdktf/python/r/organizations_account.html.markdown @@ -72,6 +72,31 @@ This resource exports the following attributes in addition to the arguments abov ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_organizations_account.example + identity = { + id = "111111111111" + } +} + +resource "aws_organizations_account" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `id` (String) ID of the AWS Organizations account. + +#### Optional + +* `account_id` (String) AWS Account where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import the AWS member account using the `account_id`. For example: ```python @@ -86,19 +111,19 @@ from imports.aws.organizations_account import OrganizationsAccount class MyConvertedCode(TerraformStack): def __init__(self, scope, name): super().__init__(scope, name) - OrganizationsAccount.generate_config_for_import(self, "myAccount", "111111111111") + OrganizationsAccount.generate_config_for_import(self, "example", "111111111111") ``` Using `terraform import`, import the AWS member account using the `account_id`. For example: ```console -% terraform import aws_organizations_account.my_account 111111111111 +% terraform import aws_organizations_account.example 111111111111 ``` To import accounts that have set iam_user_access_to_billing, use the following: ```console -% terraform import aws_organizations_account.my_account 111111111111_ALLOW +% terraform import aws_organizations_account.example 111111111111_ALLOW ``` Certain resource arguments, like `role_name`, do not have an Organizations API method for reading the information after account creation. If the argument is set in the Terraform configuration on an imported resource, Terraform will always show a difference. To workaround this behavior, either omit the argument from the Terraform configuration or use [`ignore_changes`](https://www.terraform.io/docs/configuration/meta-arguments/lifecycle.html#ignore_changes) to hide the difference. For example: @@ -126,4 +151,4 @@ class MyConvertedCode(TerraformStack): ) ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/organizations_delegated_administrator.html.markdown b/website/docs/cdktf/python/r/organizations_delegated_administrator.html.markdown index 5cd26e8a29b1..dc47e748931a 100644 --- a/website/docs/cdktf/python/r/organizations_delegated_administrator.html.markdown +++ b/website/docs/cdktf/python/r/organizations_delegated_administrator.html.markdown @@ -54,6 +54,33 @@ This resource exports the following attributes in addition to the arguments abov ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_organizations_delegated_administrator.example + identity = { + service_principal = "config.amazonaws.com" + delegated_account_id = "123456789012" + } +} + +resource "aws_organizations_delegated_administrator" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `service_principal` (String) Service principal for the AWS service. +* `delegated_account_id` (String) Account ID to be designated as a delegated administrator. + +#### Optional + +* `account_id` (String) AWS Account where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import `aws_organizations_delegated_administrator` using the account ID and its service principal. For example: ```python @@ -77,4 +104,4 @@ Using `terraform import`, import `aws_organizations_delegated_administrator` usi % terraform import aws_organizations_delegated_administrator.example 123456789012/config.amazonaws.com ``` - \ 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 6aa2a149bb95..2ae340b47cae 100644 --- a/website/docs/cdktf/python/r/organizations_organization.html.markdown +++ b/website/docs/cdktf/python/r/organizations_organization.html.markdown @@ -77,6 +77,31 @@ This resource exports the following attributes in addition to the arguments abov ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_organizations_organization.example + identity = { + id = "o-1234567" + } +} + +resource "aws_organizations_organization" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `id` (String) ID of the AWS Organizations organization. + +#### Optional + +* `account_id` (String) AWS Account where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import the AWS organization using the `id`. For example: ```python @@ -91,13 +116,13 @@ from imports.aws.organizations_organization import OrganizationsOrganization class MyConvertedCode(TerraformStack): def __init__(self, scope, name): super().__init__(scope, name) - OrganizationsOrganization.generate_config_for_import(self, "myOrg", "o-1234567") + OrganizationsOrganization.generate_config_for_import(self, "example", "o-1234567") ``` Using `terraform import`, import the AWS organization using the `id`. For example: ```console -% terraform import aws_organizations_organization.my_org o-1234567 +% terraform import aws_organizations_organization.example o-1234567 ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/organizations_organizational_unit.html.markdown b/website/docs/cdktf/python/r/organizations_organizational_unit.html.markdown index 63ef7dd8781c..4dfe33a0bfae 100644 --- a/website/docs/cdktf/python/r/organizations_organizational_unit.html.markdown +++ b/website/docs/cdktf/python/r/organizations_organizational_unit.html.markdown @@ -56,6 +56,31 @@ This resource exports the following attributes in addition to the arguments abov ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_organizations_organizational_unit.example + identity = { + id = "ou-1234567" + } +} + +resource "aws_organizations_organizational_unit" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `id` (String) ID of the organizational unit. + +#### Optional + +* `account_id` (String) AWS Account where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import AWS Organizations Organizational Units using the `id`. For example: ```python @@ -79,4 +104,4 @@ Using `terraform import`, import AWS Organizations Organizational Units using th % terraform import aws_organizations_organizational_unit.example ou-1234567 ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/organizations_policy_attachment.html.markdown b/website/docs/cdktf/python/r/organizations_policy_attachment.html.markdown index d837d1d71cb1..90ea8de4d011 100644 --- a/website/docs/cdktf/python/r/organizations_policy_attachment.html.markdown +++ b/website/docs/cdktf/python/r/organizations_policy_attachment.html.markdown @@ -89,6 +89,33 @@ This resource exports no additional attributes. ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_organizations_policy_attachment.example + identity = { + policy_id = "p-12345678" + target_id = "123456789012" + } +} + +resource "aws_organizations_policy_attachment" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `policy_id` (String) Organizations policy ID. +* `target_id` (String) Organizations target ID (account, OU, or root). + +#### Optional + +* `account_id` (String) AWS Account where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import `aws_organizations_policy_attachment` using the target ID and policy ID. For example: With an account target: @@ -105,7 +132,7 @@ from imports.aws.organizations_policy_attachment import OrganizationsPolicyAttac class MyConvertedCode(TerraformStack): def __init__(self, scope, name): super().__init__(scope, name) - OrganizationsPolicyAttachment.generate_config_for_import(self, "account", "123456789012:p-12345678") + OrganizationsPolicyAttachment.generate_config_for_import(self, "example", "123456789012:p-12345678") ``` Using `terraform import`, import `aws_organizations_policy_attachment` using the target ID and policy ID. For example: @@ -113,7 +140,7 @@ Using `terraform import`, import `aws_organizations_policy_attachment` using the With an account target: ```console -% terraform import aws_organizations_policy_attachment.account 123456789012:p-12345678 +% terraform import aws_organizations_policy_attachment.example 123456789012:p-12345678 ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/rds_global_cluster.html.markdown b/website/docs/cdktf/python/r/rds_global_cluster.html.markdown index 8478d14fc0d2..c38788d3e725 100644 --- a/website/docs/cdktf/python/r/rds_global_cluster.html.markdown +++ b/website/docs/cdktf/python/r/rds_global_cluster.html.markdown @@ -250,20 +250,25 @@ class MyConvertedCode(TerraformStack): ## Argument Reference -This resource supports the following arguments: +The following arguments are required: -* `region` - (Optional) Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the [provider configuration](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#aws-configuration-reference). * `global_cluster_identifier` - (Required, Forces new resources) Global cluster identifier. + +The following arguments are optional: + * `database_name` - (Optional, Forces new resources) Name for an automatically created database on cluster creation. Terraform will only perform drift detection if a configuration value is provided. * `deletion_protection` - (Optional) If the Global Cluster should have deletion protection enabled. The database can't be deleted when this value is set to `true`. The default is `false`. * `engine` - (Optional, Forces new resources) Name of the database engine to be used for this DB cluster. Terraform will only perform drift detection if a configuration value is provided. Valid values: `aurora`, `aurora-mysql`, `aurora-postgresql`. Defaults to `aurora`. Conflicts with `source_db_cluster_identifier`. * `engine_lifecycle_support` - (Optional) The life cycle type for this DB instance. This setting applies only to Aurora PostgreSQL-based global databases. Valid values are `open-source-rds-extended-support`, `open-source-rds-extended-support-disabled`. Default value is `open-source-rds-extended-support`. [Using Amazon RDS Extended Support]: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/extended-support.html * `engine_version` - (Optional) Engine version of the Aurora global database. The `engine`, `engine_version`, and `instance_class` (on the `aws_rds_cluster_instance`) must together support global databases. See [Using Amazon Aurora global databases](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-global-database.html) for more information. By upgrading the engine version, Terraform will upgrade cluster members. **NOTE:** To avoid an `inconsistent final plan` error while upgrading, use the `lifecycle` `ignore_changes` for `engine_version` meta argument on the associated `aws_rds_cluster` resource as shown above in [Upgrading Engine Versions](#upgrading-engine-versions) example. * `force_destroy` - (Optional) Enable to remove DB Cluster members from Global Cluster on destroy. Required with `source_db_cluster_identifier`. +* `region` - (Optional) Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the [provider configuration](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#aws-configuration-reference). * `source_db_cluster_identifier` - (Optional) Amazon Resource Name (ARN) to use as the primary DB Cluster of the Global Cluster on creation. Terraform cannot perform drift detection of this value. **NOTE:** After initial creation, this argument can be removed and replaced with `engine` and `engine_version`. This allows upgrading the engine version of the Global Cluster. * `storage_encrypted` - (Optional, Forces new resources) Specifies whether the DB cluster is encrypted. The default is `false` unless `source_db_cluster_identifier` is specified and encrypted. Terraform will only perform drift detection if a configuration value is provided. * `tags` - (Optional) A map of tags to assign to the DB cluster. If configured with a provider [`default_tags` configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-configuration-block) present, tags with matching keys will overwrite those defined at the provider-level. +~> When both `source_db_cluster_identifier` and `engine`/`engine_version` are set, all engine related values will be ignored during creation. The global cluster will inherit the `engine` and `engine_version` values from the source cluster. After the first apply, any differences between the inherited and configured values will trigger an in-place update. + ## Attribute Reference This resource exports the following attributes in addition to the arguments above: @@ -335,4 +340,4 @@ class MyConvertedCode(TerraformStack): ) ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/route.html.markdown b/website/docs/cdktf/python/r/route.html.markdown index 5ec8e2a985c0..6168fe02f824 100644 --- a/website/docs/cdktf/python/r/route.html.markdown +++ b/website/docs/cdktf/python/r/route.html.markdown @@ -147,17 +147,17 @@ resource "aws_route" "example" { #### Required -- `route_table_id` - (String) ID of the route table. +* `route_table_id` - (String) ID of the route table. #### Optional ~> Exactly one of of `destination_cidr_block`, `destination_ipv6_cidr_block`, or `destination_prefix_list_id` is required. -- `account_id` (String) AWS Account where this resource is managed. -- `destination_cidr_block` - (String) Destination IPv4 CIDR block. -- `destination_ipv6_cidr_block` - (String) Destination IPv6 CIDR block. -- `destination_prefix_list_id` - (String) Destination IPv6 CIDR block. -- `region` (String) Region where this resource is managed. +* `account_id` (String) AWS Account where this resource is managed. +* `destination_cidr_block` - (String) Destination IPv4 CIDR block. +* `destination_ipv6_cidr_block` - (String) Destination IPv6 CIDR block. +* `destination_prefix_list_id` - (String) Destination IPv6 CIDR block. +* `region` (String) Region where this resource is managed. In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import individual routes using `ROUTETABLEID_DESTINATION`. Import [local routes](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Route_Tables.html#RouteTables) using the VPC's IPv4 or IPv6 CIDR blocks. For example: @@ -232,4 +232,4 @@ Import a route in route table `rtb-656C65616E6F72` with a managed prefix list de % terraform import aws_route.my_route rtb-656C65616E6F72_pl-0570a1d2d725c16be ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/route53_record.html.markdown b/website/docs/cdktf/python/r/route53_record.html.markdown index 94b456031bc4..94bc908f4995 100644 --- a/website/docs/cdktf/python/r/route53_record.html.markdown +++ b/website/docs/cdktf/python/r/route53_record.html.markdown @@ -312,6 +312,36 @@ This resource exports the following attributes in addition to the arguments abov ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_route53_record.example + identity = { + zone_id = "Z4KAPRWWNC7JR" + name = "dev.example.com" + type = "NS" + } +} + +resource "aws_route53_record" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `zone_id` (String) Hosted zone ID for the record. +* `name` (String) Name of the record. +* `type` (String) Record type. + +#### Optional + +* `account_id` (String) AWS Account where this resource is managed. +* `set_identifier` (String) Set identifier for the record. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import Route53 Records using the ID of the record, record name, record type, and set identifier. For example: Using the ID of the record, which is the zone identifier, record name, and record type, separated by underscores (`_`): @@ -328,7 +358,7 @@ from imports.aws.route53_record import Route53Record class MyConvertedCode(TerraformStack): def __init__(self, scope, name): super().__init__(scope, name) - Route53Record.generate_config_for_import(self, "myrecord", "Z4KAPRWWNC7JR_dev.example.com_NS") + Route53Record.generate_config_for_import(self, "example", "Z4KAPRWWNC7JR_dev.example.com_NS") ``` If the record also contains a set identifier, append it: @@ -345,7 +375,7 @@ from imports.aws.route53_record import Route53Record class MyConvertedCode(TerraformStack): def __init__(self, scope, name): super().__init__(scope, name) - Route53Record.generate_config_for_import(self, "myrecord", "Z4KAPRWWNC7JR_dev.example.com_NS_dev") + Route53Record.generate_config_for_import(self, "example", "Z4KAPRWWNC7JR_dev.example.com_NS_dev") ``` If the record name is the empty string, it can be omitted: @@ -362,7 +392,7 @@ from imports.aws.route53_record import Route53Record class MyConvertedCode(TerraformStack): def __init__(self, scope, name): super().__init__(scope, name) - Route53Record.generate_config_for_import(self, "myrecord", "Z4KAPRWWNC7JR__NS") + Route53Record.generate_config_for_import(self, "example", "Z4KAPRWWNC7JR__NS") ``` **Using `terraform import` to import** Route53 Records using the ID of the record, record name, record type, and set identifier. For example: @@ -370,13 +400,13 @@ class MyConvertedCode(TerraformStack): Using the ID of the record, which is the zone identifier, record name, and record type, separated by underscores (`_`): ```console -% terraform import aws_route53_record.myrecord Z4KAPRWWNC7JR_dev_NS +% terraform import aws_route53_record.example Z4KAPRWWNC7JR_dev_NS ``` If the record also contains a set identifier, append it: ```console -% terraform import aws_route53_record.myrecord Z4KAPRWWNC7JR_dev_NS_dev +% terraform import aws_route53_record.example Z4KAPRWWNC7JR_dev_NS_dev ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/route53_resolver_rule.html.markdown b/website/docs/cdktf/python/r/route53_resolver_rule.html.markdown index 2773b8ce6c43..9f5808e53c69 100644 --- a/website/docs/cdktf/python/r/route53_resolver_rule.html.markdown +++ b/website/docs/cdktf/python/r/route53_resolver_rule.html.markdown @@ -149,8 +149,8 @@ resource "aws_route53_resolver_rule" "example" { #### Optional -- `account_id` (String) AWS Account where this resource is managed. -- `region` (String) Region where this resource is managed. +* `account_id` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import Route53 Resolver rules using the `id`. For example: @@ -175,4 +175,4 @@ Using `terraform import`, import Route53 Resolver rules using the `id`. For exam % terraform import aws_route53_resolver_rule.example rslvr-rr-0123456789abcdef0 ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/route53_resolver_rule_association.html.markdown b/website/docs/cdktf/python/r/route53_resolver_rule_association.html.markdown index 23034e692b0f..3b84d4e27532 100644 --- a/website/docs/cdktf/python/r/route53_resolver_rule_association.html.markdown +++ b/website/docs/cdktf/python/r/route53_resolver_rule_association.html.markdown @@ -72,8 +72,8 @@ resource "aws_route53_resolver_rule_association" "example" { #### Optional -- `account_id` (String) AWS Account where this resource is managed. -- `region` (String) Region where this resource is managed. +* `account_id` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import Route53 Resolver rule associations using the `id`. For example: @@ -98,4 +98,4 @@ Using `terraform import`, import Route53 Resolver rule associations using the `i % terraform import aws_route53_resolver_rule_association.example rslvr-rrassoc-97242eaf88example ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/route_table.html.markdown b/website/docs/cdktf/python/r/route_table.html.markdown index a45ebb7325eb..c922d84dfd52 100644 --- a/website/docs/cdktf/python/r/route_table.html.markdown +++ b/website/docs/cdktf/python/r/route_table.html.markdown @@ -246,8 +246,8 @@ resource "aws_route_table" "example" { #### Optional -- `account_id` (String) AWS Account where this resource is managed. -- `region` (String) Region where this resource is managed. +* `account_id` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import Route Tables using the route table `id`. For example: @@ -272,4 +272,4 @@ Using `terraform import`, import Route Tables using the route table `id`. For ex % terraform import aws_route_table.public_rt rtb-4e616f6d69 ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/s3_bucket.html.markdown b/website/docs/cdktf/python/r/s3_bucket.html.markdown index 97ce198af4df..4a9e22de71ed 100644 --- a/website/docs/cdktf/python/r/s3_bucket.html.markdown +++ b/website/docs/cdktf/python/r/s3_bucket.html.markdown @@ -337,6 +337,32 @@ This resource exports the following attributes in addition to the arguments abov ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_s3_bucket.example + identity = { + bucket = "bucket-name" + } +} + +resource "aws_s3_bucket" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `bucket` (String) Name of the S3 bucket. + +#### Optional + +* `account_id` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import S3 bucket using the `bucket`. For example: ```python @@ -351,13 +377,13 @@ from imports.aws.s3_bucket import S3Bucket class MyConvertedCode(TerraformStack): def __init__(self, scope, name): super().__init__(scope, name) - S3Bucket.generate_config_for_import(self, "bucket", "bucket-name") + S3Bucket.generate_config_for_import(self, "example", "bucket-name") ``` Using `terraform import`, import S3 bucket using the `bucket`. For example: ```console -% terraform import aws_s3_bucket.bucket bucket-name +% terraform import aws_s3_bucket.example bucket-name ``` - \ No newline at end of file + \ 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 acd82afd964a..ef8176357d52 100644 --- a/website/docs/cdktf/python/r/s3_bucket_acl.html.markdown +++ b/website/docs/cdktf/python/r/s3_bucket_acl.html.markdown @@ -208,6 +208,34 @@ This resource exports the following attributes in addition to the arguments abov ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_s3_bucket_acl.example + identity = { + bucket = "bucket-name" + } +} + +resource "aws_s3_bucket_acl" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `bucket` (String) S3 bucket name. + +#### Optional + +* `account_id` (String) AWS Account where this resource is managed. +* `acl` (String) Canned ACL to apply to the bucket. +* `expected_bucket_owner` (String) Account ID of the expected bucket owner. +* `region` (String) Region where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import S3 bucket ACL using `bucket`, `expected_bucket_owner`, and/or `acl`, depending on your situation. For example: If the owner (account ID) of the source bucket is the _same_ account used to configure the Terraform AWS Provider, and the source bucket is **not configured** with a @@ -310,4 +338,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_cors_configuration.html.markdown b/website/docs/cdktf/python/r/s3_bucket_cors_configuration.html.markdown index 58d91af634fe..083620ffaae3 100644 --- a/website/docs/cdktf/python/r/s3_bucket_cors_configuration.html.markdown +++ b/website/docs/cdktf/python/r/s3_bucket_cors_configuration.html.markdown @@ -80,6 +80,33 @@ This resource exports the following attributes in addition to the arguments abov ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_s3_bucket_cors_configuration.example + identity = { + bucket = "bucket-name" + } +} + +resource "aws_s3_bucket_cors_configuration" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `bucket` (String) S3 bucket name. + +#### Optional + +* `account_id` (String) AWS Account where this resource is managed. +* `expected_bucket_owner` (String) Account ID of the expected bucket owner. +* `region` (String) Region where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import S3 bucket CORS configuration using the `bucket` or using 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`: @@ -130,4 +157,4 @@ If the owner (account ID) of the source bucket differs from the account used to % terraform import aws_s3_bucket_cors_configuration.example bucket-name,123456789012 ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/s3_bucket_logging.html.markdown b/website/docs/cdktf/python/r/s3_bucket_logging.html.markdown index 602752399c3a..ee88d5becd91 100644 --- a/website/docs/cdktf/python/r/s3_bucket_logging.html.markdown +++ b/website/docs/cdktf/python/r/s3_bucket_logging.html.markdown @@ -175,6 +175,33 @@ This resource exports the following attributes in addition to the arguments abov ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_s3_bucket_logging.example + identity = { + bucket = "bucket-name" + } +} + +resource "aws_s3_bucket_logging" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `bucket` (String) S3 bucket name. + +#### Optional + +* `account_id` (String) AWS Account where this resource is managed. +* `expected_bucket_owner` (String) Account ID of the expected bucket owner. +* `region` (String) Region where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import S3 bucket logging using the `bucket` or using 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`: @@ -225,4 +252,4 @@ If the owner (account ID) of the source bucket differs from the account used to % terraform import aws_s3_bucket_logging.example bucket-name,123456789012 ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/s3_bucket_object.html.markdown b/website/docs/cdktf/python/r/s3_bucket_object.html.markdown index 9fca9e8de640..f84194ee53dd 100644 --- a/website/docs/cdktf/python/r/s3_bucket_object.html.markdown +++ b/website/docs/cdktf/python/r/s3_bucket_object.html.markdown @@ -239,6 +239,34 @@ This resource exports the following attributes in addition to the arguments abov ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_s3_bucket_object.example + identity = { + bucket = "some-bucket-name" + key = "some/key.txt" + } +} + +resource "aws_s3_bucket_object" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `bucket` (String) S3 bucket name. +* `key` (String) Object key. + +#### Optional + +* `account_id` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import objects using the `id` or S3 URL. For example: Import using the `id`, which is the bucket name and the key together: @@ -289,4 +317,4 @@ Import using S3 URL syntax: % terraform import aws_s3_bucket_object.example s3://some-bucket-name/some/key.txt ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/s3_bucket_policy.html.markdown b/website/docs/cdktf/python/r/s3_bucket_policy.html.markdown index e2b059fc1664..3904535cc0ba 100644 --- a/website/docs/cdktf/python/r/s3_bucket_policy.html.markdown +++ b/website/docs/cdktf/python/r/s3_bucket_policy.html.markdown @@ -71,6 +71,32 @@ This resource exports no additional attributes. ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_s3_bucket_policy.example + identity = { + bucket = "my-tf-test-bucket" + } +} + +resource "aws_s3_bucket_policy" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `bucket` (String) Name of the S3 bucket. + +#### Optional + +* `account_id` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import S3 bucket policies using the bucket name. For example: ```python @@ -85,13 +111,13 @@ from imports.aws.s3_bucket_policy import S3BucketPolicy class MyConvertedCode(TerraformStack): def __init__(self, scope, name): super().__init__(scope, name) - S3BucketPolicy.generate_config_for_import(self, "allowAccessFromAnotherAccount", "my-tf-test-bucket") + S3BucketPolicy.generate_config_for_import(self, "example", "my-tf-test-bucket") ``` Using `terraform import`, import S3 bucket policies using the bucket name. For example: ```console -% terraform import aws_s3_bucket_policy.allow_access_from_another_account my-tf-test-bucket +% terraform import aws_s3_bucket_policy.example my-tf-test-bucket ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/s3_bucket_server_side_encryption_configuration.html.markdown b/website/docs/cdktf/python/r/s3_bucket_server_side_encryption_configuration.html.markdown index 713cd8909197..f301875254fb 100644 --- a/website/docs/cdktf/python/r/s3_bucket_server_side_encryption_configuration.html.markdown +++ b/website/docs/cdktf/python/r/s3_bucket_server_side_encryption_configuration.html.markdown @@ -80,6 +80,33 @@ This resource exports the following attributes in addition to the arguments abov ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_s3_bucket_server_side_encryption_configuration.example + identity = { + bucket = "bucket-name" + } +} + +resource "aws_s3_bucket_server_side_encryption_configuration" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `bucket` (String) S3 bucket name. + +#### Optional + +* `account_id` (String) AWS Account where this resource is managed. +* `expected_bucket_owner` (String) Account ID of the expected bucket owner. +* `region` (String) Region where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import S3 bucket server-side encryption configuration using the `bucket` or using 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`: @@ -130,4 +157,4 @@ If the owner (account ID) of the source bucket differs from the account used to % terraform import aws_s3_bucket_server_side_encryption_configuration.example bucket-name,123456789012 ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/s3_bucket_versioning.html.markdown b/website/docs/cdktf/python/r/s3_bucket_versioning.html.markdown index 72e69465f540..b00afbb5896f 100644 --- a/website/docs/cdktf/python/r/s3_bucket_versioning.html.markdown +++ b/website/docs/cdktf/python/r/s3_bucket_versioning.html.markdown @@ -158,6 +158,33 @@ This resource exports the following attributes in addition to the arguments abov ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_s3_bucket_versioning.example + identity = { + bucket = "bucket-name" + } +} + +resource "aws_s3_bucket_versioning" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `bucket` (String) S3 bucket name. + +#### Optional + +* `account_id` (String) AWS Account where this resource is managed. +* `expected_bucket_owner` (String) Account ID of the expected bucket owner. +* `region` (String) Region where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import S3 bucket versioning using the `bucket` or using 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`: @@ -208,4 +235,4 @@ If the owner (account ID) of the source bucket differs from the account used to % terraform import aws_s3_bucket_versioning.example bucket-name,123456789012 ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/s3_bucket_website_configuration.html.markdown b/website/docs/cdktf/python/r/s3_bucket_website_configuration.html.markdown index 903a440417d6..5be500c491f2 100644 --- a/website/docs/cdktf/python/r/s3_bucket_website_configuration.html.markdown +++ b/website/docs/cdktf/python/r/s3_bucket_website_configuration.html.markdown @@ -145,6 +145,33 @@ This resource exports the following attributes in addition to the arguments abov ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_s3_bucket_website_configuration.example + identity = { + bucket = "bucket-name" + } +} + +resource "aws_s3_bucket_website_configuration" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `bucket` (String) S3 bucket name. + +#### Optional + +* `account_id` (String) AWS Account where this resource is managed. +* `expected_bucket_owner` (String) Account ID of the expected bucket owner. +* `region` (String) Region where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import S3 bucket website configuration using the `bucket` or using 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`: @@ -195,4 +222,4 @@ If the owner (account ID) of the source bucket differs from the account used to % terraform import aws_s3_bucket_website_configuration.example bucket-name,123456789012 ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/s3_object.html.markdown b/website/docs/cdktf/python/r/s3_object.html.markdown index a2c3f4e7b700..f6b59ea7ed35 100644 --- a/website/docs/cdktf/python/r/s3_object.html.markdown +++ b/website/docs/cdktf/python/r/s3_object.html.markdown @@ -286,6 +286,34 @@ This resource exports the following attributes in addition to the arguments abov ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_s3_object.example + identity = { + bucket = "some-bucket-name" + key = "some/key.txt" + } +} + +resource "aws_s3_object" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `bucket` (String) S3 bucket name. +* `key` (String) Object key. + +#### Optional + +* `account_id` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import objects using the `id` or S3 URL. For example: Import using the `id`, which is the bucket name and the key together: @@ -336,4 +364,4 @@ Import using S3 URL syntax: % terraform import aws_s3_object.example s3://some-bucket-name/some/key.txt ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/sagemaker_user_profile.html.markdown b/website/docs/cdktf/python/r/sagemaker_user_profile.html.markdown index 1626a33a7543..e199e7066b47 100644 --- a/website/docs/cdktf/python/r/sagemaker_user_profile.html.markdown +++ b/website/docs/cdktf/python/r/sagemaker_user_profile.html.markdown @@ -243,6 +243,34 @@ This resource exports the following attributes in addition to the arguments abov ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_sagemaker_user_profile.example + identity = { + domain_id = "domain-id" + user_profile_name = "profile-name" + } +} + +resource "aws_sagemaker_user_profile" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `domain_id` (String) SageMaker domain ID. +* `user_profile_name` (String) Name of the user profile. + +#### Optional + +* `account_id` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import SageMaker AI User Profiles using the `arn`. For example: ```python @@ -257,13 +285,13 @@ from imports.aws.sagemaker_user_profile import SagemakerUserProfile class MyConvertedCode(TerraformStack): def __init__(self, scope, name): super().__init__(scope, name) - SagemakerUserProfile.generate_config_for_import(self, "testUserProfile", "arn:aws:sagemaker:us-west-2:123456789012:user-profile/domain-id/profile-name") + SagemakerUserProfile.generate_config_for_import(self, "example", "arn:aws:sagemaker:us-west-2:123456789012:user-profile/domain-id/profile-name") ``` Using `terraform import`, import SageMaker AI User Profiles using the `arn`. For example: ```console -% terraform import aws_sagemaker_user_profile.test_user_profile arn:aws:sagemaker:us-west-2:123456789012:user-profile/domain-id/profile-name +% terraform import aws_sagemaker_user_profile.example arn:aws:sagemaker:us-west-2:123456789012:user-profile/domain-id/profile-name ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/secretsmanager_secret_version.html.markdown b/website/docs/cdktf/python/r/secretsmanager_secret_version.html.markdown index b8a7830ee648..3496e4ea2a66 100644 --- a/website/docs/cdktf/python/r/secretsmanager_secret_version.html.markdown +++ b/website/docs/cdktf/python/r/secretsmanager_secret_version.html.markdown @@ -138,8 +138,8 @@ resource "aws_secretsmanager_secret_version" "example" { #### Optional -- `account_id` (String) AWS Account where this resource is managed. -- `region` (String) Region where this resource is managed. +* `account_id` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import `aws_secretsmanager_secret_version` using the secret ID and version ID. For example: @@ -164,4 +164,4 @@ Using `terraform import`, import `aws_secretsmanager_secret_version` using the s % terraform import aws_secretsmanager_secret_version.example 'arn:aws:secretsmanager:us-east-1:123456789012:secret:example-123456|xxxxx-xxxxxxx-xxxxxxx-xxxxx' ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/security_group.html.markdown b/website/docs/cdktf/python/r/security_group.html.markdown index 3185ca257f8c..a7cd8dfdd592 100644 --- a/website/docs/cdktf/python/r/security_group.html.markdown +++ b/website/docs/cdktf/python/r/security_group.html.markdown @@ -381,6 +381,32 @@ This resource exports the following attributes in addition to the arguments abov ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_security_group.example + identity = { + id = "sg-903004f8" + } +} + +resource "aws_security_group" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `id` (String) ID of the security group. + +#### Optional + +* `account_id` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import Security Groups using the security group `id`. For example: ```python @@ -395,13 +421,13 @@ from imports.aws.security_group import SecurityGroup class MyConvertedCode(TerraformStack): def __init__(self, scope, name): super().__init__(scope, name) - SecurityGroup.generate_config_for_import(self, "elbSg", "sg-903004f8") + SecurityGroup.generate_config_for_import(self, "example", "sg-903004f8") ``` Using `terraform import`, import Security Groups using the security group `id`. For example: ```console -% terraform import aws_security_group.elb_sg sg-903004f8 +% terraform import aws_security_group.example sg-903004f8 ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/sfn_state_machine.html.markdown b/website/docs/cdktf/python/r/sfn_state_machine.html.markdown index 17ff92d5b5c0..7e6f56af421f 100644 --- a/website/docs/cdktf/python/r/sfn_state_machine.html.markdown +++ b/website/docs/cdktf/python/r/sfn_state_machine.html.markdown @@ -189,6 +189,27 @@ This resource exports the following attributes in addition to the arguments abov ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_sfn_state_machine.example + identity = { + "arn" = "arn:aws:states:eu-west-1:123456789098:stateMachine:bar" + } +} + +resource "aws_sfn_state_machine" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +- `arn` (String) ARN of the state machine. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import State Machines using the `arn`. For example: ```python @@ -212,4 +233,4 @@ Using `terraform import`, import State Machines using the `arn`. For example: % terraform import aws_sfn_state_machine.foo arn:aws:states:eu-west-1:123456789098:stateMachine:bar ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/sqs_queue.html.markdown b/website/docs/cdktf/python/r/sqs_queue.html.markdown index 8de56e2c546a..b706661ae359 100644 --- a/website/docs/cdktf/python/r/sqs_queue.html.markdown +++ b/website/docs/cdktf/python/r/sqs_queue.html.markdown @@ -210,6 +210,32 @@ This resource exports the following attributes in addition to the arguments abov ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_sqs_queue.example + identity = { + url = "https://queue.amazonaws.com/80398EXAMPLE/MyQueue" + } +} + +resource "aws_sqs_queue" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `url` (String) URL of the SQS queue. + +#### Optional + +* `account_id` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import SQS Queues using the queue `url`. For example: ```python @@ -224,13 +250,13 @@ from imports.aws.sqs_queue import SqsQueue class MyConvertedCode(TerraformStack): def __init__(self, scope, name): super().__init__(scope, name) - SqsQueue.generate_config_for_import(self, "publicQueue", "https://queue.amazonaws.com/80398EXAMPLE/MyQueue") + SqsQueue.generate_config_for_import(self, "example", "https://queue.amazonaws.com/80398EXAMPLE/MyQueue") ``` Using `terraform import`, import SQS Queues using the queue `url`. For example: ```console -% terraform import aws_sqs_queue.public_queue https://queue.amazonaws.com/80398EXAMPLE/MyQueue +% terraform import aws_sqs_queue.example https://queue.amazonaws.com/80398EXAMPLE/MyQueue ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/ssm_association.html.markdown b/website/docs/cdktf/python/r/ssm_association.html.markdown index 1c443ed2f59e..aa86f01597d4 100644 --- a/website/docs/cdktf/python/r/ssm_association.html.markdown +++ b/website/docs/cdktf/python/r/ssm_association.html.markdown @@ -303,8 +303,8 @@ resource "aws_ssm_association" "example" { #### Optional -- `account_id` (String) AWS Account where this resource is managed. -- `region` (String) Region where this resource is managed. +* `account_id` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import SSM associations using the `association_id`. For example: @@ -329,4 +329,4 @@ Using `terraform import`, import SSM associations using the `association_id`. Fo % terraform import aws_ssm_association.example 10abcdef-0abc-1234-5678-90abcdef123456 ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/ssm_document.html.markdown b/website/docs/cdktf/python/r/ssm_document.html.markdown index eaa652400358..db46045c9efb 100644 --- a/website/docs/cdktf/python/r/ssm_document.html.markdown +++ b/website/docs/cdktf/python/r/ssm_document.html.markdown @@ -149,8 +149,8 @@ resource "aws_ssm_document" "example" { #### Optional -- `account_id` (String) AWS Account where this resource is managed. -- `region` (String) Region where this resource is managed. +* `account_id` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import SSM Documents using the name. For example: @@ -205,4 +205,4 @@ class MyConvertedCode(TerraformStack): ) ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/ssm_maintenance_window.html.markdown b/website/docs/cdktf/python/r/ssm_maintenance_window.html.markdown index dda8fa2b4d29..5244b20cbe2b 100644 --- a/website/docs/cdktf/python/r/ssm_maintenance_window.html.markdown +++ b/website/docs/cdktf/python/r/ssm_maintenance_window.html.markdown @@ -84,8 +84,8 @@ resource "aws_ssm_maintenance_window" "example" { #### Optional -- `account_id` (String) AWS Account where this resource is managed. -- `region` (String) Region where this resource is managed. +* `account_id` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import SSM Maintenance Windows using the maintenance window `id`. For example: @@ -110,4 +110,4 @@ Using `terraform import`, import SSM Maintenance Windows using the maintenance % terraform import aws_ssm_maintenance_window.example mw-0123456789 ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/ssm_maintenance_window_target.html.markdown b/website/docs/cdktf/python/r/ssm_maintenance_window_target.html.markdown index d1e2e7005830..ab7a7a2cc25c 100644 --- a/website/docs/cdktf/python/r/ssm_maintenance_window_target.html.markdown +++ b/website/docs/cdktf/python/r/ssm_maintenance_window_target.html.markdown @@ -128,8 +128,8 @@ resource "aws_ssm_maintenance_window_target" "example" { #### Optional -- `account_id` (String) AWS Account where this resource is managed. -- `region` (String) Region where this resource is managed. +* `account_id` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import SSM Maintenance Window targets using `WINDOW_ID/WINDOW_TARGET_ID`. For example: @@ -154,4 +154,4 @@ Using `terraform import`, import SSM Maintenance Window targets using `WINDOW_ID % terraform import aws_ssm_maintenance_window_target.example mw-0c50858d01EXAMPLE/23639a0b-ddbc-4bca-9e72-78d96EXAMPLE ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/ssm_maintenance_window_task.html.markdown b/website/docs/cdktf/python/r/ssm_maintenance_window_task.html.markdown index edb5324ee6ba..b2cfdbe3babc 100644 --- a/website/docs/cdktf/python/r/ssm_maintenance_window_task.html.markdown +++ b/website/docs/cdktf/python/r/ssm_maintenance_window_task.html.markdown @@ -276,8 +276,8 @@ resource "aws_ssm_maintenance_window_task" "example" { #### Optional -- `account_id` (String) AWS Account where this resource is managed. -- `region` (String) Region where this resource is managed. +* `account_id` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import AWS Maintenance Window Task using the `window_id` and `window_task_id` separated by `/`. For example: @@ -302,4 +302,4 @@ Using `terraform import`, import AWS Maintenance Window Task using the `window_i % terraform import aws_ssm_maintenance_window_task.example / ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/ssm_parameter.html.markdown b/website/docs/cdktf/python/r/ssm_parameter.html.markdown index e0f4e3bb5743..97f075a52d58 100644 --- a/website/docs/cdktf/python/r/ssm_parameter.html.markdown +++ b/website/docs/cdktf/python/r/ssm_parameter.html.markdown @@ -138,8 +138,8 @@ resource "aws_ssm_parameter" "example" { #### Optional -- `account_id` (String) AWS Account where this resource is managed. -- `region` (String) Region where this resource is managed. +* `account_id` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import SSM Parameters using the parameter store `name`. For example: @@ -164,4 +164,4 @@ Using `terraform import`, import SSM Parameters using the parameter store `name` % terraform import aws_ssm_parameter.example /my_path/my_paramname ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/ssm_patch_baseline.html.markdown b/website/docs/cdktf/python/r/ssm_patch_baseline.html.markdown index 0fc03e9d60ed..e302d6f5c0b2 100644 --- a/website/docs/cdktf/python/r/ssm_patch_baseline.html.markdown +++ b/website/docs/cdktf/python/r/ssm_patch_baseline.html.markdown @@ -244,8 +244,8 @@ resource "aws_ssm_patch_baseline" "example" { #### Optional -- `account_id` (String) AWS Account where this resource is managed. -- `region` (String) Region where this resource is managed. +* `account_id` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import SSM Patch Baselines using their baseline ID. For example: @@ -270,4 +270,4 @@ Using `terraform import`, import SSM Patch Baselines using their baseline ID. Fo % terraform import aws_ssm_patch_baseline.example pb-12345678 ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/subnet.html.markdown b/website/docs/cdktf/python/r/subnet.html.markdown index d6a442c355e5..cfe07f48eba9 100644 --- a/website/docs/cdktf/python/r/subnet.html.markdown +++ b/website/docs/cdktf/python/r/subnet.html.markdown @@ -114,6 +114,32 @@ This resource exports the following attributes in addition to the arguments abov ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_subnet.example + identity = { + id = "subnet-9d4a7b6c" + } +} + +resource "aws_subnet" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `id` (String) ID of the subnet. + +#### Optional + +* `account_id` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import subnets using the subnet `id`. For example: ```python @@ -128,13 +154,13 @@ from imports.aws.subnet import Subnet class MyConvertedCode(TerraformStack): def __init__(self, scope, name): super().__init__(scope, name) - Subnet.generate_config_for_import(self, "publicSubnet", "subnet-9d4a7b6c") + Subnet.generate_config_for_import(self, "example", "subnet-9d4a7b6c") ``` Using `terraform import`, import subnets using the subnet `id`. For example: ```console -% terraform import aws_subnet.public_subnet subnet-9d4a7b6c +% terraform import aws_subnet.example subnet-9d4a7b6c ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/vpc_endpoint.html.markdown b/website/docs/cdktf/python/r/vpc_endpoint.html.markdown index 9a1b68be8c52..ccac71b5800c 100644 --- a/website/docs/cdktf/python/r/vpc_endpoint.html.markdown +++ b/website/docs/cdktf/python/r/vpc_endpoint.html.markdown @@ -327,8 +327,8 @@ resource "aws_vpc_endpoint" "example" { #### Optional -- `account_id` (String) AWS Account where this resource is managed. -- `region` (String) Region where this resource is managed. +* `account_id` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import VPC Endpoints using the VPC endpoint `id`. For example: @@ -353,4 +353,4 @@ Using `terraform import`, import VPC Endpoints using the VPC endpoint `id`. For % terraform import aws_vpc_endpoint.example vpce-3ecf2a57 ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/vpc_security_group_egress_rule.html.markdown b/website/docs/cdktf/python/r/vpc_security_group_egress_rule.html.markdown index 1567f8c915e9..fcd90aaad839 100644 --- a/website/docs/cdktf/python/r/vpc_security_group_egress_rule.html.markdown +++ b/website/docs/cdktf/python/r/vpc_security_group_egress_rule.html.markdown @@ -92,8 +92,8 @@ resource "aws_vpc_security_group_egress_rule" "example" { #### Optional -- `account_id` (String) AWS Account where this resource is managed. -- `region` (String) Region where this resource is managed. +* `account_id` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import security group egress rules using the `security_group_rule_id`. For example: @@ -118,4 +118,4 @@ Using `terraform import`, import security group egress rules using the `security % terraform import aws_vpc_security_group_egress_rule.example sgr-02108b27edd666983 ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/vpc_security_group_ingress_rule.html.markdown b/website/docs/cdktf/python/r/vpc_security_group_ingress_rule.html.markdown index 890351d8099f..b63e29824651 100644 --- a/website/docs/cdktf/python/r/vpc_security_group_ingress_rule.html.markdown +++ b/website/docs/cdktf/python/r/vpc_security_group_ingress_rule.html.markdown @@ -104,8 +104,8 @@ resource "aws_vpc_security_group_ingress_rule" "example" { #### Optional -- `account_id` (String) AWS Account where this resource is managed. -- `region` (String) Region where this resource is managed. +* `account_id` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import security group ingress rules using the `security_group_rule_id`. For example: @@ -130,4 +130,4 @@ Using `terraform import`, import security group ingress rules using the `securit % terraform import aws_vpc_security_group_ingress_rule.example sgr-02108b27edd666983 ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/vpc_security_group_vpc_association.html.markdown b/website/docs/cdktf/python/r/vpc_security_group_vpc_association.html.markdown index 1c81c7fedd61..63f3cbe0c733 100644 --- a/website/docs/cdktf/python/r/vpc_security_group_vpc_association.html.markdown +++ b/website/docs/cdktf/python/r/vpc_security_group_vpc_association.html.markdown @@ -55,6 +55,34 @@ This resource exports the following attributes in addition to the arguments abov ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_vpc_security_group_vpc_association.example + identity = { + vpc_id = "vpc-67890" + security_group_id = "sg-12345" + } +} + +resource "aws_vpc_security_group_vpc_association" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `vpc_id` (String) VPC ID. +* `security_group_id` (String) Security Group ID. + +#### Optional + +* `account_id` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import a Security Group VPC Association using the `security_group_id` and `vpc_id` arguments, separated by a comma (`,`). For example: ```python @@ -78,4 +106,4 @@ Using `terraform import`, import a Security Group VPC Association using the `sec % terraform import aws_vpc_security_group_vpc_association.example sg-12345,vpc-67890 ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/wafv2_web_acl.html.markdown b/website/docs/cdktf/python/r/wafv2_web_acl.html.markdown index 9742497a831e..903071edcf43 100644 --- a/website/docs/cdktf/python/r/wafv2_web_acl.html.markdown +++ b/website/docs/cdktf/python/r/wafv2_web_acl.html.markdown @@ -842,9 +842,18 @@ The `managed_rule_group_configs` block support the following arguments: * `creation_path` - (Required) The path of the account creation endpoint for your application. This is the page on your website that accepts the completed registration form for a new user. This page must accept POST requests. * `enable_regex_in_path` - (Optional) Whether or not to allow the use of regular expressions in the login page path. * `registration_page_path` - (Required) The path of the account registration endpoint for your application. This is the page on your website that presents the registration form to new users. This page must accept GET text/html requests. -* `request_inspection` - (Optional) The criteria for inspecting login requests, used by the ATP rule group to validate credentials usage. See [`request_inspection`](#request_inspection-block) for more details. +* `request_inspection` - (Optional) The criteria for inspecting login requests, used by the ATP rule group to validate credentials usage. See [`request_inspection`](#request_inspection-block-acfp) for more details. * `response_inspection` - (Optional) The criteria for inspecting responses to login requests, used by the ATP rule group to track login failure rates. Note that Response Inspection is available only on web ACLs that protect CloudFront distributions. See [`response_inspection`](#response_inspection-block) for more details. +### `request_inspection` Block (ACFP) + +* `addressFields` (Optional) The names of the fields in the request payload that contain your customer's primary physical address. See [`addressFields`](#address_fields-block) for more details. +* `emailField` (Optional) The name of the field in the request payload that contains your customer's email. See [`emailField`](#email_field-block) for more details. +* `passwordField` (Optional) Details about your login page password field. See [`passwordField`](#password_field-block) for more details. +* `payloadType` (Required) The payload type for your login endpoint, either JSON or form encoded. +* `phoneNumberFields` (Optional) The names of the fields in the request payload that contain your customer's primary phone number. See [`phoneNumberFields`](#phone_number_fields-block) for more details. +* `usernameField` (Optional) Details about your login page username field. See [`usernameField`](#username_field-block) for more details. + ### `aws_managed_rules_anti_ddos_rule_set` Block * `client_side_action_config` - (Required) Configuration for the request handling that's applied by the managed rule group rules `ChallengeAllDuringEvent` and `ChallengeDDoSRequests` during a distributed denial of service (DDoS) attack. See [`client_side_action_config`](#client_side_action_config-block) for more details. @@ -867,11 +876,8 @@ The `managed_rule_group_configs` block support the following arguments: ### `request_inspection` Block -* `address_fields` (Optional) The names of the fields in the request payload that contain your customer's primary physical address. See [`address_fields`](#address_fields-block) for more details. -* `email_field` (Optional) The name of the field in the request payload that contains your customer's email. See [`email_field`](#email_field-block) for more details. * `password_field` (Optional) Details about your login page password field. See [`password_field`](#password_field-block) for more details. * `payload_type` (Required) The payload type for your login endpoint, either JSON or form encoded. -* `phone_number_fields` (Optional) The names of the fields in the request payload that contain your customer's primary phone number. See [`phone_number_fields`](#phone_number_fields-block) for more details. * `username_field` (Optional) Details about your login page username field. See [`username_field`](#username_field-block) for more details. ### `address_fields` Block @@ -915,8 +921,8 @@ The `managed_rule_group_configs` block support the following arguments: ### `json` Block * `identifier` (Required) The identifier for the value to match against in the JSON. -* `success_values` (Required) Strings in the response JSON that indicate a successful login attempt. -* `failure_values` (Required) Strings in the response JSON that indicate a failed login attempt. +* `success_strings` (Required) Strings in the body of the response that indicate a successful login attempt. +* `failure_strings` (Required) Strings in the body of the response that indicate a failed login attempt. ### `status_code` Block @@ -929,7 +935,7 @@ The part of a web request that you want AWS WAF to inspect. Include the single ` The `field_to_match` block supports the following arguments: -~> **Note** Only one of `all_query_arguments`, `body`, `cookies`, `header_order`, `headers`, `ja3_fingerprint`,`ja4_fingerprint`, `json_body`, `method`, `query_string`, `single_header`, `single_query_argument`, `uri_fragment` or `uri_path` can be specified. An empty configuration block `{}` should be used when specifying `all_query_arguments`, `method`, or `query_string` attributes. +~> **Note** Only one of `all_query_arguments`, `body`, `cookies`, `header_order`, `headers`, `ja3_fingerprint`, `json_body`, `method`, `query_string`, `single_header`, `single_query_argument`, `uri_fragment` or `uri_path` can be specified. An empty configuration block `{}` should be used when specifying `all_query_arguments`, `method`, or `query_string` attributes. * `all_query_arguments` - (Optional) Inspect all query arguments. * `body` - (Optional) Inspect the request body, which immediately follows the request headers. See [`body`](#body-block) below for details. @@ -1131,9 +1137,9 @@ The `custom_key` block supports the following arguments: * `forwarded_ip` - (Optional) Use the first IP address in an HTTP header as an aggregate key. See [`forwarded_ip`](#ratelimit-forwarded_ip-block) below for details. * `http_method` - (Optional) Use the request's HTTP method as an aggregate key. See [RateLimit `http_method`](#ratelimit-http_method-block) below for details. * `header` - (Optional) Use the value of a header in the request as an aggregate key. See [RateLimit `header`](#ratelimit-header-block) below for details. -* `ip` - (Optional) Use the request's originating IP address as an aggregate key. See [RateLimit `ip`](#ratelimit-ip-block) below for details. -* `ja3_fingerprint` - (Optional) Use the JA3 fingerprint in the request as an aggregate key. See [RateLimit ja3_fingerprint`](#ratelimit-ja3_fingerprint-block) below for details. -* `ja4_fingerprint` - (Optional) Use the JA3 fingerprint in the request as an aggregate key. See [RateLimit `ja4_fingerprint`](#ratelimit-ja4_fingerprint-block) below for details. +* `ip` - (Optional) Use the request's originating IP address as an aggregate key. See [`RateLimit ip`](#ratelimit-ip-block) below for details. +* `ja3_fingerprint` - (Optional) Use the JA3 fingerprint in the request as an aggregate key. See [`RateLimit ip`](#ratelimit-ja3_fingerprint-block) below for details. +* `ja4_fingerprint` - (Optional) Use the JA3 fingerprint in the request as an aggregate key. See [`RateLimit ip`](#ratelimit-ja4_fingerprint-block) below for details. * `label_namespace` - (Optional) Use the specified label namespace as an aggregate key. See [RateLimit `label_namespace`](#ratelimit-label_namespace-block) below for details. * `query_argument` - (Optional) Use the specified query argument as an aggregate key. See [RateLimit `query_argument`](#ratelimit-query_argument-block) below for details. * `query_string` - (Optional) Use the request's query string as an aggregate key. See [RateLimit `query_string`](#ratelimit-query_string-block) below for details. @@ -1265,4 +1271,4 @@ Using `terraform import`, import WAFv2 Web ACLs using `ID/Name/Scope`. For examp % terraform import aws_wafv2_web_acl.example a1b2c3d4-d5f6-7777-8888-9999aaaabbbbcccc/example/REGIONAL ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/actions/cloudfront_create_invalidation.html.markdown b/website/docs/cdktf/typescript/actions/cloudfront_create_invalidation.html.markdown new file mode 100644 index 000000000000..f30ee7058b0f --- /dev/null +++ b/website/docs/cdktf/typescript/actions/cloudfront_create_invalidation.html.markdown @@ -0,0 +1,148 @@ +--- +subcategory: "CloudFront" +layout: "aws" +page_title: "AWS: aws_cloudfront_create_invalidation" +description: |- + Invalidates CloudFront distribution cache for specified paths. +--- + + + +# Action: aws_cloudfront_create_invalidation + +~> **Note:** `aws_cloudfront_create_invalidation` is in beta. Its interface and behavior may change as the feature evolves, and breaking changes are possible. It is offered as a technical preview without compatibility guarantees until Terraform 1.14 is generally available. + +Invalidates CloudFront distribution cache for specified paths. This action creates an invalidation request and waits for it to complete. + +For information about CloudFront cache invalidation, see the [Amazon CloudFront Developer Guide](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Invalidation.html). For specific information about creating invalidation requests, see the [CreateInvalidation](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CreateInvalidation.html) page in the Amazon CloudFront API Reference. + +~> **Note:** CloudFront invalidation requests can take several minutes to complete. This action will wait for the invalidation to finish before continuing. You can only have a limited number of invalidation requests in progress at any given time. + +## 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 { DataResource, TerraformStack } from "cdktf"; +/* + * Provider bindings are generated by running `cdktf get`. + * See https://cdk.tf/provider-generation for more details. + */ +import { CloudfrontDistribution } from "./.gen/providers/aws/cloudfront-distribution"; +interface MyConfig { + defaultCacheBehavior: any; + enabled: any; + origin: any; + restrictions: any; + viewerCertificate: any; +} +class MyConvertedCode extends TerraformStack { + constructor(scope: Construct, name: string, config: MyConfig) { + super(scope, name); + new CloudfrontDistribution(this, "example", { + defaultCacheBehavior: config.defaultCacheBehavior, + enabled: config.enabled, + origin: config.origin, + restrictions: config.restrictions, + viewerCertificate: config.viewerCertificate, + }); + const terraformDataExample = new DataResource(this, "example_1", { + input: "trigger-invalidation", + lifecycle: { + actionTrigger: [ + { + actions: [awsCloudfrontCreateInvalidation.example], + events: [beforeCreate, beforeUpdate], + }, + ], + }, + }); + /*This allows the Terraform resource name to match the original name. You can remove the call if you don't need them to match.*/ + terraformDataExample.overrideLogicalId("example"); + } +} + +``` + +### Invalidate Specific Paths + +```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); + } +} + +``` + +### With Custom Caller Reference + +```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); + } +} + +``` + +### CI/CD Pipeline Integration + +Use this action in your deployment pipeline to invalidate cache after updating static assets: + +```typescript +// DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug +import { Construct } from "constructs"; +import { DataResource, TerraformStack } from "cdktf"; +class MyConvertedCode extends TerraformStack { + constructor(scope: Construct, name: string) { + super(scope, name); + new DataResource(this, "deploy_complete", { + dependsOn: [assets], + input: deploymentId, + lifecycle: { + actionTrigger: [ + { + actions: [awsCloudfrontCreateInvalidation.postDeploy], + events: [beforeCreate, beforeUpdate], + }, + ], + }, + }); + } +} + +``` + +### Environment-Specific Invalidation + +```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); + } +} + +``` + +## Argument Reference + +This action supports the following arguments: + +* `distributionId` - (Required) ID of the CloudFront distribution to invalidate cache for. Must be a valid CloudFront distribution ID (e.g., E1GHKQ2EXAMPLE). +* `paths` - (Required) List of file paths or patterns to invalidate. Use `/*` to invalidate all files. Supports specific files (`/index.html`), directory wildcards (`/images/*`), or all files (`/*`). Maximum of 3000 paths per invalidation request. Note: The first 1,000 invalidation paths per month are free, additional paths are charged per path. +* `callerReference` - (Optional) Unique identifier for the invalidation request. If not provided, one will be generated automatically. Maximum length of 128 characters. +* `timeout` - (Optional) Timeout in seconds to wait for the invalidation to complete. Defaults to 900 seconds (15 minutes). Must be between 60 and 3600 seconds. Invalidation requests typically take 5-15 minutes to process. + + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/actions/ec2_stop_instance.html.markdown b/website/docs/cdktf/typescript/actions/ec2_stop_instance.html.markdown new file mode 100644 index 000000000000..bc7174d6ea7f --- /dev/null +++ b/website/docs/cdktf/typescript/actions/ec2_stop_instance.html.markdown @@ -0,0 +1,109 @@ +--- +subcategory: "EC2 (Elastic Compute Cloud)" +layout: "aws" +page_title: "AWS: aws_ec2_stop_instance" +description: |- + Stops an EC2 instance. +--- + + + +# Action: aws_ec2_stop_instance + +~> **Note:** `aws_ec2_stop_instance` is in alpha. Its interface and behavior may change as the feature evolves, and breaking changes are possible. It is offered as a technical preview without compatibility guarantees until Terraform 1.14 is generally available. + +Stops an EC2 instance. This action will gracefully stop the instance and wait for it to reach the stopped state. + +For information about Amazon EC2, see the [Amazon EC2 User Guide](https://docs.aws.amazon.com/ec2/latest/userguide/). For specific information about stopping instances, see the [StopInstances](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_StopInstances.html) page in the Amazon EC2 API Reference. + +~> **Note:** This action directly stops EC2 instances which will interrupt running workloads. Ensure proper coordination with your applications before using this action. + +## 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 { Instance } from "./.gen/providers/aws/instance"; +class MyConvertedCode extends TerraformStack { + constructor(scope: Construct, name: string) { + super(scope, name); + new Instance(this, "example", { + ami: Token.asString(amazonLinux.id), + instanceType: "t3.micro", + tags: { + Name: "example-instance", + }, + }); + } +} + +``` + +### Force Stop + +```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); + } +} + +``` + +### Maintenance Window + +```typescript +// DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug +import { Construct } from "constructs"; +import { Token, DataResource, TerraformStack } from "cdktf"; +/* + * Provider bindings are generated by running `cdktf get`. + * See https://cdk.tf/provider-generation for more details. + */ +import { Instance } from "./.gen/providers/aws/instance"; +class MyConvertedCode extends TerraformStack { + constructor(scope: Construct, name: string) { + super(scope, name); + const webServer = new Instance(this, "web_server", { + ami: Token.asString(amazonLinux.id), + instanceType: "t3.micro", + tags: { + Name: "web-server", + }, + }); + new DataResource(this, "maintenance_trigger", { + dependsOn: [webServer], + input: maintenanceWindow.value, + lifecycle: { + actionTrigger: [ + { + actions: [awsEc2StopInstance.maintenance], + events: [beforeCreate, beforeUpdate], + }, + ], + }, + }); + } +} + +``` + +## Argument Reference + +This action supports the following arguments: + +* `instanceId` - (Required) ID of the EC2 instance to stop. Must be a valid EC2 instance ID (e.g., i-1234567890abcdef0). +* `force` - (Optional) Forces the instance to stop. The instance does not have an opportunity to flush file system caches or file system metadata. If you use this option, you must perform file system check and repair procedures. This option is not recommended for Windows instances. Default: `false`. +* `timeout` - (Optional) Timeout in seconds to wait for the instance to stop. Must be between 30 and 3600 seconds. Default: `600`. + + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/actions/lambda_invoke.html.markdown b/website/docs/cdktf/typescript/actions/lambda_invoke.html.markdown new file mode 100644 index 000000000000..764a60115ab9 --- /dev/null +++ b/website/docs/cdktf/typescript/actions/lambda_invoke.html.markdown @@ -0,0 +1,200 @@ +--- +subcategory: "Lambda" +layout: "aws" +page_title: "AWS: aws_lambda_invoke" +description: |- + Invokes an AWS Lambda function with the specified payload. +--- + + + +# Action: aws_lambda_invoke + +~> **Note:** `aws_lambda_invoke` is in beta. Its interface and behavior may change as the feature evolves, and breaking changes are possible. It is offered as a technical preview without compatibility guarantees until Terraform 1.14 is generally available. + +Invokes an AWS Lambda function with the specified payload. This action allows for imperative invocation of Lambda functions with full control over invocation parameters. + +For information about AWS Lambda functions, see the [AWS Lambda Developer Guide](https://docs.aws.amazon.com/lambda/latest/dg/). For specific information about invoking Lambda functions, see the [Invoke](https://docs.aws.amazon.com/lambda/latest/api/API_Invoke.html) page in the AWS Lambda API Reference. + +~> **Note:** Synchronous invocations will wait for the function to complete execution, while asynchronous invocations return immediately after the request is _accepted_. + +## 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 { DataResource, TerraformStack } from "cdktf"; +/* + * Provider bindings are generated by running `cdktf get`. + * See https://cdk.tf/provider-generation for more details. + */ +import { LambdaFunction } from "./.gen/providers/aws/lambda-function"; +interface MyConfig { + functionName: any; + role: any; +} +class MyConvertedCode extends TerraformStack { + constructor(scope: Construct, name: string, config: MyConfig) { + super(scope, name); + new LambdaFunction(this, "example", { + functionName: config.functionName, + role: config.role, + }); + const terraformDataExample = new DataResource(this, "example_1", { + input: "trigger-lambda", + lifecycle: { + actionTrigger: [ + { + actions: [awsLambdaInvoke.example], + events: [beforeCreate, beforeUpdate], + }, + ], + }, + }); + /*This allows the Terraform resource name to match the original name. You can remove the call if you don't need them to match.*/ + terraformDataExample.overrideLogicalId("example"); + } +} + +``` + +### Invoke with Function 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); + } +} + +``` + +### Asynchronous Invocation + +```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); + } +} + +``` + +### Dry Run Validation + +```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); + } +} + +``` + +### With Log Capture + +```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); + } +} + +``` + +### Mobile Application Context + +```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); + } +} + +``` + +### CI/CD Pipeline Integration + +Use this action in your deployment pipeline to trigger post-deployment functions: + +```typescript +// DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug +import { Construct } from "constructs"; +import { DataResource, TerraformStack } from "cdktf"; +class MyConvertedCode extends TerraformStack { + constructor(scope: Construct, name: string) { + super(scope, name); + new DataResource(this, "deploy_complete", { + dependsOn: [api], + input: deploymentId, + lifecycle: { + actionTrigger: [ + { + actions: [awsLambdaInvoke.warmup], + events: [beforeCreate, beforeUpdate], + }, + ], + }, + }); + } +} + +``` + +### Environment-Specific Processing + +```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); + } +} + +``` + +### Complex Payload with Dynamic Content + +```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); + } +} + +``` + +## Argument Reference + +This action supports the following arguments: + +* `clientContext` - (Optional) Up to 3,583 bytes of base64-encoded data about the invoking client to pass to the function in the context object. This is only used for mobile applications and should contain information about the client application and device. +* `functionName` - (Required) Name, ARN, or partial ARN of the Lambda function to invoke. You can specify a function name (e.g., `my-function`), a qualified function name (e.g., `my-function:PROD`), or a partial ARN (e.g., `123456789012:function:my-function`). +* `invocationType` - (Optional) Invocation type. Valid values are `RequestResponse` (default) for synchronous invocation that waits for the function to complete and returns the response, `Event` for asynchronous invocation that returns immediately after the request is accepted, and `DryRun` to validate parameters and verify permissions without actually executing the function. +* `logType` - (Optional) Set to `Tail` to include the execution log in the response. Only applies to synchronous invocations (`RequestResponse` invocation type). Defaults to `None`. When set to `Tail`, the last 4 KB of the execution log is included in the response. +* `payload` - (Required) JSON payload to send to the Lambda function. This should be a valid JSON string that represents the event data for your function. The payload size limit is 6 MB for synchronous invocations and 256 KB for asynchronous invocations. +* `qualifier` - (Optional) Version or alias of the Lambda function to invoke. If not specified, the `$LATEST` version will be invoked. Can be a version number (e.g., `1`) or an alias (e.g., `PROD`). + + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/actions/ses_send_email.html.markdown b/website/docs/cdktf/typescript/actions/ses_send_email.html.markdown new file mode 100644 index 000000000000..a376af8e9872 --- /dev/null +++ b/website/docs/cdktf/typescript/actions/ses_send_email.html.markdown @@ -0,0 +1,168 @@ +--- +subcategory: "SES (Simple Email)" +layout: "aws" +page_title: "AWS: aws_ses_send_email" +description: |- + Sends an email using Amazon SES. +--- + + + +# Action: aws_ses_send_email + +~> **Note:** `aws_ses_send_email` is in beta. Its interface and behavior may change as the feature evolves, and breaking changes are possible. It is offered as a technical preview without compatibility guarantees until Terraform 1.14 is generally available. + +Sends an email using Amazon SES. This action allows for imperative email sending with full control over recipients, content, and formatting. + +For information about Amazon SES, see the [Amazon SES Developer Guide](https://docs.aws.amazon.com/ses/latest/dg/). For specific information about sending emails, see the [SendEmail](https://docs.aws.amazon.com/ses/latest/APIReference/API_SendEmail.html) page in the Amazon SES API Reference. + +~> **Note:** All email addresses used must be verified in Amazon SES or belong to a verified domain. Due to the difficulty in testing, your help is important in discovering and reporting issues. + +## 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 { DataResource, TerraformStack } from "cdktf"; +/* + * Provider bindings are generated by running `cdktf get`. + * See https://cdk.tf/provider-generation for more details. + */ +import { SesEmailIdentity } from "./.gen/providers/aws/ses-email-identity"; +class MyConvertedCode extends TerraformStack { + constructor(scope: Construct, name: string) { + super(scope, name); + new SesEmailIdentity(this, "example", { + email: "sender@example.com", + }); + const terraformDataExample = new DataResource(this, "example_1", { + input: "send-notification", + lifecycle: { + actionTrigger: [ + { + actions: [awsSesSendEmail.example], + events: [beforeCreate, beforeUpdate], + }, + ], + }, + }); + /*This allows the Terraform resource name to match the original name. You can remove the call if you don't need them to match.*/ + terraformDataExample.overrideLogicalId("example"); + } +} + +``` + +### HTML Email with Multiple Recipients + +```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); + } +} + +``` + +### Deployment Notification + +```typescript +// DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug +import { Construct } from "constructs"; +import { DataResource, TerraformStack } from "cdktf"; +class MyConvertedCode extends TerraformStack { + constructor(scope: Construct, name: string) { + super(scope, name); + new DataResource(this, "deployment", { + dependsOn: [app], + input: deploymentId.value, + lifecycle: { + actionTrigger: [ + { + actions: [awsSesSendEmail.deployNotification], + events: [afterCreate], + }, + ], + }, + }); + } +} + +``` + +### Alert Email with Dynamic Content + +```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); + } +} + +``` + +### Multi-format Email + +```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); + } +} + +``` + +### Conditional Email Sending + +```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); + } +} + +``` + +### Batch Processing Notification + +```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); + } +} + +``` + +## Argument Reference + +This action supports the following arguments: + +* `bcc_addresses` - (Optional) List of email addresses for the BCC: field of the message. Recipients in this list will receive the email but their addresses will not be visible to other recipients. +* `cc_addresses` - (Optional) List of email addresses for the CC: field of the message. Recipients in this list will receive the email and their addresses will be visible to all recipients. +* `htmlBody` - (Optional) Message body in HTML format. Either `textBody` or `htmlBody` (or both) must be specified. HTML content allows for rich formatting including links, images, and styling. +* `reply_to_addresses` - (Optional) List of reply-to email addresses for the message. If the recipient replies to the message, each reply-to address will receive the reply. If not specified, replies will go to the source address. +* `return_path` - (Optional) Email address that bounces and complaints will be forwarded to when feedback forwarding is enabled. This is useful for handling delivery failures and spam complaints. +* `source` - (Required) Email address that is sending the email. This address must be either individually verified with Amazon SES, or from a domain that has been verified with Amazon SES. +* `subject` - (Required) Subject of the message: A short summary of the content, which will appear in the recipient's inbox. +* `textBody` - (Optional) Message body in text format. Either `textBody` or `htmlBody` (or both) must be specified. Text format ensures compatibility with all email clients. +* `to_addresses` - (Optional) List of email addresses for the To: field of the message. These are the primary recipients of the email. + + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/actions/sns_publish.html.markdown b/website/docs/cdktf/typescript/actions/sns_publish.html.markdown new file mode 100644 index 000000000000..e0913e13456b --- /dev/null +++ b/website/docs/cdktf/typescript/actions/sns_publish.html.markdown @@ -0,0 +1,142 @@ +--- +subcategory: "SNS (Simple Notification)" +layout: "aws" +page_title: "AWS: aws_sns_publish" +description: |- + Publishes a message to an Amazon SNS topic. +--- + + + +# Action: aws_sns_publish + +~> **Note:** `aws_sns_publish` is in beta. Its interface and behavior may change as the feature evolves, and breaking changes are possible. It is offered as a technical preview without compatibility guarantees until Terraform 1.14 is generally available. + +Publishes a message to an Amazon SNS topic. This action allows for imperative message publishing with full control over message attributes and structure. + +For information about Amazon SNS, see the [Amazon SNS Developer Guide](https://docs.aws.amazon.com/sns/latest/dg/). For specific information about publishing messages, see the [Publish](https://docs.aws.amazon.com/sns/latest/api/API_Publish.html) page in the Amazon SNS API Reference. + +## 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 { DataResource, TerraformStack } from "cdktf"; +/* + * Provider bindings are generated by running `cdktf get`. + * See https://cdk.tf/provider-generation for more details. + */ +import { SnsTopic } from "./.gen/providers/aws/sns-topic"; +class MyConvertedCode extends TerraformStack { + constructor(scope: Construct, name: string) { + super(scope, name); + new SnsTopic(this, "example", { + name: "example-topic", + }); + const terraformDataExample = new DataResource(this, "example_1", { + input: "trigger-message", + lifecycle: { + actionTrigger: [ + { + actions: [awsSnsPublish.example], + events: [beforeCreate, beforeUpdate], + }, + ], + }, + }); + /*This allows the Terraform resource name to match the original name. You can remove the call if you don't need them to match.*/ + terraformDataExample.overrideLogicalId("example"); + } +} + +``` + +### Message with Subject + +```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); + } +} + +``` + +### JSON Message Structure + +```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); + } +} + +``` + +### Message with Attributes + +```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); + } +} + +``` + +### Deployment Notification + +```typescript +// DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug +import { Construct } from "constructs"; +import { DataResource, TerraformStack } from "cdktf"; +class MyConvertedCode extends TerraformStack { + constructor(scope: Construct, name: string) { + super(scope, name); + new DataResource(this, "deploy_trigger", { + dependsOn: [app, main], + input: deploymentId.value, + lifecycle: { + actionTrigger: [ + { + actions: [awsSnsPublish.deployComplete], + events: [beforeCreate, beforeUpdate], + }, + ], + }, + }); + } +} + +``` + +## Argument Reference + +This action supports the following arguments: + +* `message` - (Required) Message to publish. For JSON message structure, this should be a JSON object with protocol-specific messages. Maximum size is 256 KB. +* `message_attributes` - (Optional) Message attributes to include with the message. Each attribute consists of a name, data type, and value. Up to 10 attributes are allowed. [See below.](#message-attributes) +* `message_structure` - (Optional) Set to `json` if you want to send different messages for each protocol. If not specified, the message will be sent as-is to all protocols. +* `subject` - (Optional) Optional subject for the message. Only used for email and email-json protocols. Maximum length is 100 characters. +* `topicArn` - (Required) ARN of the SNS topic to publish the message to. + +### Message Attributes + +The `message_attributes` block supports: + +* `dataType` - (Required) Data type of the message attribute. Valid values are `String`, `Number`, and `Binary`. +* `mapBlockKey` - (Required) Name of the message attribute (used as map key). Must be unique within the message. +* `stringValue` - (Required) Value of the message attribute. + + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/d/billing_views.html.markdown b/website/docs/cdktf/typescript/d/billing_views.html.markdown new file mode 100644 index 000000000000..18bec840e474 --- /dev/null +++ b/website/docs/cdktf/typescript/d/billing_views.html.markdown @@ -0,0 +1,87 @@ +--- +subcategory: "Billing" +layout: "aws" +page_title: "AWS: aws_billing_views" +description: |- + Retrieve a list of AWS Billing Views. +--- + + + +# Data Source: aws_billing_views + +Provides details about an AWS Billing Views. + +## 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 { TerraformOutput, Fn, TerraformStack } from "cdktf"; +/* + * Provider bindings are generated by running `cdktf get`. + * See https://cdk.tf/provider-generation for more details. + */ +import { DataAwsBillingViews } from "./.gen/providers/aws/data-aws-billing-views"; +class MyConvertedCode extends TerraformStack { + constructor(scope: Construct, name: string) { + super(scope, name); + const example = new DataAwsBillingViews(this, "example", { + billingViewTypes: ["PRIMARY"], + }); + new TerraformOutput(this, "primary_view_arn_by_types", { + value: Fn.lookupNested(example.billingView, ["0", "arn"]), + }); + } +} + +``` + +```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"; +/* + * Provider bindings are generated by running `cdktf get`. + * See https://cdk.tf/provider-generation for more details. + */ +import { DataAwsBillingViews } from "./.gen/providers/aws/data-aws-billing-views"; +class MyConvertedCode extends TerraformStack { + constructor(scope: Construct, name: string) { + super(scope, name); + const example = new DataAwsBillingViews(this, "example", {}); + new TerraformOutput(this, "primary_view_arn_by_name", { + value: Fn.lookupNested( + "${[ for view in ${" + + example.billingView + + '} : view.arn if view.name == "Primary View"]}', + ["0"] + ), + }); + new TerraformOutput(this, "view_arns", { + value: "${[ for view in ${" + example.billingView + "} : view.arn]}", + }); + } +} + +``` + +## Argument Reference + +The following arguments are optional: + +* `billingViewTypes` - (Optional) List of billing view types to retrieve. Valid values are `PRIMARY`, `BILLING_GROUP`, `CUSTOM`. + +## Attribute Reference + +This data source exports the following attributes in addition to the arguments above: + +* `billingView` - List of billing view objects with the following attributes: + * `arn` - ARN of the billing view. + * `description` - Description of the billing view. + * `name` - Name of the billing view. + * `ownerAccountId` - Account ID of the billing view owner. + + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/d/ce_cost_category.html.markdown b/website/docs/cdktf/typescript/d/ce_cost_category.html.markdown index 6660fa355ec8..477070f793e5 100644 --- a/website/docs/cdktf/typescript/d/ce_cost_category.html.markdown +++ b/website/docs/cdktf/typescript/d/ce_cost_category.html.markdown @@ -8,7 +8,7 @@ description: |- -# Resource: aws_ce_cost_category +# Data Source: aws_ce_cost_category Provides details about a specific CostExplorer Cost Category. @@ -105,4 +105,4 @@ This data source exports the following attributes in addition to the arguments a * `type` - Parameter type. * `values` - Parameter values. - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/d/elasticache_subnet_group.html.markdown b/website/docs/cdktf/typescript/d/elasticache_subnet_group.html.markdown index 0e894e5feaf3..cf5d3d4f76b4 100644 --- a/website/docs/cdktf/typescript/d/elasticache_subnet_group.html.markdown +++ b/website/docs/cdktf/typescript/d/elasticache_subnet_group.html.markdown @@ -8,7 +8,7 @@ description: |- -# Resource: aws_elasticache_subnet_group +# Data Source: aws_elasticache_subnet_group Provides information about a ElastiCache Subnet Group. @@ -52,4 +52,4 @@ This data source exports the following attributes in addition to the arguments a * `tags` - Map of tags assigned to the subnet group. * `vpcId` - The Amazon Virtual Private Cloud identifier (VPC ID) of the cache subnet group. - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/d/iam_server_certificate.html.markdown b/website/docs/cdktf/typescript/d/iam_server_certificate.html.markdown index 1ba732234933..ea2af6f4ba4e 100644 --- a/website/docs/cdktf/typescript/d/iam_server_certificate.html.markdown +++ b/website/docs/cdktf/typescript/d/iam_server_certificate.html.markdown @@ -69,34 +69,4 @@ This data source exports the following attributes in addition to the arguments a * `certificateBody` is the public key certificate (PEM-encoded). This is useful when [configuring back-end instance authentication](http://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-create-https-ssl-load-balancer.html) policy for load balancer * `certificateChain` is the public key certificate chain (PEM-encoded) if exists, empty otherwise -## Import - -In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import an IAM server certificate using `name`. 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 { IamServerCertificate } from "./.gen/providers/aws/iam-server-certificate"; -class MyConvertedCode extends TerraformStack { - constructor(scope: Construct, name: string) { - super(scope, name); - IamServerCertificate.generateConfigForImport(this, "example", "example"); - } -} - -``` - -Using `terraform import`, import an IAM server certificate using `name`. For example: - -```console -% terraform import aws_iam_server_certificate.example example -``` - -Import will read in the certificate body, certificate chain (if it exists), ID, name, path, and ARN. It will not retrieve the private key which is not available through the AWS API. - - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/d/instance.html.markdown b/website/docs/cdktf/typescript/d/instance.html.markdown index 685a49a1f5f7..a70db09bed8c 100644 --- a/website/docs/cdktf/typescript/d/instance.html.markdown +++ b/website/docs/cdktf/typescript/d/instance.html.markdown @@ -52,9 +52,10 @@ This data source supports the following arguments: * `instanceId` - (Optional) Specify the exact Instance ID with which to populate the data source. * `instanceTags` - (Optional) Map of tags, each pair of which must exactly match a pair on the desired Instance. -* `filter` - (Optional) One or more name/value pairs to use as filters. There are -several valid keys, for a full reference, check out -[describe-instances in the AWS CLI reference][1]. +* `filter` - (Optional) One or more filters to apply to the search. + If multiple `filter` blocks are provided, they all must be true. + For a full reference of filter names, see [describe-instances in the AWS CLI reference][1]. + See [`filter` Block](#filter-block) below. * `getPasswordData` - (Optional) If true, wait for password data to become available and retrieve it. Useful for getting the administrator password for instances running Microsoft Windows. The password data is exported to the `passwordData` attribute. See [GetPasswordData](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_GetPasswordData.html) for more information. * `getUserData` - (Optional) Retrieve Base64 encoded User Data contents into the `userDataBase64` attribute. A SHA-1 hash of the User Data contents will always be present in the `userData` attribute. Defaults to `false`. @@ -64,6 +65,14 @@ several valid keys, for a full reference, check out Terraform will fail. Ensure that your search is specific enough to return a single Instance ID only. +### `filter` Block + +The `filter` block supports the following arguments: + +* `name` - (Required) Name of the filter. + For a full reference of filter names, see [describe-instances in the AWS CLI reference][1]. +* `values` - (Required) One or more values to match. + ## Attribute Reference `id` is set to the ID of the found Instance. In addition, the following attributes @@ -154,4 +163,4 @@ interpolation. [1]: http://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/d/instances.html.markdown b/website/docs/cdktf/typescript/d/instances.html.markdown index 311391a091bc..4450cadbc675 100644 --- a/website/docs/cdktf/typescript/d/instances.html.markdown +++ b/website/docs/cdktf/typescript/d/instances.html.markdown @@ -74,9 +74,18 @@ This data source supports the following arguments: * `instanceTags` - (Optional) Map of tags, each pair of which must exactly match a pair on desired instances. * `instanceStateNames` - (Optional) List of instance states that should be applicable to the desired instances. The permitted values are: `pending, running, shutting-down, stopped, stopping, terminated`. The default value is `running`. -* `filter` - (Optional) One or more name/value pairs to use as filters. There are -several valid keys, for a full reference, check out -[describe-instances in the AWS CLI reference][1]. +* `filter` - (Optional) One or more filters to apply to the search. + If multiple `filter` blocks are provided, they all must be true. + For a full reference of filter names, see [describe-instances in the AWS CLI reference][1]. + See [`filter` Block](#filter-block) below. + +### `filter` Block + +The `filter` block supports the following arguments: + +* `name` - (Required) Name of the filter. + For a full reference of filter names, see [describe-instances in the AWS CLI reference][1]. +* `values` - (Required) One or more values to match. ## Attribute Reference @@ -96,4 +105,4 @@ This data source exports the following attributes in addition to the arguments a [1]: http://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/d/media_convert_queue.html.markdown b/website/docs/cdktf/typescript/d/media_convert_queue.html.markdown index 4c93d8608f3f..9703eb9a9d3f 100644 --- a/website/docs/cdktf/typescript/d/media_convert_queue.html.markdown +++ b/website/docs/cdktf/typescript/d/media_convert_queue.html.markdown @@ -8,7 +8,7 @@ description: |- -# Resource: aws_media_convert_queue +# Data Source: aws_media_convert_queue Retrieve information about a AWS Elemental MediaConvert Queue. @@ -50,4 +50,4 @@ This data source exports the following attributes in addition to the arguments a * `status` - The status of the queue. * `tags` - A map of tags assigned to the resource, including those inherited from the provider [`defaultTags` configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-configuration-block). - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/d/memorydb_acl.html.markdown b/website/docs/cdktf/typescript/d/memorydb_acl.html.markdown index 9ec8cc2b7473..894da5e4616c 100644 --- a/website/docs/cdktf/typescript/d/memorydb_acl.html.markdown +++ b/website/docs/cdktf/typescript/d/memorydb_acl.html.markdown @@ -8,7 +8,7 @@ description: |- -# Resource: aws_memorydb_acl +# Data Source: aws_memorydb_acl Provides information about a MemoryDB ACL. @@ -51,4 +51,4 @@ This data source exports the following attributes in addition to the arguments a * `tags` - Map of tags assigned to the ACL. * `userNames` - Set of MemoryDB user names included in this ACL. - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/d/memorydb_cluster.html.markdown b/website/docs/cdktf/typescript/d/memorydb_cluster.html.markdown index 94436869d2de..ee84d827d7ca 100644 --- a/website/docs/cdktf/typescript/d/memorydb_cluster.html.markdown +++ b/website/docs/cdktf/typescript/d/memorydb_cluster.html.markdown @@ -8,7 +8,7 @@ description: |- -# Resource: aws_memorydb_cluster +# Data Source: aws_memorydb_cluster Provides information about a MemoryDB Cluster. @@ -84,4 +84,4 @@ This data source exports the following attributes in addition to the arguments a * `tlsEnabled` - When true, in-transit encryption is enabled for the cluster. * `tags` - Map of tags assigned to the cluster. - \ No newline at end of file + \ No newline at end of file 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 4712e7332d28..6b44e40fccd0 100644 --- a/website/docs/cdktf/typescript/d/memorydb_parameter_group.html.markdown +++ b/website/docs/cdktf/typescript/d/memorydb_parameter_group.html.markdown @@ -8,7 +8,7 @@ description: |- -# Resource: aws_memorydb_parameter_group +# Data Source: aws_memorydb_parameter_group Provides information about a MemoryDB Parameter Group. @@ -54,4 +54,4 @@ This data source exports the following attributes in addition to the arguments a * `value` - Value of the parameter. * `tags` - Map of tags assigned to the parameter group. - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/d/memorydb_snapshot.html.markdown b/website/docs/cdktf/typescript/d/memorydb_snapshot.html.markdown index c8ea14ebd1b5..97d011928b51 100644 --- a/website/docs/cdktf/typescript/d/memorydb_snapshot.html.markdown +++ b/website/docs/cdktf/typescript/d/memorydb_snapshot.html.markdown @@ -8,7 +8,7 @@ description: |- -# Resource: aws_memorydb_snapshot +# Data Source: aws_memorydb_snapshot Provides information about a MemoryDB Snapshot. @@ -67,4 +67,4 @@ This data source exports the following attributes in addition to the arguments a * `source` - Whether the snapshot is from an automatic backup (`automated`) or was created manually (`manual`). * `tags` - Map of tags assigned to the snapshot. - \ No newline at end of file + \ No newline at end of file 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 ed1cc2f7bec5..e619254b31ff 100644 --- a/website/docs/cdktf/typescript/d/memorydb_subnet_group.html.markdown +++ b/website/docs/cdktf/typescript/d/memorydb_subnet_group.html.markdown @@ -8,7 +8,7 @@ description: |- -# Resource: aws_memorydb_subnet_group +# Data Source: aws_memorydb_subnet_group Provides information about a MemoryDB Subnet Group. @@ -52,4 +52,4 @@ This data source exports the following attributes in addition to the arguments a * `vpcId` - VPC in which the subnet group exists. * `tags` - Map of tags assigned to the subnet group. - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/d/memorydb_user.html.markdown b/website/docs/cdktf/typescript/d/memorydb_user.html.markdown index 2748ce11ce45..d274f8e7e5ae 100644 --- a/website/docs/cdktf/typescript/d/memorydb_user.html.markdown +++ b/website/docs/cdktf/typescript/d/memorydb_user.html.markdown @@ -8,7 +8,7 @@ description: |- -# Resource: aws_memorydb_user +# Data Source: aws_memorydb_user Provides information about a MemoryDB User. @@ -54,4 +54,4 @@ This data source exports the following attributes in addition to the arguments a * `minimumEngineVersion` - Minimum engine version supported for the user. * `tags` - Map of tags assigned to the user. - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/d/odb_cloud_autonomous_vm_cluster.html.markdown b/website/docs/cdktf/typescript/d/odb_cloud_autonomous_vm_cluster.html.markdown new file mode 100644 index 000000000000..a9d194550248 --- /dev/null +++ b/website/docs/cdktf/typescript/d/odb_cloud_autonomous_vm_cluster.html.markdown @@ -0,0 +1,102 @@ +--- +subcategory: "Oracle Database@AWS" +layout: "AWS: aws_odb_cloud_autonomous_vm_cluster" +page_title: "AWS: aws_odb_cloud_autonomous_vm_cluster" +description: |- + Terraform data source for managing cloud autonomous vm cluster resource in AWS for Oracle Database@AWS. +--- + + + +# Data Source: aws_odb_cloud_autonomous_vm_cluster + +Terraform data source for managing cloud autonomous vm cluster resource in AWS for Oracle Database@AWS. + +You can find out more about Oracle Database@AWS from [User Guide](https://docs.aws.amazon.com/odb/latest/UserGuide/what-is-odb.html). + +## 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 { TerraformStack } from "cdktf"; +/* + * Provider bindings are generated by running `cdktf get`. + * See https://cdk.tf/provider-generation for more details. + */ +import { DataAwsOdbCloudAutonomousVmCluster } from "./.gen/providers/aws/data-aws-odb-cloud-autonomous-vm-cluster"; +class MyConvertedCode extends TerraformStack { + constructor(scope: Construct, name: string) { + super(scope, name); + new DataAwsOdbCloudAutonomousVmCluster(this, "example", { + id: "example", + }); + } +} + +``` + +## Argument Reference + +The following arguments are optional: + +* `id` - (Required) The unique identifier of the cloud autonomous vm cluster. +* `region` - (Optional) Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the [provider configuration](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#aws-configuration-reference). + +## Attribute Reference + +This data source exports the following attributes in addition to the arguments above: + +* `arn` - The Amazon Resource Name (ARN) for the Exadata infrastructure. +* `cloudExadataInfrastructureId` - Cloud exadata infrastructure id associated with this cloud autonomous VM cluster. +* `autonomousDataStoragePercentage` - The percentage of data storage currently in use for Autonomous Databases in the Autonomous VM cluster. +* `autonomousDataStorageSizeInTbs` - The data storage size allocated for Autonomous Databases in the Autonomous VM cluster, in TB. +* `availableAutonomousDataStorageSizeInTbs` - The available data storage space for Autonomous Databases in the Autonomous VM cluster, in TB. +* `availableContainerDatabases` - The number of Autonomous CDBs that you can create with the currently available storage. +* `availableCpus` - The number of CPU cores available for allocation to Autonomous Databases. +* `computeModel` - The compute model of the Autonomous VM cluster: ECPU or OCPU. +* `cpuCoreCount` - The total number of CPU cores in the Autonomous VM cluster. +* `cpuCoreCountPerNode` - The number of CPU cores enabled per node in the Autonomous VM cluster. +* `cpuPercentage` - he percentage of total CPU cores currently in use in the Autonomous VM cluster. +* `createdAt` - The date and time when the Autonomous VM cluster was created. +* `dataStorageSizeInGbs` - The total data storage allocated to the Autonomous VM cluster, in GB. +* `dataStorageSizeInTbs` - The total data storage allocated to the Autonomous VM cluster, in TB. +* `odbNodeStorageSizeInGbs` - The local node storage allocated to the Autonomous VM cluster, in gigabytes (GB). +* `dbServers` - The list of database servers associated with the Autonomous VM cluster. +* `description` - The user-provided description of the Autonomous VM cluster. +* `displayName` - The display name of the Autonomous VM cluster. +* `domain` - The domain name of the Autonomous VM cluster. +* `exadataStorageInTbsLowestScaledValue` - The minimum value to which you can scale down the Exadata storage, in TB. +* `hostname` - The hostname of the Autonomous VM cluster. +* `isMtlsEnabledVmCluster` - Indicates whether mutual TLS (mTLS) authentication is enabled for the Autonomous VM cluster. +* `licenseModel` - The Oracle license model that applies to the Autonomous VM cluster. Valid values are LICENSE_INCLUDED or BRING_YOUR_OWN_LICENSE. +* `maxAcdsLowestScaledValue` - The minimum value to which you can scale down the maximum number of Autonomous CDBs. +* `memoryPerOracleComputeUnitInGbs` - The amount of memory allocated per Oracle Compute Unit, in GB. +* `memorySizeInGbs` - The total amount of memory allocated to the Autonomous VM cluster, in gigabytes (GB). +* `nodeCount` - The number of database server nodes in the Autonomous VM cluster. +* `nonProvisionableAutonomousContainerDatabases` - The number of Autonomous CDBs that can't be provisioned because of resource constraints. +* `ociResourceAnchorName` - The name of the OCI resource anchor associated with this Autonomous VM cluster. +* `ociUrl` - The URL for accessing the OCI console page for this Autonomous VM cluster. +* `ocid` - The Oracle Cloud Identifier (OCID) of the Autonomous VM cluster. +* `odbNetworkId` - The unique identifier of the ODB network associated with this Autonomous VM cluster. +* `percentProgress` - The progress of the current operation on the Autonomous VM cluster, as a percentage. +* `provisionableAutonomousContainerDatabases` - The number of Autonomous CDBs that can be provisioned in the Autonomous VM cluster. +* `provisionedAutonomousContainerDatabases` - The number of Autonomous CDBs currently provisioned in the Autonomous VM cluster. +* `provisionedCpus` - The number of CPU cores currently provisioned in the Autonomous VM cluster. +* `reclaimableCpus` - The number of CPU cores that can be reclaimed from terminated or scaled-down Autonomous Databases. +* `reservedCpus` - The number of CPU cores reserved for system operations and redundancy. +* `scanListenerPortNonTls` - The SCAN listener port for non-TLS (TCP) protocol. The default is 1521. +* `scanListenerPortTls` - The SCAN listener port for TLS (TCP) protocol. The default is 2484. +* `shape` - The shape of the Exadata infrastructure for the Autonomous VM cluster. +* `status` - The status of the Autonomous VM cluster. +* `statusReason` - Additional information about the current status of the Autonomous VM cluster. +* `timeDatabaseSslCertificateExpires` - The expiration date and time of the database SSL certificate. +* `timeOrdsCertificateExpires` - The expiration date and time of the Oracle REST Data Services (ORDS)certificate. +* `timeZone` - The time zone of the Autonomous VM cluster. +* `totalContainerDatabases` - The total number of Autonomous Container Databases that can be created with the allocated local storage. +* `tags` - A map of tags to assign to the exadata infrastructure. If configured with a provider [`defaultTags` configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-configuration-block) present, tags with matching keys will overwrite those defined at the provider-level. +* `maintenanceWindow` - The maintenance window for the Autonomous VM cluster. + + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/d/odb_cloud_exadata_infrastructure.html.markdown b/website/docs/cdktf/typescript/d/odb_cloud_exadata_infrastructure.html.markdown new file mode 100644 index 000000000000..ded963c6ee44 --- /dev/null +++ b/website/docs/cdktf/typescript/d/odb_cloud_exadata_infrastructure.html.markdown @@ -0,0 +1,93 @@ +--- +subcategory: "Oracle Database@AWS" +layout: "AWS: aws_odb_cloud_exadata_infrastructure" +page_title: "AWS: aws_odb_cloud_exadata_infrastructure" +description: |- + Terraform data source for managing exadata infrastructure resource in AWS for Oracle Database@AWS. +--- + + + +# Data Source: aws_odb_cloud_exadata_infrastructure + +Terraform data source for exadata infrastructure resource in AWS for Oracle Database@AWS. + +You can find out more about Oracle Database@AWS from [User Guide](https://docs.aws.amazon.com/odb/latest/UserGuide/what-is-odb.html). + +## 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 { TerraformStack } from "cdktf"; +/* + * Provider bindings are generated by running `cdktf get`. + * See https://cdk.tf/provider-generation for more details. + */ +import { DataAwsOdbCloudExadataInfrastructure } from "./.gen/providers/aws/data-aws-odb-cloud-exadata-infrastructure"; +class MyConvertedCode extends TerraformStack { + constructor(scope: Construct, name: string) { + super(scope, name); + new DataAwsOdbCloudExadataInfrastructure(this, "example", { + id: "example", + }); + } +} + +``` + +## Argument Reference + +The following arguments are required: + +* `id` - (Required) The unique identifier of the Exadata infrastructure. + +The following arguments are optional: + +* `region` - (Optional) Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the [provider configuration](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#aws-configuration-reference). + +## Attribute Reference + +This data source exports the following attributes in addition to the arguments above: + +* `activatedStorageCount` - The number of storage servers requested for the Exadata infrastructure. +* `additionalStorageCount` - The number of storage servers requested for the Exadata infrastructure. +* `availabilityZone` - The name of the Availability Zone (AZ) where the Exadata infrastructure is located. +* `availabilityZoneId` - The AZ ID of the AZ where the Exadata infrastructure is located. +* `arn` - The Amazon Resource Name (ARN) for the Exadata infrastructure. +* `id` - The unique identifier of the Exadata infrastructure. +* `computeCount` - The number of database servers for the Exadata infrastructure. +* `cpuCount` - The total number of CPU cores that are allocated to the Exadata infrastructure. +* `dataStorageSizeInTbs` - The size of the Exadata infrastructure's data disk group, in terabytes (TB). +* `dbNodeStorageSizeInGbs` - The size of the storage available on each database node, in gigabytes (GB). +* `dbServerVersion` - The version of the Exadata infrastructure. +* `displayName` - The display name of the Exadata infrastructure. +* `lastMaintenanceRunId` - The Oracle Cloud Identifier (OCID) of the last maintenance run for the Exadata infrastructure. +* `maxCpuCount` - The total number of CPU cores available on the Exadata infrastructure. +* `maxDataStorageInTbs` - The total amount of data disk group storage, in terabytes (TB), that's available on the Exadata infrastructure. +* `maxDbNodeStorageSizeInGbs` - The total amount of local node storage, in gigabytes (GB), that's available on the Exadata infrastructure. +* `maxMemoryInGbs` - The total amount of memory, in gigabytes (GB), that's available on the Exadata infrastructure. +* `memorySizeInGbs` - The amount of memory, in gigabytes (GB), that's allocated on the Exadata infrastructure. +* `monthlyDbServerVersion` - The monthly software version of the database servers installed on the Exadata infrastructure. +* `monthlyStorageServerVersion` - The monthly software version of the storage servers installed on the Exadata infrastructure. +* `nextMaintenanceRunId` - The OCID of the next maintenance run for the Exadata infrastructure. +* `ociResourceAnchorName` - The name of the OCI resource anchor for the Exadata infrastructure. +* `ociUrl` - The HTTPS link to the Exadata infrastructure in OCI. +* `ocid` - The OCID of the Exadata infrastructure in OCI. +* `percentProgress` - The amount of progress made on the current operation on the Exadata infrastructure expressed as a percentage. +* `shape` - The model name of the Exadata infrastructure. +* `status` - The status of the Exadata infrastructure. +* `statusReason` - Additional information about the status of the Exadata infrastructure. +* `storageCount` - The number of storage servers that are activated for the Exadata infrastructure. +* `storageServerVersion` - The software version of the storage servers on the Exadata infrastructure. +* `totalStorageSizeInGbs` - The total amount of storage, in gigabytes (GB), on the Exadata infrastructure. +* `computeModel` - The OCI compute model used when you create or clone an instance: ECPU or OCPU. An ECPU is an abstracted measure of compute resources. ECPUs are based on the number of cores elastically allocated from a pool of compute and storage servers. An OCPU is a legacy physical measure of compute resources. OCPUs are based on the physical core of a processor with hyper-threading enabled. +* `createdAt` - The time when the Exadata infrastructure was created. +* `databaseServerType` - The database server model type of the Exadata infrastructure. For the list of valid model names, use the ListDbSystemShapes operation. +* `storageServerType` - The storage server model type of the Exadata infrastructure. For the list of valid model names, use the ListDbSystemShapes operation. +* `maintenanceWindow` - The scheduling details of the maintenance window. Patching and system updates take place during the maintenance window. +* `tags` - (Optional) A map of tags to assign to the exadata infrastructure. If configured with a provider [`defaultTags` configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-configuration-block) present, tags with matching keys will overwrite those defined at the provider-level. + + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/d/odb_cloud_vm_cluster.html.markdown b/website/docs/cdktf/typescript/d/odb_cloud_vm_cluster.html.markdown new file mode 100644 index 000000000000..d1b766ecfd79 --- /dev/null +++ b/website/docs/cdktf/typescript/d/odb_cloud_vm_cluster.html.markdown @@ -0,0 +1,95 @@ +--- +subcategory: "Oracle Database@AWS" +layout: "AWS: aws_odb_cloud_vm_cluster" +page_title: "AWS: aws_odb_cloud_vm_cluster" +description: |- + Terraform data source for managing cloud vm cluster resource in AWS for Oracle Database@AWS. +--- + + + +# Data Source: aws_odb_cloud_vm_cluster + +Terraform data source for Exadata Infrastructure resource in AWS for Oracle Database@AWS. + +You can find out more about Oracle Database@AWS from [User Guide](https://docs.aws.amazon.com/odb/latest/UserGuide/what-is-odb.html). + +## 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 { TerraformStack } from "cdktf"; +/* + * Provider bindings are generated by running `cdktf get`. + * See https://cdk.tf/provider-generation for more details. + */ +import { DataAwsOdbDbServersList } from "./.gen/providers/aws/"; +class MyConvertedCode extends TerraformStack { + constructor(scope: Construct, name: string) { + super(scope, name); + new DataAwsOdbDbServersList(this, "example", { + cloud_exadata_infrastructure_id: "example-id", + }); + } +} + +``` + +## Argument Reference + +The following arguments are required: + +* `id` - (Required) The unique identifier of the Exadata infrastructure. + +The following arguments are optional: + +* `region` - (Optional) Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the [provider configuration](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#aws-configuration-reference). + +## Attribute Reference + +This data source exports the following attributes in addition to the arguments above: + +* `arn` - The Amazon Resource Name (ARN) for the cloud vm cluster. +* `cloudExadataInfrastructureId` - The ID of the Cloud Exadata Infrastructure. +* `clusterName` - The name of the Grid Infrastructure (GI) cluster. +* `cpuCoreCount` - The number of CPU cores enabled on the VM cluster. +* `dataStorageSizeInTbs` - The size of the data disk group, in terabytes (TB), that's allocated for the VM cluster. +* `dbNodeStorageSizeInGbs` - The amount of local node storage, in gigabytes (GB), that's allocated for the VM cluster. +* `dbServers` - The list of database servers for the VM cluster. +* `diskRedundancy` - The type of redundancy configured for the VM cluster. NORMAL is 2-way redundancy. HIGH is 3-way redundancy. +* `displayName` - The display name of the VM cluster. +* `domain` - The domain name of the VM cluster. +* `giVersion` - The software version of the Oracle Grid Infrastructure (GI) for the VM cluster. +* `hostnamePrefixComputed` - The computed hostname prefix for the VM cluster. +* `isLocalBackupEnabled` - Indicates whether database backups to local Exadata storage is enabled for the VM cluster. +* `isSparseDiskGroupEnabled` - Indicates whether the VM cluster is configured with a sparse disk group. +* `lastUpdateHistoryEntryId` - The Oracle Cloud ID (OCID) of the last maintenance update history entry. +* `licenseModel` - The Oracle license model applied to the VM cluster. +* `listenerPort` - The port number configured for the listener on the VM cluster. +* `memorySizeInGbs` - The amount of memory, in gigabytes (GB), that's allocated for the VM cluster. +* `nodeCount` - The number of nodes in the VM cluster. +* `ocid` - The OCID of the VM cluster. +* `ociResourceAnchorName` - The name of the OCI Resource Anchor. +* `ociUrl` - The HTTPS link to the VM cluster in OCI. +* `odbNetworkId` - The ID of the ODB network. +* `percentProgress` - The amount of progress made on the current operation on the VM cluster, expressed as a percentage. +* `scanDnsName` - The FQDN of the DNS record for the Single Client Access Name (SCAN) IP addresses that are associated with the VM cluster. +* `scanDnsRecordId` - The OCID of the DNS record for the SCAN IP addresses that are associated with the VM cluster. +* `scanIpIds` - The OCID of the SCAN IP addresses that are associated with the VM cluster. +* `shape` - The hardware model name of the Exadata infrastructure that's running the VM cluster. +* `sshPublicKeys` - The public key portion of one or more key pairs used for SSH access to the VM cluster. +* `status` - The status of the VM cluster. +* `statusReason` - Additional information about the status of the VM cluster. +* `storageSizeInGbs` - The amount of local node storage, in gigabytes (GB), that's allocated to the VM cluster. +* `systemVersion` - The operating system version of the image chosen for the VM cluster. +* `timezone` - The time zone of the VM cluster. +* `vipIds` - The virtual IP (VIP) addresses that are associated with the VM cluster. Oracle's Cluster Ready Services (CRS) creates and maintains one VIP address for each node in the VM cluster to enable failover. If one node fails, the VIP is reassigned to another active node in the cluster. +* `createdAt` - The time when the VM cluster was created. +* `computeModel` - The OCI model compute model used when you create or clone an instance: ECPU or OCPU. An ECPU is an abstracted measure of compute resources. ECPUs are based on the number of cores elastically allocated from a pool of compute and storage servers. An OCPU is a legacy physical measure of compute resources. OCPUs are based on the physical core of a processor with hyper-threading enabled. +* `dataCollectionOptions` - The set of diagnostic collection options enabled for the VM cluster. +* `iormConfigCache` - The ExadataIormConfig cache details for the VM cluster. + + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/d/odb_network.html.markdown b/website/docs/cdktf/typescript/d/odb_network.html.markdown new file mode 100644 index 000000000000..a841ec3366b1 --- /dev/null +++ b/website/docs/cdktf/typescript/d/odb_network.html.markdown @@ -0,0 +1,74 @@ +--- +subcategory: "Oracle Database@AWS" +layout: "AWS: aws_odb_network" +page_title: "AWS: aws_odb_network" +description: |- + Terraform data source to retrieve odb network for Oracle Database@AWS. +--- + + + +# Data Source: aws_odb_network + +Terraform data source for to retrieve network resource in AWS for Oracle Database@AWS. + +## 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 { TerraformStack } from "cdktf"; +/* + * Provider bindings are generated by running `cdktf get`. + * See https://cdk.tf/provider-generation for more details. + */ +import { DataAwsOdbNetwork } from "./.gen/providers/aws/data-aws-odb-network"; +class MyConvertedCode extends TerraformStack { + constructor(scope: Construct, name: string) { + super(scope, name); + new DataAwsOdbNetwork(this, "example", { + id: "example", + }); + } +} + +``` + +## Argument Reference + +The following arguments are required: + +* `id` - (Required) Unique identifier of the odb network resource. + +The following arguments are optional: + +* `region` - (Optional) Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the [provider configuration](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#aws-configuration-reference). + +## Attribute Reference + +This resource exports the following attributes in addition to the arguments above: + +* `id` - Unique identifier of the odb network resource. +* `arn` - Amazon Resource Name (ARN) of the odb network resource. +* `displayName` - Display name for the network resource. +* `availabilityZoneId` - The AZ ID of the AZ where the ODB network is located. +* `availabilityZone` - The availability zone where the ODB network is located. +* `backupSubnetCidr` - The CIDR range of the backup subnet for the ODB network. +* `clientSubnetCidr` - The CIDR notation for the network resource. +* `customDomainName` - The name of the custom domain that the network is located. +* `defaultDnsPrefix` - The default DNS prefix for the network resource. +* `ociNetworkAnchorId` - The unique identifier of the OCI network anchor for the ODB network. +* `ociNetworkAnchorUrl` - The URL of the OCI network anchor for the ODB network. +* `ociResourceAnchorName` - The name of the OCI resource anchor for the ODB network. +* `ociVcnId` - The unique identifier Oracle Cloud ID (OCID) of the OCI VCN for the ODB network. +* `ociVcnUrl` - The URL of the OCI VCN for the ODB network. +* `percentProgress` - The amount of progress made on the current operation on the ODB network, expressed as a percentage. +* `peeredCidrs` - The list of CIDR ranges from the peered VPC that are allowed access to the ODB network. Please refer odb network peering documentation. +* `status` - The status of the network resource. +* `statusReason` - Additional information about the current status of the ODB network. +* `createdAt` - The date and time when the ODB network was created. +* `managedServices` - The managed services configuration for the ODB network. + + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/d/odb_network_peering_connection.html.markdown b/website/docs/cdktf/typescript/d/odb_network_peering_connection.html.markdown new file mode 100644 index 000000000000..e76b6bdd3ae9 --- /dev/null +++ b/website/docs/cdktf/typescript/d/odb_network_peering_connection.html.markdown @@ -0,0 +1,66 @@ +--- +subcategory: "Oracle Database@AWS" +layout: "AWS: aws_odb_network_peering_connection" +page_title: "AWS: aws_odb_network_peering_connection" +description: |- + Terraform data source for managing oracle database network peering resource in AWS. +--- + + + +# Data Source: aws_odb_network_peering_connection + +Terraform data source for managing oracle database network peering resource in AWS. + +You can find out more about Oracle Database@AWS from [User Guide](https://docs.aws.amazon.com/odb/latest/UserGuide/what-is-odb.html). + +## 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 { TerraformStack } from "cdktf"; +/* + * Provider bindings are generated by running `cdktf get`. + * See https://cdk.tf/provider-generation for more details. + */ +import { DataAwsOdbNetworkPeeringConnection } from "./.gen/providers/aws/data-aws-odb-network-peering-connection"; +class MyConvertedCode extends TerraformStack { + constructor(scope: Construct, name: string) { + super(scope, name); + new DataAwsOdbNetworkPeeringConnection(this, "example", { + id: "example", + }); + } +} + +``` + +## Argument Reference + +The following arguments are required: + +* `id` - (Required) The unique identifier of the Exadata infrastructure. + +The following arguments are optional: + +* `region` - (Optional) Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the [provider configuration](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#aws-configuration-reference). + +## Attribute Reference + +This data source exports the following attributes in addition to the arguments above: + +* `displayName` - Display name of the ODB network peering connection. +* `status` - Status of the ODB network peering connection. +* `statusReason` - Status of the ODB network peering connection. +* `odbNetworkArn` - ARN of the ODB network peering connection. +* `arn` - The Amazon Resource Name (ARN) for the Exadata infrastructure. +* `peerNetworkArn` - ARN of the peer network peering connection. +* `odbPeeringConnectionType` - Type of the ODB peering connection. +* `createdAt` - Created time of the ODB network peering connection. +* `percentProgress` - Progress of the ODB network peering connection. +* `tags` - Tags applied to the resource. + + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/d/securityhub_standards_control_associations.html.markdown b/website/docs/cdktf/typescript/d/securityhub_standards_control_associations.html.markdown index 2ec826b3e6a6..66325958b372 100644 --- a/website/docs/cdktf/typescript/d/securityhub_standards_control_associations.html.markdown +++ b/website/docs/cdktf/typescript/d/securityhub_standards_control_associations.html.markdown @@ -8,7 +8,7 @@ description: |- -# Resource: aws_securityhub_standards_control_associations +# Data Source: aws_securityhub_standards_control_associations Terraform data source for managing an AWS Security Hub Standards Control Associations. @@ -70,4 +70,4 @@ See [`standardsControlAssociations`](#standards_control_associations-attribute-r * `updatedAt` - Last time that a control's enablement status in a specified standard was updated. * `updatedReason` - Reason for updating a control's enablement status in a specified standard. - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/d/workspaces_workspace.html.markdown b/website/docs/cdktf/typescript/d/workspaces_workspace.html.markdown index e188c8296914..594340528e86 100644 --- a/website/docs/cdktf/typescript/d/workspaces_workspace.html.markdown +++ b/website/docs/cdktf/typescript/d/workspaces_workspace.html.markdown @@ -8,7 +8,7 @@ description: |- -# Resource: aws_workspaces_workspace +# Data Source: aws_workspaces_workspace Use this data source to get information about a workspace in [AWS Workspaces](https://docs.aws.amazon.com/workspaces/latest/adminguide/amazon-workspaces.html) Service. @@ -91,4 +91,4 @@ This data source exports the following attributes in addition to the arguments a * `computerName` - Name of the WorkSpace, as seen by the operating system. * `state` - Operational state of the WorkSpace. - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/ephemeral-resources/cognito_identity_openid_token_for_developer_identity.markdown b/website/docs/cdktf/typescript/ephemeral-resources/cognito_identity_openid_token_for_developer_identity.markdown index 6c8c142f2bc7..7e4d73b5e7c6 100644 --- a/website/docs/cdktf/typescript/ephemeral-resources/cognito_identity_openid_token_for_developer_identity.markdown +++ b/website/docs/cdktf/typescript/ephemeral-resources/cognito_identity_openid_token_for_developer_identity.markdown @@ -7,7 +7,6 @@ description: |- --- - # Ephemeral: aws_cognito_identity_openid_token_for_developer_identity @@ -63,4 +62,4 @@ This resource exports the following attributes in addition to the arguments abov * `token` - An OpenID token. - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/list-resources/batch_job_queue.html.markdown b/website/docs/cdktf/typescript/list-resources/batch_job_queue.html.markdown new file mode 100644 index 000000000000..5de6c15aa4db --- /dev/null +++ b/website/docs/cdktf/typescript/list-resources/batch_job_queue.html.markdown @@ -0,0 +1,38 @@ +--- +subcategory: "Batch" +layout: "aws" +page_title: "AWS: aws_batch_job_queue" +description: |- + Lists Batch Job Queue resources. +--- + + + +# List Resource: aws_batch_job_queue + +~> **Note:** The `aws_batch_job_queue` List Resource is in beta. Its interface and behavior may change as the feature evolves, and breaking changes are possible. It is offered as a technical preview without compatibility guarantees until Terraform 1.14 is generally available. + +Lists Batch Job Queue resources. + +## Example Usage + +```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); + } +} + +``` + +## Argument Reference + +This list resource supports the following arguments: + +* `region` - (Optional) [Region](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints) to query. + Defaults to the Region set in the [provider configuration](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#aws-configuration-reference). + + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/list-resources/cloudwatch_log_group.html.markdown b/website/docs/cdktf/typescript/list-resources/cloudwatch_log_group.html.markdown new file mode 100644 index 000000000000..a246eee62fa7 --- /dev/null +++ b/website/docs/cdktf/typescript/list-resources/cloudwatch_log_group.html.markdown @@ -0,0 +1,38 @@ +--- +subcategory: "CloudWatch Logs" +layout: "aws" +page_title: "AWS: aws_cloudwatch_log_group" +description: |- + Lists CloudWatch Logs Log Group resources. +--- + + + +# List Resource: aws_cloudwatch_log_group + +~> **Note:** The `aws_cloudwatch_log_group` List Resource is in beta. Its interface and behavior may change as the feature evolves, and breaking changes are possible. It is offered as a technical preview without compatibility guarantees until Terraform 1.14 is generally available. + +Lists CloudWatch Logs Log Group resources. + +## Example Usage + +```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); + } +} + +``` + +## Argument Reference + +This list resource supports the following arguments: + +* `region` - (Optional) [Region](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints) to query. + Defaults to the Region set in the [provider configuration](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#aws-configuration-reference). + + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/list-resources/iam_role.html.markdown b/website/docs/cdktf/typescript/list-resources/iam_role.html.markdown new file mode 100644 index 000000000000..20066f2fb0f3 --- /dev/null +++ b/website/docs/cdktf/typescript/list-resources/iam_role.html.markdown @@ -0,0 +1,37 @@ +--- +subcategory: "IAM (Identity & Access Management)" +layout: "aws" +page_title: "AWS: aws_iam_role" +description: |- + Lists IAM Role resources. +--- + + + +# List Resource: aws_iam_role + +~> **Note:** The `aws_iam_role` List Resource is in beta. Its interface and behavior may change as the feature evolves, and breaking changes are possible. It is offered as a technical preview without compatibility guarantees until Terraform 1.14 is generally available. + +Lists IAM Role resources. + +Excludes Service-Linked Roles (see "AWS service-linked role" in [IAM Roles Terms and Concepts documentation](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#id_roles_terms-and-concepts)). + +## Example Usage + +```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); + } +} + +``` + +## Argument Reference + +This list resource does not support any arguments. + + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/list-resources/instance.html.markdown b/website/docs/cdktf/typescript/list-resources/instance.html.markdown new file mode 100644 index 000000000000..0c3c7cb19aa6 --- /dev/null +++ b/website/docs/cdktf/typescript/list-resources/instance.html.markdown @@ -0,0 +1,74 @@ +--- +subcategory: "EC2 (Elastic Compute Cloud)" +layout: "aws" +page_title: "AWS: aws_instance" +description: |- + Lists EC2 Instance resources. +--- + + + +# List Resource: aws_instance + +~> **Note:** The `aws_instance` List Resource is in beta. Its interface and behavior may change as the feature evolves, and breaking changes are possible. It is offered as a technical preview without compatibility guarantees until Terraform 1.14 is generally available. + +Lists EC2 Instance resources. + +By default, EC2 Instances managed by an Auto Scaling Group and EC2 Instances in either the `terminated` or `shutting-down` state are excluded. + +## 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 { TerraformStack } from "cdktf"; +class MyConvertedCode extends TerraformStack { + constructor(scope: Construct, name: string) { + super(scope, name); + } +} + +``` + +### Filter Usage + +This example will return instances in the `stopped` state. + +```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); + } +} + +``` + +## Argument Reference + +This list resource supports the following arguments: + +* `filter` - (Optional) One or more filters to apply to the search. + If multiple `filter` blocks are provided, they all must be true. + For a full reference of filter names, see [describe-instances in the AWS CLI reference][1]. + See [`filter` Block](#filter-block) below. +* `include_auto_scaled` - (Optional) Whether to include EC2 instances that are managed by an Auto Scaling Group. + Default value is `false`. +* `region` - (Optional) [Region](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints) to query. + Defaults to the Region set in the [provider configuration](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#aws-configuration-reference). + +### `filter` Block + +The `filter` block supports the following arguments: + +* `name` - (Required) Name of the filter. + For a full reference of filter names, see [describe-instances in the AWS CLI reference][1]. +* `values` - (Required) One or more values to match. + +[1]: http://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html + + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/appflow_connector_profile.html.markdown b/website/docs/cdktf/typescript/r/appflow_connector_profile.html.markdown index 270bdcdc64f6..1d15e34c33ba 100644 --- a/website/docs/cdktf/typescript/r/appflow_connector_profile.html.markdown +++ b/website/docs/cdktf/typescript/r/appflow_connector_profile.html.markdown @@ -358,6 +358,32 @@ This resource exports the following attributes in addition to the arguments abov ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_appflow_connector_profile.example + identity = { + name = "example_profile" + } +} + +resource "aws_appflow_connector_profile" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `name` (String) Name of the Appflow connector profile. + +#### Optional + +* `accountId` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import AppFlow Connector Profile using the connector profile `name`. For example: ```typescript @@ -391,4 +417,4 @@ Using `terraform import`, import AppFlow Connector Profile using the connector p [1]: https://docs.aws.amazon.com/appflow/1.0/APIReference/Welcome.html [2]: https://docs.aws.amazon.com/appflow/1.0/APIReference/API_CreateConnectorProfile.html - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/appflow_flow.html.markdown b/website/docs/cdktf/typescript/r/appflow_flow.html.markdown index 1f52ce50c202..7626e8aa578b 100644 --- a/website/docs/cdktf/typescript/r/appflow_flow.html.markdown +++ b/website/docs/cdktf/typescript/r/appflow_flow.html.markdown @@ -485,6 +485,32 @@ This resource exports the following attributes in addition to the arguments abov ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_appflow_flow.example + identity = { + name = "example-flow" + } +} + +resource "aws_appflow_flow" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `name` (String) Name of the AppFlow flow. + +#### Optional + +* `accountId` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import AppFlow flows using the `name`. For example: ```typescript @@ -511,4 +537,4 @@ Using `terraform import`, import AppFlow flows using the `name`. For example: % terraform import aws_appflow_flow.example example-flow ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/autoscaling_group.html.markdown b/website/docs/cdktf/typescript/r/autoscaling_group.html.markdown index bc507f7ffe03..2cb15a2c89f9 100644 --- a/website/docs/cdktf/typescript/r/autoscaling_group.html.markdown +++ b/website/docs/cdktf/typescript/r/autoscaling_group.html.markdown @@ -835,7 +835,7 @@ This configuration block supports the following: - `instanceWarmup` - (Optional) Number of seconds until a newly launched instance is configured and ready to use. Default behavior is to use the Auto Scaling Group's health check grace period. - `maxHealthyPercentage` - (Optional) Amount of capacity in the Auto Scaling group that can be in service and healthy, or pending, to support your workload when an instance refresh is in place, as a percentage of the desired capacity of the Auto Scaling group. Values must be between `100` and `200`, defaults to `100`. - `minHealthyPercentage` - (Optional) Amount of capacity in the Auto Scaling group that must remain healthy during an instance refresh to allow the operation to continue, as a percentage of the desired capacity of the Auto Scaling group. Defaults to `90`. - - `skipMatching` - (Optional) Replace instances that already have your desired configuration. Defaults to `false`. + - `skipMatching` - (Optional) Skip replacing instances that already have your desired configuration. Defaults to `false`. - `autoRollback` - (Optional) Automatically rollback if instance refresh fails. Defaults to `false`. This option may only be set to `true` when specifying a `launchTemplate` or `mixedInstancesPolicy`. - `alarmSpecification` - (Optional) Alarm Specification for Instance Refresh. - `alarms` - (Required) List of Cloudwatch alarms. If any of these alarms goes into ALARM state, Instance Refresh is failed. @@ -1011,4 +1011,4 @@ Using `terraform import`, import Auto Scaling Groups using the `name`. For examp % terraform import aws_autoscaling_group.web web-asg ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/cloudfront_distribution.html.markdown b/website/docs/cdktf/typescript/r/cloudfront_distribution.html.markdown index ce7e165159d9..c1f4c7d36d29 100644 --- a/website/docs/cdktf/typescript/r/cloudfront_distribution.html.markdown +++ b/website/docs/cdktf/typescript/r/cloudfront_distribution.html.markdown @@ -25,30 +25,56 @@ The example below creates a CloudFront distribution with an S3 origin. ```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"; +import { Token, TerraformIterator, TerraformStack } from "cdktf"; /* * Provider bindings are generated by running `cdktf get`. * See https://cdk.tf/provider-generation for more details. */ import { CloudfrontDistribution } from "./.gen/providers/aws/cloudfront-distribution"; +import { CloudfrontOriginAccessControl } from "./.gen/providers/aws/cloudfront-origin-access-control"; +import { DataAwsAcmCertificate } from "./.gen/providers/aws/data-aws-acm-certificate"; +import { DataAwsIamPolicyDocument } from "./.gen/providers/aws/data-aws-iam-policy-document"; +import { DataAwsRoute53Zone } from "./.gen/providers/aws/data-aws-route53-zone"; +import { Route53Record } from "./.gen/providers/aws/route53-record"; import { S3Bucket } from "./.gen/providers/aws/s3-bucket"; -import { S3BucketAcl } from "./.gen/providers/aws/s3-bucket-acl"; +import { S3BucketPolicy } from "./.gen/providers/aws/s3-bucket-policy"; class MyConvertedCode extends TerraformStack { constructor(scope: Construct, name: string) { super(scope, name); + const myDomain = "mydomain.com"; const s3OriginId = "myS3Origin"; + const defaultVar = new CloudfrontOriginAccessControl(this, "default", { + name: "default-oac", + originAccessControlOriginType: "s3", + signingBehavior: "always", + signingProtocol: "sigv4", + }); const b = new S3Bucket(this, "b", { bucket: "mybucket", tags: { Name: "My bucket", }, }); - new S3BucketAcl(this, "b_acl", { - acl: "private", - bucket: b.id, - }); - new CloudfrontDistribution(this, "s3_distribution", { - aliases: ["mysite.example.com", "yoursite.example.com"], + const dataAwsAcmCertificateMyDomain = new DataAwsAcmCertificate( + this, + "my_domain", + { + domain: "*.${" + myDomain + "}", + region: "us-east-1", + statuses: ["ISSUED"], + } + ); + const dataAwsRoute53ZoneMyDomain = new DataAwsRoute53Zone( + this, + "my_domain_3", + { + name: myDomain, + } + ); + /*This allows the Terraform resource name to match the original name. You can remove the call if you don't need them to match.*/ + dataAwsRoute53ZoneMyDomain.overrideLogicalId("my_domain"); + const s3Distribution = new CloudfrontDistribution(this, "s3_distribution", { + aliases: ["mysite.${" + myDomain + "}", "yoursite.${" + myDomain + "}"], comment: "Some comment", defaultCacheBehavior: { allowedMethods: [ @@ -76,11 +102,6 @@ class MyConvertedCode extends TerraformStack { defaultRootObject: "index.html", enabled: true, isIpv6Enabled: true, - loggingConfig: { - bucket: "mylogs.s3.amazonaws.com", - includeCookies: false, - prefix: "myprefix", - }, orderedCacheBehavior: [ { allowedMethods: ["GET", "HEAD", "OPTIONS"], @@ -136,9 +157,61 @@ class MyConvertedCode extends TerraformStack { Environment: "production", }, viewerCertificate: { - cloudfrontDefaultCertificate: true, + acmCertificateArn: Token.asString(dataAwsAcmCertificateMyDomain.arn), + sslSupportMethod: "sni-only", }, }); + /*In most cases loops should be handled in the programming language context and + not inside of the Terraform context. If you are looping over something external, e.g. a variable or a file input + you should consider using a for loop. If you are looping over something only known to Terraform, e.g. a result of a data source + you need to keep this like it is.*/ + const cloudfrontForEachIterator = TerraformIterator.fromList( + Token.asAny(s3Distribution.aliases) + ); + new Route53Record(this, "cloudfront", { + alias: { + evaluateTargetHealth: false, + name: s3Distribution.domainName, + zoneId: s3Distribution.hostedZoneId, + }, + name: Token.asString(cloudfrontForEachIterator.value), + type: "A", + zoneId: Token.asString(dataAwsRoute53ZoneMyDomain.zoneId), + forEach: cloudfrontForEachIterator, + }); + const originBucketPolicy = new DataAwsIamPolicyDocument( + this, + "origin_bucket_policy", + { + statement: [ + { + actions: ["s3:GetObject", "s3:PutObject"], + condition: [ + { + test: "StringEquals", + values: [s3Distribution.arn], + variable: "AWS:SourceArn", + }, + ], + effect: "Allow", + principals: [ + { + identifiers: ["cloudfront.amazonaws.com"], + type: "Service", + }, + ], + resources: ["${" + b.arn + "}/*"], + sid: "AllowCloudFrontServicePrincipalReadWrite", + }, + ], + } + ); + const awsS3BucketPolicyB = new S3BucketPolicy(this, "b_7", { + bucket: b.bucket, + policy: Token.asString(originBucketPolicy.json), + }); + /*This allows the Terraform resource name to match the original name. You can remove the call if you don't need them to match.*/ + awsS3BucketPolicyB.overrideLogicalId("b"); } } @@ -797,4 +870,4 @@ Using `terraform import`, import CloudFront Distributions using the `id`. For ex % terraform import aws_cloudfront_distribution.distribution E74FTE3EXAMPLE ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/cloudfront_key_value_store.html.markdown b/website/docs/cdktf/typescript/r/cloudfront_key_value_store.html.markdown index 28a23ef17f56..23d85924ae97 100644 --- a/website/docs/cdktf/typescript/r/cloudfront_key_value_store.html.markdown +++ b/website/docs/cdktf/typescript/r/cloudfront_key_value_store.html.markdown @@ -63,6 +63,31 @@ This resource exports the following attributes in addition to the arguments abov ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_cloudfront_key_value_store.example + identity = { + name = "example_store" + } +} + +resource "aws_cloudfront_key_value_store" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `name` (String) Name of the CloudFront Key Value Store. + +#### Optional + +* `accountId` (String) AWS Account where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import CloudFront Key Value Store using the `name`. For example: ```typescript @@ -93,4 +118,4 @@ Using `terraform import`, import CloudFront Key Value Store using the `name`. Fo % terraform import aws_cloudfront_key_value_store.example example_store ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/cloudfrontkeyvaluestore_key.html.markdown b/website/docs/cdktf/typescript/r/cloudfrontkeyvaluestore_key.html.markdown index 138ba52e9a08..73f8fc60d165 100644 --- a/website/docs/cdktf/typescript/r/cloudfrontkeyvaluestore_key.html.markdown +++ b/website/docs/cdktf/typescript/r/cloudfrontkeyvaluestore_key.html.markdown @@ -68,6 +68,33 @@ This resource exports the following attributes in addition to the arguments abov ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_cloudfrontkeyvaluestore_key.example + identity = { + key_value_store_arn = "arn:aws:cloudfront::111111111111:key-value-store/8562g61f-caba-2845-9d99-b97diwae5d3c" + key = "someKey" + } +} + +resource "aws_cloudfrontkeyvaluestore_key" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `keyValueStoreArn` (String) ARN of the CloudFront Key Value Store. +* `key` (String) Key name. + +#### Optional + +* `accountId` (String) AWS Account where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import CloudFront KeyValueStore Key using the `keyValueStoreArn` and 'key' separated by `,`. For example: ```typescript @@ -98,4 +125,4 @@ Using `terraform import`, import CloudFront KeyValueStore Key using the `keyValu % terraform import aws_cloudfrontkeyvaluestore_key.example arn:aws:cloudfront::111111111111:key-value-store/8562g61f-caba-2845-9d99-b97diwae5d3c,someKey ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/cloudwatch_event_rule.html.markdown b/website/docs/cdktf/typescript/r/cloudwatch_event_rule.html.markdown index 2f9cc66a7474..82cfb6164972 100644 --- a/website/docs/cdktf/typescript/r/cloudwatch_event_rule.html.markdown +++ b/website/docs/cdktf/typescript/r/cloudwatch_event_rule.html.markdown @@ -87,6 +87,34 @@ This resource exports the following attributes in addition to the arguments abov ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_cloudwatch_event_rule.example + identity = { + name = "capture-console-sign-in" + event_bus_name = "example-event-bus" + } +} + +resource "aws_cloudwatch_event_rule" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `name` (String) Name of the EventBridge rule. + +#### Optional + +* `accountId` (String) AWS Account where this resource is managed. +* `eventBusName` (String) Name of the event bus. +* `region` (String) Region where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import EventBridge Rules using the `event_bus_name/rule_name` (if you omit `eventBusName`, the `default` event bus will be used). For example: ```typescript @@ -103,7 +131,7 @@ class MyConvertedCode extends TerraformStack { super(scope, name); CloudwatchEventRule.generateConfigForImport( this, - "console", + "example", "example-event-bus/capture-console-sign-in" ); } @@ -114,7 +142,7 @@ class MyConvertedCode extends TerraformStack { Using `terraform import`, import EventBridge Rules using the `event_bus_name/rule_name` (if you omit `eventBusName`, the `default` event bus will be used). For example: ```console -% terraform import aws_cloudwatch_event_rule.console example-event-bus/capture-console-sign-in +% terraform import aws_cloudwatch_event_rule.example example-event-bus/capture-console-sign-in ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/cloudwatch_event_target.html.markdown b/website/docs/cdktf/typescript/r/cloudwatch_event_target.html.markdown index 241a5109051f..52297f9a3246 100644 --- a/website/docs/cdktf/typescript/r/cloudwatch_event_target.html.markdown +++ b/website/docs/cdktf/typescript/r/cloudwatch_event_target.html.markdown @@ -926,6 +926,36 @@ This resource exports no additional attributes. ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_cloudwatch_event_target.example + identity = { + event_bus_name = "default" + rule = "rule-name" + target_id = "target-id" + } +} + +resource "aws_cloudwatch_event_target" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `eventBusName` (String) Event bus name for the target. +* `rule` (String) Rule name for the target. +* `targetId` (String) Target ID. + +#### Optional + +* `accountId` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import EventBridge Targets using `event_bus_name/rule-name/target-id` (if you omit `eventBusName`, the `default` event bus will be used). For example: ```typescript @@ -942,7 +972,7 @@ class MyConvertedCode extends TerraformStack { super(scope, name); CloudwatchEventTarget.generateConfigForImport( this, - "testEventTarget", + "example", "rule-name/target-id" ); } @@ -953,7 +983,7 @@ class MyConvertedCode extends TerraformStack { Using `terraform import`, import EventBridge Targets using `event_bus_name/rule-name/target-id` (if you omit `eventBusName`, the `default` event bus will be used). For example: ```console -% terraform import aws_cloudwatch_event_target.test-event-target rule-name/target-id +% terraform import aws_cloudwatch_event_target.example rule-name/target-id ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/cloudwatch_log_group.html.markdown b/website/docs/cdktf/typescript/r/cloudwatch_log_group.html.markdown index bf2450b8b43f..5e21640d7f9d 100644 --- a/website/docs/cdktf/typescript/r/cloudwatch_log_group.html.markdown +++ b/website/docs/cdktf/typescript/r/cloudwatch_log_group.html.markdown @@ -64,6 +64,32 @@ This resource exports the following attributes in addition to the arguments abov ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_cloudwatch_log_group.example + identity = { + name = "yada" + } +} + +resource "aws_cloudwatch_log_group" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `name` (String) Name of the CloudWatch log group. + +#### Optional + +* `accountId` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import Cloudwatch Log Groups using the `name`. For example: ```typescript @@ -78,7 +104,7 @@ import { CloudwatchLogGroup } from "./.gen/providers/aws/cloudwatch-log-group"; class MyConvertedCode extends TerraformStack { constructor(scope: Construct, name: string) { super(scope, name); - CloudwatchLogGroup.generateConfigForImport(this, "testGroup", "yada"); + CloudwatchLogGroup.generateConfigForImport(this, "example", "yada"); } } @@ -87,7 +113,7 @@ class MyConvertedCode extends TerraformStack { Using `terraform import`, import Cloudwatch Log Groups using the `name`. For example: ```console -% terraform import aws_cloudwatch_log_group.test_group yada +% terraform import aws_cloudwatch_log_group.example yada ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/cloudwatch_metric_alarm.html.markdown b/website/docs/cdktf/typescript/r/cloudwatch_metric_alarm.html.markdown index f40f40abc33e..f52645ebd32e 100644 --- a/website/docs/cdktf/typescript/r/cloudwatch_metric_alarm.html.markdown +++ b/website/docs/cdktf/typescript/r/cloudwatch_metric_alarm.html.markdown @@ -319,6 +319,32 @@ This resource exports the following attributes in addition to the arguments abov ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_cloudwatch_metric_alarm.example + identity = { + alarm_name = "alarm-12345" + } +} + +resource "aws_cloudwatch_metric_alarm" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `alarmName` (String) Name of the CloudWatch metric alarm. + +#### Optional + +* `accountId` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import CloudWatch Metric Alarm using the `alarmName`. For example: ```typescript @@ -333,7 +359,11 @@ import { CloudwatchMetricAlarm } from "./.gen/providers/aws/cloudwatch-metric-al class MyConvertedCode extends TerraformStack { constructor(scope: Construct, name: string) { super(scope, name); - CloudwatchMetricAlarm.generateConfigForImport(this, "test", "alarm-12345"); + CloudwatchMetricAlarm.generateConfigForImport( + this, + "example", + "alarm-12345" + ); } } @@ -342,7 +372,7 @@ class MyConvertedCode extends TerraformStack { Using `terraform import`, import CloudWatch Metric Alarm using the `alarmName`. For example: ```console -% terraform import aws_cloudwatch_metric_alarm.test alarm-12345 +% terraform import aws_cloudwatch_metric_alarm.example alarm-12345 ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/cognito_log_delivery_configuration.html.markdown b/website/docs/cdktf/typescript/r/cognito_log_delivery_configuration.html.markdown index 2cf63c615586..af621c2083cb 100644 --- a/website/docs/cdktf/typescript/r/cognito_log_delivery_configuration.html.markdown +++ b/website/docs/cdktf/typescript/r/cognito_log_delivery_configuration.html.markdown @@ -277,6 +277,32 @@ This resource exports the following attributes in addition to the arguments abov ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_cognito_log_delivery_configuration.example + identity = { + user_pool_id = "us-west-2_example123" + } +} + +resource "aws_cognito_log_delivery_configuration" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `userPoolId` (String) ID of the Cognito User Pool. + +#### Optional + +* `accountId` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import Cognito IDP (Identity Provider) Log Delivery Configuration using the `userPoolId`. For example: ```typescript @@ -307,4 +333,4 @@ Using `terraform import`, import Cognito IDP (Identity Provider) Log Delivery Co % terraform import aws_cognito_log_delivery_configuration.example us-west-2_example123 ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/dx_gateway.html.markdown b/website/docs/cdktf/typescript/r/dx_gateway.html.markdown index 6c890bc843ce..e6446225d176 100644 --- a/website/docs/cdktf/typescript/r/dx_gateway.html.markdown +++ b/website/docs/cdktf/typescript/r/dx_gateway.html.markdown @@ -59,6 +59,32 @@ This resource exports the following attributes in addition to the arguments abov ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_dx_gateway.example + identity = { + id = "abcd1234-dcba-5678-be23-cdef9876ab45" + } +} + +resource "aws_dx_gateway" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `id` (String) ID of the Direct Connect Gateway. + +#### Optional + +* `accountId` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import Direct Connect Gateways using the gateway `id`. For example: ```typescript @@ -75,7 +101,7 @@ class MyConvertedCode extends TerraformStack { super(scope, name); DxGateway.generateConfigForImport( this, - "test", + "example", "abcd1234-dcba-5678-be23-cdef9876ab45" ); } @@ -86,7 +112,7 @@ class MyConvertedCode extends TerraformStack { Using `terraform import`, import Direct Connect Gateways using the gateway `id`. For example: ```console -% terraform import aws_dx_gateway.test abcd1234-dcba-5678-be23-cdef9876ab45 +% terraform import aws_dx_gateway.example abcd1234-dcba-5678-be23-cdef9876ab45 ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/ecr_lifecycle_policy.html.markdown b/website/docs/cdktf/typescript/r/ecr_lifecycle_policy.html.markdown index fa96b0d9f281..9e0db95c5c6a 100644 --- a/website/docs/cdktf/typescript/r/ecr_lifecycle_policy.html.markdown +++ b/website/docs/cdktf/typescript/r/ecr_lifecycle_policy.html.markdown @@ -126,8 +126,8 @@ resource "aws_ecr_lifecycle_policy" "example" { #### Optional -- `accountId` (String) AWS Account where this resource is managed. -- `region` (String) Region where this resource is managed. +* `accountId` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import ECR Lifecycle Policy using the name of the repository. For example: @@ -155,4 +155,4 @@ Using `terraform import`, import ECR Lifecycle Policy using the name of the repo % terraform import aws_ecr_lifecycle_policy.example tf-example ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/ecr_repository.html.markdown b/website/docs/cdktf/typescript/r/ecr_repository.html.markdown index f69894ceceed..b6db45d5b1b1 100644 --- a/website/docs/cdktf/typescript/r/ecr_repository.html.markdown +++ b/website/docs/cdktf/typescript/r/ecr_repository.html.markdown @@ -136,8 +136,8 @@ resource "aws_ecr_repository" "service" { #### Optional -- `accountId` (String) AWS Account where this resource is managed. -- `region` (String) Region where this resource is managed. +* `accountId` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import ECR Repositories using the `name`. For example: @@ -165,4 +165,4 @@ Using `terraform import`, import ECR Repositories using the `name`. For example: % terraform import aws_ecr_repository.service test-service ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/ecr_repository_policy.html.markdown b/website/docs/cdktf/typescript/r/ecr_repository_policy.html.markdown index bd285f9755ad..0876a0bebdee 100644 --- a/website/docs/cdktf/typescript/r/ecr_repository_policy.html.markdown +++ b/website/docs/cdktf/typescript/r/ecr_repository_policy.html.markdown @@ -124,8 +124,8 @@ resource "aws_ecr_repository_policy" "example" { #### Optional -- `accountId` (String) AWS Account where this resource is managed. -- `region` (String) Region where this resource is managed. +* `accountId` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import ECR Repository Policy using the repository name. For example: @@ -153,4 +153,4 @@ Using `terraform import`, import ECR Repository Policy using the repository name % terraform import aws_ecr_repository_policy.example example ``` - \ 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 3cff26a48aef..f538753c2639 100644 --- a/website/docs/cdktf/typescript/r/ecs_service.html.markdown +++ b/website/docs/cdktf/typescript/r/ecs_service.html.markdown @@ -337,6 +337,7 @@ The `lifecycleHook` configuration block supports the following: * `hookTargetArn` - (Required) ARN of the Lambda function to invoke for the lifecycle hook. * `roleArn` - (Required) ARN of the IAM role that grants the service permission to invoke the Lambda function. * `lifecycleStages` - (Required) Stages during the deployment when the hook should be invoked. Valid values: `RECONCILE_SERVICE`, `PRE_SCALE_UP`, `POST_SCALE_UP`, `TEST_TRAFFIC_SHIFT`, `POST_TEST_TRAFFIC_SHIFT`, `PRODUCTION_TRAFFIC_SHIFT`, `POST_PRODUCTION_TRAFFIC_SHIFT`. +* `hookDetails` - (Optional) Custom parameters that Amazon ECS will pass to the hook target invocations (such as a Lambda function). ### deployment_circuit_breaker @@ -548,4 +549,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/iam_role.html.markdown b/website/docs/cdktf/typescript/r/iam_role.html.markdown index d1197ca97394..21bf8b865f7a 100644 --- a/website/docs/cdktf/typescript/r/iam_role.html.markdown +++ b/website/docs/cdktf/typescript/r/iam_role.html.markdown @@ -317,6 +317,31 @@ This resource exports the following attributes in addition to the arguments abov ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_iam_role.example + identity = { + name = "developer_name" + } +} + +resource "aws_iam_role" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `name` (String) Name of the IAM role. + +#### Optional + +* `accountId` (String) AWS Account where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import IAM Roles using the `name`. For example: ```typescript @@ -331,7 +356,7 @@ import { IamRole } from "./.gen/providers/aws/iam-role"; class MyConvertedCode extends TerraformStack { constructor(scope: Construct, name: string) { super(scope, name); - IamRole.generateConfigForImport(this, "developer", "developer_name"); + IamRole.generateConfigForImport(this, "example", "developer_name"); } } @@ -340,7 +365,7 @@ class MyConvertedCode extends TerraformStack { Using `terraform import`, import IAM Roles using the `name`. For example: ```console -% terraform import aws_iam_role.developer developer_name +% terraform import aws_iam_role.example developer_name ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/iam_role_policy.html.markdown b/website/docs/cdktf/typescript/r/iam_role_policy.html.markdown index badb6e8d0717..6a0f8c568f63 100644 --- a/website/docs/cdktf/typescript/r/iam_role_policy.html.markdown +++ b/website/docs/cdktf/typescript/r/iam_role_policy.html.markdown @@ -89,6 +89,33 @@ This resource exports no additional attributes. ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_iam_role_policy.example + identity = { + role = "role_of_mypolicy_name" + name = "mypolicy_name" + } +} + +resource "aws_iam_role_policy" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `role` (String) Name of the IAM role. +* `name` (String) Name of the role policy. + +#### Optional + +* `accountId` (String) AWS Account where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import IAM Role Policies using the `role_name:role_policy_name`. For example: ```typescript @@ -105,7 +132,7 @@ class MyConvertedCode extends TerraformStack { super(scope, name); IamRolePolicy.generateConfigForImport( this, - "mypolicy", + "example", "role_of_mypolicy_name:mypolicy_name" ); } @@ -116,7 +143,7 @@ class MyConvertedCode extends TerraformStack { Using `terraform import`, import IAM Role Policies using the `role_name:role_policy_name`. For example: ```console -% terraform import aws_iam_role_policy.mypolicy role_of_mypolicy_name:mypolicy_name +% terraform import aws_iam_role_policy.example role_of_mypolicy_name:mypolicy_name ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/iam_role_policy_attachment.html.markdown b/website/docs/cdktf/typescript/r/iam_role_policy_attachment.html.markdown index 1ecb373266cb..9025052b6778 100644 --- a/website/docs/cdktf/typescript/r/iam_role_policy_attachment.html.markdown +++ b/website/docs/cdktf/typescript/r/iam_role_policy_attachment.html.markdown @@ -89,6 +89,33 @@ This resource exports no additional attributes. ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_iam_role_policy_attachment.example + identity = { + role = "test-role" + policy_arn = "arn:aws:iam::xxxxxxxxxxxx:policy/test-policy" + } +} + +resource "aws_iam_role_policy_attachment" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `role` (String) Name of the IAM role. +* `policyArn` (String) ARN of the IAM policy. + +#### Optional + +* `accountId` (String) AWS Account where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import IAM role policy attachments using the role name and policy arn separated by `/`. For example: ```typescript @@ -105,7 +132,7 @@ class MyConvertedCode extends TerraformStack { super(scope, name); IamRolePolicyAttachment.generateConfigForImport( this, - "testAttach", + "example", "test-role/arn:aws:iam::xxxxxxxxxxxx:policy/test-policy" ); } @@ -116,7 +143,7 @@ class MyConvertedCode extends TerraformStack { Using `terraform import`, import IAM role policy attachments using the role name and policy arn separated by `/`. For example: ```console -% terraform import aws_iam_role_policy_attachment.test-attach test-role/arn:aws:iam::xxxxxxxxxxxx:policy/test-policy +% terraform import aws_iam_role_policy_attachment.example test-role/arn:aws:iam::xxxxxxxxxxxx:policy/test-policy ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/imagebuilder_image_recipe.html.markdown b/website/docs/cdktf/typescript/r/imagebuilder_image_recipe.html.markdown index 886bf74300ee..c0ec9da9d1c4 100644 --- a/website/docs/cdktf/typescript/r/imagebuilder_image_recipe.html.markdown +++ b/website/docs/cdktf/typescript/r/imagebuilder_image_recipe.html.markdown @@ -72,7 +72,7 @@ The following arguments are required: * `component` - (Required) Ordered configuration block(s) with components for the image recipe. Detailed below. * `name` - (Required) Name of the image recipe. -* `parentImage` - (Required) The image recipe uses this image as a base from which to build your customized image. The value can be the base image ARN or an AMI ID. +* `parentImage` - (Required) The image recipe uses this image as a base from which to build your customized image. The value can be the base image ARN, an AMI ID, or an SSM Parameter referencing the AMI. For an SSM Parameter, enter the prefix `ssm:`, followed by the parameter name or ARN. * `version` - (Required) The semantic version of the image recipe, which specifies the version in the following format, with numeric values in each position to indicate a specific version: major.minor.patch. For example: 1.0.0. The following arguments are optional: @@ -180,4 +180,4 @@ Using `terraform import`, import `aws_imagebuilder_image_recipe` resources using % terraform import aws_imagebuilder_image_recipe.example arn:aws:imagebuilder:us-east-1:123456789012:image-recipe/example/1.0.0 ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/instance.html.markdown b/website/docs/cdktf/typescript/r/instance.html.markdown index 567f8ba18d56..fc1356658586 100644 --- a/website/docs/cdktf/typescript/r/instance.html.markdown +++ b/website/docs/cdktf/typescript/r/instance.html.markdown @@ -597,8 +597,8 @@ resource "aws_instance" "example" { #### Optional -- `accountId` (String) AWS Account where this resource is managed. -- `region` (String) Region where this resource is managed. +* `accountId` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import instances using the `id`. For example: @@ -626,4 +626,4 @@ Using `terraform import`, import instances using the `id`. For example: % terraform import aws_instance.web i-12345678 ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/kms_alias.html.markdown b/website/docs/cdktf/typescript/r/kms_alias.html.markdown index 97cc8193d27b..25135c9c3fac 100644 --- a/website/docs/cdktf/typescript/r/kms_alias.html.markdown +++ b/website/docs/cdktf/typescript/r/kms_alias.html.markdown @@ -83,8 +83,8 @@ resource "aws_kms_alias" "example" { #### Optional -- `accountId` (String) AWS Account where this resource is managed. -- `region` (String) Region where this resource is managed. +* `accountId` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import KMS aliases using the `name`. For example: @@ -112,4 +112,4 @@ Using `terraform import`, import KMS aliases using the `name`. For example: % terraform import aws_kms_alias.a alias/my-key-alias ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/kms_key.html.markdown b/website/docs/cdktf/typescript/r/kms_key.html.markdown index a2d7da2c47a1..9c328001ed47 100644 --- a/website/docs/cdktf/typescript/r/kms_key.html.markdown +++ b/website/docs/cdktf/typescript/r/kms_key.html.markdown @@ -452,8 +452,8 @@ resource "aws_kms_key" "example" { #### Optional -- `accountId` (String) AWS Account where this resource is managed. -- `region` (String) Region where this resource is managed. +* `accountId` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import KMS Keys using the `id`. For example: @@ -485,4 +485,4 @@ Using `terraform import`, import KMS Keys using the `id`. For example: % terraform import aws_kms_key.a 1234abcd-12ab-34cd-56ef-1234567890ab ``` - \ 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 1dcf17b6f138..0e702b91fea1 100644 --- a/website/docs/cdktf/typescript/r/lambda_function.html.markdown +++ b/website/docs/cdktf/typescript/r/lambda_function.html.markdown @@ -660,7 +660,7 @@ The following arguments are optional: * `skipDestroy` - (Optional) Whether to retain the old version of a previously deployed Lambda Layer. Default is `false`. * `snapStart` - (Optional) Configuration block for snap start settings. [See below](#snap_start-configuration-block). * `sourceCodeHash` - (Optional) Base64-encoded SHA256 hash of the package file. Used to trigger updates when source code changes. -* `source_kms_key_arn` - (Optional) ARN of the AWS Key Management Service key used to encrypt the function's `.zip` deployment package. Conflicts with `imageUri`. +* `sourceKmsKeyArn` - (Optional) ARN of the AWS Key Management Service key used to encrypt the function's `.zip` deployment package. Conflicts with `imageUri`. * `tags` - (Optional) Key-value map of tags for the Lambda function. If configured with a provider [`defaultTags` configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-configuration-block) present, tags with matching keys will overwrite those defined at the provider-level. * `timeout` - (Optional) Amount of time your Lambda Function has to run in seconds. Defaults to 3. Valid between 1 and 900. * `tracingConfig` - (Optional) Configuration block for X-Ray tracing. [See below](#tracing_config-configuration-block). @@ -706,6 +706,8 @@ The following arguments are optional: ### vpc_config Configuration Block +~> **NOTE:** If `subnetIds`, `securityGroupIds` and `ipv6AllowedForDualStack` are empty then `vpcConfig` is considered to be empty or unset. + * `ipv6AllowedForDualStack` - (Optional) Whether to allow outbound IPv6 traffic on VPC functions connected to dual-stack subnets. Default: `false`. * `securityGroupIds` - (Required) List of security group IDs associated with the Lambda function. * `subnetIds` - (Required) List of subnet IDs associated with the Lambda function. @@ -738,6 +740,32 @@ This resource exports the following attributes in addition to the arguments abov ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_lambda_function.example + identity = { + function_name = "example" + } +} + +resource "aws_lambda_function" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `functionName` (String) Name of the Lambda function. + +#### Optional + +* `accountId` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import Lambda Functions using the `functionName`. For example: ```typescript @@ -764,4 +792,4 @@ Using `terraform import`, import Lambda Functions using the `functionName`. For % terraform import aws_lambda_function.example example ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/lambda_permission.html.markdown b/website/docs/cdktf/typescript/r/lambda_permission.html.markdown index 79da5f2b3b89..1478d706e238 100644 --- a/website/docs/cdktf/typescript/r/lambda_permission.html.markdown +++ b/website/docs/cdktf/typescript/r/lambda_permission.html.markdown @@ -330,6 +330,35 @@ This resource exports no additional attributes. ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_lambda_permission.example + identity = { + function_name = "my_test_lambda_function" + statement_id = "AllowExecutionFromCloudWatch" + } +} + +resource "aws_lambda_permission" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `functionName` (String) Lambda function name. +* `statementId` (String) Statement ID for the permission. + +#### Optional + +* `accountId` (String) AWS Account where this resource is managed. +* `qualifier` (String) Qualifier for the function version or alias. +* `region` (String) Region where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import Lambda permission statements using function_name/statement_id with an optional qualifier. For example: ```typescript @@ -346,7 +375,7 @@ class MyConvertedCode extends TerraformStack { super(scope, name); LambdaPermission.generateConfigForImport( this, - "testLambdaPermission", + "example", "my_test_lambda_function/AllowExecutionFromCloudWatch" ); } @@ -370,7 +399,7 @@ class MyConvertedCode extends TerraformStack { super(scope, name); LambdaPermission.generateConfigForImport( this, - "testLambdaPermission", + "example", "my_test_lambda_function:qualifier_name/AllowExecutionFromCloudWatch" ); } @@ -382,7 +411,7 @@ For backwards compatibility, the following legacy `terraform import` commands ar ```console % terraform import aws_lambda_permission.example my_test_lambda_function/AllowExecutionFromCloudWatch -% terraform import aws_lambda_permission.test_lambda_permission my_test_lambda_function:qualifier_name/AllowExecutionFromCloudWatch +% terraform import aws_lambda_permission.example my_test_lambda_function:qualifier_name/AllowExecutionFromCloudWatch ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/odb_cloud_autonomous_vm_cluster.html.markdown b/website/docs/cdktf/typescript/r/odb_cloud_autonomous_vm_cluster.html.markdown new file mode 100644 index 000000000000..8984536d5ca6 --- /dev/null +++ b/website/docs/cdktf/typescript/r/odb_cloud_autonomous_vm_cluster.html.markdown @@ -0,0 +1,220 @@ +--- +subcategory: "Oracle Database@AWS" +layout: "AWS: aws_odb_cloud_autonomous_vm_cluster" +page_title: "AWS: aws_odb_cloud_autonomous_vm_cluster" +description: |- + Terraform resource managing cloud autonomous vm cluster in AWS for Oracle Database@AWS. +--- + + + +# Resource: aws_odb_cloud_autonomous_vm_cluster + +Terraform resource managing cloud autonomous vm cluster in AWS for Oracle Database@AWS. + +You can find out more about Oracle Database@AWS from [User Guide](https://docs.aws.amazon.com/odb/latest/UserGuide/what-is-odb.html). + +## 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 { TerraformStack } from "cdktf"; +/* + * Provider bindings are generated by running `cdktf get`. + * See https://cdk.tf/provider-generation for more details. + */ +import { OdbCloudAutonomousVmCluster } from "./.gen/providers/aws/odb-cloud-autonomous-vm-cluster"; +class MyConvertedCode extends TerraformStack { + constructor(scope: Construct, name: string) { + super(scope, name); + new OdbCloudAutonomousVmCluster(this, "avmc_with_all_params", { + autonomousDataStorageSizeInTbs: 5, + cloudExadataInfrastructureId: + "", + cpuCoreCountPerNode: 40, + dbServers: ["", ""], + description: "my first avmc", + displayName: "Ofake_my avmc", + licenseModel: "LICENSE_INCLUDED", + maintenanceWindow: [ + { + daysOfWeek: [ + { + name: "MONDAY", + }, + { + name: "TUESDAY", + }, + ], + hoursOfDay: [4, 16], + leadTimeInWeeks: 3, + months: [ + { + name: "FEBRUARY", + }, + { + name: "MAY", + }, + { + name: "AUGUST", + }, + { + name: "NOVEMBER", + }, + ], + preference: "CUSTOM_PREFERENCE", + weeksOfMonth: [2, 4], + }, + ], + memoryPerOracleComputeUnitInGbs: 2, + odbNetworkId: "", + scanListenerPortNonTls: 1024, + scanListenerPortTls: 8561, + tags: { + env: "dev", + }, + timeZone: "UTC", + totalContainerDatabases: 1, + }); + new OdbCloudAutonomousVmCluster(this, "avmc_with_minimum_parameters", { + autonomousDataStorageSizeInTbs: 5, + cloudExadataInfrastructureId: "", + cpuCoreCountPerNode: 40, + dbServers: [""], + displayName: "Ofake-avmc-my_avmc", + licenseModel: "LICENSE_INCLUDED", + maintenanceWindow: [ + { + preference: "NO_PREFERENCE", + }, + ], + memoryPerOracleComputeUnitInGbs: 2, + odbNetworkId: "", + scanListenerPortNonTls: 1024, + scanListenerPortTls: 8561, + totalContainerDatabases: 1, + }); + } +} + +``` + +## Argument Reference + +The following arguments are required: + +* `cloudExadataInfrastructureId` - (Required) Exadata infrastructure id. Changing this will force terraform to create new resource. +* `autonomousDataStorageSizeInTbs` - (Required) The data storage size allocated for Autonomous Databases in the Autonomous VM cluster, in TB. Changing this will force terraform to create new resource. +* `cpuCoreCountPerNode` - (Required) The number of CPU cores enabled per node in the Autonomous VM cluster. Changing this will force terraform to create new resource. +* `dbServers` - (Required) The database servers in the Autonomous VM cluster. Changing this will force terraform to create new resource. +* `displayName` - (Required) The display name of the Autonomous VM cluster. Changing this will force terraform to create new resource. +* `memoryPerOracleComputeUnitInGbs` - (Required) The amount of memory allocated per Oracle Compute Unit, in GB. Changing this will force terraform to create new resource. +* `odbNetworkId` - (Required) The unique identifier of the ODB network associated with this Autonomous VM Cluster. Changing this will force terraform to create new resource. +* `scanListenerPortNonTls` - (Required) The SCAN listener port for non-TLS (TCP) protocol. The default is 1521. Changing this will force terraform to create new resource. +* `scanListenerPortTls` - (Required) The SCAN listener port for TLS (TCP) protocol. The default is 2484. Changing this will force terraform to create new resource. +* `totalContainerDatabases` - (Required) The total number of Autonomous Container Databases that can be created with the allocated local storage. Changing this will force terraform to create new resource. +* `maintenanceWindow` - (Required) The maintenance window of the Autonomous VM cluster. Changing this will force terraform to create new resource. + +The following arguments are optional: + +* `description` - (Optional) The description of the Autonomous VM cluster. +* `isMtlsEnabledVmCluster` - (Optional) Indicates whether mutual TLS (mTLS) authentication is enabled for the Autonomous VM cluster. Changing this will force terraform to create new resource. +* `licenseModel` - (Optional) The license model for the Autonomous VM cluster. Valid values are LICENSE_INCLUDED or BRING_YOUR_OWN_LICENSE. Changing this will force terraform to create new resource. +* `timeZone` - (Optional) The time zone of the Autonomous VM cluster. Changing this will force terraform to create new resource. +* `region` - (Optional) Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the [provider configuration](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#aws-configuration-reference). +* `tags` - (Optional) A map of tags to assign to the exadata infrastructure. If configured with a provider [`defaultTags` configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-configuration-block) present, tags with matching keys will overwrite those defined at the provider-level. + +### maintenance_window + +* `preference` - (Required) The preference for the maintenance window scheduling. Changing this will force terraform to create new resource. +* `daysOfWeek` - (Optional) The days of the week when maintenance can be performed. Changing this will force terraform to create new resource. +* `hoursOfDay` - (Optional) The hours of the day when maintenance can be performed. Changing this will force terraform to create new resource. +* `leadTimeInWeeks` - (Optional) The lead time in weeks before the maintenance window. Changing this will force terraform to create new resource. +* `months` - (Optional) The months when maintenance can be performed. Changing this will force terraform to create new resource. +* `weeksOfMonth` - (Optional) Indicates whether to skip release updates during maintenance. Changing this will force terraform to create new resource. + +## Attribute Reference + +This resource exports the following attributes in addition to the arguments above: + +* `arn` - The Amazon Resource Name (ARN) for the Exadata infrastructure. +* `autonomousDataStoragePercentage` - The progress of the current operation on the Autonomous VM cluster, as a percentage. +* `availableAutonomousDataStorageSizeInTbs` - The available data storage space for Autonomous Databases in the Autonomous VM cluster, in TB. +* `availableContainerDatabases` - The number of Autonomous CDBs that you can create with the currently available storage. +* `availableCpus` - The number of CPU cores available for allocation to Autonomous Databases. +* `computeModel` - The compute model of the Autonomous VM cluster: ECPU or OCPU. +* `cpuCoreCount` - The total number of CPU cores in the Autonomous VM cluster. +* `cpuPercentage` - The percentage of total CPU cores currently in use in the Autonomous VM cluster. +* `createdAt` - The date and time when the Autonomous VM cluster was created. +* `dataStorageSizeInGbs` - The total data storage allocated to the Autonomous VM cluster, in GB. +* `dataStorageSizeInTbs` - The total data storage allocated to the Autonomous VM cluster, in TB. +* `odbNodeStorageSizeInGbs` - The local node storage allocated to the Autonomous VM cluster, in gigabytes (GB). +* `domain` - The domain name of the Autonomous VM cluster. +* `exadataStorageInTbsLowestScaledValue` - The minimum value to which you can scale down the Exadata storage, in TB. +* `hostname` - The hostname of the Autonomous VM cluster. +* `licenseModel` - The license model for the Autonomous VM cluster. Valid values are LICENSE_INCLUDED or BRING_YOUR_OWN_LICENSE. +* `maxAcdsLowestScaledValue` - The minimum value to which you can scale down the maximum number of Autonomous CDBs. +* `memorySizeInGbs` - The total amount of memory allocated to the Autonomous VM cluster, in gigabytes(GB). +* `nodeCount` - The number of database server nodes in the Autonomous VM cluster. +* `nonProvisionableAutonomousContainerDatabases` - The number of Autonomous CDBs that can't be provisioned because of resource constraints. +* `ociResourceAnchorName` - The name of the OCI resource anchor associated with this Autonomous VM cluster. +* `ociUrl` - The URL for accessing the OCI console page for this Autonomous VM cluster. +* `ocid` - The Oracle Cloud Identifier (OCID) of the Autonomous VM cluster. +* `percentProgress` - The progress of the current operation on the Autonomous VM cluster, as a percentage. +* `provisionableAutonomousContainerDatabases` - The number of Autonomous CDBs that can be provisioned in the Autonomous VM cluster. +* `provisionedAutonomousContainerDatabases` - The number of Autonomous CDBs currently provisioned in the Autonomous VM cluster. +* `provisionedCpus` - The number of CPUs provisioned in the Autonomous VM cluster. +* `reclaimableCpus` - The number of CPU cores that can be reclaimed from terminated or scaled-down Autonomous Databases. +* `reservedCpus` - The number of CPU cores reserved for system operations and redundancy. +* `shape` - The shape of the Exadata infrastructure for the Autonomous VM cluster. +* `status` - The status of the Autonomous VM cluster. Possible values include CREATING, AVAILABLE, UPDATING, DELETING, DELETED, FAILED. +* `statusReason` - Additional information about the current status of the Autonomous VM cluster. +* `timeZone` - The time zone of the Autonomous VM cluster. +* `timeOrdsCertificateExpires` - The expiration date and time of the ORDS certificate. +* `timeDatabaseSslCertificateExpires` - The expiration date and time of the database SSL certificate. +* `tagsAll` - The combined set of user-defined and provider-defined tags. + +## Timeouts + +[Configuration options](https://developer.hashicorp.com/terraform/language/resources/syntax#operation-timeouts): + +* `create` - (Default `24h`) +* `update` - (Default `24h`) +* `delete` - (Default `24h`) + +## Import + +In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import OpenSearch Ingestion Pipeline using the `id`. 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 { OdbCloudAutonomousVmCluster } from "./.gen/providers/aws/odb-cloud-autonomous-vm-cluster"; +class MyConvertedCode extends TerraformStack { + constructor(scope: Construct, name: string) { + super(scope, name); + OdbCloudAutonomousVmCluster.generateConfigForImport( + this, + "example", + "example" + ); + } +} + +``` + +Using `terraform import`, import cloud autonomous vm cluster `id`. For example: + +```console +% terraform import aws_odb_cloud_autonomous_vm_cluster.example example +``` + + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/odb_cloud_exadata_infrastructure.html.markdown b/website/docs/cdktf/typescript/r/odb_cloud_exadata_infrastructure.html.markdown new file mode 100644 index 000000000000..f03c3077f636 --- /dev/null +++ b/website/docs/cdktf/typescript/r/odb_cloud_exadata_infrastructure.html.markdown @@ -0,0 +1,191 @@ +--- +subcategory: "Oracle Database@AWS" +layout: "aws" +page_title: "AWS: aws_odb_cloud_exadata_infrastructure" +description: |- + Terraform resource for managing exadata infrastructure resource for Oracle Database@AWS. +--- + + + +# Resource: aws_odb_cloud_exadata_infrastructure + +Terraform resource for managing exadata infrastructure resource in AWS for Oracle Database@AWS. + +## 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 { TerraformStack } from "cdktf"; +/* + * Provider bindings are generated by running `cdktf get`. + * See https://cdk.tf/provider-generation for more details. + */ +import { OdbCloudExadataInfrastructure } from "./.gen/providers/aws/odb-cloud-exadata-infrastructure"; +class MyConvertedCode extends TerraformStack { + constructor(scope: Construct, name: string) { + super(scope, name); + new OdbCloudExadataInfrastructure(this, "example", { + availabilityZoneId: "use1-az6", + computeCount: 2, + customerContactsToSendToOci: [ + { + email: "abc@example.com", + }, + { + email: "def@example.com", + }, + ], + databaseServerType: "X11M", + displayName: "my-exa-infra", + maintenanceWindow: [ + { + customActionTimeoutInMins: 16, + daysOfWeek: [ + { + name: "MONDAY", + }, + { + name: "TUESDAY", + }, + ], + hoursOfDay: [11, 16], + isCustomActionTimeoutEnabled: true, + leadTimeInWeeks: 3, + months: [ + { + name: "FEBRUARY", + }, + { + name: "MAY", + }, + { + name: "AUGUST", + }, + { + name: "NOVEMBER", + }, + ], + patchingMode: "ROLLING", + preference: "CUSTOM_PREFERENCE", + weeksOfMonth: [2, 4], + }, + ], + shape: "Exadata.X11M", + storageCount: 3, + storageServerType: "X11M-HC", + tags: { + env: "dev", + }, + }); + } +} + +``` + +## Argument Reference + +The following arguments are required: + +* `displayName` - (Required) The user-friendly name for the Exadata infrastructure. Changing this will force terraform to create a new resource. +* `shape` - (Required) The model name of the Exadata infrastructure. Changing this will force terraform to create new resource. +* `storageCount` - (Required) The number of storage servers that are activated for the Exadata infrastructure. Changing this will force terraform to create new resource. +* `computeCount` - (Required) The number of compute instances that the Exadata infrastructure is located. Changing this will force terraform to create new resource. +* `availabilityZoneId` - (Required) The AZ ID of the AZ where the Exadata infrastructure is located. Changing this will force terraform to create new resource. + +The following arguments are optional: + +* `customerContactsToSendToOci` - (Optional) The email addresses of contacts to receive notification from Oracle about maintenance updates for the Exadata infrastructure. Changing this will force terraform to create new resource. +* `availabilityZone`: (Optional) The name of the Availability Zone (AZ) where the Exadata infrastructure is located. Changing this will force terraform to create new resource. +* `databaseServerType` - (Optional) The database server model type of the Exadata infrastructure. For the list of valid model names, use the ListDbSystemShapes operation. This is a mandatory parameter for Exadata.X11M system shape. Changing this will force terraform to create new resource. +* `storageServerType` - (Optional) The storage server model type of the Exadata infrastructure. For the list of valid model names, use the ListDbSystemShapes operation. This is a mandatory parameter for Exadata.X11M system shape. Changing this will force terraform to create new resource. +* `tags` - (Optional) A map of tags to assign to the exadata infrastructure. If configured with a provider [`defaultTags` configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-configuration-block) present, tags with matching keys will overwrite those defined at the provider-level. +* `region` - (Optional) Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the [provider configuration](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#aws-configuration-reference). + +### maintenance_window + +* `customActionTimeoutInMins` - (Required) The custom action timeout in minutes for the maintenance window. +* `isCustomActionTimeoutEnabled` - (Required) ndicates whether custom action timeout is enabled for the maintenance window. +* `patchingMode` - (Required) The patching mode for the maintenance window. +* `preference` - (Required) The preference for the maintenance window scheduling. +* `daysOfWeek` - (Optional) The days of the week when maintenance can be performed. +* `hoursOfDay` - (Optional) The hours of the day when maintenance can be performed. +* `leadTimeInWeeks` - (Optional) The lead time in weeks before the maintenance window. +* `months` - (Optional) The months when maintenance can be performed. +* `weeksOfMonth` - (Optional) The weeks of the month when maintenance can be performed. + +## Attribute Reference + +This resource exports the following attributes in addition to the arguments above: + +* `id` - Unique identifier for the pipeline. +* `arn` - Amazon Resource Name (ARN) of the pipeline. +* `activatedStorageCount` - The number of storage servers requested for the Exadata infrastructure. +* `additionalStorageCount` - The number of storage servers requested for the Exadata infrastructure. +* `availableStorageSizeInGbs` - The amount of available storage, in gigabytes (GB), for the Exadata infrastructure. +* `cpuCount` - The total number of CPU cores that are allocated to the Exadata infrastructure. +* `dataStorageSizeInTbs` - The size of the Exadata infrastructure's data disk group, in terabytes (TB). +* `dbNodeStorageSizeInGbs` - The size of the Exadata infrastructure's local node storage, in gigabytes (GB). +* `dbServerVersion` - The software version of the database servers (dom0) in the Exadata infrastructure. +* `lastMaintenanceRunId` - The Oracle Cloud Identifier (OCID) of the last maintenance run for the Exadata infrastructure. +* `maxCpuCount` - The total number of CPU cores available on the Exadata infrastructure. +* `maxDataStorageInTbs` - The total amount of data disk group storage, in terabytes (TB), that's available on the Exadata infrastructure. +* `maxDbNodeStorageSizeInGbs` - The total amount of local node storage, in gigabytes (GB), that's available on the Exadata infrastructure. +* `maxMemoryInGbs` - The total amount of memory in gigabytes (GB) available on the Exadata infrastructure. +* `monthlyDbServerVersion` - The monthly software version of the database servers in the Exadata infrastructure. +* `monthlyStorageServerVersion` - The monthly software version of the storage servers installed on the Exadata infrastructure. +* `nextMaintenanceRunId` - The OCID of the next maintenance run for the Exadata infrastructure. +* `ocid` - The OCID of the Exadata infrastructure. +* `ociResourceAnchorName` - The name of the OCI resource anchor for the Exadata infrastructure. +* `percentProgress` - The amount of progress made on the current operation on the Exadata infrastructure, expressed as a percentage. +* `status` - The current status of the Exadata infrastructure. +* `statusReason` - Additional information about the status of the Exadata infrastructure. +* `storageServerVersion` - The software version of the storage servers on the Exadata infrastructure. +* `totalStorageSizeInGbs` - The total amount of storage, in gigabytes (GB), on the Exadata infrastructure. +* `createdAt` - The time when the Exadata infrastructure was created. +* `computeModel` - The OCI model compute model used when you create or clone an instance: ECPU or OCPU. + +## Timeouts + +[Configuration options](https://developer.hashicorp.com/terraform/language/resources/syntax#operation-timeouts): + +* `create` - (Default `24h`) +* `update` - (Default `24h`) +* `delete` - (Default `24h`) + +## Import + +In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import OpenSearch Ingestion Pipeline using the `id`. 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 { OdbCloudExadataInfrastructure } from "./.gen/providers/aws/odb-cloud-exadata-infrastructure"; +class MyConvertedCode extends TerraformStack { + constructor(scope: Construct, name: string) { + super(scope, name); + OdbCloudExadataInfrastructure.generateConfigForImport( + this, + "example", + "example" + ); + } +} + +``` + +Using `terraform import`, import Exadata Infrastructure using the `id`. For example: + +```console +% terraform import aws_odb_cloud_exadata_infrastructure.example example +``` + + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/odb_cloud_vm_cluster.html.markdown b/website/docs/cdktf/typescript/r/odb_cloud_vm_cluster.html.markdown new file mode 100644 index 000000000000..d42a620f7b26 --- /dev/null +++ b/website/docs/cdktf/typescript/r/odb_cloud_vm_cluster.html.markdown @@ -0,0 +1,183 @@ +--- +subcategory: "Oracle Database@AWS" +layout: "AWS: aws_odb_cloud_vm_cluster" +page_title: "AWS: aws_odb_cloud_vm_cluster" +description: |- + Terraform resource for managing cloud vm cluster resource in AWS for Oracle Database@AWS. +--- + + + +# Resource: aws_odb_cloud_vm_cluster + +Terraform data source for Exadata Infrastructure resource in AWS for Oracle Database@AWS. + +You can find out more about Oracle Database@AWS from [User Guide](https://docs.aws.amazon.com/odb/latest/UserGuide/what-is-odb.html). + +## 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 { TerraformStack } from "cdktf"; +/* + * Provider bindings are generated by running `cdktf get`. + * See https://cdk.tf/provider-generation for more details. + */ +import { OdbCloudVmCluster } from "./.gen/providers/aws/odb-cloud-vm-cluster"; +class MyConvertedCode extends TerraformStack { + constructor(scope: Construct, name: string) { + super(scope, name); + new OdbCloudVmCluster(this, "with_all_parameters", { + cloudExadataInfrastructureId: "exa_gjrmtxl4qk", + clusterName: "julia-13", + cpuCoreCount: 6, + dataCollectionOptions: [ + { + isDiagnosticsEventsEnabled: true, + isHealthMonitoringEnabled: true, + isIncidentLogsEnabled: true, + }, + ], + dataStorageSizeInTbs: 20, + dbNodeStorageSizeInGbs: 120, + dbServers: ["my-dbserver-1", "my-db-server-2"], + displayName: "my-vmc", + giVersion: "23.0.0.0", + hostnamePrefix: "apollo12", + isLocalBackupEnabled: true, + isSparseDiskgroupEnabled: true, + licenseModel: "LICENSE_INCLUDED", + memorySizeInGbs: 60, + odbNetworkId: "odbnet_3l9st3litg", + scanListenerPortTcp: 1521, + sshPublicKeys: ["my-ssh-key"], + tags: { + env: "dev", + }, + timezone: "UTC", + }); + new OdbCloudVmCluster(this, "with_minimum_parameter", { + cloudExadataInfrastructureId: "exa_gjrmtxl4qk", + cpuCoreCount: 6, + dataCollectionOptions: [ + { + isDiagnosticsEventsEnabled: false, + isHealthMonitoringEnabled: false, + isIncidentLogsEnabled: false, + }, + ], + dataStorageSizeInTbs: 20, + dbNodeStorageSizeInGbs: 120, + dbServers: ["db-server-1", "db-server-2"], + displayName: "my-exa-infra", + giVersion: "23.0.0.0", + hostnamePrefix: "apollo12", + isLocalBackupEnabled: true, + isSparseDiskgroupEnabled: true, + licenseModel: "LICENSE_INCLUDED", + memorySizeInGbs: 60, + odbNetworkId: "odbnet_3l9st3litg", + sshPublicKeys: ["public-ssh-key"], + }); + } +} + +``` + +## Argument Reference + +The following arguments are required: + +* `cloudExadataInfrastructureId` - (Required) The unique identifier of the Exadata infrastructure for this VM cluster. Changing this will create a new resource. +* `cpuCoreCount` - (Required) The number of CPU cores to enable on the VM cluster. Changing this will create a new resource. +* `dbServers` - (Required) The list of database servers for the VM cluster. Changing this will create a new resource. +* `displayName` - (Required) A user-friendly name for the VM cluster. Changing this will create a new resource. +* `giVersion` - (Required) A valid software version of Oracle Grid Infrastructure (GI). To get the list of valid values, use the ListGiVersions operation and specify the shape of the Exadata infrastructure. Example: 19.0.0.0 Changing this will create a new resource. +* `hostnamePrefix` - (Required) The host name prefix for the VM cluster. Constraints: - Can't be "localhost" or "hostname". - Can't contain "-version". - The maximum length of the combined hostname and domain is 63 characters. - The hostname must be unique within the subnet. Changing this will create a new resource. +* `odbNetworkId` - (Required) The unique identifier of the ODB network for the VM cluster. Changing this will create a new resource. +* `sshPublicKeys` - (Required) The public key portion of one or more key pairs used for SSH access to the VM cluster. Changing this will create a new resource. +* `dataCollectionOptions` - (Required) The set of preferences for the various diagnostic collection options for the VM cluster. + +The following arguments are optional: + +* `clusterName` - (Optional) The name of the Grid Infrastructure (GI) cluster. Changing this will create a new resource. +* `dataStorageSizeInTbs` - (Optional) The size of the data disk group, in terabytes (TBs), to allocate for the VM cluster. Changing this will create a new resource. +* `dbNodeStorageSizeInGbs` - (Optional) The amount of local node storage, in gigabytes (GBs), to allocate for the VM cluster. Changing this will create a new resource. +* `isLocalBackupEnabled` - (Optional) Specifies whether to enable database backups to local Exadata storage for the VM cluster. Changing this will create a new resource. +* `isSparseDiskgroupEnabled` - (Optional) Specifies whether to create a sparse disk group for the VM cluster. Changing this will create a new resource. +* `licenseModel` - (Optional) The Oracle license model to apply to the VM cluster. Default: LICENSE_INCLUDED. Changing this will create a new resource. +* `memorySizeInGbs` - (Optional) The amount of memory, in gigabytes (GBs), to allocate for the VM cluster. Changing this will create a new resource. +* `scanListenerPortTcp` - (Optional) The port number for TCP connections to the single client access name (SCAN) listener. Valid values: 1024–8999, except 2484, 6100, 6200, 7060, 7070, 7085, and 7879. Default: 1521. Changing this will create a new resource. +* `timezone` - (Optional) The configured time zone of the VM cluster. Changing this will create a new resource. +* `region` - (Optional) Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the [provider configuration](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#aws-configuration-reference). +* `tags` - (Optional) A map of tags to assign to the exadata infrastructure. If configured with a provider [`defaultTags` configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-configuration-block) present, tags with matching keys will overwrite those defined at the provider-level. + +## Attribute Reference + +This data source exports the following attributes in addition to the arguments above: + +* `arn` - The Amazon Resource Name (ARN) for the cloud vm cluster. +* `diskRedundancy` - The type of redundancy for the VM cluster: NORMAL (2-way) or HIGH (3-way). +* `AttrDomain` - The domain name associated with the VM cluster. +* `hostnamePrefixComputed` - The host name for the VM cluster. Constraints: - Can't be "localhost" or "hostname". - Can't contain "-version". - The maximum length of the combined hostname and domain is 63 characters. - The hostname must be unique within the subnet. This member is required. Changing this will create a new resource. +* `iormConfigCache` - The Exadata IORM (I/O Resource Manager) configuration cache details for the VM cluster. +* `lastUpdateHistoryEntryId` - The OCID of the most recent maintenance update history entry. +* `listenerPort` - The listener port number configured on the VM cluster. +* `nodeCount` - The total number of nodes in the VM cluster. +* `ocid` - The OCID (Oracle Cloud Identifier) of the VM cluster. +* `ociResourceAnchorName` - The name of the OCI resource anchor associated with the VM cluster. +* `ociUrl` - The HTTPS link to the VM cluster resource in OCI. +* `percentProgress` - The percentage of progress made on the current operation for the VM cluster. +* `scanDnsName` - The fully qualified domain name (FQDN) for the SCAN IP addresses associated with the VM cluster. +* `scanDnsRecordId` - The OCID of the DNS record for the SCAN IPs linked to the VM cluster. +* `scanIpIds` - The list of OCIDs for SCAN IP addresses associated with the VM cluster. +* `shape` - The hardware model name of the Exadata infrastructure running the VM cluster. +* `status` - The current lifecycle status of the VM cluster. +* `statusReason` - Additional information regarding the current status of the VM cluster. +* `storageSizeInGbs` - The local node storage allocated to the VM cluster, in gigabytes (GB). +* `systemVersion` - The operating system version of the image chosen for the VM cluster. +* `vipIds` - The virtual IP (VIP) addresses assigned to the VM cluster. CRS assigns one VIP per node for failover support. +* `createdAt` - The timestamp when the VM cluster was created. +* `computeModel` - The compute model used when the instance is created or cloned — either ECPU or OCPU. ECPU is a virtualized compute unit; OCPU is a physical processor core with hyper-threading. +* `tagsAll` - The combined set of user-defined and provider-defined tags. + +## Timeouts + +[Configuration options](https://developer.hashicorp.com/terraform/language/resources/syntax#operation-timeouts): + +* `create` - (Default `24h`) +* `update` - (Default `24h`) +* `delete` - (Default `24h`) + +## Import + +In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import OpenSearch Ingestion Pipeline using the `id`. 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 { OdbCloudVmCluster } from "./.gen/providers/aws/odb-cloud-vm-cluster"; +class MyConvertedCode extends TerraformStack { + constructor(scope: Construct, name: string) { + super(scope, name); + OdbCloudVmCluster.generateConfigForImport(this, "example", "example"); + } +} + +``` + +Using `terraform import`, import cloud vm cluster using the `id`. For example: + +```console +% terraform import aws_odb_cloud_vm_cluster.example example +``` + + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/odb_network.html.markdown b/website/docs/cdktf/typescript/r/odb_network.html.markdown new file mode 100644 index 000000000000..a384dc5164bf --- /dev/null +++ b/website/docs/cdktf/typescript/r/odb_network.html.markdown @@ -0,0 +1,122 @@ +--- +subcategory: "Oracle Database@AWS" +layout: "AWS: aws_odb_network" +page_title: "AWS: aws_odb_network" +description: |- + Terraform resource for managing odb network of an Oracle Database@AWS. +--- + + + +# Resource: aws_odb_network + +Terraform resource for managing odb Network resource in AWS for Oracle Database@AWS. + +## 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 { TerraformStack } from "cdktf"; +/* + * Provider bindings are generated by running `cdktf get`. + * See https://cdk.tf/provider-generation for more details. + */ +import { OdbNetwork } from "./.gen/providers/aws/odb-network"; +class MyConvertedCode extends TerraformStack { + constructor(scope: Construct, name: string) { + super(scope, name); + new OdbNetwork(this, "example", { + availabilityZoneId: "use1-az6", + backupSubnetCidr: "10.2.1.0/24", + clientSubnetCidr: "10.2.0.0/24", + displayName: "odb-my-net", + s3Access: "DISABLED", + tags: { + env: "dev", + }, + zeroEtlAccess: "DISABLED", + }); + } +} + +``` + +## Argument Reference + +The following arguments are required: + +* `displayName` - (Required) The user-friendly name for the odb network. Changing this will force terraform to create a new resource. +* `availabilityZoneId` - (Required) The AZ ID of the AZ where the ODB network is located. Changing this will force terraform to create new resource. +* `clientSubnetCidr` - (Required) The CIDR notation for the network resource. Changing this will force terraform to create new resource. +* `backupSubnetCidr` - (Required) The CIDR range of the backup subnet for the ODB network. Changing this will force terraform to create new resource. +* `s3Access` - (Required) Specifies the configuration for Amazon S3 access from the ODB network. +* `zeroEtlAccess` - (Required) Specifies the configuration for Zero-ETL access from the ODB network. + +The following arguments are optional: + +* `customDomainName` - (Optional) The name of the custom domain that the network is located. Custom_domain_name and default_dns_prefix both can't be given. Changing this will force terraform to create new resource. +* `availabilityZone` - (Optional) The name of the Availability Zone (AZ) where the odb network is located. Changing this will force terraform to create new resource. Make sure availability_zone maps correctly with availability_zone_id. +* `s3PolicyDocument` - (Optional) Specifies the endpoint policy for Amazon S3 access from the ODB network. +* `defaultDnsPrefix` - (Optional) The default DNS prefix for the network resource. Changing this will force terraform to create new resource. Changing this will force terraform to create new resource. +* `tags` - (Optional) A map of tags to assign to the exadata infrastructure. If configured with a provider [`defaultTags` configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-configuration-block) present, tags with matching keys will overwrite those defined at the provider-level. +* `region` - (Optional) Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the [provider configuration](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#aws-configuration-reference). + +## Attribute Reference + +This resource exports the following attributes in addition to the arguments above: + +* `id` - Unique identifier of the odb network resource. +* `arn` - Amazon Resource Name (ARN) of the odb network resource. +* `ociDnsForwardingConfigs` - The number of storage servers requested for the Exadata infrastructure. +* `peeredCidrs` - The list of CIDR ranges from the peered VPC that are allowed access to the ODB network. Please refer odb network peering documentation. +* `ociNetworkAnchorId` - The unique identifier of the OCI network anchor for the ODB network. +* `ociNetworkAnchorUrl` -The URL of the OCI network anchor for the ODB network. +* `ociResourceAnchorName` - The name of the OCI resource anchor for the ODB network. +* `ociVcnId` - The unique identifier Oracle Cloud ID (OCID) of the OCI VCN for the ODB network. +* `ociVcnUrl` - The URL of the OCI VCN for the ODB network. +* `percentProgress` - The amount of progress made on the current operation on the ODB network, expressed as a percentage. +* `managedServices` - The name of the OCI resource anchor for the Exadata infrastructure. +* `status` - The status of the network resource. +* `statusReason` - Additional information about the current status of the ODB network. +* `createdAt` - The date and time when the ODB network was created. + +## Timeouts + +[Configuration options](https://developer.hashicorp.com/terraform/language/resources/syntax#operation-timeouts): + +* `create` - (Default `24h`) +* `update` - (Default `24h`) +* `delete` - (Default `24h`) + +## Import + +In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import OpenSearch Ingestion Pipeline using the `id`. 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 { OdbNetwork } from "./.gen/providers/aws/odb-network"; +class MyConvertedCode extends TerraformStack { + constructor(scope: Construct, name: string) { + super(scope, name); + OdbNetwork.generateConfigForImport(this, "example", "example"); + } +} + +``` + +Using `terraform import`, import Odb Network using the `id`. For example: + +```console +% terraform import aws_odb_network.example example +``` + + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/odb_network_peering_connection.html.markdown b/website/docs/cdktf/typescript/r/odb_network_peering_connection.html.markdown new file mode 100644 index 000000000000..4f96703add82 --- /dev/null +++ b/website/docs/cdktf/typescript/r/odb_network_peering_connection.html.markdown @@ -0,0 +1,112 @@ +--- +subcategory: "Oracle Database@AWS" +layout: "AWS: aws_odb_network_peering_connection" +page_title: "AWS: aws_odb_network_peering_connection" +description: |- + Terraform resource for managing oracle database network peering resource in AWS. +--- + + + +# Resource: aws_odb_network_peering_connection + +Terraform resource for managing oracle database network peering resource in AWS. + +You can find out more about Oracle Database@AWS from [User Guide](https://docs.aws.amazon.com/odb/latest/UserGuide/what-is-odb.html). + +## 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 { TerraformStack } from "cdktf"; +/* + * Provider bindings are generated by running `cdktf get`. + * See https://cdk.tf/provider-generation for more details. + */ +import { OdbNetworkPeeringConnection } from "./.gen/providers/aws/odb-network-peering-connection"; +class MyConvertedCode extends TerraformStack { + constructor(scope: Construct, name: string) { + super(scope, name); + new OdbNetworkPeeringConnection(this, "example", { + displayName: "example", + odbNetworkId: "my-odb-network-id", + peerNetworkId: "my-vpc-id", + tags: { + env: "dev", + }, + }); + } +} + +``` + +## Argument Reference + +The following arguments are required: + +* `odbNetworkId` - (Required) The unique identifier of the ODB network that initiates the peering connection. A sample ID is `odbpcx-abcdefgh12345678`. Changing this will force Terraform to create a new resource. +* `peerNetworkId` - (Required) The unique identifier of the ODB peering connection. Changing this will force Terraform to create a new resource. +* `displayName` - (Required) Display name of the ODB network peering connection. Changing this will force Terraform to create a new resource. + +The following arguments are optional: + +* `region` - (Optional) Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the [provider configuration](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#aws-configuration-reference). +* `tags` - (Optional) A map of tags to assign to the resource. If configured with a provider [`defaultTags` configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-configuration-block) present, tags with matching keys will overwrite those defined at the provider-level. + +## Attribute Reference + +This data source exports the following attributes in addition to the arguments above: + +* `status` - Status of the ODB network peering connection. +* `statusReason` - The reason for the current status of the ODB peering connection. +* `odbNetworkArn` - ARN of the ODB network peering connection. +* `peerNetworkArn` - ARN of the peer network peering connection. +* `odbPeeringConnectionType` - Type of the ODB peering connection. +* `createdAt` - Created time of the ODB network peering connection. +* `percentProgress` - Progress of the ODB network peering connection. +* `tagsAll` - A map of tags assigned to the resource, including inherited tags. + +## Timeouts + +[Configuration options](https://developer.hashicorp.com/terraform/language/resources/syntax#operation-timeouts): + +* `create` - (Default `24h`) +* `update` - (Default `24h`) +* `delete` - (Default `24h`) + +## Import + +In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import OpenSearch Ingestion Pipeline using the `id`. 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 { OdbNetworkPeeringConnection } from "./.gen/providers/aws/odb-network-peering-connection"; +class MyConvertedCode extends TerraformStack { + constructor(scope: Construct, name: string) { + super(scope, name); + OdbNetworkPeeringConnection.generateConfigForImport( + this, + "example", + "example" + ); + } +} + +``` + +Using `terraform import`, import odb network peering using the `id`. For example: + +```console +% terraform import aws_odb_network_peering_connection.example example +``` + + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/organizations_account.html.markdown b/website/docs/cdktf/typescript/r/organizations_account.html.markdown index 858f762a34fb..fb0e4c57db9b 100644 --- a/website/docs/cdktf/typescript/r/organizations_account.html.markdown +++ b/website/docs/cdktf/typescript/r/organizations_account.html.markdown @@ -75,6 +75,31 @@ This resource exports the following attributes in addition to the arguments abov ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_organizations_account.example + identity = { + id = "111111111111" + } +} + +resource "aws_organizations_account" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `id` (String) ID of the AWS Organizations account. + +#### Optional + +* `accountId` (String) AWS Account where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import the AWS member account using the `accountId`. For example: ```typescript @@ -91,7 +116,7 @@ class MyConvertedCode extends TerraformStack { super(scope, name); OrganizationsAccount.generateConfigForImport( this, - "myAccount", + "example", "111111111111" ); } @@ -102,13 +127,13 @@ class MyConvertedCode extends TerraformStack { Using `terraform import`, import the AWS member account using the `accountId`. For example: ```console -% terraform import aws_organizations_account.my_account 111111111111 +% terraform import aws_organizations_account.example 111111111111 ``` To import accounts that have set iam_user_access_to_billing, use the following: ```console -% terraform import aws_organizations_account.my_account 111111111111_ALLOW +% terraform import aws_organizations_account.example 111111111111_ALLOW ``` Certain resource arguments, like `roleName`, do not have an Organizations API method for reading the information after account creation. If the argument is set in the Terraform configuration on an imported resource, Terraform will always show a difference. To workaround this behavior, either omit the argument from the Terraform configuration or use [`ignore_changes`](https://www.terraform.io/docs/configuration/meta-arguments/lifecycle.html#ignore_changes) to hide the difference. For example: @@ -138,4 +163,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/organizations_delegated_administrator.html.markdown b/website/docs/cdktf/typescript/r/organizations_delegated_administrator.html.markdown index 77cac943ea3d..88ad8448dce2 100644 --- a/website/docs/cdktf/typescript/r/organizations_delegated_administrator.html.markdown +++ b/website/docs/cdktf/typescript/r/organizations_delegated_administrator.html.markdown @@ -57,6 +57,33 @@ This resource exports the following attributes in addition to the arguments abov ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_organizations_delegated_administrator.example + identity = { + service_principal = "config.amazonaws.com" + delegated_account_id = "123456789012" + } +} + +resource "aws_organizations_delegated_administrator" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `servicePrincipal` (String) Service principal for the AWS service. +* `delegated_account_id` (String) Account ID to be designated as a delegated administrator. + +#### Optional + +* `accountId` (String) AWS Account where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import `aws_organizations_delegated_administrator` using the account ID and its service principal. For example: ```typescript @@ -87,4 +114,4 @@ Using `terraform import`, import `aws_organizations_delegated_administrator` usi % terraform import aws_organizations_delegated_administrator.example 123456789012/config.amazonaws.com ``` - \ 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 1edf8eca5981..e951beb5a7aa 100644 --- a/website/docs/cdktf/typescript/r/organizations_organization.html.markdown +++ b/website/docs/cdktf/typescript/r/organizations_organization.html.markdown @@ -82,6 +82,31 @@ This resource exports the following attributes in addition to the arguments abov ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_organizations_organization.example + identity = { + id = "o-1234567" + } +} + +resource "aws_organizations_organization" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `id` (String) ID of the AWS Organizations organization. + +#### Optional + +* `accountId` (String) AWS Account where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import the AWS organization using the `id`. For example: ```typescript @@ -98,7 +123,7 @@ class MyConvertedCode extends TerraformStack { super(scope, name); OrganizationsOrganization.generateConfigForImport( this, - "myOrg", + "example", "o-1234567" ); } @@ -109,7 +134,7 @@ class MyConvertedCode extends TerraformStack { Using `terraform import`, import the AWS organization using the `id`. For example: ```console -% terraform import aws_organizations_organization.my_org o-1234567 +% terraform import aws_organizations_organization.example o-1234567 ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/organizations_organizational_unit.html.markdown b/website/docs/cdktf/typescript/r/organizations_organizational_unit.html.markdown index 44465d85a87f..39537a189bd2 100644 --- a/website/docs/cdktf/typescript/r/organizations_organizational_unit.html.markdown +++ b/website/docs/cdktf/typescript/r/organizations_organizational_unit.html.markdown @@ -60,6 +60,31 @@ This resource exports the following attributes in addition to the arguments abov ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_organizations_organizational_unit.example + identity = { + id = "ou-1234567" + } +} + +resource "aws_organizations_organizational_unit" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `id` (String) ID of the organizational unit. + +#### Optional + +* `accountId` (String) AWS Account where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import AWS Organizations Organizational Units using the `id`. For example: ```typescript @@ -90,4 +115,4 @@ Using `terraform import`, import AWS Organizations Organizational Units using th % terraform import aws_organizations_organizational_unit.example ou-1234567 ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/organizations_policy_attachment.html.markdown b/website/docs/cdktf/typescript/r/organizations_policy_attachment.html.markdown index eee898aa4dfd..0a06afcd2a1c 100644 --- a/website/docs/cdktf/typescript/r/organizations_policy_attachment.html.markdown +++ b/website/docs/cdktf/typescript/r/organizations_policy_attachment.html.markdown @@ -99,6 +99,33 @@ This resource exports no additional attributes. ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_organizations_policy_attachment.example + identity = { + policy_id = "p-12345678" + target_id = "123456789012" + } +} + +resource "aws_organizations_policy_attachment" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `policyId` (String) Organizations policy ID. +* `targetId` (String) Organizations target ID (account, OU, or root). + +#### Optional + +* `accountId` (String) AWS Account where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import `aws_organizations_policy_attachment` using the target ID and policy ID. For example: With an account target: @@ -117,7 +144,7 @@ class MyConvertedCode extends TerraformStack { super(scope, name); OrganizationsPolicyAttachment.generateConfigForImport( this, - "account", + "example", "123456789012:p-12345678" ); } @@ -130,7 +157,7 @@ Using `terraform import`, import `aws_organizations_policy_attachment` using the With an account target: ```console -% terraform import aws_organizations_policy_attachment.account 123456789012:p-12345678 +% terraform import aws_organizations_policy_attachment.example 123456789012:p-12345678 ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/rds_global_cluster.html.markdown b/website/docs/cdktf/typescript/r/rds_global_cluster.html.markdown index f134a686643e..9b24516f0015 100644 --- a/website/docs/cdktf/typescript/r/rds_global_cluster.html.markdown +++ b/website/docs/cdktf/typescript/r/rds_global_cluster.html.markdown @@ -281,20 +281,25 @@ class MyConvertedCode extends TerraformStack { ## Argument Reference -This resource supports the following arguments: +The following arguments are required: -* `region` - (Optional) Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the [provider configuration](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#aws-configuration-reference). * `globalClusterIdentifier` - (Required, Forces new resources) Global cluster identifier. + +The following arguments are optional: + * `databaseName` - (Optional, Forces new resources) Name for an automatically created database on cluster creation. Terraform will only perform drift detection if a configuration value is provided. * `deletionProtection` - (Optional) If the Global Cluster should have deletion protection enabled. The database can't be deleted when this value is set to `true`. The default is `false`. * `engine` - (Optional, Forces new resources) Name of the database engine to be used for this DB cluster. Terraform will only perform drift detection if a configuration value is provided. Valid values: `aurora`, `aurora-mysql`, `aurora-postgresql`. Defaults to `aurora`. Conflicts with `sourceDbClusterIdentifier`. * `engineLifecycleSupport` - (Optional) The life cycle type for this DB instance. This setting applies only to Aurora PostgreSQL-based global databases. Valid values are `open-source-rds-extended-support`, `open-source-rds-extended-support-disabled`. Default value is `open-source-rds-extended-support`. [Using Amazon RDS Extended Support]: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/extended-support.html * `engineVersion` - (Optional) Engine version of the Aurora global database. The `engine`, `engineVersion`, and `instanceClass` (on the `aws_rds_cluster_instance`) must together support global databases. See [Using Amazon Aurora global databases](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-global-database.html) for more information. By upgrading the engine version, Terraform will upgrade cluster members. **NOTE:** To avoid an `inconsistent final plan` error while upgrading, use the `lifecycle` `ignore_changes` for `engineVersion` meta argument on the associated `aws_rds_cluster` resource as shown above in [Upgrading Engine Versions](#upgrading-engine-versions) example. * `forceDestroy` - (Optional) Enable to remove DB Cluster members from Global Cluster on destroy. Required with `sourceDbClusterIdentifier`. +* `region` - (Optional) Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the [provider configuration](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#aws-configuration-reference). * `sourceDbClusterIdentifier` - (Optional) Amazon Resource Name (ARN) to use as the primary DB Cluster of the Global Cluster on creation. Terraform cannot perform drift detection of this value. **NOTE:** After initial creation, this argument can be removed and replaced with `engine` and `engineVersion`. This allows upgrading the engine version of the Global Cluster. * `storageEncrypted` - (Optional, Forces new resources) Specifies whether the DB cluster is encrypted. The default is `false` unless `sourceDbClusterIdentifier` is specified and encrypted. Terraform will only perform drift detection if a configuration value is provided. * `tags` - (Optional) A map of tags to assign to the DB cluster. If configured with a provider [`defaultTags` configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-configuration-block) present, tags with matching keys will overwrite those defined at the provider-level. +~> When both `sourceDbClusterIdentifier` and `engine`/`engineVersion` are set, all engine related values will be ignored during creation. The global cluster will inherit the `engine` and `engineVersion` values from the source cluster. After the first apply, any differences between the inherited and configured values will trigger an in-place update. + ## Attribute Reference This resource exports the following attributes in addition to the arguments above: @@ -374,4 +379,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/route.html.markdown b/website/docs/cdktf/typescript/r/route.html.markdown index 26231fe10f63..7248bbac1a20 100644 --- a/website/docs/cdktf/typescript/r/route.html.markdown +++ b/website/docs/cdktf/typescript/r/route.html.markdown @@ -153,17 +153,17 @@ resource "aws_route" "example" { #### Required -- `routeTableId` - (String) ID of the route table. +* `routeTableId` - (String) ID of the route table. #### Optional ~> Exactly one of of `destinationCidrBlock`, `destinationIpv6CidrBlock`, or `destinationPrefixListId` is required. -- `accountId` (String) AWS Account where this resource is managed. -- `destinationCidrBlock` - (String) Destination IPv4 CIDR block. -- `destinationIpv6CidrBlock` - (String) Destination IPv6 CIDR block. -- `destinationPrefixListId` - (String) Destination IPv6 CIDR block. -- `region` (String) Region where this resource is managed. +* `accountId` (String) AWS Account where this resource is managed. +* `destinationCidrBlock` - (String) Destination IPv4 CIDR block. +* `destinationIpv6CidrBlock` - (String) Destination IPv6 CIDR block. +* `destinationPrefixListId` - (String) Destination IPv6 CIDR block. +* `region` (String) Region where this resource is managed. In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import individual routes using `ROUTETABLEID_DESTINATION`. Import [local routes](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Route_Tables.html#RouteTables) using the VPC's IPv4 or IPv6 CIDR blocks. For example: @@ -259,4 +259,4 @@ Import a route in route table `rtb-656C65616E6F72` with a managed prefix list de % terraform import aws_route.my_route rtb-656C65616E6F72_pl-0570a1d2d725c16be ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/route53_record.html.markdown b/website/docs/cdktf/typescript/r/route53_record.html.markdown index 2ccfa756121b..deac707342e4 100644 --- a/website/docs/cdktf/typescript/r/route53_record.html.markdown +++ b/website/docs/cdktf/typescript/r/route53_record.html.markdown @@ -332,6 +332,36 @@ This resource exports the following attributes in addition to the arguments abov ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_route53_record.example + identity = { + zone_id = "Z4KAPRWWNC7JR" + name = "dev.example.com" + type = "NS" + } +} + +resource "aws_route53_record" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `zoneId` (String) Hosted zone ID for the record. +* `name` (String) Name of the record. +* `type` (String) Record type. + +#### Optional + +* `accountId` (String) AWS Account where this resource is managed. +* `setIdentifier` (String) Set identifier for the record. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import Route53 Records using the ID of the record, record name, record type, and set identifier. For example: Using the ID of the record, which is the zone identifier, record name, and record type, separated by underscores (`_`): @@ -350,7 +380,7 @@ class MyConvertedCode extends TerraformStack { super(scope, name); Route53Record.generateConfigForImport( this, - "myrecord", + "example", "Z4KAPRWWNC7JR_dev.example.com_NS" ); } @@ -374,7 +404,7 @@ class MyConvertedCode extends TerraformStack { super(scope, name); Route53Record.generateConfigForImport( this, - "myrecord", + "example", "Z4KAPRWWNC7JR_dev.example.com_NS_dev" ); } @@ -396,11 +426,7 @@ import { Route53Record } from "./.gen/providers/aws/route53-record"; class MyConvertedCode extends TerraformStack { constructor(scope: Construct, name: string) { super(scope, name); - Route53Record.generateConfigForImport( - this, - "myrecord", - "Z4KAPRWWNC7JR__NS" - ); + Route53Record.generateConfigForImport(this, "example", "Z4KAPRWWNC7JR__NS"); } } @@ -411,13 +437,13 @@ class MyConvertedCode extends TerraformStack { Using the ID of the record, which is the zone identifier, record name, and record type, separated by underscores (`_`): ```console -% terraform import aws_route53_record.myrecord Z4KAPRWWNC7JR_dev_NS +% terraform import aws_route53_record.example Z4KAPRWWNC7JR_dev_NS ``` If the record also contains a set identifier, append it: ```console -% terraform import aws_route53_record.myrecord Z4KAPRWWNC7JR_dev_NS_dev +% terraform import aws_route53_record.example Z4KAPRWWNC7JR_dev_NS_dev ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/route53_resolver_rule.html.markdown b/website/docs/cdktf/typescript/r/route53_resolver_rule.html.markdown index 88a471db3699..0014e91686c9 100644 --- a/website/docs/cdktf/typescript/r/route53_resolver_rule.html.markdown +++ b/website/docs/cdktf/typescript/r/route53_resolver_rule.html.markdown @@ -160,8 +160,8 @@ resource "aws_route53_resolver_rule" "example" { #### Optional -- `accountId` (String) AWS Account where this resource is managed. -- `region` (String) Region where this resource is managed. +* `accountId` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import Route53 Resolver rules using the `id`. For example: @@ -193,4 +193,4 @@ Using `terraform import`, import Route53 Resolver rules using the `id`. For exam % terraform import aws_route53_resolver_rule.example rslvr-rr-0123456789abcdef0 ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/route53_resolver_rule_association.html.markdown b/website/docs/cdktf/typescript/r/route53_resolver_rule_association.html.markdown index 7e84268a404a..52cff3ecb8e9 100644 --- a/website/docs/cdktf/typescript/r/route53_resolver_rule_association.html.markdown +++ b/website/docs/cdktf/typescript/r/route53_resolver_rule_association.html.markdown @@ -75,8 +75,8 @@ resource "aws_route53_resolver_rule_association" "example" { #### Optional -- `accountId` (String) AWS Account where this resource is managed. -- `region` (String) Region where this resource is managed. +* `accountId` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import Route53 Resolver rule associations using the `id`. For example: @@ -108,4 +108,4 @@ Using `terraform import`, import Route53 Resolver rule associations using the `i % terraform import aws_route53_resolver_rule_association.example rslvr-rrassoc-97242eaf88example ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/route_table.html.markdown b/website/docs/cdktf/typescript/r/route_table.html.markdown index 0738480c420f..1e254fdd7de9 100644 --- a/website/docs/cdktf/typescript/r/route_table.html.markdown +++ b/website/docs/cdktf/typescript/r/route_table.html.markdown @@ -264,8 +264,8 @@ resource "aws_route_table" "example" { #### Optional -- `accountId` (String) AWS Account where this resource is managed. -- `region` (String) Region where this resource is managed. +* `accountId` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import Route Tables using the route table `id`. For example: @@ -293,4 +293,4 @@ Using `terraform import`, import Route Tables using the route table `id`. For ex % terraform import aws_route_table.public_rt rtb-4e616f6d69 ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/s3_bucket.html.markdown b/website/docs/cdktf/typescript/r/s3_bucket.html.markdown index 705efb1772f5..b276d2edca96 100644 --- a/website/docs/cdktf/typescript/r/s3_bucket.html.markdown +++ b/website/docs/cdktf/typescript/r/s3_bucket.html.markdown @@ -340,6 +340,32 @@ This resource exports the following attributes in addition to the arguments abov ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_s3_bucket.example + identity = { + bucket = "bucket-name" + } +} + +resource "aws_s3_bucket" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `bucket` (String) Name of the S3 bucket. + +#### Optional + +* `accountId` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import S3 bucket using the `bucket`. For example: ```typescript @@ -354,7 +380,7 @@ import { S3Bucket } from "./.gen/providers/aws/s3-bucket"; class MyConvertedCode extends TerraformStack { constructor(scope: Construct, name: string) { super(scope, name); - S3Bucket.generateConfigForImport(this, "bucket", "bucket-name"); + S3Bucket.generateConfigForImport(this, "example", "bucket-name"); } } @@ -363,7 +389,7 @@ class MyConvertedCode extends TerraformStack { Using `terraform import`, import S3 bucket using the `bucket`. For example: ```console -% terraform import aws_s3_bucket.bucket bucket-name +% terraform import aws_s3_bucket.example bucket-name ``` - \ No newline at end of file + \ 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 1563a6ae0a98..6b576dc511fc 100644 --- a/website/docs/cdktf/typescript/r/s3_bucket_acl.html.markdown +++ b/website/docs/cdktf/typescript/r/s3_bucket_acl.html.markdown @@ -237,6 +237,34 @@ This resource exports the following attributes in addition to the arguments abov ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_s3_bucket_acl.example + identity = { + bucket = "bucket-name" + } +} + +resource "aws_s3_bucket_acl" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `bucket` (String) S3 bucket name. + +#### Optional + +* `accountId` (String) AWS Account where this resource is managed. +* `acl` (String) Canned ACL to apply to the bucket. +* `expectedBucketOwner` (String) Account ID of the expected bucket owner. +* `region` (String) Region where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import S3 bucket ACL using `bucket`, `expectedBucketOwner`, and/or `acl`, depending on your situation. For example: If the owner (account ID) of the source bucket is the _same_ account used to configure the Terraform AWS Provider, and the source bucket is **not configured** with a @@ -359,4 +387,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_cors_configuration.html.markdown b/website/docs/cdktf/typescript/r/s3_bucket_cors_configuration.html.markdown index 616953c15338..cfd80c1f2649 100644 --- a/website/docs/cdktf/typescript/r/s3_bucket_cors_configuration.html.markdown +++ b/website/docs/cdktf/typescript/r/s3_bucket_cors_configuration.html.markdown @@ -89,6 +89,33 @@ This resource exports the following attributes in addition to the arguments abov ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_s3_bucket_cors_configuration.example + identity = { + bucket = "bucket-name" + } +} + +resource "aws_s3_bucket_cors_configuration" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `bucket` (String) S3 bucket name. + +#### Optional + +* `accountId` (String) AWS Account where this resource is managed. +* `expectedBucketOwner` (String) Account ID of the expected bucket owner. +* `region` (String) Region where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import S3 bucket CORS configuration using the `bucket` or using 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`: @@ -153,4 +180,4 @@ If the owner (account ID) of the source bucket differs from the account used to % terraform import aws_s3_bucket_cors_configuration.example bucket-name,123456789012 ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/s3_bucket_logging.html.markdown b/website/docs/cdktf/typescript/r/s3_bucket_logging.html.markdown index 21e523034dc4..f4062a1e775f 100644 --- a/website/docs/cdktf/typescript/r/s3_bucket_logging.html.markdown +++ b/website/docs/cdktf/typescript/r/s3_bucket_logging.html.markdown @@ -188,6 +188,33 @@ This resource exports the following attributes in addition to the arguments abov ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_s3_bucket_logging.example + identity = { + bucket = "bucket-name" + } +} + +resource "aws_s3_bucket_logging" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `bucket` (String) S3 bucket name. + +#### Optional + +* `accountId` (String) AWS Account where this resource is managed. +* `expectedBucketOwner` (String) Account ID of the expected bucket owner. +* `region` (String) Region where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import S3 bucket logging using the `bucket` or using 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`: @@ -248,4 +275,4 @@ If the owner (account ID) of the source bucket differs from the account used to % terraform import aws_s3_bucket_logging.example bucket-name,123456789012 ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/s3_bucket_object.html.markdown b/website/docs/cdktf/typescript/r/s3_bucket_object.html.markdown index 770b7c6801f9..dba922977cfb 100644 --- a/website/docs/cdktf/typescript/r/s3_bucket_object.html.markdown +++ b/website/docs/cdktf/typescript/r/s3_bucket_object.html.markdown @@ -258,6 +258,34 @@ This resource exports the following attributes in addition to the arguments abov ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_s3_bucket_object.example + identity = { + bucket = "some-bucket-name" + key = "some/key.txt" + } +} + +resource "aws_s3_bucket_object" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `bucket` (String) S3 bucket name. +* `key` (String) Object key. + +#### Optional + +* `accountId` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import objects using the `id` or S3 URL. For example: Import using the `id`, which is the bucket name and the key together: @@ -322,4 +350,4 @@ Import using S3 URL syntax: % terraform import aws_s3_bucket_object.example s3://some-bucket-name/some/key.txt ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/s3_bucket_policy.html.markdown b/website/docs/cdktf/typescript/r/s3_bucket_policy.html.markdown index 65a57cd9abbb..6cc6a8ca1105 100644 --- a/website/docs/cdktf/typescript/r/s3_bucket_policy.html.markdown +++ b/website/docs/cdktf/typescript/r/s3_bucket_policy.html.markdown @@ -86,6 +86,32 @@ This resource exports no additional attributes. ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_s3_bucket_policy.example + identity = { + bucket = "my-tf-test-bucket" + } +} + +resource "aws_s3_bucket_policy" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `bucket` (String) Name of the S3 bucket. + +#### Optional + +* `accountId` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import S3 bucket policies using the bucket name. For example: ```typescript @@ -102,7 +128,7 @@ class MyConvertedCode extends TerraformStack { super(scope, name); S3BucketPolicy.generateConfigForImport( this, - "allowAccessFromAnotherAccount", + "example", "my-tf-test-bucket" ); } @@ -113,7 +139,7 @@ class MyConvertedCode extends TerraformStack { Using `terraform import`, import S3 bucket policies using the bucket name. For example: ```console -% terraform import aws_s3_bucket_policy.allow_access_from_another_account my-tf-test-bucket +% terraform import aws_s3_bucket_policy.example my-tf-test-bucket ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/s3_bucket_server_side_encryption_configuration.html.markdown b/website/docs/cdktf/typescript/r/s3_bucket_server_side_encryption_configuration.html.markdown index 8f11a4d5ddb6..7d7a1439e1f2 100644 --- a/website/docs/cdktf/typescript/r/s3_bucket_server_side_encryption_configuration.html.markdown +++ b/website/docs/cdktf/typescript/r/s3_bucket_server_side_encryption_configuration.html.markdown @@ -84,6 +84,33 @@ This resource exports the following attributes in addition to the arguments abov ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_s3_bucket_server_side_encryption_configuration.example + identity = { + bucket = "bucket-name" + } +} + +resource "aws_s3_bucket_server_side_encryption_configuration" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `bucket` (String) S3 bucket name. + +#### Optional + +* `accountId` (String) AWS Account where this resource is managed. +* `expectedBucketOwner` (String) Account ID of the expected bucket owner. +* `region` (String) Region where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import S3 bucket server-side encryption configuration using the `bucket` or using 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`: @@ -148,4 +175,4 @@ If the owner (account ID) of the source bucket differs from the account used to % terraform import aws_s3_bucket_server_side_encryption_configuration.example bucket-name,123456789012 ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/s3_bucket_versioning.html.markdown b/website/docs/cdktf/typescript/r/s3_bucket_versioning.html.markdown index a268c29b5af5..804f932c9225 100644 --- a/website/docs/cdktf/typescript/r/s3_bucket_versioning.html.markdown +++ b/website/docs/cdktf/typescript/r/s3_bucket_versioning.html.markdown @@ -171,6 +171,33 @@ This resource exports the following attributes in addition to the arguments abov ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_s3_bucket_versioning.example + identity = { + bucket = "bucket-name" + } +} + +resource "aws_s3_bucket_versioning" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `bucket` (String) S3 bucket name. + +#### Optional + +* `accountId` (String) AWS Account where this resource is managed. +* `expectedBucketOwner` (String) Account ID of the expected bucket owner. +* `region` (String) Region where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import S3 bucket versioning using the `bucket` or using 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`: @@ -231,4 +258,4 @@ If the owner (account ID) of the source bucket differs from the account used to % terraform import aws_s3_bucket_versioning.example bucket-name,123456789012 ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/s3_bucket_website_configuration.html.markdown b/website/docs/cdktf/typescript/r/s3_bucket_website_configuration.html.markdown index 26422ec5b655..df63ea000265 100644 --- a/website/docs/cdktf/typescript/r/s3_bucket_website_configuration.html.markdown +++ b/website/docs/cdktf/typescript/r/s3_bucket_website_configuration.html.markdown @@ -153,6 +153,33 @@ This resource exports the following attributes in addition to the arguments abov ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_s3_bucket_website_configuration.example + identity = { + bucket = "bucket-name" + } +} + +resource "aws_s3_bucket_website_configuration" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `bucket` (String) S3 bucket name. + +#### Optional + +* `accountId` (String) AWS Account where this resource is managed. +* `expectedBucketOwner` (String) Account ID of the expected bucket owner. +* `region` (String) Region where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import S3 bucket website configuration using the `bucket` or using 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`: @@ -217,4 +244,4 @@ If the owner (account ID) of the source bucket differs from the account used to % terraform import aws_s3_bucket_website_configuration.example bucket-name,123456789012 ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/s3_object.html.markdown b/website/docs/cdktf/typescript/r/s3_object.html.markdown index 98937df965d5..626a8e582ed1 100644 --- a/website/docs/cdktf/typescript/r/s3_object.html.markdown +++ b/website/docs/cdktf/typescript/r/s3_object.html.markdown @@ -308,6 +308,34 @@ This resource exports the following attributes in addition to the arguments abov ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_s3_object.example + identity = { + bucket = "some-bucket-name" + key = "some/key.txt" + } +} + +resource "aws_s3_object" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `bucket` (String) S3 bucket name. +* `key` (String) Object key. + +#### Optional + +* `accountId` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import objects using the `id` or S3 URL. For example: Import using the `id`, which is the bucket name and the key together: @@ -372,4 +400,4 @@ Import using S3 URL syntax: % terraform import aws_s3_object.example s3://some-bucket-name/some/key.txt ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/sagemaker_user_profile.html.markdown b/website/docs/cdktf/typescript/r/sagemaker_user_profile.html.markdown index 5c09445494fd..60f3daafec6d 100644 --- a/website/docs/cdktf/typescript/r/sagemaker_user_profile.html.markdown +++ b/website/docs/cdktf/typescript/r/sagemaker_user_profile.html.markdown @@ -246,6 +246,34 @@ This resource exports the following attributes in addition to the arguments abov ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_sagemaker_user_profile.example + identity = { + domain_id = "domain-id" + user_profile_name = "profile-name" + } +} + +resource "aws_sagemaker_user_profile" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `domainId` (String) SageMaker domain ID. +* `userProfileName` (String) Name of the user profile. + +#### Optional + +* `accountId` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import SageMaker AI User Profiles using the `arn`. For example: ```typescript @@ -262,7 +290,7 @@ class MyConvertedCode extends TerraformStack { super(scope, name); SagemakerUserProfile.generateConfigForImport( this, - "testUserProfile", + "example", "arn:aws:sagemaker:us-west-2:123456789012:user-profile/domain-id/profile-name" ); } @@ -273,7 +301,7 @@ class MyConvertedCode extends TerraformStack { Using `terraform import`, import SageMaker AI User Profiles using the `arn`. For example: ```console -% terraform import aws_sagemaker_user_profile.test_user_profile arn:aws:sagemaker:us-west-2:123456789012:user-profile/domain-id/profile-name +% terraform import aws_sagemaker_user_profile.example arn:aws:sagemaker:us-west-2:123456789012:user-profile/domain-id/profile-name ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/secretsmanager_secret_version.html.markdown b/website/docs/cdktf/typescript/r/secretsmanager_secret_version.html.markdown index d10f5b34727c..86389d553371 100644 --- a/website/docs/cdktf/typescript/r/secretsmanager_secret_version.html.markdown +++ b/website/docs/cdktf/typescript/r/secretsmanager_secret_version.html.markdown @@ -154,8 +154,8 @@ resource "aws_secretsmanager_secret_version" "example" { #### Optional -- `accountId` (String) AWS Account where this resource is managed. -- `region` (String) Region where this resource is managed. +* `accountId` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import `aws_secretsmanager_secret_version` using the secret ID and version ID. For example: @@ -187,4 +187,4 @@ Using `terraform import`, import `aws_secretsmanager_secret_version` using the s % terraform import aws_secretsmanager_secret_version.example 'arn:aws:secretsmanager:us-east-1:123456789012:secret:example-123456|xxxxx-xxxxxxx-xxxxxxx-xxxxx' ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/security_group.html.markdown b/website/docs/cdktf/typescript/r/security_group.html.markdown index 2c25691e4669..54ea6c6c6d13 100644 --- a/website/docs/cdktf/typescript/r/security_group.html.markdown +++ b/website/docs/cdktf/typescript/r/security_group.html.markdown @@ -406,6 +406,32 @@ This resource exports the following attributes in addition to the arguments abov ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_security_group.example + identity = { + id = "sg-903004f8" + } +} + +resource "aws_security_group" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `id` (String) ID of the security group. + +#### Optional + +* `accountId` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import Security Groups using the security group `id`. For example: ```typescript @@ -420,7 +446,7 @@ import { SecurityGroup } from "./.gen/providers/aws/security-group"; class MyConvertedCode extends TerraformStack { constructor(scope: Construct, name: string) { super(scope, name); - SecurityGroup.generateConfigForImport(this, "elbSg", "sg-903004f8"); + SecurityGroup.generateConfigForImport(this, "example", "sg-903004f8"); } } @@ -429,7 +455,7 @@ class MyConvertedCode extends TerraformStack { Using `terraform import`, import Security Groups using the security group `id`. For example: ```console -% terraform import aws_security_group.elb_sg sg-903004f8 +% terraform import aws_security_group.example sg-903004f8 ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/sfn_state_machine.html.markdown b/website/docs/cdktf/typescript/r/sfn_state_machine.html.markdown index 405a86a7d3e0..f266c11c5f5c 100644 --- a/website/docs/cdktf/typescript/r/sfn_state_machine.html.markdown +++ b/website/docs/cdktf/typescript/r/sfn_state_machine.html.markdown @@ -219,6 +219,27 @@ This resource exports the following attributes in addition to the arguments abov ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_sfn_state_machine.example + identity = { + "arn" = "arn:aws:states:eu-west-1:123456789098:stateMachine:bar" + } +} + +resource "aws_sfn_state_machine" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +- `arn` (String) ARN of the state machine. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import State Machines using the `arn`. For example: ```typescript @@ -249,4 +270,4 @@ Using `terraform import`, import State Machines using the `arn`. For example: % terraform import aws_sfn_state_machine.foo arn:aws:states:eu-west-1:123456789098:stateMachine:bar ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/sqs_queue.html.markdown b/website/docs/cdktf/typescript/r/sqs_queue.html.markdown index 686a2e531bf4..32696081beef 100644 --- a/website/docs/cdktf/typescript/r/sqs_queue.html.markdown +++ b/website/docs/cdktf/typescript/r/sqs_queue.html.markdown @@ -239,6 +239,32 @@ This resource exports the following attributes in addition to the arguments abov ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_sqs_queue.example + identity = { + url = "https://queue.amazonaws.com/80398EXAMPLE/MyQueue" + } +} + +resource "aws_sqs_queue" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `url` (String) URL of the SQS queue. + +#### Optional + +* `accountId` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import SQS Queues using the queue `url`. For example: ```typescript @@ -255,7 +281,7 @@ class MyConvertedCode extends TerraformStack { super(scope, name); SqsQueue.generateConfigForImport( this, - "publicQueue", + "example", "https://queue.amazonaws.com/80398EXAMPLE/MyQueue" ); } @@ -266,7 +292,7 @@ class MyConvertedCode extends TerraformStack { Using `terraform import`, import SQS Queues using the queue `url`. For example: ```console -% terraform import aws_sqs_queue.public_queue https://queue.amazonaws.com/80398EXAMPLE/MyQueue +% terraform import aws_sqs_queue.example https://queue.amazonaws.com/80398EXAMPLE/MyQueue ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/ssm_association.html.markdown b/website/docs/cdktf/typescript/r/ssm_association.html.markdown index 0326e3aecb9f..37c87f076508 100644 --- a/website/docs/cdktf/typescript/r/ssm_association.html.markdown +++ b/website/docs/cdktf/typescript/r/ssm_association.html.markdown @@ -348,8 +348,8 @@ resource "aws_ssm_association" "example" { #### Optional -- `accountId` (String) AWS Account where this resource is managed. -- `region` (String) Region where this resource is managed. +* `accountId` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import SSM associations using the `associationId`. For example: @@ -381,4 +381,4 @@ Using `terraform import`, import SSM associations using the `associationId`. For % terraform import aws_ssm_association.example 10abcdef-0abc-1234-5678-90abcdef123456 ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/ssm_document.html.markdown b/website/docs/cdktf/typescript/r/ssm_document.html.markdown index 575ce9b0d68b..cd25ff0b7e1b 100644 --- a/website/docs/cdktf/typescript/r/ssm_document.html.markdown +++ b/website/docs/cdktf/typescript/r/ssm_document.html.markdown @@ -157,8 +157,8 @@ resource "aws_ssm_document" "example" { #### Optional -- `accountId` (String) AWS Account where this resource is managed. -- `region` (String) Region where this resource is managed. +* `accountId` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import SSM Documents using the name. For example: @@ -222,4 +222,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/ssm_maintenance_window.html.markdown b/website/docs/cdktf/typescript/r/ssm_maintenance_window.html.markdown index e88905977b32..e02d3fcf96f7 100644 --- a/website/docs/cdktf/typescript/r/ssm_maintenance_window.html.markdown +++ b/website/docs/cdktf/typescript/r/ssm_maintenance_window.html.markdown @@ -87,8 +87,8 @@ resource "aws_ssm_maintenance_window" "example" { #### Optional -- `accountId` (String) AWS Account where this resource is managed. -- `region` (String) Region where this resource is managed. +* `accountId` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import SSM Maintenance Windows using the maintenance window `id`. For example: @@ -120,4 +120,4 @@ Using `terraform import`, import SSM Maintenance Windows using the maintenance % terraform import aws_ssm_maintenance_window.example mw-0123456789 ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/ssm_maintenance_window_target.html.markdown b/website/docs/cdktf/typescript/r/ssm_maintenance_window_target.html.markdown index 1e5932a11f8f..dd76eaeddbe3 100644 --- a/website/docs/cdktf/typescript/r/ssm_maintenance_window_target.html.markdown +++ b/website/docs/cdktf/typescript/r/ssm_maintenance_window_target.html.markdown @@ -136,8 +136,8 @@ resource "aws_ssm_maintenance_window_target" "example" { #### Optional -- `accountId` (String) AWS Account where this resource is managed. -- `region` (String) Region where this resource is managed. +* `accountId` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import SSM Maintenance Window targets using `WINDOW_ID/WINDOW_TARGET_ID`. For example: @@ -169,4 +169,4 @@ Using `terraform import`, import SSM Maintenance Window targets using `WINDOW_ID % terraform import aws_ssm_maintenance_window_target.example mw-0c50858d01EXAMPLE/23639a0b-ddbc-4bca-9e72-78d96EXAMPLE ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/ssm_maintenance_window_task.html.markdown b/website/docs/cdktf/typescript/r/ssm_maintenance_window_task.html.markdown index e11ab1623d0e..e09997809885 100644 --- a/website/docs/cdktf/typescript/r/ssm_maintenance_window_task.html.markdown +++ b/website/docs/cdktf/typescript/r/ssm_maintenance_window_task.html.markdown @@ -295,8 +295,8 @@ resource "aws_ssm_maintenance_window_task" "example" { #### Optional -- `accountId` (String) AWS Account where this resource is managed. -- `region` (String) Region where this resource is managed. +* `accountId` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import AWS Maintenance Window Task using the `windowId` and `windowTaskId` separated by `/`. For example: @@ -328,4 +328,4 @@ Using `terraform import`, import AWS Maintenance Window Task using the `windowId % terraform import aws_ssm_maintenance_window_task.example / ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/ssm_parameter.html.markdown b/website/docs/cdktf/typescript/r/ssm_parameter.html.markdown index c843e02e7657..460d6651bf01 100644 --- a/website/docs/cdktf/typescript/r/ssm_parameter.html.markdown +++ b/website/docs/cdktf/typescript/r/ssm_parameter.html.markdown @@ -144,8 +144,8 @@ resource "aws_ssm_parameter" "example" { #### Optional -- `accountId` (String) AWS Account where this resource is managed. -- `region` (String) Region where this resource is managed. +* `accountId` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import SSM Parameters using the parameter store `name`. For example: @@ -177,4 +177,4 @@ Using `terraform import`, import SSM Parameters using the parameter store `name` % terraform import aws_ssm_parameter.example /my_path/my_paramname ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/ssm_patch_baseline.html.markdown b/website/docs/cdktf/typescript/r/ssm_patch_baseline.html.markdown index b470d2157c0e..d33ef7a9fe20 100644 --- a/website/docs/cdktf/typescript/r/ssm_patch_baseline.html.markdown +++ b/website/docs/cdktf/typescript/r/ssm_patch_baseline.html.markdown @@ -277,8 +277,8 @@ resource "aws_ssm_patch_baseline" "example" { #### Optional -- `accountId` (String) AWS Account where this resource is managed. -- `region` (String) Region where this resource is managed. +* `accountId` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import SSM Patch Baselines using their baseline ID. For example: @@ -306,4 +306,4 @@ Using `terraform import`, import SSM Patch Baselines using their baseline ID. Fo % terraform import aws_ssm_patch_baseline.example pb-12345678 ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/subnet.html.markdown b/website/docs/cdktf/typescript/r/subnet.html.markdown index 278dc4a813ac..bb822a2d96d3 100644 --- a/website/docs/cdktf/typescript/r/subnet.html.markdown +++ b/website/docs/cdktf/typescript/r/subnet.html.markdown @@ -124,6 +124,32 @@ This resource exports the following attributes in addition to the arguments abov ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_subnet.example + identity = { + id = "subnet-9d4a7b6c" + } +} + +resource "aws_subnet" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `id` (String) ID of the subnet. + +#### Optional + +* `accountId` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import subnets using the subnet `id`. For example: ```typescript @@ -138,7 +164,7 @@ import { Subnet } from "./.gen/providers/aws/subnet"; class MyConvertedCode extends TerraformStack { constructor(scope: Construct, name: string) { super(scope, name); - Subnet.generateConfigForImport(this, "publicSubnet", "subnet-9d4a7b6c"); + Subnet.generateConfigForImport(this, "example", "subnet-9d4a7b6c"); } } @@ -147,7 +173,7 @@ class MyConvertedCode extends TerraformStack { Using `terraform import`, import subnets using the subnet `id`. For example: ```console -% terraform import aws_subnet.public_subnet subnet-9d4a7b6c +% terraform import aws_subnet.example subnet-9d4a7b6c ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/vpc_endpoint.html.markdown b/website/docs/cdktf/typescript/r/vpc_endpoint.html.markdown index e423661c631f..d0279cd4559f 100644 --- a/website/docs/cdktf/typescript/r/vpc_endpoint.html.markdown +++ b/website/docs/cdktf/typescript/r/vpc_endpoint.html.markdown @@ -360,8 +360,8 @@ resource "aws_vpc_endpoint" "example" { #### Optional -- `accountId` (String) AWS Account where this resource is managed. -- `region` (String) Region where this resource is managed. +* `accountId` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import VPC Endpoints using the VPC endpoint `id`. For example: @@ -389,4 +389,4 @@ Using `terraform import`, import VPC Endpoints using the VPC endpoint `id`. For % terraform import aws_vpc_endpoint.example vpce-3ecf2a57 ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/vpc_security_group_egress_rule.html.markdown b/website/docs/cdktf/typescript/r/vpc_security_group_egress_rule.html.markdown index 59ffa1a807d6..f0a4e3981007 100644 --- a/website/docs/cdktf/typescript/r/vpc_security_group_egress_rule.html.markdown +++ b/website/docs/cdktf/typescript/r/vpc_security_group_egress_rule.html.markdown @@ -95,8 +95,8 @@ resource "aws_vpc_security_group_egress_rule" "example" { #### Optional -- `accountId` (String) AWS Account where this resource is managed. -- `region` (String) Region where this resource is managed. +* `accountId` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import security group egress rules using the `securityGroupRuleId`. For example: @@ -128,4 +128,4 @@ Using `terraform import`, import security group egress rules using the `security % terraform import aws_vpc_security_group_egress_rule.example sgr-02108b27edd666983 ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/vpc_security_group_ingress_rule.html.markdown b/website/docs/cdktf/typescript/r/vpc_security_group_ingress_rule.html.markdown index 2a8b2724e7b6..c31f7cf40920 100644 --- a/website/docs/cdktf/typescript/r/vpc_security_group_ingress_rule.html.markdown +++ b/website/docs/cdktf/typescript/r/vpc_security_group_ingress_rule.html.markdown @@ -107,8 +107,8 @@ resource "aws_vpc_security_group_ingress_rule" "example" { #### Optional -- `accountId` (String) AWS Account where this resource is managed. -- `region` (String) Region where this resource is managed. +* `accountId` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import security group ingress rules using the `securityGroupRuleId`. For example: @@ -140,4 +140,4 @@ Using `terraform import`, import security group ingress rules using the `securit % terraform import aws_vpc_security_group_ingress_rule.example sgr-02108b27edd666983 ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/vpc_security_group_vpc_association.html.markdown b/website/docs/cdktf/typescript/r/vpc_security_group_vpc_association.html.markdown index 603049ef910a..d1e1b29f84ad 100644 --- a/website/docs/cdktf/typescript/r/vpc_security_group_vpc_association.html.markdown +++ b/website/docs/cdktf/typescript/r/vpc_security_group_vpc_association.html.markdown @@ -58,6 +58,34 @@ This resource exports the following attributes in addition to the arguments abov ## Import +In Terraform v1.12.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `identity` attribute. For example: + +```terraform +import { + to = aws_vpc_security_group_vpc_association.example + identity = { + vpc_id = "vpc-67890" + security_group_id = "sg-12345" + } +} + +resource "aws_vpc_security_group_vpc_association" "example" { + ### Configuration omitted for brevity ### +} +``` + +### Identity Schema + +#### Required + +* `vpcId` (String) VPC ID. +* `securityGroupId` (String) Security Group ID. + +#### Optional + +* `accountId` (String) AWS Account where this resource is managed. +* `region` (String) Region where this resource is managed. + In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import a Security Group VPC Association using the `securityGroupId` and `vpcId` arguments, separated by a comma (`,`). For example: ```typescript @@ -88,4 +116,4 @@ Using `terraform import`, import a Security Group VPC Association using the `sec % terraform import aws_vpc_security_group_vpc_association.example sg-12345,vpc-67890 ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/wafv2_web_acl.html.markdown b/website/docs/cdktf/typescript/r/wafv2_web_acl.html.markdown index 371ec32882ba..e91e3a8a8b34 100644 --- a/website/docs/cdktf/typescript/r/wafv2_web_acl.html.markdown +++ b/website/docs/cdktf/typescript/r/wafv2_web_acl.html.markdown @@ -875,9 +875,18 @@ The `managedRuleGroupConfigs` block support the following arguments: * `creationPath` - (Required) The path of the account creation endpoint for your application. This is the page on your website that accepts the completed registration form for a new user. This page must accept POST requests. * `enableRegexInPath` - (Optional) Whether or not to allow the use of regular expressions in the login page path. * `registrationPagePath` - (Required) The path of the account registration endpoint for your application. This is the page on your website that presents the registration form to new users. This page must accept GET text/html requests. -* `requestInspection` - (Optional) The criteria for inspecting login requests, used by the ATP rule group to validate credentials usage. See [`requestInspection`](#request_inspection-block) for more details. +* `requestInspection` - (Optional) The criteria for inspecting login requests, used by the ATP rule group to validate credentials usage. See [`requestInspection`](#request_inspection-block-acfp) for more details. * `responseInspection` - (Optional) The criteria for inspecting responses to login requests, used by the ATP rule group to track login failure rates. Note that Response Inspection is available only on web ACLs that protect CloudFront distributions. See [`responseInspection`](#response_inspection-block) for more details. +### `requestInspection` Block (ACFP) + +* `addressFields` (Optional) The names of the fields in the request payload that contain your customer's primary physical address. See [`addressFields`](#address_fields-block) for more details. +* `emailField` (Optional) The name of the field in the request payload that contains your customer's email. See [`emailField`](#email_field-block) for more details. +* `passwordField` (Optional) Details about your login page password field. See [`passwordField`](#password_field-block) for more details. +* `payloadType` (Required) The payload type for your login endpoint, either JSON or form encoded. +* `phoneNumberFields` (Optional) The names of the fields in the request payload that contain your customer's primary phone number. See [`phoneNumberFields`](#phone_number_fields-block) for more details. +* `usernameField` (Optional) Details about your login page username field. See [`usernameField`](#username_field-block) for more details. + ### `awsManagedRulesAntiDdosRuleSet` Block * `clientSideActionConfig` - (Required) Configuration for the request handling that's applied by the managed rule group rules `ChallengeAllDuringEvent` and `ChallengeDDoSRequests` during a distributed denial of service (DDoS) attack. See [`clientSideActionConfig`](#client_side_action_config-block) for more details. @@ -900,11 +909,8 @@ The `managedRuleGroupConfigs` block support the following arguments: ### `requestInspection` Block -* `addressFields` (Optional) The names of the fields in the request payload that contain your customer's primary physical address. See [`addressFields`](#address_fields-block) for more details. -* `emailField` (Optional) The name of the field in the request payload that contains your customer's email. See [`emailField`](#email_field-block) for more details. * `passwordField` (Optional) Details about your login page password field. See [`passwordField`](#password_field-block) for more details. * `payloadType` (Required) The payload type for your login endpoint, either JSON or form encoded. -* `phoneNumberFields` (Optional) The names of the fields in the request payload that contain your customer's primary phone number. See [`phoneNumberFields`](#phone_number_fields-block) for more details. * `usernameField` (Optional) Details about your login page username field. See [`usernameField`](#username_field-block) for more details. ### `addressFields` Block @@ -1305,4 +1311,4 @@ Using `terraform import`, import WAFv2 Web ACLs using `ID/Name/Scope`. For examp % terraform import aws_wafv2_web_acl.example a1b2c3d4-d5f6-7777-8888-9999aaaabbbbcccc/example/REGIONAL ``` - \ No newline at end of file + \ No newline at end of file From 1f5ca9b67b65ae03d62a92ca56384e4535b9b4d0 Mon Sep 17 00:00:00 2001 From: David Xia Date: Mon, 22 Sep 2025 15:19:40 -0400 Subject: [PATCH 61/81] Fix grammar, formatting, and a command on EKS add-on page (#44385) Signed-off-by: David Xia --- website/docs/r/eks_addon.html.markdown | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/website/docs/r/eks_addon.html.markdown b/website/docs/r/eks_addon.html.markdown index 3f5cb3d92c2f..438f8f44b227 100644 --- a/website/docs/r/eks_addon.html.markdown +++ b/website/docs/r/eks_addon.html.markdown @@ -38,13 +38,14 @@ Custom add-on configuration can be passed using `configuration_values` as a sing ~> **Note:** `configuration_values` is a single JSON string should match the valid JSON schema for each add-on with specific version. -To find the correct JSON schema for each add-on can be extracted using [describe-addon-configuration](https://docs.aws.amazon.com/cli/latest/reference/eks/describe-addon-configuration.html) call. -This below is an example for extracting the `configuration_values` schema for `coredns`. +You can use [describe-addon-configuration](https://docs.aws.amazon.com/cli/latest/reference/eks/describe-addon-configuration.html) to extract each add-on's JSON schema. +Here's an example command to extract the `configuration_values` schema for `coredns`. ```bash - aws eks describe-addon-configuration \ - --addon-name coredns \ - --addon-version v1.10.1-eksbuild.1 +aws eks describe-addon-configuration \ + --addon-name coredns \ + --addon-version v1.10.1-eksbuild.1 \ + | jq -r .configurationSchema | jq . ``` Example to create a `coredns` managed addon with custom `configuration_values`. From cf7307ce72f8ae25205c8f88c31308724820500b Mon Sep 17 00:00:00 2001 From: Graham Davison Date: Mon, 22 Sep 2025 12:21:04 -0700 Subject: [PATCH 62/81] Defers setting Database Insights until modify if `global_cluster_identifier` is set --- internal/service/rds/cluster.go | 10 +++- internal/service/rds/cluster_test.go | 82 ++++++++++++++++++++++++++++ 2 files changed, 91 insertions(+), 1 deletion(-) diff --git a/internal/service/rds/cluster.go b/internal/service/rds/cluster.go index e95539d9a093..409b9e47f045 100644 --- a/internal/service/rds/cluster.go +++ b/internal/service/rds/cluster.go @@ -1179,7 +1179,15 @@ func resourceClusterCreate(ctx context.Context, d *schema.ResourceData, meta any } if v := d.Get("database_insights_mode"); v.(string) != "" { - input.DatabaseInsightsMode = types.DatabaseInsightsMode(v.(string)) + // If the cluster is part of a global cluster, defer Database Insights settings + // to the modifyDbClusterInput to prevent them from being reset. + if _, ok := d.GetOk("global_cluster_identifier"); ok { + modifyDbClusterInput.DatabaseInsightsMode = types.DatabaseInsightsMode(v.(string)) + requiresModifyDbCluster = true + } else { + input.DatabaseInsightsMode = types.DatabaseInsightsMode(v.(string)) + } + } if v := d.Get(names.AttrDatabaseName); v.(string) != "" { diff --git a/internal/service/rds/cluster_test.go b/internal/service/rds/cluster_test.go index c41fda16bede..8454d9232785 100644 --- a/internal/service/rds/cluster_test.go +++ b/internal/service/rds/cluster_test.go @@ -3363,6 +3363,46 @@ func TestAccRDSCluster_databaseInsightsMode_defaultKMSKey_create(t *testing.T) { }) } +func TestAccRDSCluster_GlobalClusterIdentifier_databaseInsightsMode_defaultKMSKey_create(t *testing.T) { + ctx := acctest.Context(t) + if testing.Short() { + t.Skip("skipping long-running test in short mode") + } + + var dbCluster types.DBCluster + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + resourceName := "aws_rds_cluster.test" + + kmsKeyIDExpectNoChange := statecheck.CompareValue(compare.ValuesSame()) + + 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_GlobalClusterIdentifier_databaseInsightsMode_defaultKMSKey(rName, "advanced", true, "465"), + Check: resource.ComposeTestCheckFunc( + testAccCheckClusterExists(ctx, resourceName, &dbCluster), + ), + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New("database_insights_mode"), knownvalue.StringExact("advanced")), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New("performance_insights_enabled"), knownvalue.Bool(true)), + kmsKeyIDExpectNoChange.AddStateValue("data.aws_kms_key.rds", tfjsonpath.New(names.AttrARN)), + kmsKeyIDExpectNoChange.AddStateValue(resourceName, tfjsonpath.New("performance_insights_kms_key_id")), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New("performance_insights_retention_period"), knownvalue.Int64Exact(465)), + }, + }, + }, + }) +} + func TestAccRDSCluster_databaseInsightsMode_defaultKMSKey_Disable_PerformanceInsightsEnabled(t *testing.T) { ctx := acctest.Context(t) if testing.Short() { @@ -7221,6 +7261,48 @@ data "aws_kms_key" "rds" { `, rName, tfrds.ClusterEngineMySQL, databaseInsightsMode, performanceInsightsEnabled, performanceInsightsRetentionPeriod)) } +func testAccClusterConfig_GlobalClusterIdentifier_databaseInsightsMode_defaultKMSKey(rName, databaseInsightsMode string, performanceInsightsEnabled bool, performanceInsightsRetentionPeriod string) string { + if databaseInsightsMode != "null" { + databaseInsightsMode = strconv.Quote(databaseInsightsMode) + } + + return acctest.ConfigCompose( + testAccClusterConfig_clusterSubnetGroup(rName), + fmt.Sprintf(` +resource "aws_rds_cluster" "test" { + cluster_identifier = %[1]q + global_cluster_identifier = aws_rds_global_cluster.test.global_cluster_identifier + + engine = aws_rds_global_cluster.test.engine + engine_version = aws_rds_global_cluster.test.engine_version + + master_username = "tfacctest" + master_password = "avoid-plaintext-passwords" + skip_final_snapshot = true + apply_immediately = true + db_subnet_group_name = aws_db_subnet_group.test.name + + database_insights_mode = %[3]s + performance_insights_enabled = %[4]t + performance_insights_retention_period = %[5]s +} + +data "aws_rds_engine_version" "test" { + engine = "aurora-postgresql" +} + +resource "aws_rds_global_cluster" "test" { + global_cluster_identifier = %[1]q + engine = data.aws_rds_engine_version.test.engine + engine_version = data.aws_rds_engine_version.test.version +} + +data "aws_kms_key" "rds" { + key_id = "alias/aws/rds" +} +`, rName, tfrds.ClusterEngineMySQL, databaseInsightsMode, performanceInsightsEnabled, performanceInsightsRetentionPeriod)) +} + func testAccClusterConfig_databaseInsightsMode_customKMSKey(rName, databaseInsightsMode string, performanceInsightsEnabled bool, performanceInsightsRetentionPeriod string) string { if databaseInsightsMode != "null" { databaseInsightsMode = strconv.Quote(databaseInsightsMode) From 2d78269e9c4c35528717e71c6f353c8d7bed11ac Mon Sep 17 00:00:00 2001 From: Graham Davison Date: Mon, 22 Sep 2025 12:59:05 -0700 Subject: [PATCH 63/81] Do not set `deletion_protection_enabled` in `basic` test --- internal/service/dsql/cluster_test.go | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/internal/service/dsql/cluster_test.go b/internal/service/dsql/cluster_test.go index e7a5e5070705..16bf487e3e58 100644 --- a/internal/service/dsql/cluster_test.go +++ b/internal/service/dsql/cluster_test.go @@ -41,7 +41,7 @@ func TestAccDSQLCluster_basic(t *testing.T) { CheckDestroy: testAccCheckClusterDestroy(ctx), Steps: []resource.TestStep{ { - Config: testAccClusterConfig_basic(false), + Config: testAccClusterConfig_basic(), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckClusterExists(ctx, resourceName, &cluster), ), @@ -90,7 +90,7 @@ func TestAccDSQLCluster_disappears(t *testing.T) { CheckDestroy: testAccCheckClusterDestroy(ctx), Steps: []resource.TestStep{ { - Config: testAccClusterConfig_basic(false), + Config: testAccClusterConfig_basic(), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckClusterExists(ctx, resourceName, &cluster), acctest.CheckFrameworkResourceDisappears(ctx, acctest.Provider, tfdsql.ResourceCluster, resourceName), @@ -116,7 +116,7 @@ func TestAccDSQLCluster_deletionProtection(t *testing.T) { CheckDestroy: testAccCheckClusterDestroy(ctx), Steps: []resource.TestStep{ { - Config: testAccClusterConfig_basic(true), + Config: testAccClusterConfig_deletionProtection(true), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckClusterExists(ctx, resourceName, &cluster), ), @@ -137,7 +137,7 @@ func TestAccDSQLCluster_deletionProtection(t *testing.T) { ImportStateVerify: true, }, { - Config: testAccClusterConfig_basic(false), + Config: testAccClusterConfig_deletionProtection(false), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckClusterExists(ctx, resourceName, &cluster), ), @@ -281,7 +281,14 @@ func testAccPreCheck(ctx context.Context, t *testing.T) { } } -func testAccClusterConfig_basic(deletionProtection bool) string { +func testAccClusterConfig_basic() string { + return ` +resource "aws_dsql_cluster" "test" { +} +` +} + +func testAccClusterConfig_deletionProtection(deletionProtection bool) string { return fmt.Sprintf(` resource "aws_dsql_cluster" "test" { deletion_protection_enabled = %[1]t From 5490913691937a8ce10b5b00a69dd1024df85cca Mon Sep 17 00:00:00 2001 From: Graham Davison Date: Mon, 22 Sep 2025 13:10:04 -0700 Subject: [PATCH 64/81] `terrafmt` --- internal/service/rds/cluster_test.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/internal/service/rds/cluster_test.go b/internal/service/rds/cluster_test.go index 8454d9232785..bb0c212d2fdf 100644 --- a/internal/service/rds/cluster_test.go +++ b/internal/service/rds/cluster_test.go @@ -7275,12 +7275,12 @@ resource "aws_rds_cluster" "test" { engine = aws_rds_global_cluster.test.engine engine_version = aws_rds_global_cluster.test.engine_version - - master_username = "tfacctest" - master_password = "avoid-plaintext-passwords" - skip_final_snapshot = true - apply_immediately = true - db_subnet_group_name = aws_db_subnet_group.test.name + + master_username = "tfacctest" + master_password = "avoid-plaintext-passwords" + skip_final_snapshot = true + apply_immediately = true + db_subnet_group_name = aws_db_subnet_group.test.name database_insights_mode = %[3]s performance_insights_enabled = %[4]t From f794925269accfac558c9970f2ad796aa4b474d3 Mon Sep 17 00:00:00 2001 From: Graham Davison Date: Mon, 22 Sep 2025 13:11:40 -0700 Subject: [PATCH 65/81] Adds CHANGELOG entry --- .changelog/44404.txt | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .changelog/44404.txt diff --git a/.changelog/44404.txt b/.changelog/44404.txt new file mode 100644 index 000000000000..deeb5ce91342 --- /dev/null +++ b/.changelog/44404.txt @@ -0,0 +1,3 @@ +```release-note:bug +resource/aws_rds_cluster: Fixes error when setting `database_insights_mode` with `global_cluster_identifier`. +``` From 7af7874215573b8190cbc8feb371ef0ec79b49e3 Mon Sep 17 00:00:00 2001 From: Graham Davison Date: Mon, 22 Sep 2025 14:08:04 -0700 Subject: [PATCH 66/81] Do not set `deletion_protection_enabled` in generated `basic` tests --- internal/service/dsql/testdata/Cluster/tags/main_gen.tf | 1 - .../service/dsql/testdata/Cluster/tagsComputed1/main_gen.tf | 1 - .../service/dsql/testdata/Cluster/tagsComputed2/main_gen.tf | 1 - .../service/dsql/testdata/Cluster/tags_defaults/main_gen.tf | 1 - internal/service/dsql/testdata/Cluster/tags_ignore/main_gen.tf | 1 - internal/service/dsql/testdata/tmpl/cluster_tags.gtpl | 2 -- 6 files changed, 7 deletions(-) diff --git a/internal/service/dsql/testdata/Cluster/tags/main_gen.tf b/internal/service/dsql/testdata/Cluster/tags/main_gen.tf index f5875265a59a..96c0f3a45d76 100644 --- a/internal/service/dsql/testdata/Cluster/tags/main_gen.tf +++ b/internal/service/dsql/testdata/Cluster/tags/main_gen.tf @@ -2,7 +2,6 @@ # SPDX-License-Identifier: MPL-2.0 resource "aws_dsql_cluster" "test" { - deletion_protection_enabled = false tags = var.resource_tags } diff --git a/internal/service/dsql/testdata/Cluster/tagsComputed1/main_gen.tf b/internal/service/dsql/testdata/Cluster/tagsComputed1/main_gen.tf index bf899b793980..a67b632df7d6 100644 --- a/internal/service/dsql/testdata/Cluster/tagsComputed1/main_gen.tf +++ b/internal/service/dsql/testdata/Cluster/tagsComputed1/main_gen.tf @@ -4,7 +4,6 @@ provider "null" {} resource "aws_dsql_cluster" "test" { - deletion_protection_enabled = false tags = { (var.unknownTagKey) = null_resource.test.id diff --git a/internal/service/dsql/testdata/Cluster/tagsComputed2/main_gen.tf b/internal/service/dsql/testdata/Cluster/tagsComputed2/main_gen.tf index cec497deac96..8256cfda2360 100644 --- a/internal/service/dsql/testdata/Cluster/tagsComputed2/main_gen.tf +++ b/internal/service/dsql/testdata/Cluster/tagsComputed2/main_gen.tf @@ -4,7 +4,6 @@ provider "null" {} resource "aws_dsql_cluster" "test" { - deletion_protection_enabled = false tags = { (var.unknownTagKey) = null_resource.test.id diff --git a/internal/service/dsql/testdata/Cluster/tags_defaults/main_gen.tf b/internal/service/dsql/testdata/Cluster/tags_defaults/main_gen.tf index 8c2467b0aa35..e1ca72e23572 100644 --- a/internal/service/dsql/testdata/Cluster/tags_defaults/main_gen.tf +++ b/internal/service/dsql/testdata/Cluster/tags_defaults/main_gen.tf @@ -8,7 +8,6 @@ provider "aws" { } resource "aws_dsql_cluster" "test" { - deletion_protection_enabled = false tags = var.resource_tags } diff --git a/internal/service/dsql/testdata/Cluster/tags_ignore/main_gen.tf b/internal/service/dsql/testdata/Cluster/tags_ignore/main_gen.tf index 7be76126b85a..a25d4871c843 100644 --- a/internal/service/dsql/testdata/Cluster/tags_ignore/main_gen.tf +++ b/internal/service/dsql/testdata/Cluster/tags_ignore/main_gen.tf @@ -11,7 +11,6 @@ provider "aws" { } resource "aws_dsql_cluster" "test" { - deletion_protection_enabled = false tags = var.resource_tags } diff --git a/internal/service/dsql/testdata/tmpl/cluster_tags.gtpl b/internal/service/dsql/testdata/tmpl/cluster_tags.gtpl index 1442422e1c3d..1e30f96959fb 100644 --- a/internal/service/dsql/testdata/tmpl/cluster_tags.gtpl +++ b/internal/service/dsql/testdata/tmpl/cluster_tags.gtpl @@ -1,6 +1,4 @@ resource "aws_dsql_cluster" "test" { - deletion_protection_enabled = false - {{- template "tags" . }} } From 5e465094a53e733eb0316b12621d3c22614c78c8 Mon Sep 17 00:00:00 2001 From: Graham Davison Date: Mon, 22 Sep 2025 14:09:01 -0700 Subject: [PATCH 67/81] Removes unneeded `output` block from generated tests --- internal/service/dsql/cluster.go | 1 + .../service/dsql/cluster_tags_gen_test.go | 96 ------------------- .../dsql/testdata/Cluster/tags/main_gen.tf | 11 --- .../Cluster/tagsComputed1/main_gen.tf | 11 --- .../Cluster/tagsComputed2/main_gen.tf | 11 --- .../Cluster/tags_defaults/main_gen.tf | 11 --- .../testdata/Cluster/tags_ignore/main_gen.tf | 11 --- .../dsql/testdata/tmpl/cluster_tags.gtpl | 5 - 8 files changed, 1 insertion(+), 156 deletions(-) diff --git a/internal/service/dsql/cluster.go b/internal/service/dsql/cluster.go index d03c24296a55..cf14a0ed6554 100644 --- a/internal/service/dsql/cluster.go +++ b/internal/service/dsql/cluster.go @@ -43,6 +43,7 @@ import ( // @Tags(identifierAttribute="arn") // @Testing(existsType="github.com/aws/aws-sdk-go-v2/service/dsql;dsql.GetClusterOutput") // @Testing(importStateIdAttribute="identifier") +// @Testing(generator=false) func newClusterResource(_ context.Context) (resource.ResourceWithConfigure, error) { r := &clusterResource{} diff --git a/internal/service/dsql/cluster_tags_gen_test.go b/internal/service/dsql/cluster_tags_gen_test.go index bb1bfc9b10cf..697fd518bc74 100644 --- a/internal/service/dsql/cluster_tags_gen_test.go +++ b/internal/service/dsql/cluster_tags_gen_test.go @@ -21,7 +21,6 @@ func TestAccDSQLCluster_tags(t *testing.T) { var v dsql.GetClusterOutput resourceName := "aws_dsql_cluster.test" - rName := acctest.RandomWithPrefix(t, acctest.ResourcePrefix) acctest.ParallelTest(ctx, t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) }, @@ -32,7 +31,6 @@ func TestAccDSQLCluster_tags(t *testing.T) { { ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ acctest.CtKey1: config.StringVariable(acctest.CtValue1), }), @@ -63,7 +61,6 @@ func TestAccDSQLCluster_tags(t *testing.T) { { ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ acctest.CtKey1: config.StringVariable(acctest.CtValue1), }), @@ -77,7 +74,6 @@ func TestAccDSQLCluster_tags(t *testing.T) { { ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ acctest.CtKey1: config.StringVariable(acctest.CtValue1Updated), acctest.CtKey2: config.StringVariable(acctest.CtValue2), @@ -113,7 +109,6 @@ func TestAccDSQLCluster_tags(t *testing.T) { { ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ acctest.CtKey1: config.StringVariable(acctest.CtValue1Updated), acctest.CtKey2: config.StringVariable(acctest.CtValue2), @@ -128,7 +123,6 @@ func TestAccDSQLCluster_tags(t *testing.T) { { ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ acctest.CtKey2: config.StringVariable(acctest.CtValue2), }), @@ -159,7 +153,6 @@ func TestAccDSQLCluster_tags(t *testing.T) { { ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ acctest.CtKey2: config.StringVariable(acctest.CtValue2), }), @@ -173,7 +166,6 @@ func TestAccDSQLCluster_tags(t *testing.T) { { ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtResourceTags: nil, }, Check: resource.ComposeAggregateTestCheckFunc( @@ -194,7 +186,6 @@ func TestAccDSQLCluster_tags(t *testing.T) { { ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtResourceTags: nil, }, ResourceName: resourceName, @@ -212,7 +203,6 @@ func TestAccDSQLCluster_tags_null(t *testing.T) { var v dsql.GetClusterOutput resourceName := "aws_dsql_cluster.test" - rName := acctest.RandomWithPrefix(t, acctest.ResourcePrefix) acctest.ParallelTest(ctx, t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) }, @@ -223,7 +213,6 @@ func TestAccDSQLCluster_tags_null(t *testing.T) { { ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ acctest.CtKey1: nil, }), @@ -254,7 +243,6 @@ func TestAccDSQLCluster_tags_null(t *testing.T) { { ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ acctest.CtKey1: nil, }), @@ -277,7 +265,6 @@ func TestAccDSQLCluster_tags_EmptyMap(t *testing.T) { var v dsql.GetClusterOutput resourceName := "aws_dsql_cluster.test" - rName := acctest.RandomWithPrefix(t, acctest.ResourcePrefix) acctest.ParallelTest(ctx, t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) }, @@ -288,7 +275,6 @@ func TestAccDSQLCluster_tags_EmptyMap(t *testing.T) { { ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{}), }, Check: resource.ComposeAggregateTestCheckFunc( @@ -309,7 +295,6 @@ func TestAccDSQLCluster_tags_EmptyMap(t *testing.T) { { ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{}), }, ResourceName: resourceName, @@ -330,7 +315,6 @@ func TestAccDSQLCluster_tags_AddOnUpdate(t *testing.T) { var v dsql.GetClusterOutput resourceName := "aws_dsql_cluster.test" - rName := acctest.RandomWithPrefix(t, acctest.ResourcePrefix) acctest.ParallelTest(ctx, t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) }, @@ -341,7 +325,6 @@ func TestAccDSQLCluster_tags_AddOnUpdate(t *testing.T) { { ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtResourceTags: nil, }, Check: resource.ComposeAggregateTestCheckFunc( @@ -362,7 +345,6 @@ func TestAccDSQLCluster_tags_AddOnUpdate(t *testing.T) { { ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ acctest.CtKey1: config.StringVariable(acctest.CtValue1), }), @@ -393,7 +375,6 @@ func TestAccDSQLCluster_tags_AddOnUpdate(t *testing.T) { { ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ acctest.CtKey1: config.StringVariable(acctest.CtValue1), }), @@ -413,7 +394,6 @@ func TestAccDSQLCluster_tags_EmptyTag_OnCreate(t *testing.T) { var v dsql.GetClusterOutput resourceName := "aws_dsql_cluster.test" - rName := acctest.RandomWithPrefix(t, acctest.ResourcePrefix) acctest.ParallelTest(ctx, t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) }, @@ -424,7 +404,6 @@ func TestAccDSQLCluster_tags_EmptyTag_OnCreate(t *testing.T) { { ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ acctest.CtKey1: config.StringVariable(""), }), @@ -455,7 +434,6 @@ func TestAccDSQLCluster_tags_EmptyTag_OnCreate(t *testing.T) { { ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ acctest.CtKey1: config.StringVariable(""), }), @@ -469,7 +447,6 @@ func TestAccDSQLCluster_tags_EmptyTag_OnCreate(t *testing.T) { { ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtResourceTags: nil, }, Check: resource.ComposeAggregateTestCheckFunc( @@ -490,7 +467,6 @@ func TestAccDSQLCluster_tags_EmptyTag_OnCreate(t *testing.T) { { ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtResourceTags: nil, }, ResourceName: resourceName, @@ -508,7 +484,6 @@ func TestAccDSQLCluster_tags_EmptyTag_OnUpdate_Add(t *testing.T) { var v dsql.GetClusterOutput resourceName := "aws_dsql_cluster.test" - rName := acctest.RandomWithPrefix(t, acctest.ResourcePrefix) acctest.ParallelTest(ctx, t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) }, @@ -519,7 +494,6 @@ func TestAccDSQLCluster_tags_EmptyTag_OnUpdate_Add(t *testing.T) { { ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ acctest.CtKey1: config.StringVariable(acctest.CtValue1), }), @@ -550,7 +524,6 @@ func TestAccDSQLCluster_tags_EmptyTag_OnUpdate_Add(t *testing.T) { { ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ acctest.CtKey1: config.StringVariable(acctest.CtValue1), acctest.CtKey2: config.StringVariable(""), @@ -586,7 +559,6 @@ func TestAccDSQLCluster_tags_EmptyTag_OnUpdate_Add(t *testing.T) { { ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ acctest.CtKey1: config.StringVariable(acctest.CtValue1), acctest.CtKey2: config.StringVariable(""), @@ -601,7 +573,6 @@ func TestAccDSQLCluster_tags_EmptyTag_OnUpdate_Add(t *testing.T) { { ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ acctest.CtKey1: config.StringVariable(acctest.CtValue1), }), @@ -632,7 +603,6 @@ func TestAccDSQLCluster_tags_EmptyTag_OnUpdate_Add(t *testing.T) { { ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ acctest.CtKey1: config.StringVariable(acctest.CtValue1), }), @@ -652,7 +622,6 @@ func TestAccDSQLCluster_tags_EmptyTag_OnUpdate_Replace(t *testing.T) { var v dsql.GetClusterOutput resourceName := "aws_dsql_cluster.test" - rName := acctest.RandomWithPrefix(t, acctest.ResourcePrefix) acctest.ParallelTest(ctx, t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) }, @@ -663,7 +632,6 @@ func TestAccDSQLCluster_tags_EmptyTag_OnUpdate_Replace(t *testing.T) { { ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ acctest.CtKey1: config.StringVariable(acctest.CtValue1), }), @@ -694,7 +662,6 @@ func TestAccDSQLCluster_tags_EmptyTag_OnUpdate_Replace(t *testing.T) { { ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ acctest.CtKey1: config.StringVariable(""), }), @@ -725,7 +692,6 @@ func TestAccDSQLCluster_tags_EmptyTag_OnUpdate_Replace(t *testing.T) { { ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ acctest.CtKey1: config.StringVariable(""), }), @@ -745,7 +711,6 @@ func TestAccDSQLCluster_tags_DefaultTags_providerOnly(t *testing.T) { var v dsql.GetClusterOutput resourceName := "aws_dsql_cluster.test" - rName := acctest.RandomWithPrefix(t, acctest.ResourcePrefix) acctest.ParallelTest(ctx, t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) }, @@ -756,7 +721,6 @@ func TestAccDSQLCluster_tags_DefaultTags_providerOnly(t *testing.T) { ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags_defaults/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ acctest.CtKey1: config.StringVariable(acctest.CtValue1), }), @@ -785,7 +749,6 @@ func TestAccDSQLCluster_tags_DefaultTags_providerOnly(t *testing.T) { ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags_defaults/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ acctest.CtKey1: config.StringVariable(acctest.CtValue1), }), @@ -801,7 +764,6 @@ func TestAccDSQLCluster_tags_DefaultTags_providerOnly(t *testing.T) { ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags_defaults/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ acctest.CtKey1: config.StringVariable(acctest.CtValue1Updated), acctest.CtKey2: config.StringVariable(acctest.CtValue2), @@ -833,7 +795,6 @@ func TestAccDSQLCluster_tags_DefaultTags_providerOnly(t *testing.T) { ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags_defaults/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ acctest.CtKey1: config.StringVariable(acctest.CtValue1Updated), acctest.CtKey2: config.StringVariable(acctest.CtValue2), @@ -850,7 +811,6 @@ func TestAccDSQLCluster_tags_DefaultTags_providerOnly(t *testing.T) { ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags_defaults/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ acctest.CtKey2: config.StringVariable(acctest.CtValue2), }), @@ -879,7 +839,6 @@ func TestAccDSQLCluster_tags_DefaultTags_providerOnly(t *testing.T) { ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags_defaults/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ acctest.CtKey2: config.StringVariable(acctest.CtValue2), }), @@ -895,7 +854,6 @@ func TestAccDSQLCluster_tags_DefaultTags_providerOnly(t *testing.T) { ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtResourceTags: nil, }, Check: resource.ComposeAggregateTestCheckFunc( @@ -917,7 +875,6 @@ func TestAccDSQLCluster_tags_DefaultTags_providerOnly(t *testing.T) { ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtResourceTags: nil, }, ResourceName: resourceName, @@ -935,7 +892,6 @@ func TestAccDSQLCluster_tags_DefaultTags_nonOverlapping(t *testing.T) { var v dsql.GetClusterOutput resourceName := "aws_dsql_cluster.test" - rName := acctest.RandomWithPrefix(t, acctest.ResourcePrefix) acctest.ParallelTest(ctx, t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) }, @@ -946,7 +902,6 @@ func TestAccDSQLCluster_tags_DefaultTags_nonOverlapping(t *testing.T) { ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags_defaults/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ acctest.CtProviderKey1: config.StringVariable(acctest.CtProviderValue1), }), @@ -983,7 +938,6 @@ func TestAccDSQLCluster_tags_DefaultTags_nonOverlapping(t *testing.T) { ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags_defaults/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ acctest.CtProviderKey1: config.StringVariable(acctest.CtProviderValue1), }), @@ -1001,7 +955,6 @@ func TestAccDSQLCluster_tags_DefaultTags_nonOverlapping(t *testing.T) { ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags_defaults/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ acctest.CtProviderKey1: config.StringVariable(acctest.CtProviderValue1Updated), }), @@ -1043,7 +996,6 @@ func TestAccDSQLCluster_tags_DefaultTags_nonOverlapping(t *testing.T) { ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags_defaults/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ acctest.CtProviderKey1: config.StringVariable(acctest.CtProviderValue1Updated), }), @@ -1062,7 +1014,6 @@ func TestAccDSQLCluster_tags_DefaultTags_nonOverlapping(t *testing.T) { ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtResourceTags: nil, }, Check: resource.ComposeAggregateTestCheckFunc( @@ -1084,7 +1035,6 @@ func TestAccDSQLCluster_tags_DefaultTags_nonOverlapping(t *testing.T) { ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtResourceTags: nil, }, ResourceName: resourceName, @@ -1102,7 +1052,6 @@ func TestAccDSQLCluster_tags_DefaultTags_overlapping(t *testing.T) { var v dsql.GetClusterOutput resourceName := "aws_dsql_cluster.test" - rName := acctest.RandomWithPrefix(t, acctest.ResourcePrefix) acctest.ParallelTest(ctx, t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) }, @@ -1113,7 +1062,6 @@ func TestAccDSQLCluster_tags_DefaultTags_overlapping(t *testing.T) { ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags_defaults/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ acctest.CtOverlapKey1: config.StringVariable(acctest.CtProviderValue1), }), @@ -1148,7 +1096,6 @@ func TestAccDSQLCluster_tags_DefaultTags_overlapping(t *testing.T) { ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags_defaults/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ acctest.CtOverlapKey1: config.StringVariable(acctest.CtProviderValue1), }), @@ -1166,7 +1113,6 @@ func TestAccDSQLCluster_tags_DefaultTags_overlapping(t *testing.T) { ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags_defaults/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ acctest.CtOverlapKey1: config.StringVariable(acctest.CtProviderValue1), acctest.CtOverlapKey2: config.StringVariable("providervalue2"), @@ -1207,7 +1153,6 @@ func TestAccDSQLCluster_tags_DefaultTags_overlapping(t *testing.T) { ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags_defaults/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ acctest.CtOverlapKey1: config.StringVariable(acctest.CtProviderValue1), acctest.CtOverlapKey2: config.StringVariable("providervalue2"), @@ -1227,7 +1172,6 @@ func TestAccDSQLCluster_tags_DefaultTags_overlapping(t *testing.T) { ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags_defaults/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ acctest.CtOverlapKey1: config.StringVariable(acctest.CtProviderValue1), }), @@ -1262,7 +1206,6 @@ func TestAccDSQLCluster_tags_DefaultTags_overlapping(t *testing.T) { ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags_defaults/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ acctest.CtOverlapKey1: config.StringVariable(acctest.CtProviderValue1), }), @@ -1285,7 +1228,6 @@ func TestAccDSQLCluster_tags_DefaultTags_updateToProviderOnly(t *testing.T) { var v dsql.GetClusterOutput resourceName := "aws_dsql_cluster.test" - rName := acctest.RandomWithPrefix(t, acctest.ResourcePrefix) acctest.ParallelTest(ctx, t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) }, @@ -1296,7 +1238,6 @@ func TestAccDSQLCluster_tags_DefaultTags_updateToProviderOnly(t *testing.T) { ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ acctest.CtKey1: config.StringVariable(acctest.CtValue1), }), @@ -1328,7 +1269,6 @@ func TestAccDSQLCluster_tags_DefaultTags_updateToProviderOnly(t *testing.T) { ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags_defaults/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ acctest.CtKey1: config.StringVariable(acctest.CtValue1), }), @@ -1357,7 +1297,6 @@ func TestAccDSQLCluster_tags_DefaultTags_updateToProviderOnly(t *testing.T) { ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags_defaults/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ acctest.CtKey1: config.StringVariable(acctest.CtValue1), }), @@ -1378,7 +1317,6 @@ func TestAccDSQLCluster_tags_DefaultTags_updateToResourceOnly(t *testing.T) { var v dsql.GetClusterOutput resourceName := "aws_dsql_cluster.test" - rName := acctest.RandomWithPrefix(t, acctest.ResourcePrefix) acctest.ParallelTest(ctx, t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) }, @@ -1389,7 +1327,6 @@ func TestAccDSQLCluster_tags_DefaultTags_updateToResourceOnly(t *testing.T) { ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags_defaults/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ acctest.CtKey1: config.StringVariable(acctest.CtValue1), }), @@ -1418,7 +1355,6 @@ func TestAccDSQLCluster_tags_DefaultTags_updateToResourceOnly(t *testing.T) { ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ acctest.CtKey1: config.StringVariable(acctest.CtValue1), }), @@ -1450,7 +1386,6 @@ func TestAccDSQLCluster_tags_DefaultTags_updateToResourceOnly(t *testing.T) { ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ acctest.CtKey1: config.StringVariable(acctest.CtValue1), }), @@ -1470,7 +1405,6 @@ func TestAccDSQLCluster_tags_DefaultTags_emptyResourceTag(t *testing.T) { var v dsql.GetClusterOutput resourceName := "aws_dsql_cluster.test" - rName := acctest.RandomWithPrefix(t, acctest.ResourcePrefix) acctest.ParallelTest(ctx, t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) }, @@ -1481,7 +1415,6 @@ func TestAccDSQLCluster_tags_DefaultTags_emptyResourceTag(t *testing.T) { ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags_defaults/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ acctest.CtKey1: config.StringVariable(acctest.CtValue1), }), @@ -1516,7 +1449,6 @@ func TestAccDSQLCluster_tags_DefaultTags_emptyResourceTag(t *testing.T) { ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags_defaults/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ acctest.CtKey1: config.StringVariable(acctest.CtValue1), }), @@ -1539,7 +1471,6 @@ func TestAccDSQLCluster_tags_DefaultTags_emptyProviderOnlyTag(t *testing.T) { var v dsql.GetClusterOutput resourceName := "aws_dsql_cluster.test" - rName := acctest.RandomWithPrefix(t, acctest.ResourcePrefix) acctest.ParallelTest(ctx, t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) }, @@ -1550,7 +1481,6 @@ func TestAccDSQLCluster_tags_DefaultTags_emptyProviderOnlyTag(t *testing.T) { ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags_defaults/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ acctest.CtKey1: config.StringVariable(""), }), @@ -1579,7 +1509,6 @@ func TestAccDSQLCluster_tags_DefaultTags_emptyProviderOnlyTag(t *testing.T) { ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags_defaults/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ acctest.CtKey1: config.StringVariable(""), }), @@ -1600,7 +1529,6 @@ func TestAccDSQLCluster_tags_DefaultTags_nullOverlappingResourceTag(t *testing.T var v dsql.GetClusterOutput resourceName := "aws_dsql_cluster.test" - rName := acctest.RandomWithPrefix(t, acctest.ResourcePrefix) acctest.ParallelTest(ctx, t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) }, @@ -1611,7 +1539,6 @@ func TestAccDSQLCluster_tags_DefaultTags_nullOverlappingResourceTag(t *testing.T ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags_defaults/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ acctest.CtKey1: config.StringVariable(acctest.CtProviderValue1), }), @@ -1646,7 +1573,6 @@ func TestAccDSQLCluster_tags_DefaultTags_nullOverlappingResourceTag(t *testing.T ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags_defaults/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ acctest.CtKey1: config.StringVariable(acctest.CtProviderValue1), }), @@ -1672,7 +1598,6 @@ func TestAccDSQLCluster_tags_DefaultTags_nullNonOverlappingResourceTag(t *testin var v dsql.GetClusterOutput resourceName := "aws_dsql_cluster.test" - rName := acctest.RandomWithPrefix(t, acctest.ResourcePrefix) acctest.ParallelTest(ctx, t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) }, @@ -1683,7 +1608,6 @@ func TestAccDSQLCluster_tags_DefaultTags_nullNonOverlappingResourceTag(t *testin ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags_defaults/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ acctest.CtProviderKey1: config.StringVariable(acctest.CtProviderValue1), }), @@ -1720,7 +1644,6 @@ func TestAccDSQLCluster_tags_DefaultTags_nullNonOverlappingResourceTag(t *testin ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags_defaults/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ acctest.CtProviderKey1: config.StringVariable(acctest.CtProviderValue1), }), @@ -1746,7 +1669,6 @@ func TestAccDSQLCluster_tags_ComputedTag_OnCreate(t *testing.T) { var v dsql.GetClusterOutput resourceName := "aws_dsql_cluster.test" - rName := acctest.RandomWithPrefix(t, acctest.ResourcePrefix) acctest.ParallelTest(ctx, t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) }, @@ -1757,7 +1679,6 @@ func TestAccDSQLCluster_tags_ComputedTag_OnCreate(t *testing.T) { ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, ConfigDirectory: config.StaticDirectory("testdata/Cluster/tagsComputed1/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), "unknownTagKey": config.StringVariable("computedkey1"), }, Check: resource.ComposeAggregateTestCheckFunc( @@ -1786,7 +1707,6 @@ func TestAccDSQLCluster_tags_ComputedTag_OnCreate(t *testing.T) { ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, ConfigDirectory: config.StaticDirectory("testdata/Cluster/tagsComputed1/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), "unknownTagKey": config.StringVariable("computedkey1"), }, ResourceName: resourceName, @@ -1804,7 +1724,6 @@ func TestAccDSQLCluster_tags_ComputedTag_OnUpdate_Add(t *testing.T) { var v dsql.GetClusterOutput resourceName := "aws_dsql_cluster.test" - rName := acctest.RandomWithPrefix(t, acctest.ResourcePrefix) acctest.ParallelTest(ctx, t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) }, @@ -1815,7 +1734,6 @@ func TestAccDSQLCluster_tags_ComputedTag_OnUpdate_Add(t *testing.T) { ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ acctest.CtKey1: config.StringVariable(acctest.CtValue1), }), @@ -1847,7 +1765,6 @@ func TestAccDSQLCluster_tags_ComputedTag_OnUpdate_Add(t *testing.T) { ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, ConfigDirectory: config.StaticDirectory("testdata/Cluster/tagsComputed2/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), "unknownTagKey": config.StringVariable("computedkey1"), "knownTagKey": config.StringVariable(acctest.CtKey1), "knownTagValue": config.StringVariable(acctest.CtValue1), @@ -1884,7 +1801,6 @@ func TestAccDSQLCluster_tags_ComputedTag_OnUpdate_Add(t *testing.T) { ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, ConfigDirectory: config.StaticDirectory("testdata/Cluster/tagsComputed2/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), "unknownTagKey": config.StringVariable("computedkey1"), "knownTagKey": config.StringVariable(acctest.CtKey1), "knownTagValue": config.StringVariable(acctest.CtValue1), @@ -1904,7 +1820,6 @@ func TestAccDSQLCluster_tags_ComputedTag_OnUpdate_Replace(t *testing.T) { var v dsql.GetClusterOutput resourceName := "aws_dsql_cluster.test" - rName := acctest.RandomWithPrefix(t, acctest.ResourcePrefix) acctest.ParallelTest(ctx, t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) }, @@ -1915,7 +1830,6 @@ func TestAccDSQLCluster_tags_ComputedTag_OnUpdate_Replace(t *testing.T) { ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ acctest.CtKey1: config.StringVariable(acctest.CtValue1), }), @@ -1947,7 +1861,6 @@ func TestAccDSQLCluster_tags_ComputedTag_OnUpdate_Replace(t *testing.T) { ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, ConfigDirectory: config.StaticDirectory("testdata/Cluster/tagsComputed1/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), "unknownTagKey": config.StringVariable(acctest.CtKey1), }, Check: resource.ComposeAggregateTestCheckFunc( @@ -1976,7 +1889,6 @@ func TestAccDSQLCluster_tags_ComputedTag_OnUpdate_Replace(t *testing.T) { ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, ConfigDirectory: config.StaticDirectory("testdata/Cluster/tagsComputed1/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), "unknownTagKey": config.StringVariable(acctest.CtKey1), }, ResourceName: resourceName, @@ -1994,7 +1906,6 @@ func TestAccDSQLCluster_tags_IgnoreTags_Overlap_DefaultTag(t *testing.T) { var v dsql.GetClusterOutput resourceName := "aws_dsql_cluster.test" - rName := acctest.RandomWithPrefix(t, acctest.ResourcePrefix) acctest.ParallelTest(ctx, t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) }, @@ -2006,7 +1917,6 @@ func TestAccDSQLCluster_tags_IgnoreTags_Overlap_DefaultTag(t *testing.T) { ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags_ignore/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ acctest.CtProviderKey1: config.StringVariable(acctest.CtProviderValue1), }), @@ -2055,7 +1965,6 @@ func TestAccDSQLCluster_tags_IgnoreTags_Overlap_DefaultTag(t *testing.T) { ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags_ignore/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ acctest.CtProviderKey1: config.StringVariable(acctest.CtProviderValue1Updated), }), @@ -2104,7 +2013,6 @@ func TestAccDSQLCluster_tags_IgnoreTags_Overlap_DefaultTag(t *testing.T) { ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags_ignore/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ acctest.CtProviderKey1: config.StringVariable(acctest.CtProviderValue1Again), }), @@ -2157,7 +2065,6 @@ func TestAccDSQLCluster_tags_IgnoreTags_Overlap_ResourceTag(t *testing.T) { var v dsql.GetClusterOutput resourceName := "aws_dsql_cluster.test" - rName := acctest.RandomWithPrefix(t, acctest.ResourcePrefix) acctest.ParallelTest(ctx, t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) }, @@ -2169,7 +2076,6 @@ func TestAccDSQLCluster_tags_IgnoreTags_Overlap_ResourceTag(t *testing.T) { ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags_ignore/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ acctest.CtResourceKey1: config.StringVariable(acctest.CtResourceValue1), acctest.CtResourceKey2: config.StringVariable(acctest.CtResourceValue2), @@ -2227,7 +2133,6 @@ func TestAccDSQLCluster_tags_IgnoreTags_Overlap_ResourceTag(t *testing.T) { ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags_ignore/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ acctest.CtResourceKey1: config.StringVariable(acctest.CtResourceValue1Updated), acctest.CtResourceKey2: config.StringVariable(acctest.CtResourceValue2), @@ -2284,7 +2189,6 @@ func TestAccDSQLCluster_tags_IgnoreTags_Overlap_ResourceTag(t *testing.T) { ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, ConfigDirectory: config.StaticDirectory("testdata/Cluster/tags_ignore/"), ConfigVariables: config.Variables{ - acctest.CtRName: config.StringVariable(rName), acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ acctest.CtResourceKey1: config.StringVariable(acctest.CtResourceValue1Again), acctest.CtResourceKey2: config.StringVariable(acctest.CtResourceValue2Updated), diff --git a/internal/service/dsql/testdata/Cluster/tags/main_gen.tf b/internal/service/dsql/testdata/Cluster/tags/main_gen.tf index 96c0f3a45d76..77688faf1c6a 100644 --- a/internal/service/dsql/testdata/Cluster/tags/main_gen.tf +++ b/internal/service/dsql/testdata/Cluster/tags/main_gen.tf @@ -6,17 +6,6 @@ resource "aws_dsql_cluster" "test" { tags = var.resource_tags } -output "rName" { - value = var.rName - description = "To prevent tflint issues" -} - -variable "rName" { - description = "Name for resource" - type = string - nullable = false -} - variable "resource_tags" { description = "Tags to set on resource. To specify no tags, set to `null`" # Not setting a default, so that this must explicitly be set to `null` to specify no tags diff --git a/internal/service/dsql/testdata/Cluster/tagsComputed1/main_gen.tf b/internal/service/dsql/testdata/Cluster/tagsComputed1/main_gen.tf index a67b632df7d6..b3758f7e3bb8 100644 --- a/internal/service/dsql/testdata/Cluster/tagsComputed1/main_gen.tf +++ b/internal/service/dsql/testdata/Cluster/tagsComputed1/main_gen.tf @@ -10,19 +10,8 @@ resource "aws_dsql_cluster" "test" { } } -output "rName" { - value = var.rName - description = "To prevent tflint issues" -} - resource "null_resource" "test" {} -variable "rName" { - description = "Name for resource" - type = string - nullable = false -} - variable "unknownTagKey" { type = string nullable = false diff --git a/internal/service/dsql/testdata/Cluster/tagsComputed2/main_gen.tf b/internal/service/dsql/testdata/Cluster/tagsComputed2/main_gen.tf index 8256cfda2360..d5d7e5c15f5b 100644 --- a/internal/service/dsql/testdata/Cluster/tagsComputed2/main_gen.tf +++ b/internal/service/dsql/testdata/Cluster/tagsComputed2/main_gen.tf @@ -11,19 +11,8 @@ resource "aws_dsql_cluster" "test" { } } -output "rName" { - value = var.rName - description = "To prevent tflint issues" -} - resource "null_resource" "test" {} -variable "rName" { - description = "Name for resource" - type = string - nullable = false -} - variable "unknownTagKey" { type = string nullable = false diff --git a/internal/service/dsql/testdata/Cluster/tags_defaults/main_gen.tf b/internal/service/dsql/testdata/Cluster/tags_defaults/main_gen.tf index e1ca72e23572..d0bddd664596 100644 --- a/internal/service/dsql/testdata/Cluster/tags_defaults/main_gen.tf +++ b/internal/service/dsql/testdata/Cluster/tags_defaults/main_gen.tf @@ -12,17 +12,6 @@ resource "aws_dsql_cluster" "test" { tags = var.resource_tags } -output "rName" { - value = var.rName - description = "To prevent tflint issues" -} - -variable "rName" { - description = "Name for resource" - type = string - nullable = false -} - variable "resource_tags" { description = "Tags to set on resource. To specify no tags, set to `null`" # Not setting a default, so that this must explicitly be set to `null` to specify no tags diff --git a/internal/service/dsql/testdata/Cluster/tags_ignore/main_gen.tf b/internal/service/dsql/testdata/Cluster/tags_ignore/main_gen.tf index a25d4871c843..4f3d3c6ba9ba 100644 --- a/internal/service/dsql/testdata/Cluster/tags_ignore/main_gen.tf +++ b/internal/service/dsql/testdata/Cluster/tags_ignore/main_gen.tf @@ -15,17 +15,6 @@ resource "aws_dsql_cluster" "test" { tags = var.resource_tags } -output "rName" { - value = var.rName - description = "To prevent tflint issues" -} - -variable "rName" { - description = "Name for resource" - type = string - nullable = false -} - variable "resource_tags" { description = "Tags to set on resource. To specify no tags, set to `null`" # Not setting a default, so that this must explicitly be set to `null` to specify no tags diff --git a/internal/service/dsql/testdata/tmpl/cluster_tags.gtpl b/internal/service/dsql/testdata/tmpl/cluster_tags.gtpl index 1e30f96959fb..90c68885c9bc 100644 --- a/internal/service/dsql/testdata/tmpl/cluster_tags.gtpl +++ b/internal/service/dsql/testdata/tmpl/cluster_tags.gtpl @@ -1,8 +1,3 @@ resource "aws_dsql_cluster" "test" { {{- template "tags" . }} } - -output "rName" { - value = var.rName - description = "To prevent tflint issues" -} From 3e9c97f3f83a7ebedbd4df3f6a477d37d3bc8b99 Mon Sep 17 00:00:00 2001 From: Graham Davison Date: Mon, 22 Sep 2025 15:06:09 -0700 Subject: [PATCH 68/81] Makes `deletion_protection_enabled` actually optional --- internal/service/dsql/cluster.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/internal/service/dsql/cluster.go b/internal/service/dsql/cluster.go index cf14a0ed6554..561790f4ed9c 100644 --- a/internal/service/dsql/cluster.go +++ b/internal/service/dsql/cluster.go @@ -19,6 +19,7 @@ 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/resource/schema/booldefault" "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/stringplanmodifier" @@ -65,6 +66,8 @@ func (r *clusterResource) Schema(ctx context.Context, request resource.SchemaReq names.AttrARN: framework.ARNAttributeComputedOnly(), "deletion_protection_enabled": schema.BoolAttribute{ Optional: true, + Computed: true, + Default: booldefault.StaticBool(false), }, "encryption_details": framework.ResourceComputedListOfObjectsAttribute[encryptionDetailsModel](ctx), names.AttrIdentifier: framework.IDAttribute(), From f0afdb2be4a5f521fe415b3f88173ec8679f5eb4 Mon Sep 17 00:00:00 2001 From: Graham Davison Date: Mon, 22 Sep 2025 15:09:09 -0700 Subject: [PATCH 69/81] Adds `force_destroy` attribute --- internal/service/dsql/cluster.go | 32 +++++++++++++++++--- internal/service/dsql/cluster_test.go | 43 +++++++++++++++++++++++++++ 2 files changed, 71 insertions(+), 4 deletions(-) diff --git a/internal/service/dsql/cluster.go b/internal/service/dsql/cluster.go index 561790f4ed9c..a96c57350c55 100644 --- a/internal/service/dsql/cluster.go +++ b/internal/service/dsql/cluster.go @@ -70,6 +70,11 @@ func (r *clusterResource) Schema(ctx context.Context, request resource.SchemaReq Default: booldefault.StaticBool(false), }, "encryption_details": framework.ResourceComputedListOfObjectsAttribute[encryptionDetailsModel](ctx), + names.AttrForceDestroy: schema.BoolAttribute{ + Optional: true, + Computed: true, + Default: booldefault.StaticBool(false), + }, names.AttrIdentifier: framework.IDAttribute(), "kms_encryption_key": schema.StringAttribute{ Optional: true, @@ -313,6 +318,19 @@ func (r *clusterResource) Delete(ctx context.Context, request resource.DeleteReq conn := r.Meta().DSQLClient(ctx) + if data.ForceDestroy.ValueBool() { + input := dsql.UpdateClusterInput{ + Identifier: data.Identifier.ValueStringPointer(), + DeletionProtectionEnabled: aws.Bool(false), + ClientToken: aws.String(sdkid.UniqueId()), + } + // Changing DeletionProtectionEnabled is instantaneous, no need to wait. + if _, err := conn.UpdateCluster(ctx, &input); err != nil { + response.Diagnostics.AddError(fmt.Sprintf("disabling deletion protection for Aurora DSQL Cluster (%s)", data.Identifier.ValueString()), err.Error()) + return + } + } + id := fwflex.StringValueFromFramework(ctx, data.Identifier) tflog.Debug(ctx, "deleting Aurora DSQL Cluster", map[string]any{ names.AttrIdentifier: id, @@ -342,6 +360,9 @@ func (r *clusterResource) Delete(ctx context.Context, request resource.DeleteReq func (r *clusterResource) ImportState(ctx context.Context, request resource.ImportStateRequest, response *resource.ImportStateResponse) { resource.ImportStatePassthroughID(ctx, path.Root(names.AttrIdentifier), request, response) + + // Set force_destroy to false on import to prevent accidental deletion + response.Diagnostics.Append(response.State.SetAttribute(ctx, path.Root(names.AttrForceDestroy), types.BoolValue(false))...) } func findClusterByID(ctx context.Context, conn *dsql.Client, id string) (*dsql.GetClusterOutput, error) { @@ -445,10 +466,12 @@ func waitClusterUpdated(ctx context.Context, conn *dsql.Client, id string, timeo func waitClusterDeleted(ctx context.Context, conn *dsql.Client, id string, timeout time.Duration) (*dsql.GetClusterOutput, error) { stateConf := &retry.StateChangeConf{ - Pending: enum.Slice(awstypes.ClusterStatusDeleting, awstypes.ClusterStatusPendingDelete), - Target: []string{}, - Refresh: statusCluster(ctx, conn, id), - Timeout: timeout, + Pending: enum.Slice(awstypes.ClusterStatusDeleting, awstypes.ClusterStatusPendingDelete), + Target: []string{}, + Refresh: statusCluster(ctx, conn, id), + Timeout: timeout, + Delay: 1 * time.Minute, + PollInterval: 10 * time.Second, } outputRaw, err := stateConf.WaitForStateContext(ctx) @@ -526,6 +549,7 @@ type clusterResourceModel struct { ARN types.String `tfsdk:"arn"` DeletionProtectionEnabled types.Bool `tfsdk:"deletion_protection_enabled"` EncryptionDetails fwtypes.ListNestedObjectValueOf[encryptionDetailsModel] `tfsdk:"encryption_details"` + ForceDestroy types.Bool `tfsdk:"force_destroy"` Identifier types.String `tfsdk:"identifier"` KMSEncryptionKey types.String `tfsdk:"kms_encryption_key"` MultiRegionProperties fwtypes.ListNestedObjectValueOf[multiRegionPropertiesModel] `tfsdk:"multi_region_properties"` diff --git a/internal/service/dsql/cluster_test.go b/internal/service/dsql/cluster_test.go index 16bf487e3e58..fb71dcd6c3f2 100644 --- a/internal/service/dsql/cluster_test.go +++ b/internal/service/dsql/cluster_test.go @@ -59,6 +59,7 @@ func TestAccDSQLCluster_basic(t *testing.T) { "encryption_type": tfknownvalue.StringExact(awstypes.EncryptionTypeAwsOwnedKmsKey), }), })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New("force_destroy"), knownvalue.Bool(false)), statecheck.ExpectKnownValue(resourceName, tfjsonpath.New("kms_encryption_key"), knownvalue.StringExact("AWS_OWNED_KMS_KEY")), statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), statecheck.ExpectKnownValue(resourceName, tfjsonpath.New("vpc_endpoint_service_name"), knownvalue.NotNull()), @@ -154,6 +155,39 @@ func TestAccDSQLCluster_deletionProtection(t *testing.T) { }) } +func TestAccDSQLCluster_forceDestroy(t *testing.T) { + ctx := acctest.Context(t) + var cluster dsql.GetClusterOutput + resourceName := "aws_dsql_cluster.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { + acctest.PreCheck(ctx, t) + testAccPreCheck(ctx, t) + }, + ErrorCheck: acctest.ErrorCheck(t, names.DSQLServiceID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckClusterDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccClusterConfig_forceDestroy(true), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckClusterExists(ctx, resourceName, &cluster), + ), + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New("deletion_protection_enabled"), knownvalue.Bool(true)), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New("force_destroy"), knownvalue.Bool(true)), + }, + }, + }, + }) +} + func TestAccDSQLCluster_encryption(t *testing.T) { ctx := acctest.Context(t) var cluster dsql.GetClusterOutput @@ -296,6 +330,15 @@ resource "aws_dsql_cluster" "test" { `, deletionProtection) } +func testAccClusterConfig_forceDestroy(deletionProtection bool) string { + return fmt.Sprintf(` +resource "aws_dsql_cluster" "test" { + deletion_protection_enabled = %[1]t + force_destroy = true +} +`, deletionProtection) +} + func testAccClusterConfig_baseEncryptionDetails(rName string) string { return fmt.Sprintf(` resource "aws_kms_key" "test" { From 4d54bddff7b082ea7fb0c77c50b5b7f750a6e36d Mon Sep 17 00:00:00 2001 From: Graham Davison Date: Mon, 22 Sep 2025 15:10:43 -0700 Subject: [PATCH 70/81] Sets `force_destroy` when sweeping --- internal/service/dsql/sweep.go | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/internal/service/dsql/sweep.go b/internal/service/dsql/sweep.go index 9c11c3858005..6d3757ad65c1 100644 --- a/internal/service/dsql/sweep.go +++ b/internal/service/dsql/sweep.go @@ -21,9 +21,9 @@ func RegisterSweepers() { func sweepClusters(ctx context.Context, client *conns.AWSClient) ([]sweep.Sweepable, error) { conn := client.DSQLClient(ctx) - var input dsql.ListClustersInput - sweepResources := make([]sweep.Sweepable, 0) + var sweepResources []sweep.Sweepable + var input dsql.ListClustersInput pages := dsql.NewListClustersPaginator(conn, &input) for pages.HasMorePages() { page, err := pages.NextPage(ctx) @@ -34,8 +34,9 @@ func sweepClusters(ctx context.Context, client *conns.AWSClient) ([]sweep.Sweepa for _, v := range page.Clusters { sweepResources = append(sweepResources, framework.NewSweepResource(newClusterResource, client, - framework.NewAttribute(names.AttrIdentifier, aws.ToString(v.Identifier))), - ) + framework.NewAttribute(names.AttrIdentifier, aws.ToString(v.Identifier)), + framework.NewAttribute(names.AttrForceDestroy, true), + )) } } From b835bc39901238a6793f9c4d21082b8f44215c33 Mon Sep 17 00:00:00 2001 From: Graham Davison Date: Mon, 22 Sep 2025 15:13:38 -0700 Subject: [PATCH 71/81] Updates documentation --- website/docs/r/dsql_cluster.html.markdown | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/website/docs/r/dsql_cluster.html.markdown b/website/docs/r/dsql_cluster.html.markdown index f872264a42ac..e27650487b22 100644 --- a/website/docs/r/dsql_cluster.html.markdown +++ b/website/docs/r/dsql_cluster.html.markdown @@ -28,7 +28,10 @@ resource "aws_dsql_cluster" "example" { This resource supports the following arguments: -* `deletion_protection_enabled` - (Required) Whether deletion protection is enabled in this cluster. +* `deletion_protection_enabled` - (Optional) Whether deletion protection is enabled in this cluster. + Default value is `false`. +* `force_destroy` - (Optional) Destroys cluster even if `deletion_protection_enabled` is set to `true`. + Default value is `false`. * `kms_encryption_key` - (Optional) The ARN of the AWS KMS key that encrypts data in the DSQL Cluster, or `"AWS_OWNED_KMS_KEY"`. * `multi_region_properties` - (Optional) Multi-region properties of the DSQL Cluster. * `witness_region` - (Required) Witness region for the multi-region clusters. Setting this makes this cluster a multi-region cluster. Changing it recreates the resource. From e60d207f1a512264c162d4982e52ec70853a9054 Mon Sep 17 00:00:00 2001 From: Graham Davison Date: Mon, 22 Sep 2025 15:19:20 -0700 Subject: [PATCH 72/81] Adds CHANGELOG entry --- .changelog/44406.txt | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 .changelog/44406.txt diff --git a/.changelog/44406.txt b/.changelog/44406.txt new file mode 100644 index 000000000000..1c72b444b7f6 --- /dev/null +++ b/.changelog/44406.txt @@ -0,0 +1,7 @@ +```release-note:bug +resource/aws_dsql_cluster: Prevents error when optional attribute `deletion_protection_enabled` not set. +``` + +```release-note:enhancement +resource/aws_dsql_cluster: Adds attribute `force_destroy`. +``` From 08d6fcccd6d249200c3eafaadf156a3387b4f187 Mon Sep 17 00:00:00 2001 From: Graham Davison Date: Mon, 22 Sep 2025 21:50:55 -0700 Subject: [PATCH 73/81] Semgrep fixes --- internal/service/dsql/cluster_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/service/dsql/cluster_test.go b/internal/service/dsql/cluster_test.go index fb71dcd6c3f2..f7455ffc7458 100644 --- a/internal/service/dsql/cluster_test.go +++ b/internal/service/dsql/cluster_test.go @@ -59,7 +59,7 @@ func TestAccDSQLCluster_basic(t *testing.T) { "encryption_type": tfknownvalue.StringExact(awstypes.EncryptionTypeAwsOwnedKmsKey), }), })), - statecheck.ExpectKnownValue(resourceName, tfjsonpath.New("force_destroy"), knownvalue.Bool(false)), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrForceDestroy), knownvalue.Bool(false)), statecheck.ExpectKnownValue(resourceName, tfjsonpath.New("kms_encryption_key"), knownvalue.StringExact("AWS_OWNED_KMS_KEY")), statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), statecheck.ExpectKnownValue(resourceName, tfjsonpath.New("vpc_endpoint_service_name"), knownvalue.NotNull()), @@ -181,7 +181,7 @@ func TestAccDSQLCluster_forceDestroy(t *testing.T) { }, ConfigStateChecks: []statecheck.StateCheck{ statecheck.ExpectKnownValue(resourceName, tfjsonpath.New("deletion_protection_enabled"), knownvalue.Bool(true)), - statecheck.ExpectKnownValue(resourceName, tfjsonpath.New("force_destroy"), knownvalue.Bool(true)), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrForceDestroy), knownvalue.Bool(true)), }, }, }, From b1c8b534ddbad22fd99dd525616fe0d30fd4b1b8 Mon Sep 17 00:00:00 2001 From: Graham Davison Date: Mon, 22 Sep 2025 21:51:43 -0700 Subject: [PATCH 74/81] Linting fix --- internal/service/rds/cluster.go | 1 - 1 file changed, 1 deletion(-) diff --git a/internal/service/rds/cluster.go b/internal/service/rds/cluster.go index 409b9e47f045..74d2effbef6b 100644 --- a/internal/service/rds/cluster.go +++ b/internal/service/rds/cluster.go @@ -1187,7 +1187,6 @@ func resourceClusterCreate(ctx context.Context, d *schema.ResourceData, meta any } else { input.DatabaseInsightsMode = types.DatabaseInsightsMode(v.(string)) } - } if v := d.Get(names.AttrDatabaseName); v.(string) != "" { From 793bff7e126d5298b7bd12438a8ff6b1aa958414 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 23 Sep 2025 06:10:33 +0000 Subject: [PATCH 75/81] 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.37.0 to 2.38.1. - [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.37.0...v2.38.1) --- updated-dependencies: - dependency-name: github.com/hashicorp/terraform-plugin-sdk/v2 dependency-version: 2.38.1 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .ci/providerlint/go.mod | 26 ++++++++-------- .ci/providerlint/go.sum | 67 +++++++++++++++++++++-------------------- 2 files changed, 46 insertions(+), 47 deletions(-) diff --git a/.ci/providerlint/go.mod b/.ci/providerlint/go.mod index 18463cd78e6b..22b0699c6ac0 100644 --- a/.ci/providerlint/go.mod +++ b/.ci/providerlint/go.mod @@ -5,7 +5,7 @@ go 1.24.6 require ( github.com/bflad/tfproviderlint v0.31.0 github.com/hashicorp/aws-sdk-go-base/v2 v2.0.0-beta.66 - github.com/hashicorp/terraform-plugin-sdk/v2 v2.37.0 + github.com/hashicorp/terraform-plugin-sdk/v2 v2.38.1 golang.org/x/tools v0.37.0 ) @@ -24,21 +24,21 @@ require ( github.com/hashicorp/go-cty v1.5.0 // indirect github.com/hashicorp/go-hclog v1.6.3 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect - github.com/hashicorp/go-plugin v1.6.3 // indirect + github.com/hashicorp/go-plugin v1.7.0 // indirect github.com/hashicorp/go-retryablehttp v0.7.7 // indirect github.com/hashicorp/go-uuid v1.0.3 // indirect github.com/hashicorp/go-version v1.7.0 // indirect github.com/hashicorp/hc-install v0.9.2 // indirect - github.com/hashicorp/hcl/v2 v2.23.0 // indirect + github.com/hashicorp/hcl/v2 v2.24.0 // indirect github.com/hashicorp/logutils v1.0.0 // indirect - github.com/hashicorp/terraform-exec v0.23.0 // indirect - github.com/hashicorp/terraform-json v0.25.0 // indirect - github.com/hashicorp/terraform-plugin-go v0.27.0 // indirect + github.com/hashicorp/terraform-exec v0.23.1 // indirect + github.com/hashicorp/terraform-json v0.27.1 // indirect + github.com/hashicorp/terraform-plugin-go v0.29.0 // indirect github.com/hashicorp/terraform-plugin-log v0.9.0 // indirect - github.com/hashicorp/terraform-registry-address v0.2.5 // indirect + github.com/hashicorp/terraform-registry-address v0.4.0 // indirect github.com/hashicorp/terraform-svchost v0.1.1 // indirect github.com/hashicorp/yamux v0.1.2 // indirect - github.com/kr/pretty v0.3.1 // indirect + github.com/kr/text v0.2.0 // indirect github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/mitchellh/copystructure v1.2.0 // indirect @@ -47,12 +47,11 @@ require ( github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/mitchellh/reflectwalk v1.0.2 // indirect github.com/oklog/run v1.1.0 // indirect - github.com/rogpeppe/go-internal v1.13.1 // indirect github.com/stretchr/testify v1.11.1 // indirect github.com/vmihailenco/msgpack v4.0.4+incompatible // indirect github.com/vmihailenco/msgpack/v5 v5.4.1 // indirect github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect - github.com/zclconf/go-cty v1.16.2 // indirect + github.com/zclconf/go-cty v1.17.0 // indirect go.opentelemetry.io/otel/sdk/metric v1.38.0 // indirect golang.org/x/crypto v0.42.0 // indirect golang.org/x/mod v0.28.0 // indirect @@ -61,8 +60,7 @@ require ( golang.org/x/sys v0.36.0 // indirect golang.org/x/text v0.29.0 // indirect google.golang.org/appengine v1.6.8 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250218202821-56aae31c358a // indirect - google.golang.org/grpc v1.72.1 // indirect - google.golang.org/protobuf v1.36.6 // indirect - gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7 // indirect + google.golang.org/grpc v1.75.1 // indirect + google.golang.org/protobuf v1.36.9 // indirect ) diff --git a/.ci/providerlint/go.sum b/.ci/providerlint/go.sum index 9f143289f208..f9703c009ae9 100644 --- a/.ci/providerlint/go.sum +++ b/.ci/providerlint/go.sum @@ -13,16 +13,17 @@ github.com/bflad/gopaniccheck v0.1.0 h1:tJftp+bv42ouERmUMWLoUn/5bi/iQZjHPznM00cP github.com/bflad/gopaniccheck v0.1.0/go.mod h1:ZCj2vSr7EqVeDaqVsWN4n2MwdROx1YL+LFo47TSWtsA= github.com/bflad/tfproviderlint v0.31.0 h1:9N/dUzFARsTpAQOjdZzIWnHKMzQc7UDDEYrSNV2xnrw= github.com/bflad/tfproviderlint v0.31.0/go.mod h1:yZQdJs4uobBIgVHt1Tv5OpHhgM8fwh29OgxL/La5BFs= -github.com/bufbuild/protocompile v0.4.0 h1:LbFKd2XowZvQ/kajzguUp2DC9UEIQhIq77fZZlaQsNA= -github.com/bufbuild/protocompile v0.4.0/go.mod h1:3v93+mbWn/v3xzN+31nwkJfrEpAUwp+BagBSZWx+TP8= +github.com/bufbuild/protocompile v0.14.1 h1:iA73zAf/fyljNjQKwYzUHD6AD4R8KMasmwa/FBatYVw= +github.com/bufbuild/protocompile v0.14.1/go.mod h1:ppVdAIhbr2H8asPk6k4pY7t9zB1OU5DoEw9xY/FUi1c= github.com/cloudflare/circl v1.6.1 h1:zqIqSPIndyBh1bjLVVDHMPpVKqp8Su/V+6MeDzzQBQ0= github.com/cloudflare/circl v1.6.1/go.mod h1:uddAzsPgqdMAYatqJ0lsjX1oECcQLIlRpzZh3pJrofs= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/cyphar/filepath-securejoin v0.4.1 h1:JyxxyPEaktOD+GAnqIqTf9A8tHyAG22rowi7HkoSU1s= github.com/cyphar/filepath-securejoin v0.4.1/go.mod h1:Sdj7gXlvMcPZsbhwhQ33GguGLDGQL7h7bg04C/+u9jI= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= @@ -69,8 +70,8 @@ github.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB1 github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= -github.com/hashicorp/go-plugin v1.6.3 h1:xgHB+ZUSYeuJi96WtxEjzi23uh7YQpznjGh0U0UUrwg= -github.com/hashicorp/go-plugin v1.6.3/go.mod h1:MRobyh+Wc/nYy1V4KAXUiYfzxoYhs7V1mlH1Z7iY2h0= +github.com/hashicorp/go-plugin v1.7.0 h1:YghfQH/0QmPNc/AZMTFE3ac8fipZyZECHdDPshfk+mA= +github.com/hashicorp/go-plugin v1.7.0/go.mod h1:BExt6KEaIYx804z8k4gRzRLEvxKVb+kn0NMcihqOqb8= github.com/hashicorp/go-retryablehttp v0.7.7 h1:C8hUCYzor8PIfXHa4UrZkU4VvK8o9ISHxT2Q8+VepXU= github.com/hashicorp/go-retryablehttp v0.7.7/go.mod h1:pkQpWZeYWskR+D1tR2O5OcBFOxfA7DoAO6xtkuQnHTk= github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= @@ -80,34 +81,33 @@ github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKe github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/hc-install v0.9.2 h1:v80EtNX4fCVHqzL9Lg/2xkp62bbvQMnvPQ0G+OmtO24= github.com/hashicorp/hc-install v0.9.2/go.mod h1:XUqBQNnuT4RsxoxiM9ZaUk0NX8hi2h+Lb6/c0OZnC/I= -github.com/hashicorp/hcl/v2 v2.23.0 h1:Fphj1/gCylPxHutVSEOf2fBOh1VE4AuLV7+kbJf3qos= -github.com/hashicorp/hcl/v2 v2.23.0/go.mod h1:62ZYHrXgPoX8xBnzl8QzbWq4dyDsDtfCRgIq1rbJEvA= +github.com/hashicorp/hcl/v2 v2.24.0 h1:2QJdZ454DSsYGoaE6QheQZjtKZSUs9Nh2izTWiwQxvE= +github.com/hashicorp/hcl/v2 v2.24.0/go.mod h1:oGoO1FIQYfn/AgyOhlg9qLC6/nOJPX3qGbkZpYAcqfM= github.com/hashicorp/logutils v1.0.0 h1:dLEQVugN8vlakKOUE3ihGLTZJRB4j+M2cdTm/ORI65Y= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= -github.com/hashicorp/terraform-exec v0.23.0 h1:MUiBM1s0CNlRFsCLJuM5wXZrzA3MnPYEsiXmzATMW/I= -github.com/hashicorp/terraform-exec v0.23.0/go.mod h1:mA+qnx1R8eePycfwKkCRk3Wy65mwInvlpAeOwmA7vlY= -github.com/hashicorp/terraform-json v0.25.0 h1:rmNqc/CIfcWawGiwXmRuiXJKEiJu1ntGoxseG1hLhoQ= -github.com/hashicorp/terraform-json v0.25.0/go.mod h1:sMKS8fiRDX4rVlR6EJUMudg1WcanxCMoWwTLkgZP/vc= -github.com/hashicorp/terraform-plugin-go v0.27.0 h1:ujykws/fWIdsi6oTUT5Or4ukvEan4aN9lY+LOxVP8EE= -github.com/hashicorp/terraform-plugin-go v0.27.0/go.mod h1:FDa2Bb3uumkTGSkTFpWSOwWJDwA7bf3vdP3ltLDTH6o= +github.com/hashicorp/terraform-exec v0.23.1 h1:diK5NSSDXDKqHEOIQefBMu9ny+FhzwlwV0xgUTB7VTo= +github.com/hashicorp/terraform-exec v0.23.1/go.mod h1:e4ZEg9BJDRaSalGm2z8vvrPONt0XWG0/tXpmzYTf+dM= +github.com/hashicorp/terraform-json v0.27.1 h1:zWhEracxJW6lcjt/JvximOYyc12pS/gaKSy/wzzE7nY= +github.com/hashicorp/terraform-json v0.27.1/go.mod h1:GzPLJ1PLdUG5xL6xn1OXWIjteQRT2CNT9o/6A9mi9hE= +github.com/hashicorp/terraform-plugin-go v0.29.0 h1:1nXKl/nSpaYIUBU1IG/EsDOX0vv+9JxAltQyDMpq5mU= +github.com/hashicorp/terraform-plugin-go v0.29.0/go.mod h1:vYZbIyvxyy0FWSmDHChCqKvI40cFTDGSb3D8D70i9GM= 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.37.0 h1:NFPMacTrY/IdcIcnUB+7hsore1ZaRWU9cnB6jFoBnIM= -github.com/hashicorp/terraform-plugin-sdk/v2 v2.37.0/go.mod h1:QYmYnLfsosrxjCnGY1p9c7Zj6n9thnEE+7RObeYs3fA= -github.com/hashicorp/terraform-registry-address v0.2.5 h1:2GTftHqmUhVOeuu9CW3kwDkRe4pcBDq0uuK5VJngU1M= -github.com/hashicorp/terraform-registry-address v0.2.5/go.mod h1:PpzXWINwB5kuVS5CA7m1+eO2f1jKb5ZDIxrOPfpnGkg= +github.com/hashicorp/terraform-plugin-sdk/v2 v2.38.1 h1:mlAq/OrMlg04IuJT7NpefI1wwtdpWudnEmjuQs04t/4= +github.com/hashicorp/terraform-plugin-sdk/v2 v2.38.1/go.mod h1:GQhpKVvvuwzD79e8/NZ+xzj+ZpWovdPAe8nfV/skwNU= +github.com/hashicorp/terraform-registry-address v0.4.0 h1:S1yCGomj30Sao4l5BMPjTGZmCNzuv7/GDTDX99E9gTk= +github.com/hashicorp/terraform-registry-address v0.4.0/go.mod h1:LRS1Ay0+mAiRkUyltGT+UHWkIqTFvigGn/LbMshfflE= github.com/hashicorp/terraform-svchost v0.1.1 h1:EZZimZ1GxdqFRinZ1tpJwVxxt49xc/S52uzrw4x0jKQ= github.com/hashicorp/terraform-svchost v0.1.1/go.mod h1:mNsjQfZyf/Jhz35v6/0LWcv26+X7JPS+buii2c9/ctc= github.com/hashicorp/yamux v0.1.2 h1:XtB8kyFOyHXYVFnwT5C3+Bdo8gArse7j2AQ0DA0Uey8= github.com/hashicorp/yamux v0.1.2/go.mod h1:C+zze2n6e/7wshOZep2A70/aQU6QBRWJO/G6FT1wIns= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= -github.com/jhump/protoreflect v1.15.1 h1:HUMERORf3I3ZdX05WaQ6MIpd/NJ434hTp5YiKgfCL6c= -github.com/jhump/protoreflect v1.15.1/go.mod h1:jD/2GMKKE6OqX8qTjhADU1e6DShO+gavG9e0Q693nKo= +github.com/jhump/protoreflect v1.17.0 h1:qOEr613fac2lOuTgWN4tPAtLL7fUSbuJL5X5XumQh94= +github.com/jhump/protoreflect v1.17.0/go.mod h1:h9+vUUL38jiBzck8ck+6G/aeMX8Z4QUY/NiJPwPNi+8= github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4= github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= @@ -136,12 +136,11 @@ github.com/oklog/run v1.1.0 h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA= github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU= github.com/pjbgf/sha1cd v0.3.2 h1:a9wb0bp1oC2TGwStyn0Umc/IGKQnEgF0vVaZ8QF8eo4= github.com/pjbgf/sha1cd v0.3.2/go.mod h1:zQWigSxVmsHEZow5qaLtPYxpcKMMQpa09ixqBxuCS6A= -github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= -github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= -github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= +github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8= github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= github.com/skeema/knownhosts v1.3.1 h1:X2osQ+RAjK76shCbvhHHHVl3ZlgDm8apHEHFqRjnBY8= @@ -160,8 +159,8 @@ github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -github.com/zclconf/go-cty v1.16.2 h1:LAJSwc3v81IRBZyUVQDUdZ7hs3SYs9jv0eZJDWHD/70= -github.com/zclconf/go-cty v1.16.2/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= +github.com/zclconf/go-cty v1.17.0 h1:seZvECve6XX4tmnvRzWtJNHdscMtYEx5R7bnnVyd/d0= +github.com/zclconf/go-cty v1.17.0/go.mod h1:wqFzcImaLTI6A5HfsRwB0nj5n0MRZFwmey8YoFPPs3U= github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940 h1:4r45xpDWB6ZMSMNJFMOjqrGHynW3DIBuR2H9j0ug+Mo= github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940/go.mod h1:CmBdvvj3nqzfzJ6nTCIwDTPZ56aVGvDrmztiO5g3qrM= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= @@ -227,17 +226,19 @@ golang.org/x/tools v0.37.0/go.mod h1:MBN5QPQtLMHVdvsbtarmTNukZDdgwdwlO5qGacAzF0w golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= +gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250218202821-56aae31c358a h1:51aaUVRocpvUOSQKM6Q7VuoaktNIaMCLuhZB6DKksq4= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250218202821-56aae31c358a/go.mod h1:uRxBH1mhmO8PGhU89cMcHaXKZqO+OfakD8QQO0oYwlQ= -google.golang.org/grpc v1.72.1 h1:HR03wO6eyZ7lknl75XlxABNVLLFc2PAb6mHlYh756mA= -google.golang.org/grpc v1.72.1/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7 h1:pFyd6EwwL2TqFf8emdthzeX+gZE1ElRq3iM8pui4KBY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= +google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= -google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= +google.golang.org/protobuf v1.36.9 h1:w2gp2mA27hUeUzj9Ex9FBjsBm40zfaDtEWow293U7Iw= +google.golang.org/protobuf v1.36.9/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= From 08069f6aa3d666f8f1ed35a915fe1b68a7eb3875 Mon Sep 17 00:00:00 2001 From: Adrian Johnson Date: Tue, 23 Sep 2025 08:33:22 -0400 Subject: [PATCH 76/81] make clean-tidy --- tools/tfsdk2fw/go.mod | 2 +- tools/tfsdk2fw/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/tfsdk2fw/go.mod b/tools/tfsdk2fw/go.mod index 9da7ce5369f9..68849f60f5d5 100644 --- a/tools/tfsdk2fw/go.mod +++ b/tools/tfsdk2fw/go.mod @@ -324,7 +324,7 @@ require ( github.com/hashicorp/terraform-json v0.27.2 // indirect github.com/hashicorp/terraform-plugin-framework v1.16.0 // indirect github.com/hashicorp/terraform-plugin-framework-jsontypes v0.2.0 // indirect - github.com/hashicorp/terraform-plugin-framework-timeouts v0.5.0 // indirect + github.com/hashicorp/terraform-plugin-framework-timeouts v0.6.0 // indirect github.com/hashicorp/terraform-plugin-framework-timetypes v0.5.0 // indirect github.com/hashicorp/terraform-plugin-framework-validators v0.18.0 // indirect github.com/hashicorp/terraform-plugin-go v0.29.0 // indirect diff --git a/tools/tfsdk2fw/go.sum b/tools/tfsdk2fw/go.sum index d2d462a11cd7..621f9e55bb40 100644 --- a/tools/tfsdk2fw/go.sum +++ b/tools/tfsdk2fw/go.sum @@ -671,8 +671,8 @@ github.com/hashicorp/terraform-plugin-framework v1.16.0 h1:tP0f+yJg0Z672e7levixD github.com/hashicorp/terraform-plugin-framework v1.16.0/go.mod h1:0xFOxLy5lRzDTayc4dzK/FakIgBhNf/lC4499R9cV4Y= github.com/hashicorp/terraform-plugin-framework-jsontypes v0.2.0 h1:SJXL5FfJJm17554Kpt9jFXngdM6fXbnUnZ6iT2IeiYA= github.com/hashicorp/terraform-plugin-framework-jsontypes v0.2.0/go.mod h1:p0phD0IYhsu9bR4+6OetVvvH59I6LwjXGnTVEr8ox6E= -github.com/hashicorp/terraform-plugin-framework-timeouts v0.5.0 h1:I/N0g/eLZ1ZkLZXUQ0oRSXa8YG/EF0CEuQP1wXdrzKw= -github.com/hashicorp/terraform-plugin-framework-timeouts v0.5.0/go.mod h1:t339KhmxnaF4SzdpxmqW8HnQBHVGYazwtfxU0qCs4eE= +github.com/hashicorp/terraform-plugin-framework-timeouts v0.6.0 h1:Vv16e7EW4nT9668IV0RhdpEmnLl0im7BZx6J+QMlUkg= +github.com/hashicorp/terraform-plugin-framework-timeouts v0.6.0/go.mod h1:rpHo9hZLn4vEkvNL5xsSdLRdaDZKSinuc0xL+BdOpVA= github.com/hashicorp/terraform-plugin-framework-timetypes v0.5.0 h1:v3DapR8gsp3EM8fKMh6up9cJUFQ2iRaFsYLP8UJnCco= github.com/hashicorp/terraform-plugin-framework-timetypes v0.5.0/go.mod h1:c3PnGE9pHBDfdEVG9t1S1C9ia5LW+gkFR0CygXlM8ak= github.com/hashicorp/terraform-plugin-framework-validators v0.18.0 h1:OQnlOt98ua//rCw+QhBbSqfW3QbwtVrcdWeQN5gI3Hw= From 42d7b7de8e7f1e7e4b7b3c431632264310b72b5b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 23 Sep 2025 09:55:01 -0400 Subject: [PATCH 77/81] Merge pull request #44394 from hashicorp/dependabot/go_modules/dot-ci/tools/github.com/golangci/golangci-lint/v2-2.5.0 Bump github.com/golangci/golangci-lint/v2 from 2.4.0 to 2.5.0 in /.ci/tools --- .ci/tools/go.mod | 71 ++++++++++----------- .ci/tools/go.sum | 156 ++++++++++++++++++++++++----------------------- 2 files changed, 116 insertions(+), 111 deletions(-) diff --git a/.ci/tools/go.mod b/.ci/tools/go.mod index 67716d398d1d..de30928aa97b 100644 --- a/.ci/tools/go.mod +++ b/.ci/tools/go.mod @@ -5,7 +5,7 @@ go 1.24.6 require ( github.com/YakDriver/tfproviderdocs v0.23.3 github.com/client9/misspell v0.3.4 - github.com/golangci/golangci-lint/v2 v2.4.0 + github.com/golangci/golangci-lint/v2 v2.5.0 github.com/hashicorp/copywrite v0.22.0 github.com/hashicorp/go-changelog v0.0.0-20250127101332-effe3832fb0b github.com/katbyte/terrafmt v0.5.5 @@ -19,9 +19,9 @@ require ( require ( 4d63.com/gocheckcompilerdirectives v1.3.0 // indirect 4d63.com/gochecknoglobals v0.2.2 // indirect - cel.dev/expr v0.23.0 // indirect + cel.dev/expr v0.24.0 // indirect cloud.google.com/go v0.121.2 // indirect - cloud.google.com/go/auth v0.16.2 // indirect + cloud.google.com/go/auth v0.16.3 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect cloud.google.com/go/compute/metadata v0.7.0 // indirect cloud.google.com/go/iam v1.5.2 // indirect @@ -33,13 +33,14 @@ require ( dev.gaijin.team/go/golib v0.6.0 // indirect github.com/4meepo/tagalign v1.4.3 // indirect github.com/Abirdcfly/dupword v0.1.6 // indirect + github.com/AdminBenni/iota-mixing v1.0.0 // indirect github.com/AlecAivazis/survey/v2 v2.3.7 // indirect github.com/AlwxSin/noinlineerr v1.0.5 // indirect - github.com/Antonboom/errname v1.1.0 // indirect - github.com/Antonboom/nilnil v1.1.0 // indirect - github.com/Antonboom/testifylint v1.6.1 // indirect + github.com/Antonboom/errname v1.1.1 // indirect + github.com/Antonboom/nilnil v1.1.1 // indirect + github.com/Antonboom/testifylint v1.6.4 // indirect github.com/BurntSushi/toml v1.5.0 // indirect - github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 // indirect + github.com/Djarvur/go-err113 v0.1.1 // indirect github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.27.0 // indirect github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.51.0 // indirect github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.51.0 // indirect @@ -47,6 +48,7 @@ require ( github.com/Masterminds/semver/v3 v3.4.0 // indirect github.com/Masterminds/sprig/v3 v3.3.0 // indirect github.com/Microsoft/go-winio v0.6.2 // indirect + github.com/MirrexOne/unqueryvet v1.2.1 // indirect github.com/OpenPeeDeeP/depguard/v2 v2.2.1 // indirect github.com/ProtonMail/go-crypto v1.1.3 // indirect github.com/agext/levenshtein v1.2.3 // indirect @@ -74,7 +76,7 @@ require ( github.com/bmatcuk/doublestar v1.3.4 // indirect github.com/bmatcuk/doublestar/v4 v4.8.0 // indirect github.com/bombsimon/wsl/v4 v4.7.0 // indirect - github.com/bombsimon/wsl/v5 v5.1.1 // indirect + github.com/bombsimon/wsl/v5 v5.2.0 // indirect github.com/bradleyfalzon/ghinstallation/v2 v2.5.0 // indirect github.com/breml/bidichk v0.3.3 // indirect github.com/breml/errchkjson v0.4.1 // indirect @@ -94,7 +96,7 @@ require ( github.com/cli/go-gh/v2 v2.12.1 // indirect github.com/cli/safeexec v1.0.1 // indirect github.com/cloudflare/circl v1.6.1 // indirect - github.com/cncf/xds/go v0.0.0-20250326154945-ae57f3c0d45f // indirect + github.com/cncf/xds/go v0.0.0-20250501225837-2ac532fd4443 // indirect github.com/curioswitch/go-reassign v0.3.0 // indirect github.com/cyberphone/json-canonicalization v0.0.0-20220623050100-57a0ce2678a7 // indirect github.com/cyphar/filepath-securejoin v0.2.5 // indirect @@ -115,7 +117,7 @@ require ( github.com/firefart/nonamedreturns v1.0.6 // indirect github.com/fsnotify/fsnotify v1.8.0 // indirect github.com/fzipp/gocyclo v0.6.0 // indirect - github.com/ghostiam/protogetter v0.3.15 // indirect + github.com/ghostiam/protogetter v0.3.16 // indirect github.com/go-chi/chi v4.1.2+incompatible // indirect github.com/go-critic/go-critic v0.13.0 // indirect github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect @@ -144,15 +146,18 @@ require ( github.com/go-viper/mapstructure/v2 v2.4.0 // indirect github.com/go-xmlfmt/xmlfmt v1.1.3 // indirect github.com/gobwas/glob v0.2.3 // indirect + github.com/godoc-lint/godoc-lint v0.10.0 // indirect github.com/gofrs/flock v0.12.1 // indirect github.com/golang-jwt/jwt/v4 v4.5.2 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/protobuf v1.5.4 // indirect + github.com/golangci/asciicheck v0.5.0 // indirect github.com/golangci/dupl v0.0.0-20250308024227-f665c8d69b32 // indirect - github.com/golangci/go-printf-func-name v0.1.0 // indirect + github.com/golangci/go-printf-func-name v0.1.1 // indirect github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d // indirect github.com/golangci/golines v0.0.0-20250217134842-442fd0091d95 // indirect github.com/golangci/misspell v0.7.0 // indirect + github.com/golangci/nilerr v0.0.0-20250918000102-015671e622fe // indirect github.com/golangci/plugin-module-register v0.1.2 // indirect github.com/golangci/revgrep v0.8.0 // indirect github.com/golangci/swaggoswag v0.0.0-20250504205917-77f2aca3143e // indirect @@ -167,13 +172,12 @@ require ( github.com/google/s2a-go v0.1.9 // indirect github.com/google/uuid v1.6.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.6 // indirect - github.com/googleapis/gax-go/v2 v2.14.2 // indirect + github.com/googleapis/gax-go/v2 v2.15.0 // indirect github.com/gookit/color v1.5.4 // indirect - github.com/gordonklaus/ineffassign v0.1.0 // indirect + github.com/gordonklaus/ineffassign v0.2.0 // indirect github.com/gostaticanalysis/analysisutil v0.7.1 // indirect github.com/gostaticanalysis/comment v1.5.0 // indirect github.com/gostaticanalysis/forcetypeassert v0.2.0 // indirect - github.com/gostaticanalysis/nilerr v0.1.1 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect github.com/hashicorp/go-getter v1.7.9 // indirect @@ -222,20 +226,20 @@ require ( github.com/kkHAIKE/contextcheck v1.1.6 // indirect github.com/klauspost/compress v1.18.0 // indirect github.com/knadh/koanf v1.5.0 // indirect - github.com/kulti/thelper v0.6.3 // indirect + github.com/kulti/thelper v0.7.1 // indirect github.com/kunwardeep/paralleltest v1.0.14 // indirect github.com/lasiar/canonicalheader v1.1.2 // indirect github.com/ldez/exptostd v0.4.4 // indirect github.com/ldez/gomoddirectives v0.7.0 // indirect - github.com/ldez/grignotin v0.10.0 // indirect - github.com/ldez/tagliatelle v0.7.1 // indirect + github.com/ldez/grignotin v0.10.1 // indirect + github.com/ldez/tagliatelle v0.7.2 // indirect github.com/ldez/usetesting v0.5.0 // indirect github.com/leonklingele/grouper v1.1.2 // indirect github.com/letsencrypt/boulder v0.0.0-20240620165639-de9c06129bec // indirect github.com/lucasb-eyer/go-colorful v1.2.0 // indirect github.com/macabu/inamedparam v0.2.0 // indirect github.com/mailru/easyjson v0.9.0 // indirect - github.com/manuelarte/embeddedstructfieldcheck v0.3.0 // indirect + github.com/manuelarte/embeddedstructfieldcheck v0.4.0 // indirect github.com/manuelarte/funcorder v0.5.0 // indirect github.com/maratori/testableexamples v1.0.0 // indirect github.com/maratori/testpackage v1.1.1 // indirect @@ -245,7 +249,7 @@ require ( github.com/mattn/go-runewidth v0.0.16 // indirect github.com/mattn/go-shellwords v1.0.12 // indirect github.com/mergestat/timediff v0.0.3 // indirect - github.com/mgechev/revive v1.11.0 // indirect + github.com/mgechev/revive v1.12.0 // indirect github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d // indirect github.com/mitchellh/cli v1.1.5 // indirect github.com/mitchellh/copystructure v1.2.0 // indirect @@ -259,7 +263,7 @@ require ( github.com/nakabonne/nestif v0.3.1 // indirect github.com/nishanths/exhaustive v0.12.0 // indirect github.com/nishanths/predeclared v0.2.2 // indirect - github.com/nunnatsa/ginkgolinter v0.20.0 // indirect + github.com/nunnatsa/ginkgolinter v0.21.0 // indirect github.com/oklog/run v1.0.0 // indirect github.com/oklog/ulid v1.3.1 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect @@ -295,7 +299,7 @@ require ( github.com/sashamelentyev/usestdlibvars v1.29.0 // indirect github.com/sassoftware/relic v7.2.1+incompatible // indirect github.com/secure-systems-lab/go-securesystemslib v0.9.0 // indirect - github.com/securego/gosec/v2 v2.22.7 // indirect + github.com/securego/gosec/v2 v2.22.8 // indirect github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect github.com/shibumi/go-pathspec v1.3.0 // indirect github.com/shopspring/decimal v1.4.0 // indirect @@ -314,19 +318,18 @@ require ( github.com/sourcegraph/jsonrpc2 v0.2.1 // indirect github.com/spf13/afero v1.14.0 // indirect github.com/spf13/cast v1.10.0 // indirect - github.com/spf13/cobra v1.9.1 // indirect - github.com/spf13/pflag v1.0.7 // indirect + github.com/spf13/cobra v1.10.1 // indirect + github.com/spf13/pflag v1.0.10 // indirect github.com/spf13/viper v1.20.1 // indirect github.com/spiffe/go-spiffe/v2 v2.5.0 // indirect github.com/ssgreg/nlreturn/v2 v2.2.1 // indirect github.com/stbenjam/no-sprintf-host-port v0.2.0 // indirect github.com/stretchr/objx v0.5.2 // indirect - github.com/stretchr/testify v1.10.0 // indirect + github.com/stretchr/testify v1.11.1 // indirect github.com/subosito/gotenv v1.6.0 // indirect - github.com/tdakkota/asciicheck v0.4.1 // indirect github.com/terraform-linters/tflint-plugin-sdk v0.22.0 // indirect github.com/terraform-linters/tflint-ruleset-terraform v0.12.0 // indirect - github.com/tetafro/godot v1.5.1 // indirect + github.com/tetafro/godot v1.5.4 // indirect github.com/thanhpk/randstr v1.0.4 // indirect github.com/theupdateframework/go-tuf v0.7.0 // indirect github.com/theupdateframework/go-tuf/v2 v2.1.1 // indirect @@ -355,13 +358,13 @@ require ( github.com/zclconf/go-cty-yaml v1.1.0 // indirect github.com/zeebo/errs v1.4.0 // indirect gitlab.com/bosi/decorder v0.4.2 // indirect - go-simpler.org/musttag v0.13.1 // indirect + go-simpler.org/musttag v0.14.0 // indirect go-simpler.org/sloglint v0.11.1 // indirect go.augendre.info/arangolint v0.2.0 // indirect - go.augendre.info/fatcontext v0.8.0 // indirect + go.augendre.info/fatcontext v0.8.1 // indirect go.mongodb.org/mongo-driver v1.14.0 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect - go.opentelemetry.io/contrib/detectors/gcp v1.35.0 // indirect + go.opentelemetry.io/contrib/detectors/gcp v1.36.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 // indirect go.opentelemetry.io/otel v1.36.0 // indirect @@ -374,7 +377,7 @@ require ( go.uber.org/zap v1.27.0 // indirect golang.org/x/crypto v0.42.0 // indirect golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 // indirect - golang.org/x/exp/typeparams v0.0.0-20250620022241-b7579e27df2b // indirect + golang.org/x/exp/typeparams v0.0.0-20250911091902-df9299821621 // indirect golang.org/x/mod v0.28.0 // indirect golang.org/x/net v0.44.0 // indirect golang.org/x/oauth2 v0.30.0 // indirect @@ -383,11 +386,11 @@ require ( golang.org/x/term v0.35.0 // indirect golang.org/x/text v0.29.0 // indirect golang.org/x/time v0.12.0 // indirect - google.golang.org/api v0.242.0 // indirect - google.golang.org/genproto v0.0.0-20250505200425-f936aa4a68b2 // indirect + google.golang.org/api v0.246.0 // indirect + google.golang.org/genproto v0.0.0-20250603155806-513f23925822 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect - google.golang.org/grpc v1.73.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 // indirect + google.golang.org/grpc v1.74.2 // indirect google.golang.org/protobuf v1.36.6 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect diff --git a/.ci/tools/go.sum b/.ci/tools/go.sum index f0f72b4fa20b..c923026e30d9 100644 --- a/.ci/tools/go.sum +++ b/.ci/tools/go.sum @@ -2,8 +2,8 @@ 4d63.com/gocheckcompilerdirectives v1.3.0/go.mod h1:ofsJ4zx2QAuIP/NO/NAh1ig6R1Fb18/GI7RVMwz7kAY= 4d63.com/gochecknoglobals v0.2.2 h1:H1vdnwnMaZdQW/N+NrkT1SZMTBmcwHe9Vq8lJcYYTtU= 4d63.com/gochecknoglobals v0.2.2/go.mod h1:lLxwTQjL5eIesRbvnzIP3jZtG140FnTdz+AlMa+ogt0= -cel.dev/expr v0.23.0 h1:wUb94w6OYQS4uXraxo9U+wUAs9jT47Xvl4iPgAwM2ss= -cel.dev/expr v0.23.0/go.mod h1:hLPLo1W4QUmuYdA72RBX06QTs6MXw941piREPl3Yfiw= +cel.dev/expr v0.24.0 h1:56OvJKSH3hDGL0ml5uSxZmz3/3Pq4tJ+fb1unVLAFcY= +cel.dev/expr v0.24.0/go.mod h1:hLPLo1W4QUmuYdA72RBX06QTs6MXw941piREPl3Yfiw= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= @@ -105,8 +105,8 @@ cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVo cloud.google.com/go/assuredworkloads v1.8.0/go.mod h1:AsX2cqyNCOvEQC8RMPnoc0yEarXQk6WEKkxYfL6kGIo= cloud.google.com/go/assuredworkloads v1.9.0/go.mod h1:kFuI1P78bplYtT77Tb1hi0FMxM0vVpRC7VVoJC3ZoT0= cloud.google.com/go/assuredworkloads v1.10.0/go.mod h1:kwdUQuXcedVdsIaKgKTp9t0UJkE5+PAVNhdQm4ZVq2E= -cloud.google.com/go/auth v0.16.2 h1:QvBAGFPLrDeoiNjyfVunhQ10HKNYuOwZ5noee0M5df4= -cloud.google.com/go/auth v0.16.2/go.mod h1:sRBas2Y1fB1vZTdurouM0AzuYQBMZinrUYL8EufhtEA= +cloud.google.com/go/auth v0.16.3 h1:kabzoQ9/bobUmnseYnBO6qQG7q4a/CffFRlJSxv2wCc= +cloud.google.com/go/auth v0.16.3/go.mod h1:NucRGjaXfzP1ltpcQ7On/VTZ0H4kWB5Jy+Y9Dnm76fA= cloud.google.com/go/auth/oauth2adapt v0.2.8 h1:keo8NaayQZ6wimpNSmW5OPc283g65QNIiLpZnkHRbnc= cloud.google.com/go/auth/oauth2adapt v0.2.8/go.mod h1:XQ9y31RkqZCcwJWNSx2Xvric3RrU88hAYYbjDWYDL+c= cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0= @@ -344,8 +344,8 @@ cloud.google.com/go/kms v1.8.0/go.mod h1:4xFEhYFqvW+4VMELtZyxomGSYtSQKzM178ylFW4 cloud.google.com/go/kms v1.9.0/go.mod h1:qb1tPTgfF9RQP8e1wq4cLFErVuTJv7UsSC915J8dh3w= cloud.google.com/go/kms v1.10.0/go.mod h1:ng3KTUtQQU9bPX3+QGLsflZIHlkbn8amFAMY63m8d24= cloud.google.com/go/kms v1.10.1/go.mod h1:rIWk/TryCkR59GMC3YtHtXeLzd634lBbKenvyySAyYI= -cloud.google.com/go/kms v1.21.2 h1:c/PRUSMNQ8zXrc1sdAUnsenWWaNXN+PzTXfXOcSFdoE= -cloud.google.com/go/kms v1.21.2/go.mod h1:8wkMtHV/9Z8mLXEXr1GK7xPSBdi6knuLXIhqjuWcI6w= +cloud.google.com/go/kms v1.22.0 h1:dBRIj7+GDeeEvatJeTB19oYZNV0aj6wEqSIT/7gLqtk= +cloud.google.com/go/kms v1.22.0/go.mod h1:U7mf8Sva5jpOb4bxYZdtw/9zsbIjrklYwPcvMk34AL8= cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic= cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI= cloud.google.com/go/language v1.7.0/go.mod h1:DJ6dYN/W+SQOjF8e1hLQXMF21AkH2w9wiPzPCJa2MIE= @@ -639,16 +639,18 @@ github.com/Abirdcfly/dupword v0.1.6 h1:qeL6u0442RPRe3mcaLcbaCi2/Y/hOcdtw6DE9odjz github.com/Abirdcfly/dupword v0.1.6/go.mod h1:s+BFMuL/I4YSiFv29snqyjwzDp4b65W2Kvy+PKzZ6cw= github.com/AdamKorcz/go-fuzz-headers-1 v0.0.0-20230919221257-8b5d3ce2d11d h1:zjqpY4C7H15HjRPEenkS4SAn3Jy2eRRjkjZbGR30TOg= github.com/AdamKorcz/go-fuzz-headers-1 v0.0.0-20230919221257-8b5d3ce2d11d/go.mod h1:XNqJ7hv2kY++g8XEHREpi+JqZo3+0l+CH2egBVN4yqM= +github.com/AdminBenni/iota-mixing v1.0.0 h1:Os6lpjG2dp/AE5fYBPAA1zfa2qMdCAWwPMCgpwKq7wo= +github.com/AdminBenni/iota-mixing v1.0.0/go.mod h1:i4+tpAaB+qMVIV9OK3m4/DAynOd5bQFaOu+2AhtBCNY= github.com/AlecAivazis/survey/v2 v2.3.7 h1:6I/u8FvytdGsgonrYsVn2t8t4QiRnh6QSTqkkhIiSjQ= github.com/AlecAivazis/survey/v2 v2.3.7/go.mod h1:xUTIdE4KCOIjsBAE1JYsUPoCqYdZ1reCfTwbto0Fduo= github.com/AlwxSin/noinlineerr v1.0.5 h1:RUjt63wk1AYWTXtVXbSqemlbVTb23JOSRiNsshj7TbY= github.com/AlwxSin/noinlineerr v1.0.5/go.mod h1:+QgkkoYrMH7RHvcdxdlI7vYYEdgeoFOVjU9sUhw/rQc= -github.com/Antonboom/errname v1.1.0 h1:A+ucvdpMwlo/myWrkHEUEBWc/xuXdud23S8tmTb/oAE= -github.com/Antonboom/errname v1.1.0/go.mod h1:O1NMrzgUcVBGIfi3xlVuvX8Q/VP/73sseCaAppfjqZw= -github.com/Antonboom/nilnil v1.1.0 h1:jGxJxjgYS3VUUtOTNk8Z1icwT5ESpLH/426fjmQG+ng= -github.com/Antonboom/nilnil v1.1.0/go.mod h1:b7sAlogQjFa1wV8jUW3o4PMzDVFLbTux+xnQdvzdcIE= -github.com/Antonboom/testifylint v1.6.1 h1:6ZSytkFWatT8mwZlmRCHkWz1gPi+q6UBSbieji2Gj/o= -github.com/Antonboom/testifylint v1.6.1/go.mod h1:k+nEkathI2NFjKO6HvwmSrbzUcQ6FAnbZV+ZRrnXPLI= +github.com/Antonboom/errname v1.1.1 h1:bllB7mlIbTVzO9jmSWVWLjxTEbGBVQ1Ff/ClQgtPw9Q= +github.com/Antonboom/errname v1.1.1/go.mod h1:gjhe24xoxXp0ScLtHzjiXp0Exi1RFLKJb0bVBtWKCWQ= +github.com/Antonboom/nilnil v1.1.1 h1:9Mdr6BYd8WHCDngQnNVV0b554xyisFioEKi30sksufQ= +github.com/Antonboom/nilnil v1.1.1/go.mod h1:yCyAmSw3doopbOWhJlVci+HuyNRuHJKIv6V2oYQa8II= +github.com/Antonboom/testifylint v1.6.4 h1:gs9fUEy+egzxkEbq9P4cpcMB6/G0DYdMeiFS87UiqmQ= +github.com/Antonboom/testifylint v1.6.4/go.mod h1:YO33FROXX2OoUfwjz8g+gUxQXio5i9qpVy7nXGbxDD4= github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.0 h1:Gt0j3wceWMwPmiazCa8MzMA0MfhmPIz0Qp0FJ6qcM0U= github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.0/go.mod h1:Ot/6aikWnKWi4l9QB7qVSwa8iMphQNqkWALMoNT3rzM= github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.9.0 h1:OVoM452qUFBrX+URdH3VpR299ma4kfom0yB0URYky9g= @@ -665,8 +667,8 @@ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03 github.com/BurntSushi/toml v1.5.0 h1:W5quZX/G/csjUnuI8SUYlsHs9M38FC7znL0lIO+DvMg= github.com/BurntSushi/toml v1.5.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 h1:sHglBQTwgx+rWPdisA5ynNEsoARbiCBOyGcJM4/OzsM= -github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24/go.mod h1:4UJr5HIiMZrwgkSPdsjy2uOQExX/WEILpIrO9UPGuXs= +github.com/Djarvur/go-err113 v0.1.1 h1:eHfopDqXRwAi+YmCUas75ZE0+hoBHJ2GQNLYRSxao4g= +github.com/Djarvur/go-err113 v0.1.1/go.mod h1:IaWJdYFLg76t2ihfflPZnM1LIQszWOsFDh2hhhAVF6k= github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.27.0 h1:ErKg/3iS1AKcTkf3yixlZ54f9U1rljCkQyEXWUnIUxc= github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.27.0/go.mod h1:yAZHSGnqScoU556rBOVkwLze6WP5N+U11RHuWaGVxwY= github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.51.0 h1:fYE9p3esPxA/C0rQ0AHhP0drtPXDRhaWiwg1DPqO7IU= @@ -691,6 +693,8 @@ github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugX github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= +github.com/MirrexOne/unqueryvet v1.2.1 h1:M+zdXMq84g+E1YOLa7g7ExN3dWfZQrdDSTCM7gC+m/A= +github.com/MirrexOne/unqueryvet v1.2.1/go.mod h1:IWwCwMQlSWjAIteW0t+28Q5vouyktfujzYznSIWiuOg= github.com/Netflix/go-expect v0.0.0-20220104043353-73e0943537d2 h1:+vx7roKuyA63nhn5WAunQHLTznkw5W8b1Xc0dNjp83s= github.com/Netflix/go-expect v0.0.0-20220104043353-73e0943537d2/go.mod h1:HBCaDeC1lPdgDeDbhX8XFpy1jqjK0IBG8W5K+xYqA0w= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= @@ -825,8 +829,8 @@ github.com/bmatcuk/doublestar/v4 v4.8.0 h1:DSXtrypQddoug1459viM9X9D3dp1Z7993fw36 github.com/bmatcuk/doublestar/v4 v4.8.0/go.mod h1:xBQ8jztBU6kakFMg+8WGxn0c6z1fTSPVIjEY1Wr7jzc= github.com/bombsimon/wsl/v4 v4.7.0 h1:1Ilm9JBPRczjyUs6hvOPKvd7VL1Q++PL8M0SXBDf+jQ= github.com/bombsimon/wsl/v4 v4.7.0/go.mod h1:uV/+6BkffuzSAVYD+yGyld1AChO7/EuLrCF/8xTiapg= -github.com/bombsimon/wsl/v5 v5.1.1 h1:cQg5KJf9FlctAH4cpL9vLKnziYknoCMCdqXl0wjl72Q= -github.com/bombsimon/wsl/v5 v5.1.1/go.mod h1:Gp8lD04z27wm3FANIUPZycXp+8huVsn0oxc+n4qfV9I= +github.com/bombsimon/wsl/v5 v5.2.0 h1:PyCCwd3Q7abGs3e34IW4jLYlBS+FbsU6iK+Tb3NnDp4= +github.com/bombsimon/wsl/v5 v5.2.0/go.mod h1:Gp8lD04z27wm3FANIUPZycXp+8huVsn0oxc+n4qfV9I= github.com/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= github.com/bradleyfalzon/ghinstallation/v2 v2.5.0 h1:yaYcGQ7yEIGbsJfW/9z7v1sLiZg/5rSNNXwmMct5XaE= @@ -902,8 +906,8 @@ github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20220314180256-7f1daf1720fc/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20230105202645-06c439db220b/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20250326154945-ae57f3c0d45f h1:C5bqEmzEPLsHm9Mv73lSE9e9bKV23aB1vxOsmZrkl3k= -github.com/cncf/xds/go v0.0.0-20250326154945-ae57f3c0d45f/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= +github.com/cncf/xds/go v0.0.0-20250501225837-2ac532fd4443 h1:aQ3y1lwWyqYPiWZThqv1aFbZMiM9vblcSArJRf2Irls= +github.com/cncf/xds/go v0.0.0-20250501225837-2ac532fd4443/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= github.com/codahale/rfc6979 v0.0.0-20141003034818-6a90f24967eb h1:EDmT6Q9Zs+SbUoc7Ik9EfrFqcylYqgPZ9ANSbTAntnE= github.com/codahale/rfc6979 v0.0.0-20141003034818-6a90f24967eb/go.mod h1:ZjrT6AXHbDs86ZSdt/osfBi5qfexBrKUdONk989Wnk4= github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= @@ -994,8 +998,8 @@ github.com/fsnotify/fsnotify v1.8.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8 github.com/fzipp/gocyclo v0.6.0 h1:lsblElZG7d3ALtGMx9fmxeTKZaLLpU8mET09yN4BBLo= github.com/fzipp/gocyclo v0.6.0/go.mod h1:rXPyn8fnlpa0R2csP/31uerbiVBugk5whMdlyaLkLoA= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/ghostiam/protogetter v0.3.15 h1:1KF5sXel0HE48zh1/vn0Loiw25A9ApyseLzQuif1mLY= -github.com/ghostiam/protogetter v0.3.15/go.mod h1:WZ0nw9pfzsgxuRsPOFQomgDVSWtDLJRfQJEhsGbmQMA= +github.com/ghostiam/protogetter v0.3.16 h1:UkrisuJBYLnZW6FcYUNBDJOqY3X22RtoYMlCsiNlFFA= +github.com/ghostiam/protogetter v0.3.16/go.mod h1:4SRRIv6PcjkIMpUkRUsP4TsUTqO/N3Fmvwivuc/sCHA= github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= github.com/gliderlabs/ssh v0.3.8 h1:a4YXD1V7xMF9g5nTkdfnja3Sxy1PVDCj1Zg4Wb8vY6c= github.com/gliderlabs/ssh v0.3.8/go.mod h1:xYoytBv1sV0aL3CavoDuJIQNURXkkfPA/wxQ1pL1fAU= @@ -1104,6 +1108,8 @@ github.com/goccy/go-json v0.9.11/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MG github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk= github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/godoc-lint/godoc-lint v0.10.0 h1:OcyrziBi18sQSEpib6NesVHEJ/Xcng97NunePBA48g4= +github.com/godoc-lint/godoc-lint v0.10.0/go.mod h1:KleLcHu/CGSvkjUH2RvZyoK1MBC7pDQg4NxMYLcBBsw= github.com/gofrs/flock v0.12.1 h1:MTLVXXHf8ekldpJk3AKicLij9MdwOWkZ+a/jHHZby9E= github.com/gofrs/flock v0.12.1/go.mod h1:9zxTsyu5xtJ9DK+1tFZyibEV7y3uwDxPPfbxeeHCoD0= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= @@ -1154,18 +1160,22 @@ github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6 github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golangci/asciicheck v0.5.0 h1:jczN/BorERZwK8oiFBOGvlGPknhvq0bjnysTj4nUfo0= +github.com/golangci/asciicheck v0.5.0/go.mod h1:5RMNAInbNFw2krqN6ibBxN/zfRFa9S6tA1nPdM0l8qQ= github.com/golangci/dupl v0.0.0-20250308024227-f665c8d69b32 h1:WUvBfQL6EW/40l6OmeSBYQJNSif4O11+bmWEz+C7FYw= github.com/golangci/dupl v0.0.0-20250308024227-f665c8d69b32/go.mod h1:NUw9Zr2Sy7+HxzdjIULge71wI6yEg1lWQr7Evcu8K0E= -github.com/golangci/go-printf-func-name v0.1.0 h1:dVokQP+NMTO7jwO4bwsRwLWeudOVUPPyAKJuzv8pEJU= -github.com/golangci/go-printf-func-name v0.1.0/go.mod h1:wqhWFH5mUdJQhweRnldEywnR5021wTdZSNgwYceV14s= +github.com/golangci/go-printf-func-name v0.1.1 h1:hIYTFJqAGp1iwoIfsNTpoq1xZAarogrvjO9AfiW3B4U= +github.com/golangci/go-printf-func-name v0.1.1/go.mod h1:Es64MpWEZbh0UBtTAICOZiB+miW53w/K9Or/4QogJss= github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d h1:viFft9sS/dxoYY0aiOTsLKO2aZQAPT4nlQCsimGcSGE= github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d/go.mod h1:ivJ9QDg0XucIkmwhzCDsqcnxxlDStoTl89jDMIoNxKY= -github.com/golangci/golangci-lint/v2 v2.4.0 h1:qz6O6vr7kVzXJqyvHjHSz5fA3D+PM8v96QU5gxZCNWM= -github.com/golangci/golangci-lint/v2 v2.4.0/go.mod h1:Oq7vuAf6L1iNL34uHDcsIF6Mnc0amOPdsT3/GlpHD+I= +github.com/golangci/golangci-lint/v2 v2.5.0 h1:BDRg4ASm4J1y/DSRY6zwJ5tr5Yy8ZqbZ79XrCeFxaQo= +github.com/golangci/golangci-lint/v2 v2.5.0/go.mod h1:IJtWJBZkLbx7AVrIUzLd8Oi3ADtwaNpWbR3wthVWHcc= github.com/golangci/golines v0.0.0-20250217134842-442fd0091d95 h1:AkK+w9FZBXlU/xUmBtSJN1+tAI4FIvy5WtnUnY8e4p8= github.com/golangci/golines v0.0.0-20250217134842-442fd0091d95/go.mod h1:k9mmcyWKSTMcPPvQUCfRWWQ9VHJ1U9Dc0R7kaXAgtnQ= github.com/golangci/misspell v0.7.0 h1:4GOHr/T1lTW0hhR4tgaaV1WS/lJ+ncvYCoFKmqJsj0c= github.com/golangci/misspell v0.7.0/go.mod h1:WZyyI2P3hxPY2UVHs3cS8YcllAeyfquQcKfdeE9AFVg= +github.com/golangci/nilerr v0.0.0-20250918000102-015671e622fe h1:F1pK9tBy41i7eesBFkSNMldwtiAaWiU+3fT/24sTnNI= +github.com/golangci/nilerr v0.0.0-20250918000102-015671e622fe/go.mod h1:CtTxAluxD2ng9aIT9bPrVoMuISFWCD+SaxtvYtdWA2k= github.com/golangci/plugin-module-register v0.1.2 h1:e5WM6PO6NIAEcij3B053CohVp3HIYbzSuP53UAYgOpg= github.com/golangci/plugin-module-register v0.1.2/go.mod h1:1+QGTsKBvAIvPvoY/os+G5eoqxWn70HYDm2uvUyGuVw= github.com/golangci/revgrep v0.8.0 h1:EZBctwbVd0aMeRnNUsFogoyayvKHyxlV3CdUA46FX2s= @@ -1265,27 +1275,24 @@ github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqE github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= github.com/googleapis/gax-go/v2 v2.7.0/go.mod h1:TEop28CZZQ2y+c0VxMUmu1lV+fQx57QpBWsYpwqHJx8= github.com/googleapis/gax-go/v2 v2.7.1/go.mod h1:4orTrqY6hXxxaUL4LHIPl6lGo8vAE38/qKbhSAKP6QI= -github.com/googleapis/gax-go/v2 v2.14.2 h1:eBLnkZ9635krYIPD+ag1USrOAI0Nr0QYF3+/3GqO0k0= -github.com/googleapis/gax-go/v2 v2.14.2/go.mod h1:ON64QhlJkhVtSqp4v1uaK92VyZ2gmvDQsweuyLV+8+w= +github.com/googleapis/gax-go/v2 v2.15.0 h1:SyjDc1mGgZU5LncH8gimWo9lW1DtIfPibOG81vgd/bo= +github.com/googleapis/gax-go/v2 v2.15.0/go.mod h1:zVVkkxAQHa1RQpg9z2AUCMnKhi0Qld9rcmyfL1OZhoc= github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= github.com/gookit/color v1.5.4 h1:FZmqs7XOyGgCAxmWyPslpiok1k05wmY3SJTytgvYFs0= github.com/gookit/color v1.5.4/go.mod h1:pZJOeOS8DM43rXbp4AZo1n9zCU2qjpcRko0b6/QJi9w= -github.com/gordonklaus/ineffassign v0.1.0 h1:y2Gd/9I7MdY1oEIt+n+rowjBNDcLQq3RsH5hwJd0f9s= -github.com/gordonklaus/ineffassign v0.1.0/go.mod h1:Qcp2HIAYhR7mNUVSIxZww3Guk4it82ghYcEXIAk+QT0= +github.com/gordonklaus/ineffassign v0.2.0 h1:Uths4KnmwxNJNzq87fwQQDDnbNb7De00VOk9Nu0TySs= +github.com/gordonklaus/ineffassign v0.2.0/go.mod h1:TIpymnagPSexySzs7F9FnO1XFTy8IT3a59vmZp5Y9Lw= github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.5.1 h1:gmztn0JnHVt9JZquRuzLw3g4wouNVzKL15iLr/zn/QY= github.com/gorilla/websocket v1.5.1/go.mod h1:x3kM2JMyaluk02fnUJpQuwD2dCS5NDG2ZHL0uE0tcaY= github.com/gostaticanalysis/analysisutil v0.7.1 h1:ZMCjoue3DtDWQ5WyU16YbjbQEQ3VuzwxALrpYd+HeKk= github.com/gostaticanalysis/analysisutil v0.7.1/go.mod h1:v21E3hY37WKMGSnbsw2S/ojApNWb6C1//mXO48CXbVc= -github.com/gostaticanalysis/comment v1.4.1/go.mod h1:ih6ZxzTHLdadaiSnF5WY3dxUoXfXAlTaRzuaNDlSado= github.com/gostaticanalysis/comment v1.4.2/go.mod h1:KLUTGDv6HOCotCH8h2erHKmpci2ZoR8VPu34YA2uzdM= github.com/gostaticanalysis/comment v1.5.0 h1:X82FLl+TswsUMpMh17srGRuKaaXprTaytmEpgnKIDu8= github.com/gostaticanalysis/comment v1.5.0/go.mod h1:V6eb3gpCv9GNVqb6amXzEUX3jXLVK/AdA+IrAMSqvEc= github.com/gostaticanalysis/forcetypeassert v0.2.0 h1:uSnWrrUEYDr86OCxWa4/Tp2jeYDlogZiZHzGkWFefTk= github.com/gostaticanalysis/forcetypeassert v0.2.0/go.mod h1:M5iPavzE9pPqWyeiVXSFghQjljW1+l/Uke3PXHS6ILY= -github.com/gostaticanalysis/nilerr v0.1.1 h1:ThE+hJP0fEp4zWLkWHWcRyI2Od0p7DlgYG3Uqrmrcpk= -github.com/gostaticanalysis/nilerr v0.1.1/go.mod h1:wZYb6YI5YAxxq0i1+VJbY0s2YONW0HU0GPE3+5PWN4A= github.com/gostaticanalysis/testutil v0.3.1-0.20210208050101-bfb5c8eec0e4/go.mod h1:D+FIZ+7OahH3ePw/izIEeH5I06eKs1IKI4Xr64/Am3M= github.com/gostaticanalysis/testutil v0.5.0 h1:Dq4wT1DdTwTGCQQv3rl3IvD5Ld0E6HiY+3Zh0sUGqw8= github.com/gostaticanalysis/testutil v0.5.0/go.mod h1:OLQSbuM6zw2EvCcXTz1lVq5unyoNft372msDY0nY5Hs= @@ -1504,8 +1511,8 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/kulti/thelper v0.6.3 h1:ElhKf+AlItIu+xGnI990no4cE2+XaSu1ULymV2Yulxs= -github.com/kulti/thelper v0.6.3/go.mod h1:DsqKShOvP40epevkFrvIwkCMNYxMeTNjdWL4dqWHZ6I= +github.com/kulti/thelper v0.7.1 h1:fI8QITAoFVLx+y+vSyuLBP+rcVIB8jKooNSCT2EiI98= +github.com/kulti/thelper v0.7.1/go.mod h1:NsMjfQEy6sd+9Kfw8kCP61W1I0nerGSYSFnGaxQkcbs= github.com/kunwardeep/paralleltest v1.0.14 h1:wAkMoMeGX/kGfhQBPODT/BL8XhK23ol/nuQ3SwFaUw8= github.com/kunwardeep/paralleltest v1.0.14/go.mod h1:di4moFqtfz3ToSKxhNjhOZL+696QtJGCFe132CbBLGk= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= @@ -1516,10 +1523,10 @@ github.com/ldez/exptostd v0.4.4 h1:58AtQjnLcT/tI5W/1KU7xE/O7zW9RAWB6c/ScQAnfus= github.com/ldez/exptostd v0.4.4/go.mod h1:QfdzPw6oHjFVdNV7ILoPu5sw3OZ3OG1JS0I5JN3J4Js= github.com/ldez/gomoddirectives v0.7.0 h1:EOx8Dd56BZYSez11LVgdj025lKwlP0/E5OLSl9HDwsY= github.com/ldez/gomoddirectives v0.7.0/go.mod h1:wR4v8MN9J8kcwvrkzrx6sC9xe9Cp68gWYCsda5xvyGc= -github.com/ldez/grignotin v0.10.0 h1:NQPeh1E/Eza4F0exCeC1WkpnLvgUcQDT8MQ1vOLML0E= -github.com/ldez/grignotin v0.10.0/go.mod h1:oR4iCKUP9fwoeO6vCQeD7M5SMxCT6xdVas4vg0h1LaI= -github.com/ldez/tagliatelle v0.7.1 h1:bTgKjjc2sQcsgPiT902+aadvMjCeMHrY7ly2XKFORIk= -github.com/ldez/tagliatelle v0.7.1/go.mod h1:3zjxUpsNB2aEZScWiZTHrAXOl1x25t3cRmzfK1mlo2I= +github.com/ldez/grignotin v0.10.1 h1:keYi9rYsgbvqAZGI1liek5c+jv9UUjbvdj3Tbn5fn4o= +github.com/ldez/grignotin v0.10.1/go.mod h1:UlDbXFCARrXbWGNGP3S5vsysNXAPhnSuBufpTEbwOas= +github.com/ldez/tagliatelle v0.7.2 h1:KuOlL70/fu9paxuxbeqlicJnCspCRjH0x8FW+NfgYUk= +github.com/ldez/tagliatelle v0.7.2/go.mod h1:PtGgm163ZplJfZMZ2sf5nhUT170rSuPgBimoyYtdaSI= github.com/ldez/usetesting v0.5.0 h1:3/QtzZObBKLy1F4F8jLuKJiKBjjVFi1IavpoWbmqLwc= github.com/ldez/usetesting v0.5.0/go.mod h1:Spnb4Qppf8JTuRgblLrEWb7IE6rDmUpGvxY3iRrzvDQ= github.com/leonklingele/grouper v1.1.2 h1:o1ARBDLOmmasUaNDesWqWCIFH3u7hoFlM84YrjT3mIY= @@ -1535,8 +1542,8 @@ github.com/macabu/inamedparam v0.2.0 h1:VyPYpOc10nkhI2qeNUdh3Zket4fcZjEWe35poddB github.com/macabu/inamedparam v0.2.0/go.mod h1:+Pee9/YfGe5LJ62pYXqB89lJ+0k5bsR8Wgz/C0Zlq3U= github.com/mailru/easyjson v0.9.0 h1:PrnmzHw7262yW8sTBwxi1PdJA3Iw/EKBa8psRf7d9a4= github.com/mailru/easyjson v0.9.0/go.mod h1:1+xMtQp2MRNVL/V1bOzuP3aP8VNwRW55fQUto+XFtTU= -github.com/manuelarte/embeddedstructfieldcheck v0.3.0 h1:VhGqK8gANDvFYDxQkjPbv7/gDJtsGU9k6qj/hC2hgso= -github.com/manuelarte/embeddedstructfieldcheck v0.3.0/go.mod h1:LSo/IQpPfx1dXMcX4ibZCYA7Yy6ayZHIaOGM70+1Wy8= +github.com/manuelarte/embeddedstructfieldcheck v0.4.0 h1:3mAIyaGRtjK6EO9E73JlXLtiy7ha80b2ZVGyacxgfww= +github.com/manuelarte/embeddedstructfieldcheck v0.4.0/go.mod h1:z8dFSyXqp+fC6NLDSljRJeNQJJDWnY7RoWFzV3PC6UM= github.com/manuelarte/funcorder v0.5.0 h1:llMuHXXbg7tD0i/LNw8vGnkDTHFpTnWqKPI85Rknc+8= github.com/manuelarte/funcorder v0.5.0/go.mod h1:Yt3CiUQthSBMBxjShjdXMexmzpP8YGvGLjrxJNkO2hA= github.com/maratori/testableexamples v1.0.0 h1:dU5alXRrD8WKSjOUnmJZuzdxWOEQ57+7s93SLMxb2vI= @@ -1575,8 +1582,8 @@ github.com/mattn/go-sqlite3 v1.14.14/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4 github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/mergestat/timediff v0.0.3 h1:ucCNh4/ZrTPjFZ081PccNbhx9spymCJkFxSzgVuPU+Y= github.com/mergestat/timediff v0.0.3/go.mod h1:yvMUaRu2oetc+9IbPLYBJviz6sA7xz8OXMDfhBl7YSI= -github.com/mgechev/revive v1.11.0 h1:b/gLLpBE427o+Xmd8G58gSA+KtBwxWinH/A565Awh0w= -github.com/mgechev/revive v1.11.0/go.mod h1:tI0oLF/2uj+InHCBLrrqfTKfjtFTBCFFfG05auyzgdw= +github.com/mgechev/revive v1.12.0 h1:Q+/kkbbwerrVYPv9d9efaPGmAO/NsxwW/nE6ahpQaCU= +github.com/mgechev/revive v1.12.0/go.mod h1:VXsY2LsTigk8XU9BpZauVLjVrhICMOV3k1lpB3CXrp8= github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE= github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d h1:5PJl274Y63IEHC+7izoQE9x6ikvDFZS2mDVS3drnohI= github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE= @@ -1625,16 +1632,16 @@ github.com/nishanths/exhaustive v0.12.0/go.mod h1:mEZ95wPIZW+x8kC4TgC+9YCUgiST7e github.com/nishanths/predeclared v0.2.2 h1:V2EPdZPliZymNAn79T8RkNApBjMmVKh5XRpLm/w98Vk= github.com/nishanths/predeclared v0.2.2/go.mod h1:RROzoN6TnGQupbC+lqggsOlcgysk3LMK/HI84Mp280c= github.com/npillmayer/nestext v0.1.3/go.mod h1:h2lrijH8jpicr25dFY+oAJLyzlya6jhnuG+zWp9L0Uk= -github.com/nunnatsa/ginkgolinter v0.20.0 h1:OmWLkAFO2HUTYcU6mprnKud1Ey5pVdiVNYGO5HVicx8= -github.com/nunnatsa/ginkgolinter v0.20.0/go.mod h1:dCIuFlTPfQerXgGUju3VygfAFPdC5aE1mdacCDKDJcQ= +github.com/nunnatsa/ginkgolinter v0.21.0 h1:IYwuX+ajy3G1MezlMLB1BENRtFj16+Evyi4uki1NOOQ= +github.com/nunnatsa/ginkgolinter v0.21.0/go.mod h1:QlzY9UP9zaqu58FjYxhp9bnjuwXwG1bfW5rid9ChNMw= github.com/oklog/run v1.0.0 h1:Ru7dDtJNOyC66gQ5dQmaCa0qIsAUFY3sFpK1Xk8igrw= github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/onsi/ginkgo/v2 v2.23.4 h1:ktYTpKJAVZnDT4VjxSbiBenUjmlL/5QkBEocaWXiQus= github.com/onsi/ginkgo/v2 v2.23.4/go.mod h1:Bt66ApGPBFzHyR+JO10Zbt0Gsp4uWxu5mIOTusL46e8= -github.com/onsi/gomega v1.37.0 h1:CdEG8g0S133B4OswTDC/5XPSzE1OeP29QOioj2PID2Y= -github.com/onsi/gomega v1.37.0/go.mod h1:8D9+Txp43QWKhM24yyOBEdpkzN8FvJyAwecBgsU4KU0= +github.com/onsi/gomega v1.38.0 h1:c/WX+w8SLAinvuKKQFh77WEucCnPk4j2OTUr7lt7BeY= +github.com/onsi/gomega v1.38.0/go.mod h1:OcXcwId0b9QsE7Y49u+BTrL4IdKOBOKnD6VQNTJEB6o= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs= @@ -1768,8 +1775,8 @@ github.com/sassoftware/relic/v7 v7.6.2/go.mod h1:kjmP0IBVkJZ6gXeAu35/KCEfca//+PK github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/secure-systems-lab/go-securesystemslib v0.9.0 h1:rf1HIbL64nUpEIZnjLZ3mcNEL9NBPB0iuVjyxvq3LZc= github.com/secure-systems-lab/go-securesystemslib v0.9.0/go.mod h1:DVHKMcZ+V4/woA/peqr+L0joiRXbPpQ042GgJckkFgw= -github.com/securego/gosec/v2 v2.22.7 h1:8/9P+oTYI4yIpAzccQKVsg1/90Po+JzGtAhqoHImDeM= -github.com/securego/gosec/v2 v2.22.7/go.mod h1:510TFNDMrIPytokyHQAVLvPeDr41Yihn2ak8P+XQfNE= +github.com/securego/gosec/v2 v2.22.8 h1:3NMpmfXO8wAVFZPNsd3EscOTa32Jyo6FLLlW53bexMI= +github.com/securego/gosec/v2 v2.22.8/go.mod h1:ZAw8K2ikuH9qDlfdV87JmNghnVfKB1XC7+TVzk6Utto= github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8= github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= @@ -1828,12 +1835,12 @@ github.com/spf13/afero v1.14.0/go.mod h1:acJQ8t0ohCGuMN3O+Pv0V0hgMxNYDlvdk+VTfyZ github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.10.0 h1:h2x0u2shc1QuLHfxi+cTJvs30+ZAHOGRic8uyGTDWxY= github.com/spf13/cast v1.10.0/go.mod h1:jNfB8QC9IA6ZuY2ZjDp0KtFO2LZZlg4S/7bzP6qqeHo= -github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= -github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= +github.com/spf13/cobra v1.10.1 h1:lJeBwCfmrnXthfAupyUTzJ/J4Nc1RsHC/mSRU2dll/s= +github.com/spf13/cobra v1.10.1/go.mod h1:7SmJGaTHFVBY0jW4NXGluQoLvhqFQM+6XSKD+P4XaB0= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/pflag v1.0.7 h1:vN6T9TfwStFPFM5XzjsvmzZkLuaLX+HS+0SeFLRgU6M= -github.com/spf13/pflag v1.0.7/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= +github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.20.1 h1:ZMi+z/lvLyPSCoNtFCpqjy0S4kPbirhpTMwl8BkW9X4= github.com/spf13/viper v1.20.1/go.mod h1:P9Mdzt1zoHIG8m2eZQinpiBjo6kCmZSKBClNNqjJvu4= github.com/spiffe/go-spiffe/v2 v2.5.0 h1:N2I01KCUkv1FAjZXJMwh95KK1ZIQLYbPfhaxw8WS0hE= @@ -1860,12 +1867,10 @@ github.com/stretchr/testify v1.7.4/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO 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.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -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/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= 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.4.1 h1:bm0tbcmi0jezRA2b5kg4ozmMuGAFotKI3RZfrhfovg8= -github.com/tdakkota/asciicheck v0.4.1/go.mod h1:0k7M3rCfRXb0Z6bwgvkEIMleKH3kXNz9UqJ9Xuqopr8= github.com/tenntenn/modver v1.0.1 h1:2klLppGhDgzJrScMpkj9Ujy3rXPUspSjAcev9tSEBgA= github.com/tenntenn/modver v1.0.1/go.mod h1:bePIyQPb7UeioSRkw3Q0XeMhYZSMx9B8ePqg6SAMGH0= github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3 h1:f+jULpRQGxTSkNYKJ51yaw6ChIqO+Je8UqsTKN/cDag= @@ -1876,8 +1881,8 @@ github.com/terraform-linters/tflint-plugin-sdk v0.22.0 h1:holOVJW0hjf0wkjtnYyPWR github.com/terraform-linters/tflint-plugin-sdk v0.22.0/go.mod h1:Cag3YJjBpHdQzI/limZR+Cj7WYPLTIE61xsCdIXoeUI= github.com/terraform-linters/tflint-ruleset-terraform v0.12.0 h1:158C56w1lJ4DSezzz54ISbkrgmQKBEy8iHSBFwxsBVs= github.com/terraform-linters/tflint-ruleset-terraform v0.12.0/go.mod h1:P6r/WFW87mxzsTBxaYAWYNelweWDQzk5LJt/p3PxCn4= -github.com/tetafro/godot v1.5.1 h1:PZnjCol4+FqaEzvZg5+O8IY2P3hfY9JzRBNPv1pEDS4= -github.com/tetafro/godot v1.5.1/go.mod h1:cCdPtEndkmqqrhiCfkmxDodMQJ/f3L1BCNskCUZdTwk= +github.com/tetafro/godot v1.5.4 h1:u1ww+gqpRLiIA16yF2PV1CV1n/X3zhyezbNXC3E14Sg= +github.com/tetafro/godot v1.5.4/go.mod h1:eOkMrVQurDui411nBY2FA05EYH01r14LuWY/NrVDVcU= github.com/thanhpk/randstr v1.0.4 h1:IN78qu/bR+My+gHCvMEXhR/i5oriVHcTB/BJJIRTsNo= github.com/thanhpk/randstr v1.0.4/go.mod h1:M/H2P1eNLZzlDwAzpkkkUvoyNNMbzRGhESZuEQk3r0U= github.com/theupdateframework/go-tuf v0.7.0 h1:CqbQFrWo1ae3/I0UCblSbczevCCbS31Qvs5LdxRWqRI= @@ -1969,14 +1974,14 @@ gitlab.com/bosi/decorder v0.4.2 h1:qbQaV3zgwnBZ4zPMhGLW4KZe7A7NwxEhJx39R3shffo= gitlab.com/bosi/decorder v0.4.2/go.mod h1:muuhHoaJkA9QLcYHq4Mj8FJUwDZ+EirSHRiaTcTf6T8= go-simpler.org/assert v0.9.0 h1:PfpmcSvL7yAnWyChSjOz6Sp6m9j5lyK8Ok9pEL31YkQ= go-simpler.org/assert v0.9.0/go.mod h1:74Eqh5eI6vCK6Y5l3PI8ZYFXG4Sa+tkr70OIPJAUr28= -go-simpler.org/musttag v0.13.1 h1:lw2sJyu7S1X8lc8zWUAdH42y+afdcCnHhWpnkWvd6vU= -go-simpler.org/musttag v0.13.1/go.mod h1:8r450ehpMLQgvpb6sg+hV5Ur47eH6olp/3yEanfG97k= +go-simpler.org/musttag v0.14.0 h1:XGySZATqQYSEV3/YTy+iX+aofbZZllJaqwFWs+RTtSo= +go-simpler.org/musttag v0.14.0/go.mod h1:uP8EymctQjJ4Z1kUnjX0u2l60WfUdQxCwSNKzE1JEOE= go-simpler.org/sloglint v0.11.1 h1:xRbPepLT/MHPTCA6TS/wNfZrDzkGvCCqUv4Bdwc3H7s= go-simpler.org/sloglint v0.11.1/go.mod h1:2PowwiCOK8mjiF+0KGifVOT8ZsCNiFzvfyJeJOIt8MQ= go.augendre.info/arangolint v0.2.0 h1:2NP/XudpPmfBhQKX4rMk+zDYIj//qbt4hfZmSSTcpj8= go.augendre.info/arangolint v0.2.0/go.mod h1:Vx4KSJwu48tkE+8uxuf0cbBnAPgnt8O1KWiT7bljq7w= -go.augendre.info/fatcontext v0.8.0 h1:2dfk6CQbDGeu1YocF59Za5Pia7ULeAM6friJ3LP7lmk= -go.augendre.info/fatcontext v0.8.0/go.mod h1:oVJfMgwngMsHO+KB2MdgzcO+RvtNdiCEOlWvSFtax/s= +go.augendre.info/fatcontext v0.8.1 h1:/T4+cCjpL9g71gJpcFAgVo/K5VFpqlN+NPU7QXxD5+A= +go.augendre.info/fatcontext v0.8.1/go.mod h1:r3Qz4ZOzex66wfyyj5VZ1xUcl81vzvHQ6/GWzzlMEwA= go.etcd.io/etcd/api/v3 v3.5.4/go.mod h1:5GB2vv4A4AOn3yk7MftYGHkUfGtDHnEraIjym4dYz5A= go.etcd.io/etcd/client/pkg/v3 v3.5.4/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= go.etcd.io/etcd/client/v3 v3.5.4/go.mod h1:ZaRkVgBZC+L+dLCjTcF1hRXpgZXQPOvnA/Ak/gq3kiY= @@ -1992,8 +1997,8 @@ go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/contrib/detectors/gcp v1.35.0 h1:bGvFt68+KTiAKFlacHW6AhA56GF2rS0bdD3aJYEnmzA= -go.opentelemetry.io/contrib/detectors/gcp v1.35.0/go.mod h1:qGWP8/+ILwMRIUf9uIVLloR1uo5ZYAslM4O6OqUi1DA= +go.opentelemetry.io/contrib/detectors/gcp v1.36.0 h1:F7q2tNlCaHY9nMKHR6XH9/qkp8FktLnIcy6jJNyOCQw= +go.opentelemetry.io/contrib/detectors/gcp v1.36.0/go.mod h1:IbBN8uAIIx734PTonTPxAxnjc2pQTxWNkwfstZ+6H2k= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0 h1:q4XOmH/0opmeuJtPsbFNivyl7bCt7yRBbeEm2sC/XtQ= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0/go.mod h1:snMWehoOh2wsEwnvvwtDyFCxVeDAODenXHtn5vzrKjo= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 h1:F7Jx+6hwnZ41NSFTO5q4LYDtJRXBf2PD0rNBkeB/lus= @@ -2072,8 +2077,8 @@ golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 h1:e66Fs6Z+fZTbFBAxKfP3PALWB golang.org/x/exp v0.0.0-20240909161429-701f63a606c0/go.mod h1:2TbTHSBQa924w8M6Xs1QcRcFwyucIwBGpK1p2f1YFFY= golang.org/x/exp/typeparams v0.0.0-20220428152302-39d4317da171/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= golang.org/x/exp/typeparams v0.0.0-20230203172020-98cc5a0785f9/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= -golang.org/x/exp/typeparams v0.0.0-20250620022241-b7579e27df2b h1:KdrhdYPDUvJTvrDK9gdjfFd6JTk8vA1WJoldYSi0kHo= -golang.org/x/exp/typeparams v0.0.0-20250620022241-b7579e27df2b/go.mod h1:LKZHyeOpPuZcMgxeHjJp4p5yvxrCX1xDvH10zYHhjjQ= +golang.org/x/exp/typeparams v0.0.0-20250911091902-df9299821621 h1:Yl4H5w2RV7L/dvSHp2GerziT5K2CORgFINPaMFxWGWw= +golang.org/x/exp/typeparams v0.0.0-20250911091902-df9299821621/go.mod h1:4Mzdyp/6jzw9auFDJ3OMF5qksa7UvPnzKqTVGcb04ms= golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= @@ -2446,7 +2451,6 @@ golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapK golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200324003944-a576cf524670/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.0.0-20200329025819-fd4102a86c65/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= @@ -2457,10 +2461,8 @@ golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roY golang.org/x/tools v0.0.0-20200724022722-7017fd6b1305/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200820010801-b793a1359eac/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20201023174141-c8cfbd0f21e6/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201124115921-2c860bdd6e78/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= @@ -2564,8 +2566,8 @@ google.golang.org/api v0.108.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/ google.golang.org/api v0.110.0/go.mod h1:7FC4Vvx1Mooxh8C5HWjzZHcavuS2f6pmJpZx60ca7iI= google.golang.org/api v0.111.0/go.mod h1:qtFHvU9mhgTJegR31csQ+rwxyUTHOKFqCKWp1J0fdw0= google.golang.org/api v0.114.0/go.mod h1:ifYI2ZsFK6/uGddGfAD5BMxlnkBqCmqHSDUVi45N5Yg= -google.golang.org/api v0.242.0 h1:7Lnb1nfnpvbkCiZek6IXKdJ0MFuAZNAJKQfA1ws62xg= -google.golang.org/api v0.242.0/go.mod h1:cOVEm2TpdAGHL2z+UwyS+kmlGr3bVWQQ6sYEqkKje50= +google.golang.org/api v0.246.0 h1:H0ODDs5PnMZVZAEtdLMn2Ul2eQi7QNjqM2DIFp8TlTM= +google.golang.org/api v0.246.0/go.mod h1:dMVhVcylamkirHdzEBAIQWUCgqY885ivNeZYd7VAVr8= 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= @@ -2706,12 +2708,12 @@ google.golang.org/genproto v0.0.0-20230323212658-478b75c54725/go.mod h1:UUQDJDOl google.golang.org/genproto v0.0.0-20230330154414-c0448cd141ea/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= google.golang.org/genproto v0.0.0-20230331144136-dcfb400f0633/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU= -google.golang.org/genproto v0.0.0-20250505200425-f936aa4a68b2 h1:1tXaIXCracvtsRxSBsYDiSBN0cuJvM7QYW+MrpIRY78= -google.golang.org/genproto v0.0.0-20250505200425-f936aa4a68b2/go.mod h1:49MsLSx0oWMOZqcpB3uL8ZOkAh1+TndpJ8ONoCBWiZk= +google.golang.org/genproto v0.0.0-20250603155806-513f23925822 h1:rHWScKit0gvAPuOnu87KpaYtjK5zBMLcULh7gxkCXu4= +google.golang.org/genproto v0.0.0-20250603155806-513f23925822/go.mod h1:HubltRL7rMh0LfnQPkMH4NPDFEWp0jw3vixw7jEM53s= google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 h1:oWVWY3NzT7KJppx2UKhKmzPq4SRe0LdCijVRwvGeikY= google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822/go.mod h1:h3c4v36UTKzUiuaOKQ6gr3S+0hovBtUrXzTG/i3+XEc= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 h1:fc6jSaCT0vBduLYZHYrBBNY4dsWuvgyff9noRNDdBeE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 h1:MAKi5q709QWfnkkpNQ0M12hYJ1+e8qYVDyowc4U1XZM= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= @@ -2755,8 +2757,8 @@ google.golang.org/grpc v1.52.3/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5v google.golang.org/grpc v1.53.0/go.mod h1:OnIrk0ipVdj4N5d9IUoFUx72/VlD7+jUsHwZgwSMQpw= google.golang.org/grpc v1.54.0/go.mod h1:PUSEXI6iWghWaB6lXM4knEgpJNu2qUcKfDtNci3EC2g= google.golang.org/grpc v1.56.3/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= -google.golang.org/grpc v1.73.0 h1:VIWSmpI2MegBtTuFt5/JWy2oXxtjJ/e89Z70ImfD2ok= -google.golang.org/grpc v1.73.0/go.mod h1:50sbHOUqWoCQGI8V2HQLJM0B+LMlIUjNSZmow7EVBQc= +google.golang.org/grpc v1.74.2 h1:WoosgB65DlWVC9FqI82dGsZhWFNBSLjQ84bjROOpMu4= +google.golang.org/grpc v1.74.2/go.mod h1:CtQ+BGjaAIXHs/5YS3i473GqwBBa1zGQNevxdeBEXrM= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= From 6318a0df53e1d234af96ec0b83218f7ae61826ef Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 23 Sep 2025 10:56:13 -0400 Subject: [PATCH 78/81] Bump the aws-sdk-go-v2 group across 1 directory with 19 updates (#44410) * Bump the aws-sdk-go-v2 group across 1 directory with 19 updates Bumps the aws-sdk-go-v2 group with 18 updates in the / directory: | Package | From | To | | --- | --- | --- | | [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2) | `1.31.8` | `1.31.9` | | [github.com/aws/aws-sdk-go-v2/feature/s3/manager](https://github.com/aws/aws-sdk-go-v2) | `1.19.6` | `1.19.7` | | [github.com/aws/aws-sdk-go-v2/service/batch](https://github.com/aws/aws-sdk-go-v2) | `1.57.7` | `1.57.8` | | [github.com/aws/aws-sdk-go-v2/service/bedrock](https://github.com/aws/aws-sdk-go-v2) | `1.46.1` | `1.47.0` | | [github.com/aws/aws-sdk-go-v2/service/bedrockagentcorecontrol](https://github.com/aws/aws-sdk-go-v2) | `1.4.4` | `1.5.0` | | [github.com/aws/aws-sdk-go-v2/service/budgets](https://github.com/aws/aws-sdk-go-v2) | `1.38.0` | `1.39.0` | | [github.com/aws/aws-sdk-go-v2/service/configservice](https://github.com/aws/aws-sdk-go-v2) | `1.57.4` | `1.58.0` | | [github.com/aws/aws-sdk-go-v2/service/connect](https://github.com/aws/aws-sdk-go-v2) | `1.139.1` | `1.140.0` | | [github.com/aws/aws-sdk-go-v2/service/datazone](https://github.com/aws/aws-sdk-go-v2) | `1.41.0` | `1.41.1` | | [github.com/aws/aws-sdk-go-v2/service/ec2](https://github.com/aws/aws-sdk-go-v2) | `1.251.2` | `1.253.0` | | [github.com/aws/aws-sdk-go-v2/service/eks](https://github.com/aws/aws-sdk-go-v2) | `1.73.3` | `1.74.0` | | [github.com/aws/aws-sdk-go-v2/service/imagebuilder](https://github.com/aws/aws-sdk-go-v2) | `1.46.4` | `1.47.0` | | [github.com/aws/aws-sdk-go-v2/service/medialive](https://github.com/aws/aws-sdk-go-v2) | `1.82.0` | `1.83.0` | | [github.com/aws/aws-sdk-go-v2/service/networkfirewall](https://github.com/aws/aws-sdk-go-v2) | `1.55.3` | `1.56.0` | | [github.com/aws/aws-sdk-go-v2/service/pcs](https://github.com/aws/aws-sdk-go-v2) | `1.12.4` | `1.13.0` | | [github.com/aws/aws-sdk-go-v2/service/redshiftserverless](https://github.com/aws/aws-sdk-go-v2) | `1.31.5` | `1.31.6` | | [github.com/aws/aws-sdk-go-v2/service/securityhub](https://github.com/aws/aws-sdk-go-v2) | `1.64.1` | `1.64.2` | | [github.com/aws/aws-sdk-go-v2/service/sqs](https://github.com/aws/aws-sdk-go-v2) | `1.42.5` | `1.42.6` | Updates `github.com/aws/aws-sdk-go-v2/config` from 1.31.8 to 1.31.9 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/config/v1.31.8...config/v1.31.9) Updates `github.com/aws/aws-sdk-go-v2/credentials` from 1.18.12 to 1.18.13 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/config/v1.18.13/CHANGELOG.md) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/config/v1.18.12...config/v1.18.13) Updates `github.com/aws/aws-sdk-go-v2/feature/s3/manager` from 1.19.6 to 1.19.7 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/m2/v1.19.6...service/m2/v1.19.7) Updates `github.com/aws/aws-sdk-go-v2/service/batch` from 1.57.7 to 1.57.8 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/batch/v1.57.7...service/batch/v1.57.8) Updates `github.com/aws/aws-sdk-go-v2/service/bedrock` from 1.46.1 to 1.47.0 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/ssm/v1.46.1...service/s3/v1.47.0) Updates `github.com/aws/aws-sdk-go-v2/service/bedrockagentcorecontrol` from 1.4.4 to 1.5.0 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/v1.5.0/CHANGELOG.md) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/m2/v1.4.4...v1.5.0) Updates `github.com/aws/aws-sdk-go-v2/service/budgets` from 1.38.0 to 1.39.0 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/v1.38.0...v1.39.0) Updates `github.com/aws/aws-sdk-go-v2/service/configservice` from 1.57.4 to 1.58.0 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/ecs/v1.57.4...service/s3/v1.58.0) Updates `github.com/aws/aws-sdk-go-v2/service/connect` from 1.139.1 to 1.140.0 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/connect/v1.139.1...service/ec2/v1.140.0) Updates `github.com/aws/aws-sdk-go-v2/service/datazone` from 1.41.0 to 1.41.1 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/s3/v1.41.0...service/fms/v1.41.1) Updates `github.com/aws/aws-sdk-go-v2/service/ec2` from 1.251.2 to 1.253.0 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/ec2/v1.251.2...service/ec2/v1.253.0) Updates `github.com/aws/aws-sdk-go-v2/service/eks` from 1.73.3 to 1.74.0 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/eks/v1.73.3...service/s3/v1.74.0) Updates `github.com/aws/aws-sdk-go-v2/service/imagebuilder` from 1.46.4 to 1.47.0 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/iot/v1.46.4...service/s3/v1.47.0) Updates `github.com/aws/aws-sdk-go-v2/service/medialive` from 1.82.0 to 1.83.0 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/s3/v1.82.0...service/s3/v1.83.0) Updates `github.com/aws/aws-sdk-go-v2/service/networkfirewall` from 1.55.3 to 1.56.0 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/iot/v1.55.3...service/s3/v1.56.0) Updates `github.com/aws/aws-sdk-go-v2/service/pcs` from 1.12.4 to 1.13.0 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/v1.13.0/CHANGELOG.md) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/m2/v1.12.4...v1.13.0) Updates `github.com/aws/aws-sdk-go-v2/service/redshiftserverless` from 1.31.5 to 1.31.6 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/config/v1.31.5...config/v1.31.6) Updates `github.com/aws/aws-sdk-go-v2/service/securityhub` from 1.64.1 to 1.64.2 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/s3/v1.64.1...service/iot/v1.64.2) Updates `github.com/aws/aws-sdk-go-v2/service/sqs` from 1.42.5 to 1.42.6 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/eks/v1.42.5...service/emr/v1.42.6) --- updated-dependencies: - dependency-name: github.com/aws/aws-sdk-go-v2/config dependency-version: 1.31.9 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/credentials dependency-version: 1.18.13 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/feature/s3/manager dependency-version: 1.19.7 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/batch dependency-version: 1.57.8 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/bedrock dependency-version: 1.47.0 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/bedrockagentcorecontrol dependency-version: 1.5.0 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/budgets dependency-version: 1.39.0 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/configservice dependency-version: 1.58.0 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/connect dependency-version: 1.140.0 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/datazone dependency-version: 1.41.1 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-version: 1.253.0 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/eks dependency-version: 1.74.0 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/imagebuilder dependency-version: 1.47.0 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/medialive dependency-version: 1.83.0 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/networkfirewall dependency-version: 1.56.0 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/pcs dependency-version: 1.13.0 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/redshiftserverless dependency-version: 1.31.6 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/securityhub dependency-version: 1.64.2 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/sqs dependency-version: 1.42.6 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: aws-sdk-go-v2 ... Signed-off-by: dependabot[bot] * chore: make clean-tidy --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Jared Baker --- go.mod | 40 +++++++++++----------- go.sum | 80 +++++++++++++++++++++---------------------- tools/tfsdk2fw/go.mod | 40 +++++++++++----------- tools/tfsdk2fw/go.sum | 80 +++++++++++++++++++++---------------------- 4 files changed, 120 insertions(+), 120 deletions(-) diff --git a/go.mod b/go.mod index 6153e5ede921..696feb6a6f5e 100644 --- a/go.mod +++ b/go.mod @@ -12,10 +12,10 @@ require ( github.com/YakDriver/regexache v0.24.0 github.com/YakDriver/smarterr v0.6.0 github.com/aws/aws-sdk-go-v2 v1.39.0 - github.com/aws/aws-sdk-go-v2/config v1.31.8 - github.com/aws/aws-sdk-go-v2/credentials v1.18.12 + github.com/aws/aws-sdk-go-v2/config v1.31.9 + github.com/aws/aws-sdk-go-v2/credentials v1.18.13 github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.7 - github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.19.6 + github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.19.7 github.com/aws/aws-sdk-go-v2/service/accessanalyzer v1.44.4 github.com/aws/aws-sdk-go-v2/service/account v1.28.4 github.com/aws/aws-sdk-go-v2/service/acm v1.37.4 @@ -41,13 +41,13 @@ require ( github.com/aws/aws-sdk-go-v2/service/autoscaling v1.59.1 github.com/aws/aws-sdk-go-v2/service/autoscalingplans v1.29.3 github.com/aws/aws-sdk-go-v2/service/backup v1.47.4 - github.com/aws/aws-sdk-go-v2/service/batch v1.57.7 + github.com/aws/aws-sdk-go-v2/service/batch v1.57.8 github.com/aws/aws-sdk-go-v2/service/bcmdataexports v1.11.6 - github.com/aws/aws-sdk-go-v2/service/bedrock v1.46.1 + github.com/aws/aws-sdk-go-v2/service/bedrock v1.47.0 github.com/aws/aws-sdk-go-v2/service/bedrockagent v1.50.4 - github.com/aws/aws-sdk-go-v2/service/bedrockagentcorecontrol v1.4.4 + github.com/aws/aws-sdk-go-v2/service/bedrockagentcorecontrol v1.5.0 github.com/aws/aws-sdk-go-v2/service/billing v1.7.5 - github.com/aws/aws-sdk-go-v2/service/budgets v1.38.0 + github.com/aws/aws-sdk-go-v2/service/budgets v1.39.0 github.com/aws/aws-sdk-go-v2/service/chatbot v1.14.4 github.com/aws/aws-sdk-go-v2/service/chime v1.40.3 github.com/aws/aws-sdk-go-v2/service/chimesdkmediapipelines v1.26.4 @@ -78,8 +78,8 @@ require ( github.com/aws/aws-sdk-go-v2/service/cognitoidentityprovider v1.57.5 github.com/aws/aws-sdk-go-v2/service/comprehend v1.40.4 github.com/aws/aws-sdk-go-v2/service/computeoptimizer v1.47.3 - github.com/aws/aws-sdk-go-v2/service/configservice v1.57.4 - github.com/aws/aws-sdk-go-v2/service/connect v1.139.1 + github.com/aws/aws-sdk-go-v2/service/configservice v1.58.0 + github.com/aws/aws-sdk-go-v2/service/connect v1.140.0 github.com/aws/aws-sdk-go-v2/service/connectcases v1.30.4 github.com/aws/aws-sdk-go-v2/service/controltower v1.26.4 github.com/aws/aws-sdk-go-v2/service/costandusagereportservice v1.33.4 @@ -91,7 +91,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/dataexchange v1.39.4 github.com/aws/aws-sdk-go-v2/service/datapipeline v1.30.3 github.com/aws/aws-sdk-go-v2/service/datasync v1.54.4 - github.com/aws/aws-sdk-go-v2/service/datazone v1.41.0 + github.com/aws/aws-sdk-go-v2/service/datazone v1.41.1 github.com/aws/aws-sdk-go-v2/service/dax v1.28.4 github.com/aws/aws-sdk-go-v2/service/detective v1.37.5 github.com/aws/aws-sdk-go-v2/service/devicefarm v1.35.4 @@ -104,12 +104,12 @@ require ( github.com/aws/aws-sdk-go-v2/service/drs v1.35.4 github.com/aws/aws-sdk-go-v2/service/dsql v1.9.6 github.com/aws/aws-sdk-go-v2/service/dynamodb v1.50.3 - github.com/aws/aws-sdk-go-v2/service/ec2 v1.251.2 + github.com/aws/aws-sdk-go-v2/service/ec2 v1.253.0 github.com/aws/aws-sdk-go-v2/service/ecr v1.50.3 github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.37.4 github.com/aws/aws-sdk-go-v2/service/ecs v1.64.0 github.com/aws/aws-sdk-go-v2/service/efs v1.40.5 - github.com/aws/aws-sdk-go-v2/service/eks v1.73.3 + github.com/aws/aws-sdk-go-v2/service/eks v1.74.0 github.com/aws/aws-sdk-go-v2/service/elasticache v1.50.3 github.com/aws/aws-sdk-go-v2/service/elasticbeanstalk v1.33.5 github.com/aws/aws-sdk-go-v2/service/elasticloadbalancing v1.33.4 @@ -138,7 +138,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/healthlake v1.35.3 github.com/aws/aws-sdk-go-v2/service/iam v1.47.5 github.com/aws/aws-sdk-go-v2/service/identitystore v1.32.4 - github.com/aws/aws-sdk-go-v2/service/imagebuilder v1.46.4 + github.com/aws/aws-sdk-go-v2/service/imagebuilder v1.47.0 github.com/aws/aws-sdk-go-v2/service/inspector v1.30.3 github.com/aws/aws-sdk-go-v2/service/inspector2 v1.44.4 github.com/aws/aws-sdk-go-v2/service/internetmonitor v1.25.3 @@ -168,7 +168,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/macie2 v1.49.4 github.com/aws/aws-sdk-go-v2/service/mediaconnect v1.44.4 github.com/aws/aws-sdk-go-v2/service/mediaconvert v1.82.4 - github.com/aws/aws-sdk-go-v2/service/medialive v1.82.0 + github.com/aws/aws-sdk-go-v2/service/medialive v1.83.0 github.com/aws/aws-sdk-go-v2/service/mediapackage v1.39.4 github.com/aws/aws-sdk-go-v2/service/mediapackagev2 v1.31.1 github.com/aws/aws-sdk-go-v2/service/mediapackagevod v1.39.4 @@ -179,7 +179,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/mwaa v1.39.4 github.com/aws/aws-sdk-go-v2/service/neptune v1.42.2 github.com/aws/aws-sdk-go-v2/service/neptunegraph v1.21.3 - github.com/aws/aws-sdk-go-v2/service/networkfirewall v1.55.3 + github.com/aws/aws-sdk-go-v2/service/networkfirewall v1.56.0 github.com/aws/aws-sdk-go-v2/service/networkmanager v1.39.5 github.com/aws/aws-sdk-go-v2/service/networkmonitor v1.12.4 github.com/aws/aws-sdk-go-v2/service/notifications v1.7.2 @@ -193,7 +193,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/outposts v1.56.5 github.com/aws/aws-sdk-go-v2/service/paymentcryptography v1.25.0 github.com/aws/aws-sdk-go-v2/service/pcaconnectorad v1.15.4 - github.com/aws/aws-sdk-go-v2/service/pcs v1.12.4 + github.com/aws/aws-sdk-go-v2/service/pcs v1.13.0 github.com/aws/aws-sdk-go-v2/service/pinpoint v1.39.4 github.com/aws/aws-sdk-go-v2/service/pinpointsmsvoicev2 v1.25.3 github.com/aws/aws-sdk-go-v2/service/pipes v1.23.3 @@ -207,7 +207,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/rds v1.107.0 github.com/aws/aws-sdk-go-v2/service/redshift v1.58.3 github.com/aws/aws-sdk-go-v2/service/redshiftdata v1.37.4 - github.com/aws/aws-sdk-go-v2/service/redshiftserverless v1.31.5 + github.com/aws/aws-sdk-go-v2/service/redshiftserverless v1.31.6 github.com/aws/aws-sdk-go-v2/service/rekognition v1.51.3 github.com/aws/aws-sdk-go-v2/service/resiliencehub v1.34.4 github.com/aws/aws-sdk-go-v2/service/resourceexplorer2 v1.21.4 @@ -230,7 +230,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/scheduler v1.17.3 github.com/aws/aws-sdk-go-v2/service/schemas v1.33.3 github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.39.4 - github.com/aws/aws-sdk-go-v2/service/securityhub v1.64.1 + github.com/aws/aws-sdk-go-v2/service/securityhub v1.64.2 github.com/aws/aws-sdk-go-v2/service/securitylake v1.24.4 github.com/aws/aws-sdk-go-v2/service/serverlessapplicationrepository v1.29.4 github.com/aws/aws-sdk-go-v2/service/servicecatalog v1.38.4 @@ -243,7 +243,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/shield v1.34.4 github.com/aws/aws-sdk-go-v2/service/signer v1.31.4 github.com/aws/aws-sdk-go-v2/service/sns v1.38.3 - github.com/aws/aws-sdk-go-v2/service/sqs v1.42.5 + github.com/aws/aws-sdk-go-v2/service/sqs v1.42.6 github.com/aws/aws-sdk-go-v2/service/ssm v1.64.4 github.com/aws/aws-sdk-go-v2/service/ssmcontacts v1.30.6 github.com/aws/aws-sdk-go-v2/service/ssmincidents v1.39.3 @@ -333,7 +333,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.11.7 // indirect github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.7 // indirect github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.7 // indirect - github.com/aws/aws-sdk-go-v2/service/ssooidc v1.34.4 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.34.5 // indirect github.com/bgentry/speakeasy v0.1.0 // indirect github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc // indirect github.com/cloudflare/circl v1.6.1 // indirect diff --git a/go.sum b/go.sum index c1b8fde318ab..7414ade474b0 100644 --- a/go.sum +++ b/go.sum @@ -27,14 +27,14 @@ github.com/aws/aws-sdk-go-v2 v1.39.0 h1:xm5WV/2L4emMRmMjHFykqiA4M/ra0DJVSWUkDyBj github.com/aws/aws-sdk-go-v2 v1.39.0/go.mod h1:sDioUELIUO9Znk23YVmIk86/9DOpkbyyVb1i/gUNFXY= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.1 h1:i8p8P4diljCr60PpJp6qZXNlgX4m2yQFpYk+9ZT+J4E= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.1/go.mod h1:ddqbooRZYNoJ2dsTwOty16rM+/Aqmk/GOXrK8cg7V00= -github.com/aws/aws-sdk-go-v2/config v1.31.8 h1:kQjtOLlTU4m4A64TsRcqwNChhGCwaPBt+zCQt/oWsHU= -github.com/aws/aws-sdk-go-v2/config v1.31.8/go.mod h1:QPpc7IgljrKwH0+E6/KolCgr4WPLerURiU592AYzfSY= -github.com/aws/aws-sdk-go-v2/credentials v1.18.12 h1:zmc9e1q90wMn8wQbjryy8IwA6Q4XlaL9Bx2zIqdNNbk= -github.com/aws/aws-sdk-go-v2/credentials v1.18.12/go.mod h1:3VzdRDR5u3sSJRI4kYcOSIBbeYsgtVk7dG5R/U6qLWY= +github.com/aws/aws-sdk-go-v2/config v1.31.9 h1:Q+9hVk8kmDGlC7XcDout/vs0FZhHnuPCPv+TRAYDans= +github.com/aws/aws-sdk-go-v2/config v1.31.9/go.mod h1:OpMrPn6rRbHKU4dAVNCk/EQx8sEQJI7hl9GZZ5u/Y+U= +github.com/aws/aws-sdk-go-v2/credentials v1.18.13 h1:gkpEm65/ZfrGJ3wbFH++Ki7DyaWtsWbK9idX6OXCo2E= +github.com/aws/aws-sdk-go-v2/credentials v1.18.13/go.mod h1:eVTHz1yI2/WIlXTE8f70mcrSxNafXD5sJpTIM9f+kmo= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.7 h1:Is2tPmieqGS2edBnmOJIbdvOA6Op+rRpaYR60iBAwXM= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.7/go.mod h1:F1i5V5421EGci570yABvpIXgRIBPb5JM+lSkHF6Dq5w= -github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.19.6 h1:bByPm7VcaAgeT2+z5m0Lj5HDzm+g9AwbA3WFx2hPby0= -github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.19.6/go.mod h1:PhTe8fR8aFW0wDc6IV9BHeIzXhpv3q6AaVHnqiv5Pyc= +github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.19.7 h1:HWLRV4xlO15SsHs295AqwTGNwYG3kP6vAjw2OleUdX8= +github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.19.7/go.mod h1:MWZrPol/xFvU6gyQ/gxqgsjufcbetFNE9gzSXPTLofw= github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.7 h1:UCxq0X9O3xrlENdKf1r9eRJoKz/b0AfGkpp3a7FPlhg= github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.7/go.mod h1:rHRoJUNUASj5Z/0eqI4w32vKvC7atoWR0jC+IkmVH8k= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.7 h1:Y6DTZUn7ZUC4th9FMBbo8LVE+1fyq3ofw+tRwkUd3PY= @@ -93,20 +93,20 @@ github.com/aws/aws-sdk-go-v2/service/autoscalingplans v1.29.3 h1:Erjv3OrmWRuNnHn github.com/aws/aws-sdk-go-v2/service/autoscalingplans v1.29.3/go.mod h1:WxM0Cy6cIXwyJitcXHzWzUKYHXC/23gp+xZ5OIsvgA4= github.com/aws/aws-sdk-go-v2/service/backup v1.47.4 h1:IDO4noL9SPjjRDYgQPN5pQkvlWa65Z8U4fxJcMqwgZI= github.com/aws/aws-sdk-go-v2/service/backup v1.47.4/go.mod h1:QTx4WU73HyMzHtHeOjeNNUBx8ZTgri+R8qTJKg+JZBE= -github.com/aws/aws-sdk-go-v2/service/batch v1.57.7 h1:U70jYmNrPFDJKxAGi8Va6BQ6iOQpYPgofG7B5QSZVoM= -github.com/aws/aws-sdk-go-v2/service/batch v1.57.7/go.mod h1:kQNvBp+FpFZaQ9NGTPuGRqREOs//GhoVSXnYjcV9f8s= +github.com/aws/aws-sdk-go-v2/service/batch v1.57.8 h1:pLJU4QXH+VYVOpZGwYkjptf6wAbKfFHLHoPygr3Oeuc= +github.com/aws/aws-sdk-go-v2/service/batch v1.57.8/go.mod h1:kQNvBp+FpFZaQ9NGTPuGRqREOs//GhoVSXnYjcV9f8s= github.com/aws/aws-sdk-go-v2/service/bcmdataexports v1.11.6 h1:J39E926fD+zbL9qBNPK235Zn+KarvEPOuTtCH/WNN8k= github.com/aws/aws-sdk-go-v2/service/bcmdataexports v1.11.6/go.mod h1:Qy7ki+Cj48OXfe7zIRSQ7IjXYMvTE/ddhnpR98VyyM4= -github.com/aws/aws-sdk-go-v2/service/bedrock v1.46.1 h1:hZwht+1MdXlNot+A/r7SWqk0w2WVpiDUzRasdQFv1Vw= -github.com/aws/aws-sdk-go-v2/service/bedrock v1.46.1/go.mod h1:NFnqdOIaYD3MVMIlRjZ0sUzQPTWiWfES1sdalmLk5RA= +github.com/aws/aws-sdk-go-v2/service/bedrock v1.47.0 h1:TLn3jH/RbbTfgG7XAgiY0uQv9dFw1oSQdH4QFUYdhpM= +github.com/aws/aws-sdk-go-v2/service/bedrock v1.47.0/go.mod h1:NFnqdOIaYD3MVMIlRjZ0sUzQPTWiWfES1sdalmLk5RA= github.com/aws/aws-sdk-go-v2/service/bedrockagent v1.50.4 h1:2jf7uhcRTPdNU+rmKmePMC67sW3DwXD0BZe8eqvrFbU= github.com/aws/aws-sdk-go-v2/service/bedrockagent v1.50.4/go.mod h1:O04szfwjoDC5j/tazBZ2hb1hXQkhoJgglRIW6vJWw/o= -github.com/aws/aws-sdk-go-v2/service/bedrockagentcorecontrol v1.4.4 h1:nYvxys7OuH+D5QYlJuVaTSRCuxaeLVpQLwifpt9tQP0= -github.com/aws/aws-sdk-go-v2/service/bedrockagentcorecontrol v1.4.4/go.mod h1:73rs+5WDpBLlZUtgV0IO3+4EjRS8AW7vFbA4RBFd6R8= +github.com/aws/aws-sdk-go-v2/service/bedrockagentcorecontrol v1.5.0 h1:lbAgxGLW9NwdbUGQtrhTyD1iMwe2CKDVKdq9OimWXsw= +github.com/aws/aws-sdk-go-v2/service/bedrockagentcorecontrol v1.5.0/go.mod h1:73rs+5WDpBLlZUtgV0IO3+4EjRS8AW7vFbA4RBFd6R8= github.com/aws/aws-sdk-go-v2/service/billing v1.7.5 h1:Nb77k+S9tLLyBlcGOlnyfR04KzoSXc6/+O+1EKeVITw= github.com/aws/aws-sdk-go-v2/service/billing v1.7.5/go.mod h1:qrv8fPqdJSgnc1Ue7O3otSwQXVho0/z27T+r8hdPxAM= -github.com/aws/aws-sdk-go-v2/service/budgets v1.38.0 h1:XtePF18sp2vcErOMzPeD13pEidiYe28rXmhPdEK9CUA= -github.com/aws/aws-sdk-go-v2/service/budgets v1.38.0/go.mod h1:IqipleKaucVL842LZ5vJECSJZFNHvUBE883fk8lwLkk= +github.com/aws/aws-sdk-go-v2/service/budgets v1.39.0 h1:jwOLutNGpsA6JYAidvPNYSBfRlIKlgJ1U0Qv4xVsFsI= +github.com/aws/aws-sdk-go-v2/service/budgets v1.39.0/go.mod h1:IqipleKaucVL842LZ5vJECSJZFNHvUBE883fk8lwLkk= github.com/aws/aws-sdk-go-v2/service/chatbot v1.14.4 h1:rahhkonNJRm0BvfnNE19U9t0xBKXnfwEcnqroRmY2ec= github.com/aws/aws-sdk-go-v2/service/chatbot v1.14.4/go.mod h1:Wv362fC5OMvg61LsaygecobiBobnZpSFivKsN17JHvM= github.com/aws/aws-sdk-go-v2/service/chime v1.40.3 h1:VU1s4PIE+qoO7mgUw+Q0CnMKTcovQIbLwWjsAlxampY= @@ -167,10 +167,10 @@ github.com/aws/aws-sdk-go-v2/service/comprehend v1.40.4 h1:29BM732laN08dVs+5z+qh github.com/aws/aws-sdk-go-v2/service/comprehend v1.40.4/go.mod h1:H3n/gYCQF6ZkjFQI+fVVXwbkRLDPXbEtbBi3NwZTnm0= github.com/aws/aws-sdk-go-v2/service/computeoptimizer v1.47.3 h1:VPxguqTtIcjVPnwHiJ7rNQr9gPERlI/vKzrkl/sM7Fc= github.com/aws/aws-sdk-go-v2/service/computeoptimizer v1.47.3/go.mod h1:aGw9jt6otTqJ3zwm+AlUoNl6Vrl8AkfFWIibvk+BIeE= -github.com/aws/aws-sdk-go-v2/service/configservice v1.57.4 h1:Qk1P7ltOokM7JTpOJaZH6ALesaxVwBgoDHtktjfrm7Q= -github.com/aws/aws-sdk-go-v2/service/configservice v1.57.4/go.mod h1:Ao+h1Szn6S3ZemyfA9I8YMmqu/sRgexyx2xZJdwH9bY= -github.com/aws/aws-sdk-go-v2/service/connect v1.139.1 h1:EcjVKcOcPh+ZBHOVVa+fqvBSPlppFSaGWL+WPHFDzYc= -github.com/aws/aws-sdk-go-v2/service/connect v1.139.1/go.mod h1:ybFXrfh8spGBlbgd8q/MVqzt2RvdSMhWO6EiD4UkHRg= +github.com/aws/aws-sdk-go-v2/service/configservice v1.58.0 h1:qixDSVJp0z2kQ7n017oZp5RKQVh81gaedaeuqISm+iY= +github.com/aws/aws-sdk-go-v2/service/configservice v1.58.0/go.mod h1:Ao+h1Szn6S3ZemyfA9I8YMmqu/sRgexyx2xZJdwH9bY= +github.com/aws/aws-sdk-go-v2/service/connect v1.140.0 h1:ymo0C+sckUW54Zaonk8/YAJUW1urFLlBGJ2vT7BwH9U= +github.com/aws/aws-sdk-go-v2/service/connect v1.140.0/go.mod h1:ybFXrfh8spGBlbgd8q/MVqzt2RvdSMhWO6EiD4UkHRg= github.com/aws/aws-sdk-go-v2/service/connectcases v1.30.4 h1:KjM2HAQgsH9gaofgy+JKHF664UH9zwuetSo42il9eLk= github.com/aws/aws-sdk-go-v2/service/connectcases v1.30.4/go.mod h1:gJJ6zE3RWdeQfnNcpaD9Hyx1rqLqMA3RLYR9fveHWkQ= github.com/aws/aws-sdk-go-v2/service/controltower v1.26.4 h1:mDhXopIZ9wA+rRujZzTFZAQyqQ1YAWiWYJBoVy0SqZA= @@ -193,8 +193,8 @@ github.com/aws/aws-sdk-go-v2/service/datapipeline v1.30.3 h1:RT2vYyEURb1Y2c9Wouf github.com/aws/aws-sdk-go-v2/service/datapipeline v1.30.3/go.mod h1:AjQynFDMSWmaGyNwzNlQQ4t1SGtqwY0Rq0dgqCKsGIA= github.com/aws/aws-sdk-go-v2/service/datasync v1.54.4 h1:HaqO010CgYxtu8mNUUQUd2QC3yDN4JS9Olt4vOQpR20= github.com/aws/aws-sdk-go-v2/service/datasync v1.54.4/go.mod h1:7TqFyNtpN5h1VeBbN1FcXi0T3FIXcsPUVqq7iJrlsF8= -github.com/aws/aws-sdk-go-v2/service/datazone v1.41.0 h1:VPonYVHFrgQY/Y6vGUmis6FTAmo95qW1JnGu5ZGcJ7o= -github.com/aws/aws-sdk-go-v2/service/datazone v1.41.0/go.mod h1:xGX76ojBOXWCIM5ZjtnYEqUUVbBjMdBmPBNKyXhBo8o= +github.com/aws/aws-sdk-go-v2/service/datazone v1.41.1 h1:otPvyppOc4nrTxTiHrki7/2Bfa4zmXUZ7dwbOWftsGE= +github.com/aws/aws-sdk-go-v2/service/datazone v1.41.1/go.mod h1:xGX76ojBOXWCIM5ZjtnYEqUUVbBjMdBmPBNKyXhBo8o= github.com/aws/aws-sdk-go-v2/service/dax v1.28.4 h1:0H43bqbpiPF4WV+2ppV9l6T30lWolBsshd8ZQYt//wk= github.com/aws/aws-sdk-go-v2/service/dax v1.28.4/go.mod h1:aZWmrV2Xi7rNUPy0JZ5vQGF7zboJoekVQkp7+ETUy+Y= github.com/aws/aws-sdk-go-v2/service/detective v1.37.5 h1:a/VOCosbBdJUSyaEXRN4hsqGbXG/itfOquy7GX1vBeU= @@ -219,8 +219,8 @@ github.com/aws/aws-sdk-go-v2/service/dsql v1.9.6 h1:hgRu1NFDnCR5V0FkuGiI7WB9xR/x github.com/aws/aws-sdk-go-v2/service/dsql v1.9.6/go.mod h1:/ApNiCtQwiyM/KNe14Q9wkQ4zN5HqECXea86ADGRCCQ= github.com/aws/aws-sdk-go-v2/service/dynamodb v1.50.3 h1:fbhq/XgBDNAVreNMY8E7JWxlqeHH8O3UAunPvV9XY5A= github.com/aws/aws-sdk-go-v2/service/dynamodb v1.50.3/go.mod h1:lXFSTFpnhgc8Qb/meseIt7+UXPiidZm0DbiDqmPHBTQ= -github.com/aws/aws-sdk-go-v2/service/ec2 v1.251.2 h1:6TssXFfLHcwUS5E3MdYKkCFeOrYVBlDhJjs5kRJp0ic= -github.com/aws/aws-sdk-go-v2/service/ec2 v1.251.2/go.mod h1:MXJiLJZtMqb2dVXgEIn35d5+7MqLd4r8noLen881kpk= +github.com/aws/aws-sdk-go-v2/service/ec2 v1.253.0 h1:x0v1n45AT+uZvNoQI8xtegVUOZoQIF+s9qwNcl7Ivyg= +github.com/aws/aws-sdk-go-v2/service/ec2 v1.253.0/go.mod h1:MXJiLJZtMqb2dVXgEIn35d5+7MqLd4r8noLen881kpk= github.com/aws/aws-sdk-go-v2/service/ecr v1.50.3 h1:phfqjO8ebHGoC/GrjHcuTrVkDCeM9A6atOYTCY1XsXo= github.com/aws/aws-sdk-go-v2/service/ecr v1.50.3/go.mod h1:TbUfC2wbI144ak0zMJoQ2zjPwGaw1/Kt3SXI138wcoY= github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.37.4 h1:/HxbCJjqyO4eJ1FCVnvUJtXbWOnG217jMpkYaTUP6V8= @@ -229,8 +229,8 @@ github.com/aws/aws-sdk-go-v2/service/ecs v1.64.0 h1:WydV4UxL/L1h+ZYQPkpto6jqMVRs github.com/aws/aws-sdk-go-v2/service/ecs v1.64.0/go.mod h1:aJR4g+fZtJ2Bh8VVMS/UP6A3fuwBn9cWajUVos4zhP0= github.com/aws/aws-sdk-go-v2/service/efs v1.40.5 h1:iOfTDjU/S2b0BSWCqv7fDbT4uKo0e3jdtnRHVwXXggI= github.com/aws/aws-sdk-go-v2/service/efs v1.40.5/go.mod h1:gnXK8cQKVDpkqG7lCZ2NYx32B9WbTIZsGiAFRXxpX70= -github.com/aws/aws-sdk-go-v2/service/eks v1.73.3 h1:V6MAr82kSLdj3/tN4UcPtlXDbvkNcAxsIvq59CNe704= -github.com/aws/aws-sdk-go-v2/service/eks v1.73.3/go.mod h1:FeDTTHze8jWVCZBiMkUYxJ/TQdOpTf9zbJjf0RI0ajo= +github.com/aws/aws-sdk-go-v2/service/eks v1.74.0 h1:GdG6qvpMet2Bs0XQR3O/4RJ8g87bXfPZCIzPBNqkX54= +github.com/aws/aws-sdk-go-v2/service/eks v1.74.0/go.mod h1:FeDTTHze8jWVCZBiMkUYxJ/TQdOpTf9zbJjf0RI0ajo= github.com/aws/aws-sdk-go-v2/service/elasticache v1.50.3 h1:uiWSUtTWqpvhP7KSEpVpIm0LqOtXtzOx049rmukP/gI= github.com/aws/aws-sdk-go-v2/service/elasticache v1.50.3/go.mod h1:igTRxVYuxplMPKS5J1AEThtbeFJQhUz845YtDRDzJhY= github.com/aws/aws-sdk-go-v2/service/elasticbeanstalk v1.33.5 h1:G8Fc8YJ8bTHvyWu0qAp/HJebp9Mjtg2qpmQ0L071OKs= @@ -287,8 +287,8 @@ github.com/aws/aws-sdk-go-v2/service/iam v1.47.5 h1:o2gRl9x3A/Sp6q4oHinnrS+2AC9U github.com/aws/aws-sdk-go-v2/service/iam v1.47.5/go.mod h1:0y7wFmnEg9xTZxjmr2gHQ4xOHpCfrt70lFWTOAkrij4= github.com/aws/aws-sdk-go-v2/service/identitystore v1.32.4 h1:KO3Plw+lTPS+Yz9F7gHJlaIoehZ7j9eVwcLYHqTKXQE= github.com/aws/aws-sdk-go-v2/service/identitystore v1.32.4/go.mod h1:FUWsCCyCZzfPI6GVh+ASz+f1M+GG/ZWGaUjqWp4ttR8= -github.com/aws/aws-sdk-go-v2/service/imagebuilder v1.46.4 h1:demzU11+z1wDbJtku9SX27AOaIKkcv6uuUipJm1Af0M= -github.com/aws/aws-sdk-go-v2/service/imagebuilder v1.46.4/go.mod h1:Mqot1KEfp6SOthyGtSV/2vcATRychQtv8mugiydCUfs= +github.com/aws/aws-sdk-go-v2/service/imagebuilder v1.47.0 h1:kjLxBIKPJBYeTrioSRqRFu2CVxP6yALiOsz0eRPVa0Q= +github.com/aws/aws-sdk-go-v2/service/imagebuilder v1.47.0/go.mod h1:Mqot1KEfp6SOthyGtSV/2vcATRychQtv8mugiydCUfs= github.com/aws/aws-sdk-go-v2/service/inspector v1.30.3 h1:7DQM0hDZ5XZbH7gTRUarFkO0enCCn0k5kr8GCTXkLn4= github.com/aws/aws-sdk-go-v2/service/inspector v1.30.3/go.mod h1:Wzq73ChjlQ2LxaO73XnOD55Jqz/J5kSHU6Gd1YB1yE4= github.com/aws/aws-sdk-go-v2/service/inspector2 v1.44.4 h1:Xp+30qFm4R/ZHIT79K/2HMzHYm1S4ipMctmWttaSQQM= @@ -357,8 +357,8 @@ github.com/aws/aws-sdk-go-v2/service/mediaconnect v1.44.4 h1:c4LeHvhTAYsO8md5in7 github.com/aws/aws-sdk-go-v2/service/mediaconnect v1.44.4/go.mod h1:1bIbSQ+gsTKdBcHkmxoft9hxDy7bip7gWHB6zdJ6VWo= github.com/aws/aws-sdk-go-v2/service/mediaconvert v1.82.4 h1:88tdsQqAz0hhrCo4jVxjrTSB9eoNtRLRW1FyfLUCDB0= github.com/aws/aws-sdk-go-v2/service/mediaconvert v1.82.4/go.mod h1:KRt+IAhw3rjGeBZdOJMaKzV8dcRH0FjidiANtilzjVE= -github.com/aws/aws-sdk-go-v2/service/medialive v1.82.0 h1:S7vCX+wJ/m20PKdpKYo0BUG06OuyiI7DqAnPilGYsZE= -github.com/aws/aws-sdk-go-v2/service/medialive v1.82.0/go.mod h1:sslxx162DAlYmkfvajs1wCLhZMVJ9Egd7ZH9EeaDEms= +github.com/aws/aws-sdk-go-v2/service/medialive v1.83.0 h1:rufgl2SNcJduX2er681q1KOXe1nB8WsvB0MNxDV7Nm4= +github.com/aws/aws-sdk-go-v2/service/medialive v1.83.0/go.mod h1:sslxx162DAlYmkfvajs1wCLhZMVJ9Egd7ZH9EeaDEms= github.com/aws/aws-sdk-go-v2/service/mediapackage v1.39.4 h1:1vRJmRaj700hsd9p+gXRrbSu13xheA5YPkpVALYNC7U= github.com/aws/aws-sdk-go-v2/service/mediapackage v1.39.4/go.mod h1:uVi/2YwWZnWEhlPG3Y0eYrE3rljwGYvFGddE9SvYC48= github.com/aws/aws-sdk-go-v2/service/mediapackagev2 v1.31.1 h1:GJPo1aJDfnKPRcdsw9zOCY0zsoA8bN0jRJYADGzUfTo= @@ -379,8 +379,8 @@ github.com/aws/aws-sdk-go-v2/service/neptune v1.42.2 h1:CM7nhsuvZf0mCv6TMqG5tzKU github.com/aws/aws-sdk-go-v2/service/neptune v1.42.2/go.mod h1:88XuulV9AwKNmG/7hAyByJoWghbrch+qltar7syXoG4= github.com/aws/aws-sdk-go-v2/service/neptunegraph v1.21.3 h1:jrJGbbokc3KIB6IzSB/JJuQOwWHqdWmZpkEEl/Zmyf0= github.com/aws/aws-sdk-go-v2/service/neptunegraph v1.21.3/go.mod h1:wmNqMkTjyx6wPaHH0SiSCCg812AzFJ9QFnfHCMvraxs= -github.com/aws/aws-sdk-go-v2/service/networkfirewall v1.55.3 h1:OkuKInB52h0/mW5Z1OkIkQ+umda8vxpcMkUkF+/AoPI= -github.com/aws/aws-sdk-go-v2/service/networkfirewall v1.55.3/go.mod h1:6x2e0M/7Z9XzPqgOvTZcwCNbjN761VJbIui3Zx0pEXs= +github.com/aws/aws-sdk-go-v2/service/networkfirewall v1.56.0 h1:ddZd2siH+HpBu1T9QKFXVX/mL9qe13xWeRrkPz5Ddwk= +github.com/aws/aws-sdk-go-v2/service/networkfirewall v1.56.0/go.mod h1:6x2e0M/7Z9XzPqgOvTZcwCNbjN761VJbIui3Zx0pEXs= github.com/aws/aws-sdk-go-v2/service/networkmanager v1.39.5 h1:e/d9+n5bKYXCR6A6xuqWoFVsDEm5FNJh526rS1sXyC4= github.com/aws/aws-sdk-go-v2/service/networkmanager v1.39.5/go.mod h1:tt09THrgGMdWj38DuEy5rakTOgHaA/G4V3o6f/ChiTo= github.com/aws/aws-sdk-go-v2/service/networkmonitor v1.12.4 h1:idjLJX03bHXAly/JajH7FDi1LnTjm+vz1Bm74l3+5jo= @@ -407,8 +407,8 @@ github.com/aws/aws-sdk-go-v2/service/paymentcryptography v1.25.0 h1:Xa+1EAhqSQXN github.com/aws/aws-sdk-go-v2/service/paymentcryptography v1.25.0/go.mod h1:oTU8PgBAPmgXqcGNysGtsvHSVaB1t70POQWzrvvzekM= github.com/aws/aws-sdk-go-v2/service/pcaconnectorad v1.15.4 h1:fSfw+4bF7B23fCjB63HZOVsJmAYMz3SIcCK28B6kvPk= github.com/aws/aws-sdk-go-v2/service/pcaconnectorad v1.15.4/go.mod h1:niQNNLiBhOtmIZdsx+ysgpmltLaENic1qZC0l+eMDyY= -github.com/aws/aws-sdk-go-v2/service/pcs v1.12.4 h1:3btzBHLKRPz9ecnk0EIE+EAGbMtl99x2VWdTflAml2k= -github.com/aws/aws-sdk-go-v2/service/pcs v1.12.4/go.mod h1:cSG0ngVM0DDPX0ETny4wHuT8pNvmYNd4pGEAS7DpMfc= +github.com/aws/aws-sdk-go-v2/service/pcs v1.13.0 h1:SPpe4DXZI8Vvqzt+uDS/FwesOLlj2t0Ht4s+5ZteWaM= +github.com/aws/aws-sdk-go-v2/service/pcs v1.13.0/go.mod h1:cSG0ngVM0DDPX0ETny4wHuT8pNvmYNd4pGEAS7DpMfc= github.com/aws/aws-sdk-go-v2/service/pinpoint v1.39.4 h1:qMVA3qezunrP0ZIvF75T8ktwA20HBXlBsHwR1U0A0H8= github.com/aws/aws-sdk-go-v2/service/pinpoint v1.39.4/go.mod h1:+JWai1T8zNQiXaPy5fVSKClFUnVMU6YbWxl9yaNkuJs= github.com/aws/aws-sdk-go-v2/service/pinpointsmsvoicev2 v1.25.3 h1:yQLjzkSYNfTFg0W03zmAvhykcAVCIoupphhKb9LKbWY= @@ -435,8 +435,8 @@ github.com/aws/aws-sdk-go-v2/service/redshift v1.58.3 h1:rXoN3hvwUimq8Z6uu2lsYnc github.com/aws/aws-sdk-go-v2/service/redshift v1.58.3/go.mod h1:OfB6wMvsEozZQbEjgqe6J68wF5u7wXNEAdG4FLKLk/Y= github.com/aws/aws-sdk-go-v2/service/redshiftdata v1.37.4 h1:egzZblPqPYLXClImxh6zL0kVt+aINhKMtj0Dlzt6LgM= github.com/aws/aws-sdk-go-v2/service/redshiftdata v1.37.4/go.mod h1:Jb2pR/0IhKbpPmetMChm8rxQDk2MLmb9ZNSDZlsGB4g= -github.com/aws/aws-sdk-go-v2/service/redshiftserverless v1.31.5 h1:h+93gIgr7UIcMJi7L/0jQ1ZgV5lgaAqfK0Ht9VuX9hY= -github.com/aws/aws-sdk-go-v2/service/redshiftserverless v1.31.5/go.mod h1:X10Ql/ih4yUJl87EKfnrX8iC9zfn2VFgVMCeWqGlOjI= +github.com/aws/aws-sdk-go-v2/service/redshiftserverless v1.31.6 h1:cb/WGaO0yn9eyOQf0ekFEZdk0LlvOaIBW6ayZk4n/hM= +github.com/aws/aws-sdk-go-v2/service/redshiftserverless v1.31.6/go.mod h1:X10Ql/ih4yUJl87EKfnrX8iC9zfn2VFgVMCeWqGlOjI= github.com/aws/aws-sdk-go-v2/service/rekognition v1.51.3 h1:1440u1Pza3HtYqsUiofmOYUB/i4fwLXRgvG9c37wz8w= github.com/aws/aws-sdk-go-v2/service/rekognition v1.51.3/go.mod h1:TDGlJxUrttcw4osr2qAj2KKn2tQf2AwaqjcXKxSaM5U= github.com/aws/aws-sdk-go-v2/service/resiliencehub v1.34.4 h1:50EjSzYo2Zl1WRSRtNTNqH0inalyK5xzGjzNsxoP/Qw= @@ -481,8 +481,8 @@ github.com/aws/aws-sdk-go-v2/service/schemas v1.33.3 h1:imDQ/7RtFfGZssclTJRJq0QA github.com/aws/aws-sdk-go-v2/service/schemas v1.33.3/go.mod h1:o11VZdyu0AgDlJ4+45ziQ3RkMcz817vxYCHWfrG4q2A= github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.39.4 h1:zWISPZre5hQb3mDMCEl6uni9rJ8K2cmvp64EXF7FXkk= github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.39.4/go.mod h1:GrB/4Cn7N41psUAycqnwGDzT7qYJdUm+VnEZpyZAG4I= -github.com/aws/aws-sdk-go-v2/service/securityhub v1.64.1 h1:wg+ZmlmqmnQjdTPpsMYBZQ+rn6x+2LPq28SwlQkRU74= -github.com/aws/aws-sdk-go-v2/service/securityhub v1.64.1/go.mod h1:/yFqGxCC/m8z1L0WjTEV3X1Ml2w612hMetWFrPJrRvA= +github.com/aws/aws-sdk-go-v2/service/securityhub v1.64.2 h1:NjP7tNKnUnaQDKQpbSytFXbz1mNdHOPxOvJNu8kdJog= +github.com/aws/aws-sdk-go-v2/service/securityhub v1.64.2/go.mod h1:/yFqGxCC/m8z1L0WjTEV3X1Ml2w612hMetWFrPJrRvA= github.com/aws/aws-sdk-go-v2/service/securitylake v1.24.4 h1:CtJyph+31QRGcBa9Z6AZKx0uNdLpoMK+jQeIxaGqqdM= github.com/aws/aws-sdk-go-v2/service/securitylake v1.24.4/go.mod h1:/Okrv6oh8a+j7ZTr5Arh843M0FFxwFjTKnW/kE/lkM4= github.com/aws/aws-sdk-go-v2/service/serverlessapplicationrepository v1.29.4 h1:Mf9vV6JHwq7RMHeX6IUxyARZSCRrLKZAMDIbeQJBg18= @@ -507,8 +507,8 @@ github.com/aws/aws-sdk-go-v2/service/signer v1.31.4 h1:dX2NzZmdQQuCUQ1gPnrcad6xN github.com/aws/aws-sdk-go-v2/service/signer v1.31.4/go.mod h1:DjrlOQ7vINGoemyAXwovy//giBjLUbWencjjp4X1v80= github.com/aws/aws-sdk-go-v2/service/sns v1.38.3 h1:4T0EjsLqUANqnBWafst2+Nr3Uw44MPdrPgysNbxDqBs= github.com/aws/aws-sdk-go-v2/service/sns v1.38.3/go.mod h1:kHMCS+JDWKuKSDP9J/v3dlV2S9zNBKbXzaLy/kHSdEE= -github.com/aws/aws-sdk-go-v2/service/sqs v1.42.5 h1:HbaHWaTkGec2pMa/UQa3+WNWtUaFFF1ZLfwCeVFtBns= -github.com/aws/aws-sdk-go-v2/service/sqs v1.42.5/go.mod h1:wCAPjT7bNg5+4HSNefwNEC2hM3d+NSD5w5DU/8jrPrI= +github.com/aws/aws-sdk-go-v2/service/sqs v1.42.6 h1:TxOBDZKQGhO2Q2Z3HiaqXjw582f6IFue+z9sM/RgXkk= +github.com/aws/aws-sdk-go-v2/service/sqs v1.42.6/go.mod h1:wCAPjT7bNg5+4HSNefwNEC2hM3d+NSD5w5DU/8jrPrI= github.com/aws/aws-sdk-go-v2/service/ssm v1.64.4 h1:GaIjQJwGv06w4/vdgYDpkbuNJ2sX7ROHD3/J4YWRvpA= github.com/aws/aws-sdk-go-v2/service/ssm v1.64.4/go.mod h1:5O20AzpAiVXhRhrJd5Tv9vh1gA5+iYHqAMVc+6t4q7g= github.com/aws/aws-sdk-go-v2/service/ssmcontacts v1.30.6 h1:Tpm/fpaqiA2+70esCG+ZURVZiQ05V2+GBQPvFrwnFI8= @@ -523,8 +523,8 @@ github.com/aws/aws-sdk-go-v2/service/sso v1.29.3 h1:7PKX3VYsZ8LUWceVRuv0+PU+E7Ot github.com/aws/aws-sdk-go-v2/service/sso v1.29.3/go.mod h1:Ql6jE9kyyWI5JHn+61UT/Y5Z0oyVJGmgmJbZD5g4unY= github.com/aws/aws-sdk-go-v2/service/ssoadmin v1.35.4 h1:72Upm349w28OYUiynjP7pIyzWYjDLpT0YQMGGyq/Wzg= github.com/aws/aws-sdk-go-v2/service/ssoadmin v1.35.4/go.mod h1:rHOWsPdb3a76utx/DCpC05mhxvhIOVqOWGFuBxqKjhc= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.34.4 h1:e0XBRn3AptQotkyBFrHAxFB8mDhAIOfsG+7KyJ0dg98= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.34.4/go.mod h1:XclEty74bsGBCr1s0VSaA11hQ4ZidK4viWK7rRfO88I= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.34.5 h1:gBBZmSuIySGqDLtXdZiYpwyzbJKXQD2jjT0oDY6ywbo= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.34.5/go.mod h1:XclEty74bsGBCr1s0VSaA11hQ4ZidK4viWK7rRfO88I= github.com/aws/aws-sdk-go-v2/service/storagegateway v1.42.4 h1:Gh7vhnzighFyKJJcdYiYRjxKO0Nlofu9VpaGp+ZgKvQ= github.com/aws/aws-sdk-go-v2/service/storagegateway v1.42.4/go.mod h1:jEoHxll7uwZM3zuOsnYLDLrwgqrSVPVajshyBwWac7Q= github.com/aws/aws-sdk-go-v2/service/sts v1.38.4 h1:PR00NXRYgY4FWHqOGx3fC3lhVKjsp1GdloDv2ynMSd8= diff --git a/tools/tfsdk2fw/go.mod b/tools/tfsdk2fw/go.mod index 2beaceed30a8..023daf8ce216 100644 --- a/tools/tfsdk2fw/go.mod +++ b/tools/tfsdk2fw/go.mod @@ -20,10 +20,10 @@ require ( github.com/armon/go-radix v1.0.0 // indirect github.com/aws/aws-sdk-go-v2 v1.39.0 // indirect github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.1 // indirect - github.com/aws/aws-sdk-go-v2/config v1.31.8 // indirect - github.com/aws/aws-sdk-go-v2/credentials v1.18.12 // indirect + github.com/aws/aws-sdk-go-v2/config v1.31.9 // indirect + github.com/aws/aws-sdk-go-v2/credentials v1.18.13 // indirect github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.7 // indirect - github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.19.6 // indirect + github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.19.7 // indirect github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.7 // indirect github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.7 // indirect github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 // indirect @@ -53,13 +53,13 @@ require ( github.com/aws/aws-sdk-go-v2/service/autoscaling v1.59.1 // indirect github.com/aws/aws-sdk-go-v2/service/autoscalingplans v1.29.3 // indirect github.com/aws/aws-sdk-go-v2/service/backup v1.47.4 // indirect - github.com/aws/aws-sdk-go-v2/service/batch v1.57.7 // indirect + github.com/aws/aws-sdk-go-v2/service/batch v1.57.8 // indirect github.com/aws/aws-sdk-go-v2/service/bcmdataexports v1.11.6 // indirect - github.com/aws/aws-sdk-go-v2/service/bedrock v1.46.1 // indirect + github.com/aws/aws-sdk-go-v2/service/bedrock v1.47.0 // indirect github.com/aws/aws-sdk-go-v2/service/bedrockagent v1.50.4 // indirect - github.com/aws/aws-sdk-go-v2/service/bedrockagentcorecontrol v1.4.4 // indirect + github.com/aws/aws-sdk-go-v2/service/bedrockagentcorecontrol v1.5.0 // indirect github.com/aws/aws-sdk-go-v2/service/billing v1.7.5 // indirect - github.com/aws/aws-sdk-go-v2/service/budgets v1.38.0 // indirect + github.com/aws/aws-sdk-go-v2/service/budgets v1.39.0 // indirect github.com/aws/aws-sdk-go-v2/service/chatbot v1.14.4 // indirect github.com/aws/aws-sdk-go-v2/service/chime v1.40.3 // indirect github.com/aws/aws-sdk-go-v2/service/chimesdkmediapipelines v1.26.4 // indirect @@ -90,8 +90,8 @@ require ( github.com/aws/aws-sdk-go-v2/service/cognitoidentityprovider v1.57.5 // indirect github.com/aws/aws-sdk-go-v2/service/comprehend v1.40.4 // indirect github.com/aws/aws-sdk-go-v2/service/computeoptimizer v1.47.3 // indirect - github.com/aws/aws-sdk-go-v2/service/configservice v1.57.4 // indirect - github.com/aws/aws-sdk-go-v2/service/connect v1.139.1 // indirect + github.com/aws/aws-sdk-go-v2/service/configservice v1.58.0 // indirect + github.com/aws/aws-sdk-go-v2/service/connect v1.140.0 // indirect github.com/aws/aws-sdk-go-v2/service/connectcases v1.30.4 // indirect github.com/aws/aws-sdk-go-v2/service/controltower v1.26.4 // indirect github.com/aws/aws-sdk-go-v2/service/costandusagereportservice v1.33.4 // indirect @@ -103,7 +103,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/dataexchange v1.39.4 // indirect github.com/aws/aws-sdk-go-v2/service/datapipeline v1.30.3 // indirect github.com/aws/aws-sdk-go-v2/service/datasync v1.54.4 // indirect - github.com/aws/aws-sdk-go-v2/service/datazone v1.41.0 // indirect + github.com/aws/aws-sdk-go-v2/service/datazone v1.41.1 // indirect github.com/aws/aws-sdk-go-v2/service/dax v1.28.4 // indirect github.com/aws/aws-sdk-go-v2/service/detective v1.37.5 // indirect github.com/aws/aws-sdk-go-v2/service/devicefarm v1.35.4 // indirect @@ -116,12 +116,12 @@ require ( github.com/aws/aws-sdk-go-v2/service/drs v1.35.4 // indirect github.com/aws/aws-sdk-go-v2/service/dsql v1.9.6 // indirect github.com/aws/aws-sdk-go-v2/service/dynamodb v1.50.3 // indirect - github.com/aws/aws-sdk-go-v2/service/ec2 v1.251.2 // indirect + github.com/aws/aws-sdk-go-v2/service/ec2 v1.253.0 // indirect github.com/aws/aws-sdk-go-v2/service/ecr v1.50.3 // indirect github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.37.4 // indirect github.com/aws/aws-sdk-go-v2/service/ecs v1.64.0 // indirect github.com/aws/aws-sdk-go-v2/service/efs v1.40.5 // indirect - github.com/aws/aws-sdk-go-v2/service/eks v1.73.3 // indirect + github.com/aws/aws-sdk-go-v2/service/eks v1.74.0 // indirect github.com/aws/aws-sdk-go-v2/service/elasticache v1.50.3 // indirect github.com/aws/aws-sdk-go-v2/service/elasticbeanstalk v1.33.5 // indirect github.com/aws/aws-sdk-go-v2/service/elasticloadbalancing v1.33.4 // indirect @@ -150,7 +150,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/healthlake v1.35.3 // indirect github.com/aws/aws-sdk-go-v2/service/iam v1.47.5 // indirect github.com/aws/aws-sdk-go-v2/service/identitystore v1.32.4 // indirect - github.com/aws/aws-sdk-go-v2/service/imagebuilder v1.46.4 // indirect + github.com/aws/aws-sdk-go-v2/service/imagebuilder v1.47.0 // indirect github.com/aws/aws-sdk-go-v2/service/inspector v1.30.3 // indirect github.com/aws/aws-sdk-go-v2/service/inspector2 v1.44.4 // indirect github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.1 // indirect @@ -185,7 +185,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/macie2 v1.49.4 // indirect github.com/aws/aws-sdk-go-v2/service/mediaconnect v1.44.4 // indirect github.com/aws/aws-sdk-go-v2/service/mediaconvert v1.82.4 // indirect - github.com/aws/aws-sdk-go-v2/service/medialive v1.82.0 // indirect + github.com/aws/aws-sdk-go-v2/service/medialive v1.83.0 // indirect github.com/aws/aws-sdk-go-v2/service/mediapackage v1.39.4 // indirect github.com/aws/aws-sdk-go-v2/service/mediapackagev2 v1.31.1 // indirect github.com/aws/aws-sdk-go-v2/service/mediapackagevod v1.39.4 // indirect @@ -196,7 +196,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/mwaa v1.39.4 // indirect github.com/aws/aws-sdk-go-v2/service/neptune v1.42.2 // indirect github.com/aws/aws-sdk-go-v2/service/neptunegraph v1.21.3 // indirect - github.com/aws/aws-sdk-go-v2/service/networkfirewall v1.55.3 // indirect + github.com/aws/aws-sdk-go-v2/service/networkfirewall v1.56.0 // indirect github.com/aws/aws-sdk-go-v2/service/networkmanager v1.39.5 // indirect github.com/aws/aws-sdk-go-v2/service/networkmonitor v1.12.4 // indirect github.com/aws/aws-sdk-go-v2/service/notifications v1.7.2 // indirect @@ -210,7 +210,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/outposts v1.56.5 // indirect github.com/aws/aws-sdk-go-v2/service/paymentcryptography v1.25.0 // indirect github.com/aws/aws-sdk-go-v2/service/pcaconnectorad v1.15.4 // indirect - github.com/aws/aws-sdk-go-v2/service/pcs v1.12.4 // indirect + github.com/aws/aws-sdk-go-v2/service/pcs v1.13.0 // indirect github.com/aws/aws-sdk-go-v2/service/pinpoint v1.39.4 // indirect github.com/aws/aws-sdk-go-v2/service/pinpointsmsvoicev2 v1.25.3 // indirect github.com/aws/aws-sdk-go-v2/service/pipes v1.23.3 // indirect @@ -224,7 +224,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/rds v1.107.0 // indirect github.com/aws/aws-sdk-go-v2/service/redshift v1.58.3 // indirect github.com/aws/aws-sdk-go-v2/service/redshiftdata v1.37.4 // indirect - github.com/aws/aws-sdk-go-v2/service/redshiftserverless v1.31.5 // indirect + github.com/aws/aws-sdk-go-v2/service/redshiftserverless v1.31.6 // indirect github.com/aws/aws-sdk-go-v2/service/rekognition v1.51.3 // indirect github.com/aws/aws-sdk-go-v2/service/resiliencehub v1.34.4 // indirect github.com/aws/aws-sdk-go-v2/service/resourceexplorer2 v1.21.4 // indirect @@ -247,7 +247,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/scheduler v1.17.3 // indirect github.com/aws/aws-sdk-go-v2/service/schemas v1.33.3 // indirect github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.39.4 // indirect - github.com/aws/aws-sdk-go-v2/service/securityhub v1.64.1 // indirect + github.com/aws/aws-sdk-go-v2/service/securityhub v1.64.2 // indirect github.com/aws/aws-sdk-go-v2/service/securitylake v1.24.4 // indirect github.com/aws/aws-sdk-go-v2/service/serverlessapplicationrepository v1.29.4 // indirect github.com/aws/aws-sdk-go-v2/service/servicecatalog v1.38.4 // indirect @@ -260,7 +260,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/shield v1.34.4 // indirect github.com/aws/aws-sdk-go-v2/service/signer v1.31.4 // indirect github.com/aws/aws-sdk-go-v2/service/sns v1.38.3 // indirect - github.com/aws/aws-sdk-go-v2/service/sqs v1.42.5 // indirect + github.com/aws/aws-sdk-go-v2/service/sqs v1.42.6 // indirect github.com/aws/aws-sdk-go-v2/service/ssm v1.64.4 // indirect github.com/aws/aws-sdk-go-v2/service/ssmcontacts v1.30.6 // indirect github.com/aws/aws-sdk-go-v2/service/ssmincidents v1.39.3 // indirect @@ -268,7 +268,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/ssmsap v1.25.3 // indirect github.com/aws/aws-sdk-go-v2/service/sso v1.29.3 // indirect github.com/aws/aws-sdk-go-v2/service/ssoadmin v1.35.4 // indirect - github.com/aws/aws-sdk-go-v2/service/ssooidc v1.34.4 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.34.5 // indirect github.com/aws/aws-sdk-go-v2/service/storagegateway v1.42.4 // indirect github.com/aws/aws-sdk-go-v2/service/sts v1.38.4 // indirect github.com/aws/aws-sdk-go-v2/service/swf v1.32.3 // indirect diff --git a/tools/tfsdk2fw/go.sum b/tools/tfsdk2fw/go.sum index acff633902dd..a50984e4a670 100644 --- a/tools/tfsdk2fw/go.sum +++ b/tools/tfsdk2fw/go.sum @@ -27,14 +27,14 @@ github.com/aws/aws-sdk-go-v2 v1.39.0 h1:xm5WV/2L4emMRmMjHFykqiA4M/ra0DJVSWUkDyBj github.com/aws/aws-sdk-go-v2 v1.39.0/go.mod h1:sDioUELIUO9Znk23YVmIk86/9DOpkbyyVb1i/gUNFXY= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.1 h1:i8p8P4diljCr60PpJp6qZXNlgX4m2yQFpYk+9ZT+J4E= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.1/go.mod h1:ddqbooRZYNoJ2dsTwOty16rM+/Aqmk/GOXrK8cg7V00= -github.com/aws/aws-sdk-go-v2/config v1.31.8 h1:kQjtOLlTU4m4A64TsRcqwNChhGCwaPBt+zCQt/oWsHU= -github.com/aws/aws-sdk-go-v2/config v1.31.8/go.mod h1:QPpc7IgljrKwH0+E6/KolCgr4WPLerURiU592AYzfSY= -github.com/aws/aws-sdk-go-v2/credentials v1.18.12 h1:zmc9e1q90wMn8wQbjryy8IwA6Q4XlaL9Bx2zIqdNNbk= -github.com/aws/aws-sdk-go-v2/credentials v1.18.12/go.mod h1:3VzdRDR5u3sSJRI4kYcOSIBbeYsgtVk7dG5R/U6qLWY= +github.com/aws/aws-sdk-go-v2/config v1.31.9 h1:Q+9hVk8kmDGlC7XcDout/vs0FZhHnuPCPv+TRAYDans= +github.com/aws/aws-sdk-go-v2/config v1.31.9/go.mod h1:OpMrPn6rRbHKU4dAVNCk/EQx8sEQJI7hl9GZZ5u/Y+U= +github.com/aws/aws-sdk-go-v2/credentials v1.18.13 h1:gkpEm65/ZfrGJ3wbFH++Ki7DyaWtsWbK9idX6OXCo2E= +github.com/aws/aws-sdk-go-v2/credentials v1.18.13/go.mod h1:eVTHz1yI2/WIlXTE8f70mcrSxNafXD5sJpTIM9f+kmo= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.7 h1:Is2tPmieqGS2edBnmOJIbdvOA6Op+rRpaYR60iBAwXM= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.7/go.mod h1:F1i5V5421EGci570yABvpIXgRIBPb5JM+lSkHF6Dq5w= -github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.19.6 h1:bByPm7VcaAgeT2+z5m0Lj5HDzm+g9AwbA3WFx2hPby0= -github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.19.6/go.mod h1:PhTe8fR8aFW0wDc6IV9BHeIzXhpv3q6AaVHnqiv5Pyc= +github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.19.7 h1:HWLRV4xlO15SsHs295AqwTGNwYG3kP6vAjw2OleUdX8= +github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.19.7/go.mod h1:MWZrPol/xFvU6gyQ/gxqgsjufcbetFNE9gzSXPTLofw= github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.7 h1:UCxq0X9O3xrlENdKf1r9eRJoKz/b0AfGkpp3a7FPlhg= github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.7/go.mod h1:rHRoJUNUASj5Z/0eqI4w32vKvC7atoWR0jC+IkmVH8k= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.7 h1:Y6DTZUn7ZUC4th9FMBbo8LVE+1fyq3ofw+tRwkUd3PY= @@ -93,20 +93,20 @@ github.com/aws/aws-sdk-go-v2/service/autoscalingplans v1.29.3 h1:Erjv3OrmWRuNnHn github.com/aws/aws-sdk-go-v2/service/autoscalingplans v1.29.3/go.mod h1:WxM0Cy6cIXwyJitcXHzWzUKYHXC/23gp+xZ5OIsvgA4= github.com/aws/aws-sdk-go-v2/service/backup v1.47.4 h1:IDO4noL9SPjjRDYgQPN5pQkvlWa65Z8U4fxJcMqwgZI= github.com/aws/aws-sdk-go-v2/service/backup v1.47.4/go.mod h1:QTx4WU73HyMzHtHeOjeNNUBx8ZTgri+R8qTJKg+JZBE= -github.com/aws/aws-sdk-go-v2/service/batch v1.57.7 h1:U70jYmNrPFDJKxAGi8Va6BQ6iOQpYPgofG7B5QSZVoM= -github.com/aws/aws-sdk-go-v2/service/batch v1.57.7/go.mod h1:kQNvBp+FpFZaQ9NGTPuGRqREOs//GhoVSXnYjcV9f8s= +github.com/aws/aws-sdk-go-v2/service/batch v1.57.8 h1:pLJU4QXH+VYVOpZGwYkjptf6wAbKfFHLHoPygr3Oeuc= +github.com/aws/aws-sdk-go-v2/service/batch v1.57.8/go.mod h1:kQNvBp+FpFZaQ9NGTPuGRqREOs//GhoVSXnYjcV9f8s= github.com/aws/aws-sdk-go-v2/service/bcmdataexports v1.11.6 h1:J39E926fD+zbL9qBNPK235Zn+KarvEPOuTtCH/WNN8k= github.com/aws/aws-sdk-go-v2/service/bcmdataexports v1.11.6/go.mod h1:Qy7ki+Cj48OXfe7zIRSQ7IjXYMvTE/ddhnpR98VyyM4= -github.com/aws/aws-sdk-go-v2/service/bedrock v1.46.1 h1:hZwht+1MdXlNot+A/r7SWqk0w2WVpiDUzRasdQFv1Vw= -github.com/aws/aws-sdk-go-v2/service/bedrock v1.46.1/go.mod h1:NFnqdOIaYD3MVMIlRjZ0sUzQPTWiWfES1sdalmLk5RA= +github.com/aws/aws-sdk-go-v2/service/bedrock v1.47.0 h1:TLn3jH/RbbTfgG7XAgiY0uQv9dFw1oSQdH4QFUYdhpM= +github.com/aws/aws-sdk-go-v2/service/bedrock v1.47.0/go.mod h1:NFnqdOIaYD3MVMIlRjZ0sUzQPTWiWfES1sdalmLk5RA= github.com/aws/aws-sdk-go-v2/service/bedrockagent v1.50.4 h1:2jf7uhcRTPdNU+rmKmePMC67sW3DwXD0BZe8eqvrFbU= github.com/aws/aws-sdk-go-v2/service/bedrockagent v1.50.4/go.mod h1:O04szfwjoDC5j/tazBZ2hb1hXQkhoJgglRIW6vJWw/o= -github.com/aws/aws-sdk-go-v2/service/bedrockagentcorecontrol v1.4.4 h1:nYvxys7OuH+D5QYlJuVaTSRCuxaeLVpQLwifpt9tQP0= -github.com/aws/aws-sdk-go-v2/service/bedrockagentcorecontrol v1.4.4/go.mod h1:73rs+5WDpBLlZUtgV0IO3+4EjRS8AW7vFbA4RBFd6R8= +github.com/aws/aws-sdk-go-v2/service/bedrockagentcorecontrol v1.5.0 h1:lbAgxGLW9NwdbUGQtrhTyD1iMwe2CKDVKdq9OimWXsw= +github.com/aws/aws-sdk-go-v2/service/bedrockagentcorecontrol v1.5.0/go.mod h1:73rs+5WDpBLlZUtgV0IO3+4EjRS8AW7vFbA4RBFd6R8= github.com/aws/aws-sdk-go-v2/service/billing v1.7.5 h1:Nb77k+S9tLLyBlcGOlnyfR04KzoSXc6/+O+1EKeVITw= github.com/aws/aws-sdk-go-v2/service/billing v1.7.5/go.mod h1:qrv8fPqdJSgnc1Ue7O3otSwQXVho0/z27T+r8hdPxAM= -github.com/aws/aws-sdk-go-v2/service/budgets v1.38.0 h1:XtePF18sp2vcErOMzPeD13pEidiYe28rXmhPdEK9CUA= -github.com/aws/aws-sdk-go-v2/service/budgets v1.38.0/go.mod h1:IqipleKaucVL842LZ5vJECSJZFNHvUBE883fk8lwLkk= +github.com/aws/aws-sdk-go-v2/service/budgets v1.39.0 h1:jwOLutNGpsA6JYAidvPNYSBfRlIKlgJ1U0Qv4xVsFsI= +github.com/aws/aws-sdk-go-v2/service/budgets v1.39.0/go.mod h1:IqipleKaucVL842LZ5vJECSJZFNHvUBE883fk8lwLkk= github.com/aws/aws-sdk-go-v2/service/chatbot v1.14.4 h1:rahhkonNJRm0BvfnNE19U9t0xBKXnfwEcnqroRmY2ec= github.com/aws/aws-sdk-go-v2/service/chatbot v1.14.4/go.mod h1:Wv362fC5OMvg61LsaygecobiBobnZpSFivKsN17JHvM= github.com/aws/aws-sdk-go-v2/service/chime v1.40.3 h1:VU1s4PIE+qoO7mgUw+Q0CnMKTcovQIbLwWjsAlxampY= @@ -167,10 +167,10 @@ github.com/aws/aws-sdk-go-v2/service/comprehend v1.40.4 h1:29BM732laN08dVs+5z+qh github.com/aws/aws-sdk-go-v2/service/comprehend v1.40.4/go.mod h1:H3n/gYCQF6ZkjFQI+fVVXwbkRLDPXbEtbBi3NwZTnm0= github.com/aws/aws-sdk-go-v2/service/computeoptimizer v1.47.3 h1:VPxguqTtIcjVPnwHiJ7rNQr9gPERlI/vKzrkl/sM7Fc= github.com/aws/aws-sdk-go-v2/service/computeoptimizer v1.47.3/go.mod h1:aGw9jt6otTqJ3zwm+AlUoNl6Vrl8AkfFWIibvk+BIeE= -github.com/aws/aws-sdk-go-v2/service/configservice v1.57.4 h1:Qk1P7ltOokM7JTpOJaZH6ALesaxVwBgoDHtktjfrm7Q= -github.com/aws/aws-sdk-go-v2/service/configservice v1.57.4/go.mod h1:Ao+h1Szn6S3ZemyfA9I8YMmqu/sRgexyx2xZJdwH9bY= -github.com/aws/aws-sdk-go-v2/service/connect v1.139.1 h1:EcjVKcOcPh+ZBHOVVa+fqvBSPlppFSaGWL+WPHFDzYc= -github.com/aws/aws-sdk-go-v2/service/connect v1.139.1/go.mod h1:ybFXrfh8spGBlbgd8q/MVqzt2RvdSMhWO6EiD4UkHRg= +github.com/aws/aws-sdk-go-v2/service/configservice v1.58.0 h1:qixDSVJp0z2kQ7n017oZp5RKQVh81gaedaeuqISm+iY= +github.com/aws/aws-sdk-go-v2/service/configservice v1.58.0/go.mod h1:Ao+h1Szn6S3ZemyfA9I8YMmqu/sRgexyx2xZJdwH9bY= +github.com/aws/aws-sdk-go-v2/service/connect v1.140.0 h1:ymo0C+sckUW54Zaonk8/YAJUW1urFLlBGJ2vT7BwH9U= +github.com/aws/aws-sdk-go-v2/service/connect v1.140.0/go.mod h1:ybFXrfh8spGBlbgd8q/MVqzt2RvdSMhWO6EiD4UkHRg= github.com/aws/aws-sdk-go-v2/service/connectcases v1.30.4 h1:KjM2HAQgsH9gaofgy+JKHF664UH9zwuetSo42il9eLk= github.com/aws/aws-sdk-go-v2/service/connectcases v1.30.4/go.mod h1:gJJ6zE3RWdeQfnNcpaD9Hyx1rqLqMA3RLYR9fveHWkQ= github.com/aws/aws-sdk-go-v2/service/controltower v1.26.4 h1:mDhXopIZ9wA+rRujZzTFZAQyqQ1YAWiWYJBoVy0SqZA= @@ -193,8 +193,8 @@ github.com/aws/aws-sdk-go-v2/service/datapipeline v1.30.3 h1:RT2vYyEURb1Y2c9Wouf github.com/aws/aws-sdk-go-v2/service/datapipeline v1.30.3/go.mod h1:AjQynFDMSWmaGyNwzNlQQ4t1SGtqwY0Rq0dgqCKsGIA= github.com/aws/aws-sdk-go-v2/service/datasync v1.54.4 h1:HaqO010CgYxtu8mNUUQUd2QC3yDN4JS9Olt4vOQpR20= github.com/aws/aws-sdk-go-v2/service/datasync v1.54.4/go.mod h1:7TqFyNtpN5h1VeBbN1FcXi0T3FIXcsPUVqq7iJrlsF8= -github.com/aws/aws-sdk-go-v2/service/datazone v1.41.0 h1:VPonYVHFrgQY/Y6vGUmis6FTAmo95qW1JnGu5ZGcJ7o= -github.com/aws/aws-sdk-go-v2/service/datazone v1.41.0/go.mod h1:xGX76ojBOXWCIM5ZjtnYEqUUVbBjMdBmPBNKyXhBo8o= +github.com/aws/aws-sdk-go-v2/service/datazone v1.41.1 h1:otPvyppOc4nrTxTiHrki7/2Bfa4zmXUZ7dwbOWftsGE= +github.com/aws/aws-sdk-go-v2/service/datazone v1.41.1/go.mod h1:xGX76ojBOXWCIM5ZjtnYEqUUVbBjMdBmPBNKyXhBo8o= github.com/aws/aws-sdk-go-v2/service/dax v1.28.4 h1:0H43bqbpiPF4WV+2ppV9l6T30lWolBsshd8ZQYt//wk= github.com/aws/aws-sdk-go-v2/service/dax v1.28.4/go.mod h1:aZWmrV2Xi7rNUPy0JZ5vQGF7zboJoekVQkp7+ETUy+Y= github.com/aws/aws-sdk-go-v2/service/detective v1.37.5 h1:a/VOCosbBdJUSyaEXRN4hsqGbXG/itfOquy7GX1vBeU= @@ -219,8 +219,8 @@ github.com/aws/aws-sdk-go-v2/service/dsql v1.9.6 h1:hgRu1NFDnCR5V0FkuGiI7WB9xR/x github.com/aws/aws-sdk-go-v2/service/dsql v1.9.6/go.mod h1:/ApNiCtQwiyM/KNe14Q9wkQ4zN5HqECXea86ADGRCCQ= github.com/aws/aws-sdk-go-v2/service/dynamodb v1.50.3 h1:fbhq/XgBDNAVreNMY8E7JWxlqeHH8O3UAunPvV9XY5A= github.com/aws/aws-sdk-go-v2/service/dynamodb v1.50.3/go.mod h1:lXFSTFpnhgc8Qb/meseIt7+UXPiidZm0DbiDqmPHBTQ= -github.com/aws/aws-sdk-go-v2/service/ec2 v1.251.2 h1:6TssXFfLHcwUS5E3MdYKkCFeOrYVBlDhJjs5kRJp0ic= -github.com/aws/aws-sdk-go-v2/service/ec2 v1.251.2/go.mod h1:MXJiLJZtMqb2dVXgEIn35d5+7MqLd4r8noLen881kpk= +github.com/aws/aws-sdk-go-v2/service/ec2 v1.253.0 h1:x0v1n45AT+uZvNoQI8xtegVUOZoQIF+s9qwNcl7Ivyg= +github.com/aws/aws-sdk-go-v2/service/ec2 v1.253.0/go.mod h1:MXJiLJZtMqb2dVXgEIn35d5+7MqLd4r8noLen881kpk= github.com/aws/aws-sdk-go-v2/service/ecr v1.50.3 h1:phfqjO8ebHGoC/GrjHcuTrVkDCeM9A6atOYTCY1XsXo= github.com/aws/aws-sdk-go-v2/service/ecr v1.50.3/go.mod h1:TbUfC2wbI144ak0zMJoQ2zjPwGaw1/Kt3SXI138wcoY= github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.37.4 h1:/HxbCJjqyO4eJ1FCVnvUJtXbWOnG217jMpkYaTUP6V8= @@ -229,8 +229,8 @@ github.com/aws/aws-sdk-go-v2/service/ecs v1.64.0 h1:WydV4UxL/L1h+ZYQPkpto6jqMVRs github.com/aws/aws-sdk-go-v2/service/ecs v1.64.0/go.mod h1:aJR4g+fZtJ2Bh8VVMS/UP6A3fuwBn9cWajUVos4zhP0= github.com/aws/aws-sdk-go-v2/service/efs v1.40.5 h1:iOfTDjU/S2b0BSWCqv7fDbT4uKo0e3jdtnRHVwXXggI= github.com/aws/aws-sdk-go-v2/service/efs v1.40.5/go.mod h1:gnXK8cQKVDpkqG7lCZ2NYx32B9WbTIZsGiAFRXxpX70= -github.com/aws/aws-sdk-go-v2/service/eks v1.73.3 h1:V6MAr82kSLdj3/tN4UcPtlXDbvkNcAxsIvq59CNe704= -github.com/aws/aws-sdk-go-v2/service/eks v1.73.3/go.mod h1:FeDTTHze8jWVCZBiMkUYxJ/TQdOpTf9zbJjf0RI0ajo= +github.com/aws/aws-sdk-go-v2/service/eks v1.74.0 h1:GdG6qvpMet2Bs0XQR3O/4RJ8g87bXfPZCIzPBNqkX54= +github.com/aws/aws-sdk-go-v2/service/eks v1.74.0/go.mod h1:FeDTTHze8jWVCZBiMkUYxJ/TQdOpTf9zbJjf0RI0ajo= github.com/aws/aws-sdk-go-v2/service/elasticache v1.50.3 h1:uiWSUtTWqpvhP7KSEpVpIm0LqOtXtzOx049rmukP/gI= github.com/aws/aws-sdk-go-v2/service/elasticache v1.50.3/go.mod h1:igTRxVYuxplMPKS5J1AEThtbeFJQhUz845YtDRDzJhY= github.com/aws/aws-sdk-go-v2/service/elasticbeanstalk v1.33.5 h1:G8Fc8YJ8bTHvyWu0qAp/HJebp9Mjtg2qpmQ0L071OKs= @@ -287,8 +287,8 @@ github.com/aws/aws-sdk-go-v2/service/iam v1.47.5 h1:o2gRl9x3A/Sp6q4oHinnrS+2AC9U github.com/aws/aws-sdk-go-v2/service/iam v1.47.5/go.mod h1:0y7wFmnEg9xTZxjmr2gHQ4xOHpCfrt70lFWTOAkrij4= github.com/aws/aws-sdk-go-v2/service/identitystore v1.32.4 h1:KO3Plw+lTPS+Yz9F7gHJlaIoehZ7j9eVwcLYHqTKXQE= github.com/aws/aws-sdk-go-v2/service/identitystore v1.32.4/go.mod h1:FUWsCCyCZzfPI6GVh+ASz+f1M+GG/ZWGaUjqWp4ttR8= -github.com/aws/aws-sdk-go-v2/service/imagebuilder v1.46.4 h1:demzU11+z1wDbJtku9SX27AOaIKkcv6uuUipJm1Af0M= -github.com/aws/aws-sdk-go-v2/service/imagebuilder v1.46.4/go.mod h1:Mqot1KEfp6SOthyGtSV/2vcATRychQtv8mugiydCUfs= +github.com/aws/aws-sdk-go-v2/service/imagebuilder v1.47.0 h1:kjLxBIKPJBYeTrioSRqRFu2CVxP6yALiOsz0eRPVa0Q= +github.com/aws/aws-sdk-go-v2/service/imagebuilder v1.47.0/go.mod h1:Mqot1KEfp6SOthyGtSV/2vcATRychQtv8mugiydCUfs= github.com/aws/aws-sdk-go-v2/service/inspector v1.30.3 h1:7DQM0hDZ5XZbH7gTRUarFkO0enCCn0k5kr8GCTXkLn4= github.com/aws/aws-sdk-go-v2/service/inspector v1.30.3/go.mod h1:Wzq73ChjlQ2LxaO73XnOD55Jqz/J5kSHU6Gd1YB1yE4= github.com/aws/aws-sdk-go-v2/service/inspector2 v1.44.4 h1:Xp+30qFm4R/ZHIT79K/2HMzHYm1S4ipMctmWttaSQQM= @@ -357,8 +357,8 @@ github.com/aws/aws-sdk-go-v2/service/mediaconnect v1.44.4 h1:c4LeHvhTAYsO8md5in7 github.com/aws/aws-sdk-go-v2/service/mediaconnect v1.44.4/go.mod h1:1bIbSQ+gsTKdBcHkmxoft9hxDy7bip7gWHB6zdJ6VWo= github.com/aws/aws-sdk-go-v2/service/mediaconvert v1.82.4 h1:88tdsQqAz0hhrCo4jVxjrTSB9eoNtRLRW1FyfLUCDB0= github.com/aws/aws-sdk-go-v2/service/mediaconvert v1.82.4/go.mod h1:KRt+IAhw3rjGeBZdOJMaKzV8dcRH0FjidiANtilzjVE= -github.com/aws/aws-sdk-go-v2/service/medialive v1.82.0 h1:S7vCX+wJ/m20PKdpKYo0BUG06OuyiI7DqAnPilGYsZE= -github.com/aws/aws-sdk-go-v2/service/medialive v1.82.0/go.mod h1:sslxx162DAlYmkfvajs1wCLhZMVJ9Egd7ZH9EeaDEms= +github.com/aws/aws-sdk-go-v2/service/medialive v1.83.0 h1:rufgl2SNcJduX2er681q1KOXe1nB8WsvB0MNxDV7Nm4= +github.com/aws/aws-sdk-go-v2/service/medialive v1.83.0/go.mod h1:sslxx162DAlYmkfvajs1wCLhZMVJ9Egd7ZH9EeaDEms= github.com/aws/aws-sdk-go-v2/service/mediapackage v1.39.4 h1:1vRJmRaj700hsd9p+gXRrbSu13xheA5YPkpVALYNC7U= github.com/aws/aws-sdk-go-v2/service/mediapackage v1.39.4/go.mod h1:uVi/2YwWZnWEhlPG3Y0eYrE3rljwGYvFGddE9SvYC48= github.com/aws/aws-sdk-go-v2/service/mediapackagev2 v1.31.1 h1:GJPo1aJDfnKPRcdsw9zOCY0zsoA8bN0jRJYADGzUfTo= @@ -379,8 +379,8 @@ github.com/aws/aws-sdk-go-v2/service/neptune v1.42.2 h1:CM7nhsuvZf0mCv6TMqG5tzKU github.com/aws/aws-sdk-go-v2/service/neptune v1.42.2/go.mod h1:88XuulV9AwKNmG/7hAyByJoWghbrch+qltar7syXoG4= github.com/aws/aws-sdk-go-v2/service/neptunegraph v1.21.3 h1:jrJGbbokc3KIB6IzSB/JJuQOwWHqdWmZpkEEl/Zmyf0= github.com/aws/aws-sdk-go-v2/service/neptunegraph v1.21.3/go.mod h1:wmNqMkTjyx6wPaHH0SiSCCg812AzFJ9QFnfHCMvraxs= -github.com/aws/aws-sdk-go-v2/service/networkfirewall v1.55.3 h1:OkuKInB52h0/mW5Z1OkIkQ+umda8vxpcMkUkF+/AoPI= -github.com/aws/aws-sdk-go-v2/service/networkfirewall v1.55.3/go.mod h1:6x2e0M/7Z9XzPqgOvTZcwCNbjN761VJbIui3Zx0pEXs= +github.com/aws/aws-sdk-go-v2/service/networkfirewall v1.56.0 h1:ddZd2siH+HpBu1T9QKFXVX/mL9qe13xWeRrkPz5Ddwk= +github.com/aws/aws-sdk-go-v2/service/networkfirewall v1.56.0/go.mod h1:6x2e0M/7Z9XzPqgOvTZcwCNbjN761VJbIui3Zx0pEXs= github.com/aws/aws-sdk-go-v2/service/networkmanager v1.39.5 h1:e/d9+n5bKYXCR6A6xuqWoFVsDEm5FNJh526rS1sXyC4= github.com/aws/aws-sdk-go-v2/service/networkmanager v1.39.5/go.mod h1:tt09THrgGMdWj38DuEy5rakTOgHaA/G4V3o6f/ChiTo= github.com/aws/aws-sdk-go-v2/service/networkmonitor v1.12.4 h1:idjLJX03bHXAly/JajH7FDi1LnTjm+vz1Bm74l3+5jo= @@ -407,8 +407,8 @@ github.com/aws/aws-sdk-go-v2/service/paymentcryptography v1.25.0 h1:Xa+1EAhqSQXN github.com/aws/aws-sdk-go-v2/service/paymentcryptography v1.25.0/go.mod h1:oTU8PgBAPmgXqcGNysGtsvHSVaB1t70POQWzrvvzekM= github.com/aws/aws-sdk-go-v2/service/pcaconnectorad v1.15.4 h1:fSfw+4bF7B23fCjB63HZOVsJmAYMz3SIcCK28B6kvPk= github.com/aws/aws-sdk-go-v2/service/pcaconnectorad v1.15.4/go.mod h1:niQNNLiBhOtmIZdsx+ysgpmltLaENic1qZC0l+eMDyY= -github.com/aws/aws-sdk-go-v2/service/pcs v1.12.4 h1:3btzBHLKRPz9ecnk0EIE+EAGbMtl99x2VWdTflAml2k= -github.com/aws/aws-sdk-go-v2/service/pcs v1.12.4/go.mod h1:cSG0ngVM0DDPX0ETny4wHuT8pNvmYNd4pGEAS7DpMfc= +github.com/aws/aws-sdk-go-v2/service/pcs v1.13.0 h1:SPpe4DXZI8Vvqzt+uDS/FwesOLlj2t0Ht4s+5ZteWaM= +github.com/aws/aws-sdk-go-v2/service/pcs v1.13.0/go.mod h1:cSG0ngVM0DDPX0ETny4wHuT8pNvmYNd4pGEAS7DpMfc= github.com/aws/aws-sdk-go-v2/service/pinpoint v1.39.4 h1:qMVA3qezunrP0ZIvF75T8ktwA20HBXlBsHwR1U0A0H8= github.com/aws/aws-sdk-go-v2/service/pinpoint v1.39.4/go.mod h1:+JWai1T8zNQiXaPy5fVSKClFUnVMU6YbWxl9yaNkuJs= github.com/aws/aws-sdk-go-v2/service/pinpointsmsvoicev2 v1.25.3 h1:yQLjzkSYNfTFg0W03zmAvhykcAVCIoupphhKb9LKbWY= @@ -435,8 +435,8 @@ github.com/aws/aws-sdk-go-v2/service/redshift v1.58.3 h1:rXoN3hvwUimq8Z6uu2lsYnc github.com/aws/aws-sdk-go-v2/service/redshift v1.58.3/go.mod h1:OfB6wMvsEozZQbEjgqe6J68wF5u7wXNEAdG4FLKLk/Y= github.com/aws/aws-sdk-go-v2/service/redshiftdata v1.37.4 h1:egzZblPqPYLXClImxh6zL0kVt+aINhKMtj0Dlzt6LgM= github.com/aws/aws-sdk-go-v2/service/redshiftdata v1.37.4/go.mod h1:Jb2pR/0IhKbpPmetMChm8rxQDk2MLmb9ZNSDZlsGB4g= -github.com/aws/aws-sdk-go-v2/service/redshiftserverless v1.31.5 h1:h+93gIgr7UIcMJi7L/0jQ1ZgV5lgaAqfK0Ht9VuX9hY= -github.com/aws/aws-sdk-go-v2/service/redshiftserverless v1.31.5/go.mod h1:X10Ql/ih4yUJl87EKfnrX8iC9zfn2VFgVMCeWqGlOjI= +github.com/aws/aws-sdk-go-v2/service/redshiftserverless v1.31.6 h1:cb/WGaO0yn9eyOQf0ekFEZdk0LlvOaIBW6ayZk4n/hM= +github.com/aws/aws-sdk-go-v2/service/redshiftserverless v1.31.6/go.mod h1:X10Ql/ih4yUJl87EKfnrX8iC9zfn2VFgVMCeWqGlOjI= github.com/aws/aws-sdk-go-v2/service/rekognition v1.51.3 h1:1440u1Pza3HtYqsUiofmOYUB/i4fwLXRgvG9c37wz8w= github.com/aws/aws-sdk-go-v2/service/rekognition v1.51.3/go.mod h1:TDGlJxUrttcw4osr2qAj2KKn2tQf2AwaqjcXKxSaM5U= github.com/aws/aws-sdk-go-v2/service/resiliencehub v1.34.4 h1:50EjSzYo2Zl1WRSRtNTNqH0inalyK5xzGjzNsxoP/Qw= @@ -481,8 +481,8 @@ github.com/aws/aws-sdk-go-v2/service/schemas v1.33.3 h1:imDQ/7RtFfGZssclTJRJq0QA github.com/aws/aws-sdk-go-v2/service/schemas v1.33.3/go.mod h1:o11VZdyu0AgDlJ4+45ziQ3RkMcz817vxYCHWfrG4q2A= github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.39.4 h1:zWISPZre5hQb3mDMCEl6uni9rJ8K2cmvp64EXF7FXkk= github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.39.4/go.mod h1:GrB/4Cn7N41psUAycqnwGDzT7qYJdUm+VnEZpyZAG4I= -github.com/aws/aws-sdk-go-v2/service/securityhub v1.64.1 h1:wg+ZmlmqmnQjdTPpsMYBZQ+rn6x+2LPq28SwlQkRU74= -github.com/aws/aws-sdk-go-v2/service/securityhub v1.64.1/go.mod h1:/yFqGxCC/m8z1L0WjTEV3X1Ml2w612hMetWFrPJrRvA= +github.com/aws/aws-sdk-go-v2/service/securityhub v1.64.2 h1:NjP7tNKnUnaQDKQpbSytFXbz1mNdHOPxOvJNu8kdJog= +github.com/aws/aws-sdk-go-v2/service/securityhub v1.64.2/go.mod h1:/yFqGxCC/m8z1L0WjTEV3X1Ml2w612hMetWFrPJrRvA= github.com/aws/aws-sdk-go-v2/service/securitylake v1.24.4 h1:CtJyph+31QRGcBa9Z6AZKx0uNdLpoMK+jQeIxaGqqdM= github.com/aws/aws-sdk-go-v2/service/securitylake v1.24.4/go.mod h1:/Okrv6oh8a+j7ZTr5Arh843M0FFxwFjTKnW/kE/lkM4= github.com/aws/aws-sdk-go-v2/service/serverlessapplicationrepository v1.29.4 h1:Mf9vV6JHwq7RMHeX6IUxyARZSCRrLKZAMDIbeQJBg18= @@ -507,8 +507,8 @@ github.com/aws/aws-sdk-go-v2/service/signer v1.31.4 h1:dX2NzZmdQQuCUQ1gPnrcad6xN github.com/aws/aws-sdk-go-v2/service/signer v1.31.4/go.mod h1:DjrlOQ7vINGoemyAXwovy//giBjLUbWencjjp4X1v80= github.com/aws/aws-sdk-go-v2/service/sns v1.38.3 h1:4T0EjsLqUANqnBWafst2+Nr3Uw44MPdrPgysNbxDqBs= github.com/aws/aws-sdk-go-v2/service/sns v1.38.3/go.mod h1:kHMCS+JDWKuKSDP9J/v3dlV2S9zNBKbXzaLy/kHSdEE= -github.com/aws/aws-sdk-go-v2/service/sqs v1.42.5 h1:HbaHWaTkGec2pMa/UQa3+WNWtUaFFF1ZLfwCeVFtBns= -github.com/aws/aws-sdk-go-v2/service/sqs v1.42.5/go.mod h1:wCAPjT7bNg5+4HSNefwNEC2hM3d+NSD5w5DU/8jrPrI= +github.com/aws/aws-sdk-go-v2/service/sqs v1.42.6 h1:TxOBDZKQGhO2Q2Z3HiaqXjw582f6IFue+z9sM/RgXkk= +github.com/aws/aws-sdk-go-v2/service/sqs v1.42.6/go.mod h1:wCAPjT7bNg5+4HSNefwNEC2hM3d+NSD5w5DU/8jrPrI= github.com/aws/aws-sdk-go-v2/service/ssm v1.64.4 h1:GaIjQJwGv06w4/vdgYDpkbuNJ2sX7ROHD3/J4YWRvpA= github.com/aws/aws-sdk-go-v2/service/ssm v1.64.4/go.mod h1:5O20AzpAiVXhRhrJd5Tv9vh1gA5+iYHqAMVc+6t4q7g= github.com/aws/aws-sdk-go-v2/service/ssmcontacts v1.30.6 h1:Tpm/fpaqiA2+70esCG+ZURVZiQ05V2+GBQPvFrwnFI8= @@ -523,8 +523,8 @@ github.com/aws/aws-sdk-go-v2/service/sso v1.29.3 h1:7PKX3VYsZ8LUWceVRuv0+PU+E7Ot github.com/aws/aws-sdk-go-v2/service/sso v1.29.3/go.mod h1:Ql6jE9kyyWI5JHn+61UT/Y5Z0oyVJGmgmJbZD5g4unY= github.com/aws/aws-sdk-go-v2/service/ssoadmin v1.35.4 h1:72Upm349w28OYUiynjP7pIyzWYjDLpT0YQMGGyq/Wzg= github.com/aws/aws-sdk-go-v2/service/ssoadmin v1.35.4/go.mod h1:rHOWsPdb3a76utx/DCpC05mhxvhIOVqOWGFuBxqKjhc= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.34.4 h1:e0XBRn3AptQotkyBFrHAxFB8mDhAIOfsG+7KyJ0dg98= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.34.4/go.mod h1:XclEty74bsGBCr1s0VSaA11hQ4ZidK4viWK7rRfO88I= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.34.5 h1:gBBZmSuIySGqDLtXdZiYpwyzbJKXQD2jjT0oDY6ywbo= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.34.5/go.mod h1:XclEty74bsGBCr1s0VSaA11hQ4ZidK4viWK7rRfO88I= github.com/aws/aws-sdk-go-v2/service/storagegateway v1.42.4 h1:Gh7vhnzighFyKJJcdYiYRjxKO0Nlofu9VpaGp+ZgKvQ= github.com/aws/aws-sdk-go-v2/service/storagegateway v1.42.4/go.mod h1:jEoHxll7uwZM3zuOsnYLDLrwgqrSVPVajshyBwWac7Q= github.com/aws/aws-sdk-go-v2/service/sts v1.38.4 h1:PR00NXRYgY4FWHqOGx3fC3lhVKjsp1GdloDv2ynMSd8= From 21d83777c47cd56093325314155c7c68f4e5a3f1 Mon Sep 17 00:00:00 2001 From: changelogbot Date: Tue, 23 Sep 2025 15:01:13 +0000 Subject: [PATCH 79/81] Update CHANGELOG.md for #44410 --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d8cf1c36d5df..1520c968f107 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ ## 6.15.0 (Unreleased) +BREAKING CHANGES: + +* resource/aws_ecs_service: Fix behavior when updating `capacity_provider_strategy` to avoid ECS service recreation after recent AWS changes ([#43533](https://github.com/hashicorp/terraform-provider-aws/issues/43533)) + ## 6.14.1 (September 22, 2025) NOTES: From a736645908c116bb57681a1032b2dec593a8e6ad Mon Sep 17 00:00:00 2001 From: Asim Date: Tue, 23 Sep 2025 16:45:36 +0100 Subject: [PATCH 80/81] release note format corrected. --- .changelog/44401.txt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.changelog/44401.txt b/.changelog/44401.txt index 028b9bb32eae..248a08c9b42e 100644 --- a/.changelog/44401.txt +++ b/.changelog/44401.txt @@ -1,5 +1,11 @@ ```release-note:bug resource/aws_odb_cloud_vm_cluster : Fixed planmodifier for computed attribute. Fixed planmodifier from display_name attribute. +``` + +```release-note:bug resource/aws_odb_cloud_autonomous_vm_cluster : Fixed planmodifier for computed attribute. +``` + +```release-note:bug resource/aws_odb_network_peering_connection : Fixed planmodifier for computed attribute. ``` \ No newline at end of file From 227f05ca18fb649635c8b0d233437c931590913b Mon Sep 17 00:00:00 2001 From: changelogbot Date: Tue, 23 Sep 2025 17:31:42 +0000 Subject: [PATCH 81/81] Update CHANGELOG.md for #44335 --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1520c968f107..63b7be5ba393 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,15 @@ BREAKING CHANGES: * resource/aws_ecs_service: Fix behavior when updating `capacity_provider_strategy` to avoid ECS service recreation after recent AWS changes ([#43533](https://github.com/hashicorp/terraform-provider-aws/issues/43533)) +ENHANCEMENTS: + +* resource/aws_dsql_cluster: Adds attribute `force_destroy`. ([#44406](https://github.com/hashicorp/terraform-provider-aws/issues/44406)) + +BUG FIXES: + +* resource/aws_dsql_cluster: Prevents error when optional attribute `deletion_protection_enabled` not set. ([#44406](https://github.com/hashicorp/terraform-provider-aws/issues/44406)) +* resource/aws_rds_cluster: Fixes error when setting `database_insights_mode` with `global_cluster_identifier`. ([#44404](https://github.com/hashicorp/terraform-provider-aws/issues/44404)) + ## 6.14.1 (September 22, 2025) NOTES: