From 403151c9a9d04927a189c1ade768c4c924b7868c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 27 Nov 2024 07:19:03 -0500 Subject: [PATCH] chore: Update from hashicorp/terraform-provider-aws (v5.78.0) (#325) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Ensure required values are set when changing `storage_type`. As observed in #28589, if changing the `storage_type` additional fields need to be set if required. For example, `gp3` storage requires that the `allocated_storage` and `iops` params are supplied if the volume size is `>=400G`. Added a new test case to try and exercise this behaviour, and also tweaked a couple of existing tests to exercise the `gp3` tiering behaviour. **N.B** I've not been able to run these acceptance tests locally yet. Fixes #28589 * Fix RDS instance bug where switching to IO2 needs the allocated storage parameter passed * Add tests that switch from GP3 to IO2 * Fix merge issues * initial commit * fixed update, documentation and changelog * fixed website terraform fmt * consmetic * :bug: EKS and ECS Properties causes nil pointer * :broom: linting * :broom: remove unused functions * added additional validation and tests * :broom: remove single line * Add Valkey engine support for memorydb resources * added changelog * updated engine version as mandatory parameter * updated memorydb_cluster documentation * remove outdated test constants * rename changelog entry to match new PR * fix tests that were missing engine_version attribute * Update CHANGELOG.md after v5.77.0 * docs: add missing transformation block (#40218) * docs: add missing transformation block * fix: remove linter issue * Build with go1.23.3. * fix: update documentation for AWS ALB health check paths * Ignore unknown order argument on import * r/chatbot: Fix SNS topic ARNs ordering in Slack channel configuration The provider was being too strict about the order of SNS topic ARNs in the Slack channel configuration resource. This could cause unnecessary diffs in the Terraform plan when AWS returned the topics in a different order. This change implements sorting of SNS topic ARNs before comparison to ensure consistent behavior regardless of the order returned by the API. * fix ignored skip_requesting_account_id argument * dependabot: Remove '/tools/awssdkpatch'. * Bump the aws-sdk-go-v2 group across 1 directory with 20 updates Bumps the aws-sdk-go-v2 group with 19 updates in the / directory: | Package | From | To | | --- | --- | --- | | [github.com/aws/aws-sdk-go-v2/feature/s3/manager](https://github.com/aws/aws-sdk-go-v2) | `1.17.39` | `1.17.40` | | [github.com/aws/aws-sdk-go-v2/service/apigateway](https://github.com/aws/aws-sdk-go-v2) | `1.27.6` | `1.28.0` | | [github.com/aws/aws-sdk-go-v2/service/applicationautoscaling](https://github.com/aws/aws-sdk-go-v2) | `1.33.6` | `1.34.0` | | [github.com/aws/aws-sdk-go-v2/service/appsync](https://github.com/aws/aws-sdk-go-v2) | `1.39.3` | `1.40.0` | | [github.com/aws/aws-sdk-go-v2/service/cloudfront](https://github.com/aws/aws-sdk-go-v2) | `1.42.0` | `1.43.0` | | [github.com/aws/aws-sdk-go-v2/service/cloudtrail](https://github.com/aws/aws-sdk-go-v2) | `1.45.1` | `1.46.0` | | [github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs](https://github.com/aws/aws-sdk-go-v2) | `1.43.3` | `1.44.0` | | [github.com/aws/aws-sdk-go-v2/service/costexplorer](https://github.com/aws/aws-sdk-go-v2) | `1.43.6` | `1.44.0` | | [github.com/aws/aws-sdk-go-v2/service/dlm](https://github.com/aws/aws-sdk-go-v2) | `1.28.6` | `1.28.7` | | [github.com/aws/aws-sdk-go-v2/service/ec2](https://github.com/aws/aws-sdk-go-v2) | `1.192.0` | `1.193.0` | | [github.com/aws/aws-sdk-go-v2/service/elasticache](https://github.com/aws/aws-sdk-go-v2) | `1.43.3` | `1.44.0` | | [github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2](https://github.com/aws/aws-sdk-go-v2) | `1.42.0` | `1.42.1` | | [github.com/aws/aws-sdk-go-v2/service/iot](https://github.com/aws/aws-sdk-go-v2) | `1.60.1` | `1.61.0` | | [github.com/aws/aws-sdk-go-v2/service/lambda](https://github.com/aws/aws-sdk-go-v2) | `1.67.0` | `1.68.0` | | [github.com/aws/aws-sdk-go-v2/service/polly](https://github.com/aws/aws-sdk-go-v2) | `1.45.6` | `1.45.7` | | [github.com/aws/aws-sdk-go-v2/service/resiliencehub](https://github.com/aws/aws-sdk-go-v2) | `1.27.4` | `1.28.0` | | [github.com/aws/aws-sdk-go-v2/service/ssm](https://github.com/aws/aws-sdk-go-v2) | `1.55.6` | `1.56.0` | | [github.com/aws/aws-sdk-go-v2/service/ssmquicksetup](https://github.com/aws/aws-sdk-go-v2) | `1.2.7` | `1.3.0` | | [github.com/aws/aws-sdk-go-v2/service/xray](https://github.com/aws/aws-sdk-go-v2) | `1.29.6` | `1.30.0` | Updates `github.com/aws/aws-sdk-go-v2/feature/s3/manager` from 1.17.39 to 1.17.40 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/credentials/v1.17.39...credentials/v1.17.40) Updates `github.com/aws/aws-sdk-go-v2/service/apigateway` from 1.27.6 to 1.28.0 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/config/v1.27.6...v1.28.0) Updates `github.com/aws/aws-sdk-go-v2/service/applicationautoscaling` from 1.33.6 to 1.34.0 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/service/s3/v1.34.0/CHANGELOG.md) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/sfn/v1.33.6...service/s3/v1.34.0) Updates `github.com/aws/aws-sdk-go-v2/service/appsync` from 1.39.3 to 1.40.0 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/ivs/v1.39.3...service/s3/v1.40.0) Updates `github.com/aws/aws-sdk-go-v2/service/cloudfront` from 1.42.0 to 1.43.0 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/s3/v1.42.0...service/s3/v1.43.0) Updates `github.com/aws/aws-sdk-go-v2/service/cloudtrail` from 1.45.1 to 1.46.0 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/s3/v1.45.1...service/s3/v1.46.0) Updates `github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs` from 1.43.3 to 1.44.0 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/ssm/v1.43.3...service/s3/v1.44.0) Updates `github.com/aws/aws-sdk-go-v2/service/costexplorer` from 1.43.6 to 1.44.0 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/fsx/v1.43.6...service/s3/v1.44.0) Updates `github.com/aws/aws-sdk-go-v2/service/dlm` from 1.28.6 to 1.28.7 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/sts/v1.28.6...service/mgn/v1.28.7) Updates `github.com/aws/aws-sdk-go-v2/service/ec2` from 1.192.0 to 1.193.0 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/ec2/v1.192.0...service/ec2/v1.193.0) Updates `github.com/aws/aws-sdk-go-v2/service/elasticache` from 1.43.3 to 1.44.0 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/ssm/v1.43.3...service/s3/v1.44.0) Updates `github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2` from 1.42.0 to 1.42.1 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/s3/v1.42.0...service/s3/v1.42.1) Updates `github.com/aws/aws-sdk-go-v2/service/iot` from 1.60.1 to 1.61.0 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/s3/v1.60.1...service/s3/v1.61.0) Updates `github.com/aws/aws-sdk-go-v2/service/lambda` from 1.67.0 to 1.68.0 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/s3/v1.67.0...service/s3/v1.68.0) Updates `github.com/aws/aws-sdk-go-v2/service/polly` from 1.45.6 to 1.45.7 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/polly/v1.45.6...service/polly/v1.45.7) Updates `github.com/aws/aws-sdk-go-v2/service/resiliencehub` from 1.27.4 to 1.28.0 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/config/v1.27.4...v1.28.0) Updates `github.com/aws/aws-sdk-go-v2/service/s3` from 1.67.1 to 1.68.0 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/s3/v1.67.1...service/s3/v1.68.0) Updates `github.com/aws/aws-sdk-go-v2/service/ssm` from 1.55.6 to 1.56.0 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/iot/v1.55.6...service/s3/v1.56.0) Updates `github.com/aws/aws-sdk-go-v2/service/ssmquicksetup` from 1.2.7 to 1.3.0 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/v1.3.0/CHANGELOG.md) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/pcs/v1.2.7...v1.3.0) Updates `github.com/aws/aws-sdk-go-v2/service/xray` from 1.29.6 to 1.30.0 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/pi/v1.29.6...v1.30.0) --- updated-dependencies: - dependency-name: github.com/aws/aws-sdk-go-v2/feature/s3/manager dependency-type: direct:production update-type: version-update:semver-patch dependency-group: aws-sdk-go-v2 - dependency-name: github.com/aws/aws-sdk-go-v2/service/apigateway dependency-type: direct:production update-type: version-update:semver-minor dependency-group: aws-sdk-go-v2 - dependency-name: github.com/aws/aws-sdk-go-v2/service/applicationautoscaling dependency-type: direct:production update-type: version-update:semver-minor dependency-group: aws-sdk-go-v2 - dependency-name: github.com/aws/aws-sdk-go-v2/service/appsync dependency-type: direct:production update-type: version-update:semver-minor dependency-group: aws-sdk-go-v2 - dependency-name: github.com/aws/aws-sdk-go-v2/service/cloudfront dependency-type: direct:production update-type: version-update:semver-minor dependency-group: aws-sdk-go-v2 - dependency-name: github.com/aws/aws-sdk-go-v2/service/cloudtrail dependency-type: direct:production update-type: version-update:semver-minor dependency-group: aws-sdk-go-v2 - dependency-name: github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs dependency-type: direct:production update-type: version-update:semver-minor dependency-group: aws-sdk-go-v2 - dependency-name: github.com/aws/aws-sdk-go-v2/service/costexplorer dependency-type: direct:production update-type: version-update:semver-minor dependency-group: aws-sdk-go-v2 - dependency-name: github.com/aws/aws-sdk-go-v2/service/dlm dependency-type: direct:production update-type: version-update:semver-patch dependency-group: aws-sdk-go-v2 - dependency-name: github.com/aws/aws-sdk-go-v2/service/ec2 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: aws-sdk-go-v2 - dependency-name: github.com/aws/aws-sdk-go-v2/service/elasticache dependency-type: direct:production update-type: version-update:semver-minor dependency-group: aws-sdk-go-v2 - dependency-name: github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: aws-sdk-go-v2 - dependency-name: github.com/aws/aws-sdk-go-v2/service/iot dependency-type: direct:production update-type: version-update:semver-minor dependency-group: aws-sdk-go-v2 - dependency-name: github.com/aws/aws-sdk-go-v2/service/lambda dependency-type: direct:production update-type: version-update:semver-minor dependency-group: aws-sdk-go-v2 - dependency-name: github.com/aws/aws-sdk-go-v2/service/polly dependency-type: direct:production update-type: version-update:semver-patch dependency-group: aws-sdk-go-v2 - dependency-name: github.com/aws/aws-sdk-go-v2/service/resiliencehub dependency-type: direct:production update-type: version-update:semver-minor dependency-group: aws-sdk-go-v2 - dependency-name: github.com/aws/aws-sdk-go-v2/service/s3 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: aws-sdk-go-v2 - dependency-name: github.com/aws/aws-sdk-go-v2/service/ssm dependency-type: direct:production update-type: version-update:semver-minor dependency-group: aws-sdk-go-v2 - dependency-name: github.com/aws/aws-sdk-go-v2/service/ssmquicksetup dependency-type: direct:production update-type: version-update:semver-minor dependency-group: aws-sdk-go-v2 - dependency-name: github.com/aws/aws-sdk-go-v2/service/xray dependency-type: direct:production update-type: version-update:semver-minor dependency-group: aws-sdk-go-v2 ... Signed-off-by: dependabot[bot] * .github/workflows: fix formatting in `post_publish` shell script (#40245) A missed quote caused the script to fail during the `v5.77.0` release. ``` /home/runner/work/_temp/b9a14e53-10ad-497f-a91b-d57575e541f4.sh: line 12: unexpected EOF while looking for matching `"' Error: Process completed with exit code 2. ``` * Bump github.com/hashicorp/terraform-plugin-sdk/v2 in /.ci/providerlint Bumps [github.com/hashicorp/terraform-plugin-sdk/v2](https://github.com/hashicorp/terraform-plugin-sdk) from 2.34.0 to 2.35.0. - [Release notes](https://github.com/hashicorp/terraform-plugin-sdk/releases) - [Changelog](https://github.com/hashicorp/terraform-plugin-sdk/blob/main/CHANGELOG.md) - [Commits](https://github.com/hashicorp/terraform-plugin-sdk/compare/v2.34.0...v2.35.0) --- updated-dependencies: - dependency-name: github.com/hashicorp/terraform-plugin-sdk/v2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * Bump codelytv/pr-size-labeler from 1.10.1 to 1.10.2 (#40254) Bumps [codelytv/pr-size-labeler](https://github.com/codelytv/pr-size-labeler) from 1.10.1 to 1.10.2. - [Release notes](https://github.com/codelytv/pr-size-labeler/releases) - [Commits](https://github.com/codelytv/pr-size-labeler/compare/c7a55a022747628b50f3eb5bf863b9e796b8f274...1c3422395d899286d5ee2c809fd5aed264d5eb9b) --- updated-dependencies: - dependency-name: codelytv/pr-size-labeler dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore: revert cdktf documentation changes Updates to these pages and handled by an automated job scheduled to run weekly. * Update caps * r/aws_s3_bucket_lifecycle_configuration: S3 directory buckets are now supported (#40268) Removes a note from the `aws_s3_bucket_lifecycle_configuration` documentation indicating directory buckets are not supported and adjusts the expected result from an acceptance test applying a lifecycle configuration to an S3 directory bucket. ```console % make testacc PKG=s3 TESTS=TestAccS3BucketLifecycleConfiguration_directoryBucket make: Verifying source code with gofmt... ==> Checking that code complies with gofmt requirements... TF_ACC=1 go1.23.2 test ./internal/service/s3/... -v -count 1 -parallel 20 -run='TestAccS3BucketLifecycleConfiguration_directoryBucket' -timeout 360m 2024/11/13 10:55:38 Initializing Terraform AWS Provider... --- PASS: TestAccS3BucketLifecycleConfiguration_directoryBucket (71.37s) PASS ok github.com/hashicorp/terraform-provider-aws/internal/service/s3 77.827s ``` ```console % make testacc PKG=s3 TESTS=TestAccS3BucketLifecycleConfiguration_ make: Verifying source code with gofmt... ==> Checking that code complies with gofmt requirements... TF_ACC=1 go1.23.2 test ./internal/service/s3/... -v -count 1 -parallel 20 -run='TestAccS3BucketLifecycleConfiguration_' -timeout 360m 2024/11/13 10:59:44 Initializing Terraform AWS Provider... --- PASS: TestAccS3BucketLifecycleConfiguration_migrate_noChange (78.59s) === CONT TestAccS3BucketLifecycleConfiguration_Filter_ObjectSizeLessThan --- PASS: TestAccS3BucketLifecycleConfiguration_TransitionDate_standardIa (84.27s) === CONT TestAccS3BucketLifecycleConfiguration_filterWithPrefix --- PASS: TestAccS3BucketLifecycleConfiguration_basic (84.74s) === CONT TestAccS3BucketLifecycleConfiguration_Filter_ObjectSizeGreaterThan --- PASS: TestAccS3BucketLifecycleConfiguration_nonCurrentVersionTransition (98.02s) === CONT TestAccS3BucketLifecycleConfiguration_EmptyFilter_NonCurrentVersions --- PASS: TestAccS3BucketLifecycleConfiguration_multipleRules (98.13s) === CONT TestAccS3BucketLifecycleConfiguration_migrate_withChange --- PASS: TestAccS3BucketLifecycleConfiguration_nonCurrentVersionExpiration (98.17s) === CONT TestAccS3BucketLifecycleConfiguration_disappears --- PASS: TestAccS3BucketLifecycleConfiguration_Filter_ObjectSizeRangeAndPrefix (98.19s) === CONT TestAccS3BucketLifecycleConfiguration_directoryBucket --- PASS: TestAccS3BucketLifecycleConfiguration_Filter_ObjectSizeRange (98.25s) === CONT TestAccS3BucketLifecycleConfiguration_TransitionZeroDays_intelligentTiering === CONT TestAccS3BucketLifecycleConfiguration_TransitionStorageClassOnly_intelligentTiering --- PASS: TestAccS3BucketLifecycleConfiguration_prefix (98.25s) --- PASS: TestAccS3BucketLifecycleConfiguration_RuleExpiration_emptyBlock (98.29s) --- PASS: TestAccS3BucketLifecycleConfiguration_Filter_ObjectSizeGreaterThanZero (98.31s) --- PASS: TestAccS3BucketLifecycleConfiguration_TransitionDate_intelligentTiering (98.33s) --- PASS: TestAccS3BucketLifecycleConfiguration_multipleRules_noFilterOrPrefix (98.36s) --- PASS: TestAccS3BucketLifecycleConfiguration_Filter_Tag (98.59s) --- PASS: TestAccS3BucketLifecycleConfiguration_Update_filterWithAndToFilterWithPrefix (147.79s) --- PASS: TestAccS3BucketLifecycleConfiguration_Filter_ObjectSizeLessThan (70.62s) --- PASS: TestAccS3BucketLifecycleConfiguration_disappears (53.85s) --- PASS: TestAccS3BucketLifecycleConfiguration_basicTransitionDefaultMinimumObjectSize (161.15s) --- PASS: TestAccS3BucketLifecycleConfiguration_Filter_ObjectSizeGreaterThan (81.24s) --- PASS: TestAccS3BucketLifecycleConfiguration_migrate_withChange (69.07s) --- PASS: TestAccS3BucketLifecycleConfiguration_EmptyFilter_NonCurrentVersions (72.11s) --- PASS: TestAccS3BucketLifecycleConfiguration_TransitionZeroDays_intelligentTiering (71.88s) --- PASS: TestAccS3BucketLifecycleConfiguration_TransitionStorageClassOnly_intelligentTiering (71.88s) --- PASS: TestAccS3BucketLifecycleConfiguration_directoryBucket (72.67s) --- PASS: TestAccS3BucketLifecycleConfiguration_ruleAbortIncompleteMultipartUpload (175.15s) --- PASS: TestAccS3BucketLifecycleConfiguration_RuleExpiration_expireMarkerOnly (175.49s) --- PASS: TestAccS3BucketLifecycleConfiguration_TransitionUpdateBetweenDaysAndDate_intelligentTiering (226.45s) --- PASS: TestAccS3BucketLifecycleConfiguration_disableRule (234.25s) --- PASS: TestAccS3BucketLifecycleConfiguration_filterWithPrefix (157.02s) PASS ok github.com/hashicorp/terraform-provider-aws/internal/service/s3 247.725s ``` * Update CHANGELOG.md for #40268 * aws_chatbot_slack_channel_configuration: use flex HasChanges() * aws_chatbot_slack_channel_configuration: use flex custom types * chore: cleanup unused functions * add CHANGELOG entry * chore: semgrep fix * Add CHANGELOG entry. * Fixes after merge, sdkv2 * Update tests after merge, new ways * Add changelog * Add retroactive changelog * Fix misplacing of logic during merge * Clean up tests after merge * Remove git merge artifact * Fix merge artifact * Remove unused * Fix naming * Tweak CHANGELOG entries. * d/aws_memorydb_snapshot: Add `cluster_configuration.engine` attribute. * Corrections for MemoryDB. * Run 'make gen'. * MySQL/Postgres don't support allocated storage was trying * Correct error message. * Correct documentation subcategory for MemoryDB. * r/aws_memorydb_cluster: 'engine' is Optional+Computed. * Add Lambda Node.js 22 CHANGELOG entries. * Add Lambda Python 3.13 CHANGELOG entries. * Correct PR number. * rds/instance: Test correct updating of cert * Update CHANGELOG.md for #40277 * memorydb: Reduce visibility of enums. * Update .changelog/28847.txt Co-authored-by: Kit Ewbank * Update .changelog/37257.txt Co-authored-by: Kit Ewbank * Remove hardcoded cert * Update CHANGELOG.md for #40278 * Update dependencies * Update AWS * Update tools * Fix aws_rds_reserved_instance_offering data source * Add changelog * Rework tests for existing instances, postgresql * Whitespace * Add code comment * Update CHANGELOG.md for #40281 * r/aws_memorydb_acl: Standardize. * d/aws_memorydb_acl: Transparent tagging. * r/aws_memorydb_cluster: Standardize. * d/aws_memorydb_cluster: Transparent tagging. * r/aws_memorydb_parameter_group: Standardize. * d/aws_memorydb_parameter_group: Transparent tagging. * r/aws_memorydb_snapshot: Standardize. * d/aws_memorydb_snapshot: Transparent tagging. * cdktf: update index.html.markdown,r/xray_sampling_rule.html.markdown,r/xray_group.html.markdown,r/xray_encryption_config.html.markdown,r/workspaces_workspace.html.markdown,r/workspaces_ip_group.html.markdown,r/workspaces_directory.html.markdown,r/workspaces_connection_alias.html.markdown,r/worklink_website_certificate_authority_association.html.markdown,r/worklink_fleet.html.markdown,r/wafv2_web_acl_logging_configuration.html.markdown,r/wafv2_web_acl_association.html.markdown,r/wafv2_web_acl.html.markdown,r/wafv2_rule_group.html.markdown,r/wafv2_regex_pattern_set.html.markdown,r/wafv2_ip_set.html.markdown,r/wafregional_xss_match_set.html.markdown,r/wafregional_web_acl_association.html.markdown,r/wafregional_web_acl.html.markdown,r/wafregional_sql_injection_match_set.html.markdown,r/wafregional_size_constraint_set.html.markdown,r/wafregional_rule_group.html.markdown,r/wafregional_rule.html.markdown,r/wafregional_regex_pattern_set.html.markdown,r/wafregional_regex_match_set.html.markdown,r/wafregional_rate_based_rule.html.markdown,r/wafregional_ipset.html.markdown,r/wafregional_geo_match_set.html.markdown,r/wafregional_byte_match_set.html.markdown,r/waf_xss_match_set.html.markdown,r/waf_web_acl.html.markdown,r/waf_sql_injection_match_set.html.markdown,r/waf_size_constraint_set.html.markdown,r/waf_rule_group.html.markdown,r/waf_rule.html.markdown,r/waf_regex_pattern_set.html.markdown,r/waf_regex_match_set.html.markdown,r/waf_rate_based_rule.html.markdown,r/waf_ipset.html.markdown,r/waf_geo_match_set.html.markdown,r/waf_byte_match_set.html.markdown,r/vpn_gateway_route_propagation.html.markdown,r/vpn_gateway_attachment.html.markdown,r/vpn_gateway.html.markdown,r/vpn_connection_route.html.markdown,r/vpn_connection.html.markdown,r/vpclattice_target_group_attachment.html.markdown,r/vpclattice_target_group.html.markdown,r/vpclattice_service_network_vpc_association.html.markdown,r/vpclattice_service_network_service_association.html.markdown,r/vpclattice_service_network.html.markdown,r/vpclattice_service.html.markdown,r/vpclattice_resource_policy.html.markdown,r/vpclattice_listener_rule.html.markdown,r/vpclattice_listener.html.markdown,r/vpclattice_auth_policy.html.markdown,r/vpclattice_access_log_subscription.html.markdown,r/vpc_security_group_vpc_association.html.markdown,r/vpc_security_group_ingress_rule.html.markdown,r/vpc_security_group_egress_rule.html.markdown,r/vpc_peering_connection_options.html.markdown,r/vpc_peering_connection_accepter.html.markdown,r/vpc_peering_connection.html.markdown,r/vpc_network_performance_metric_subscription.html.markdown,r/vpc_ipv6_cidr_block_association.html.markdown,r/vpc_ipv4_cidr_block_association.html.markdown,r/vpc_ipam_scope.html.markdown,r/vpc_ipam_resource_discovery_association.html.markdown,r/vpc_ipam_resource_discovery.html.markdown,r/vpc_ipam_preview_next_cidr.html.markdown,r/vpc_ipam_pool_cidr_allocation.html.markdown,r/vpc_ipam_pool_cidr.html.markdown,r/vpc_ipam_pool.html.markdown,r/vpc_ipam_organization_admin_account.html.markdown,r/vpc_ipam.html.markdown,r/vpc_endpoint_subnet_association.html.markdown,r/vpc_endpoint_service_private_dns_verification.html.markdown,r/vpc_endpoint_service_allowed_principal.html.markdown,r/vpc_endpoint_service.html.markdown,r/vpc_endpoint_security_group_association.html.markdown,r/vpc_endpoint_route_table_association.html.markdown,r/vpc_endpoint_private_dns.html.markdown,r/vpc_endpoint_policy.html.markdown,r/vpc_endpoint_connection_notification.html.markdown,r/vpc_endpoint_connection_accepter.html.markdown,r/vpc_endpoint.html.markdown,r/vpc_dhcp_options_association.html.markdown,r/vpc_dhcp_options.html.markdown,r/vpc.html.markdown,r/volume_attachment.html.markdown,r/verifiedpermissions_schema.html.markdown,r/verifiedpermissions_policy_template.html.markdown,r/verifiedpermissions_policy_store.html.markdown,r/verifiedpermissions_policy.html.markdown,r/verifiedpermissions_identity_source.html.markdown,r/verifiedaccess_trust_provider.html.markdown,r/verifiedaccess_instance_trust_provider_attachment.html.markdown,r/verifiedaccess_instance_logging_configuration.html.markdown,r/verifiedaccess_instance.html.markdown,r/verifiedaccess_group.html.markdown,r/verifiedaccess_endpoint.html.markdown,r/transfer_workflow.html.markdown,r/transfer_user.html.markdown,r/transfer_tag.html.markdown,r/transfer_ssh_key.html.markdown,r/transfer_server.html.markdown,r/transfer_profile.html.markdown,r/transfer_connector.html.markdown,r/transfer_certificate.html.markdown,r/transfer_agreement.html.markdown,r/transfer_access.html.markdown,r/transcribe_vocabulary_filter.html.markdown,r/transcribe_vocabulary.html.markdown,r/transcribe_medical_vocabulary.html.markdown,r/transcribe_language_model.html.markdown,r/timestreamwrite_table.html.markdown,r/timestreamwrite_database.html.markdown,r/timestreaminfluxdb_db_instance.html.markdown,r/synthetics_group_association.html.markdown,r/synthetics_group.html.markdown,r/synthetics_canary.html.markdown,r/swf_domain.html.markdown,r/subnet.html.markdown,r/storagegateway_working_storage.html.markdown,r/storagegateway_upload_buffer.html.markdown,r/storagegateway_tape_pool.html.markdown,r/storagegateway_stored_iscsi_volume.html.markdown,r/storagegateway_smb_file_share.html.markdown,r/storagegateway_nfs_file_share.html.markdown,r/storagegateway_gateway.html.markdown,r/storagegateway_file_system_association.html.markdown,r/storagegateway_cached_iscsi_volume.html.markdown,r/storagegateway_cache.html.markdown,r/ssoadmin_trusted_token_issuer.html.markdown,r/ssoadmin_permissions_boundary_attachment.html.markdown,r/ssoadmin_permission_set_inline_policy.html.markdown,r/ssoadmin_permission_set.html.markdown,r/ssoadmin_managed_policy_attachment.html.markdown,r/ssoadmin_instance_access_control_attributes.html.markdown,r/ssoadmin_customer_managed_policy_attachment.html.markdown,r/ssoadmin_application_assignment_configuration.html.markdown,r/ssoadmin_application_assignment.html.markdown,r/ssoadmin_application_access_scope.html.markdown,r/ssoadmin_application.html.markdown,r/ssoadmin_account_assignment.html.markdown,r/ssmquicksetup_configuration_manager.html.markdown,r/ssmincidents_response_plan.html.markdown,r/ssmincidents_replication_set.html.markdown,r/ssmcontacts_rotation.html.markdown,r/ssmcontacts_plan.html.markdown,r/ssmcontacts_contact_channel.html.markdown,r/ssmcontacts_contact.html.markdown,r/ssm_service_setting.html.markdown,r/ssm_resource_data_sync.html.markdown,r/ssm_patch_group.html.markdown,r/ssm_patch_baseline.html.markdown,r/ssm_parameter.html.markdown,r/ssm_maintenance_window_task.html.markdown,r/ssm_maintenance_window_target.html.markdown,r/ssm_maintenance_window.html.markdown,r/ssm_document.html.markdown,r/ssm_default_patch_baseline.html.markdown,r/ssm_association.html.markdown,r/ssm_activation.html.markdown,r/sqs_queue_redrive_policy.html.markdown,r/sqs_queue_redrive_allow_policy.html.markdown,r/sqs_queue_policy.html.markdown,r/sqs_queue.html.markdown,r/spot_instance_request.html.markdown,r/spot_fleet_request.html.markdown,r/spot_datafeed_subscription.html.markdown,r/sns_topic_subscription.html.markdown,r/sns_topic_policy.html.markdown,r/sns_topic_data_protection_policy.html.markdown,r/sns_topic.html.markdown,r/sns_sms_preferences.html.markdown,r/sns_platform_application.html.markdown,r/snapshot_create_volume_permission.html.markdown,r/simpledb_domain.html.markdown,r/signer_signing_profile_permission.html.markdown,r/signer_signing_profile.html.markdown,r/signer_signing_job.html.markdown,r/shield_subscription.html.markdown,r/shield_protection_health_check_association.html.markdown,r/shield_protection_group.html.markdown,r/shield_protection.html.markdown,r/shield_proactive_engagement.html.markdown,r/shield_drt_access_role_arn_association.html.markdown,r/shield_drt_access_log_bucket_association.html.markdown,r/shield_application_layer_automatic_response.html.markdown,r/sfn_state_machine.html.markdown,r/sfn_alias.html.markdown,r/sfn_activity.html.markdown,r/sesv2_email_identity_policy.html.markdown,r/sesv2_email_identity_mail_from_attributes.html.markdown,r/sesv2_email_identity_feedback_attributes.html.markdown,r/sesv2_email_identity.html.markdown,r/sesv2_dedicated_ip_pool.html.markdown,r/sesv2_dedicated_ip_assignment.html.markdown,r/sesv2_contact_list.html.markdown,r/sesv2_configuration_set_event_destination.html.markdown,r/sesv2_configuration_set.html.markdown,r/sesv2_account_vdm_attributes.html.markdown,r/sesv2_account_suppression_attributes.html.markdown,r/ses_template.html.markdown,r/ses_receipt_rule_set.html.markdown,r/ses_receipt_rule.html.markdown,r/ses_receipt_filter.html.markdown,r/ses_identity_policy.html.markdown,r/ses_identity_notification_topic.html.markdown,r/ses_event_destination.html.markdown,r/ses_email_identity.html.markdown,r/ses_domain_mail_from.html.markdown,r/ses_domain_identity_verification.html.markdown,r/ses_domain_identity.html.markdown,r/ses_domain_dkim.html.markdown,r/ses_configuration_set.html.markdown,r/ses_active_receipt_rule_set.html.markdown,r/servicequotas_template_association.html.markdown,r/servicequotas_template.html.markdown,r/servicequotas_service_quota.html.markdown,r/servicecatalogappregistry_application.html.markdown,r/servicecatalog_tag_option_resource_association.html.markdown,r/servicecatalog_tag_option.html.markdown,r/servicecatalog_service_action.html.markdown,r/servicecatalog_provisioning_artifact.html.markdown,r/servicecatalog_provisioned_product.html.markdown,r/servicecatalog_product_portfolio_association.html.markdown,r/servicecatalog_product.html.markdown,r/servicecatalog_principal_portfolio_association.html.markdown,r/servicecatalog_portfolio_share.html.markdown,r/servicecatalog_portfolio.html.markdown,r/servicecatalog_organizations_access.html.markdown,r/servicecatalog_constraint.html.markdown,r/servicecatalog_budget_resource_association.html.markdown,r/service_discovery_service.html.markdown,r/service_discovery_public_dns_namespace.html.markdown,r/service_discovery_private_dns_namespace.html.markdown,r/service_discovery_instance.html.markdown,r/service_discovery_http_namespace.html.markdown,r/serverlessapplicationrepository_cloudformation_stack.html.markdown,r/securitylake_subscriber_notification.html.markdown,r/securitylake_subscriber.html.markdown,r/securitylake_data_lake.html.markdown,r/securitylake_custom_log_source.html.markdown,r/securitylake_aws_log_source.html.markdown,r/securityhub_standards_subscription.html.markdown,r/securityhub_standards_control_association.html.markdown,r/securityhub_standards_control.html.markdown,r/securityhub_product_subscription.html.markdown,r/securityhub_organization_configuration.html.markdown,r/securityhub_organization_admin_account.html.markdown,r/securityhub_member.html.markdown,r/securityhub_invite_accepter.html.markdown,r/securityhub_insight.html.markdown,r/securityhub_finding_aggregator.html.markdown,r/securityhub_configuration_policy_association.markdown,r/securityhub_configuration_policy.html.markdown,r/securityhub_automation_rule.html.markdown,r/securityhub_action_target.html.markdown,r/securityhub_account.html.markdown,r/security_group_rule.html.markdown,r/security_group.html.markdown,r/secretsmanager_secret_version.html.markdown,r/secretsmanager_secret_rotation.html.markdown,r/secretsmanager_secret_policy.html.markdown,r/secretsmanager_secret.html.markdown,r/schemas_schema.html.markdown,r/schemas_registry_policy.html.markdown,r/schemas_registry.html.markdown,r/schemas_discoverer.html.markdown,r/scheduler_schedule_group.html.markdown,r/scheduler_schedule.html.markdown,r/sagemaker_workteam.html.markdown,r/sagemaker_workforce.html.markdown,r/sagemaker_user_profile.html.markdown,r/sagemaker_studio_lifecycle_config.html.markdown,r/sagemaker_space.html.markdown,r/sagemaker_servicecatalog_portfolio_status.html.markdown,r/sagemaker_project.html.markdown,r/sagemaker_pipeline.html.markdown,r/sagemaker_notebook_instance_lifecycle_configuration.html.markdown,r/sagemaker_notebook_instance.html.markdown,r/sagemaker_monitoring_schedule.html.markdown,r/sagemaker_model_package_group_policy.html.markdown,r/sagemaker_model_package_group.html.markdown,r/sagemaker_model.html.markdown,r/sagemaker_mlflow_tracking_server.html.markdown,r/sagemaker_image_version.html.markdown,r/sagemaker_image.html.markdown,r/sagemaker_human_task_ui.html.markdown,r/sagemaker_hub.html.markdown,r/sagemaker_flow_definition.html.markdown,r/sagemaker_feature_group.html.markdown,r/sagemaker_endpoint_configuration.html.markdown,r/sagemaker_endpoint.html.markdown,r/sagemaker_domain.html.markdown,r/sagemaker_device_fleet.html.markdown,r/sagemaker_device.html.markdown,r/sagemaker_data_quality_job_definition.html.markdown,r/sagemaker_code_repository.html.markdown,r/sagemaker_app_image_config.html.markdown,r/sagemaker_app.html.markdown,r/s3outposts_endpoint.html.markdown,r/s3control_storage_lens_configuration.html.markdown,r/s3control_object_lambda_access_point_policy.html.markdown,r/s3control_object_lambda_access_point.html.markdown,r/s3control_multi_region_access_point_policy.html.markdown,r/s3control_multi_region_access_point.html.markdown,r/s3control_bucket_policy.html.markdown,r/s3control_bucket_lifecycle_configuration.html.markdown,r/s3control_bucket.html.markdown,r/s3control_access_point_policy.html.markdown,r/s3control_access_grants_location.html.markdown,r/s3control_access_grants_instance_resource_policy.html.markdown,r/s3control_access_grants_instance.html.markdown,r/s3control_access_grant.html.markdown,r/s3_object_copy.html.markdown,r/s3_object.html.markdown,r/s3_directory_bucket.html.markdown,r/s3_bucket_website_configuration.html.markdown,r/s3_bucket_versioning.html.markdown,r/s3_bucket_server_side_encryption_configuration.html.markdown,r/s3_bucket_request_payment_configuration.html.markdown,r/s3_bucket_replication_configuration.html.markdown,r/s3_bucket_public_access_block.html.markdown,r/s3_bucket_policy.html.markdown,r/s3_bucket_ownership_controls.html.markdown,r/s3_bucket_object_lock_configuration.html.markdown,r/s3_bucket_object.html.markdown,r/s3_bucket_notification.html.markdown,r/s3_bucket_metric.html.markdown,r/s3_bucket_logging.html.markdown,r/s3_bucket_lifecycle_configuration.html.markdown,r/s3_bucket_inventory.html.markdown,r/s3_bucket_intelligent_tiering_configuration.html.markdown,r/s3_bucket_cors_configuration.html.markdown,r/s3_bucket_analytics_configuration.html.markdown,r/s3_bucket_acl.html.markdown,r/s3_bucket_accelerate_configuration.html.markdown,r/s3_bucket.html.markdown,r/s3_account_public_access_block.html.markdown,r/s3_access_point.html.markdown,r/rum_metrics_destination.html.markdown,r/rum_app_monitor.html.markdown,r/route_table_association.html.markdown,r/route_table.html.markdown,r/route53recoveryreadiness_resource_set.html.markdown,r/route53recoveryreadiness_recovery_group.html.markdown,r/route53recoveryreadiness_readiness_check.html.markdown,r/route53recoveryreadiness_cell.html.markdown,r/route53recoverycontrolconfig_safety_rule.html.markdown,r/route53recoverycontrolconfig_routing_control.html.markdown,r/route53recoverycontrolconfig_control_panel.html.markdown,r/route53recoverycontrolconfig_cluster.html.markdown,r/route53profiles_resource_association.html.markdown,r/route53profiles_profile.html.markdown,r/route53profiles_association.html.markdown,r/route53domains_registered_domain.html.markdown,r/route53domains_delegation_signer_record.html.markdown,r/route53_zone_association.html.markdown,r/route53_zone.html.markdown,r/route53_vpc_association_authorization.html.markdown,r/route53_traffic_policy_instance.html.markdown,r/route53_traffic_policy.html.markdown,r/route53_resolver_rule_association.html.markdown,r/route53_resolver_rule.html.markdown,r/route53_resolver_query_log_config_association.html.markdown,r/route53_resolver_query_log_config.html.markdown,r/route53_resolver_firewall_rule_group_association.html.markdown,r/route53_resolver_firewall_rule_group.html.markdown,r/route53_resolver_firewall_rule.html.markdown,r/route53_resolver_firewall_domain_list.html.markdown,r/route53_resolver_firewall_config.html.markdown,r/route53_resolver_endpoint.html.markdown,r/route53_resolver_dnssec_config.html.markdown,r/route53_resolver_config.html.markdown,r/route53_record.html.markdown,r/route53_query_log.html.markdown,r/route53_key_signing_key.html.markdown,r/route53_hosted_zone_dnssec.html.markdown,r/route53_health_check.html.markdown,r/route53_delegation_set.html.markdown,r/route53_cidr_location.html.markdown,r/route53_cidr_collection.html.markdown,r/route.html.markdown,r/rolesanywhere_trust_anchor.html.markdown,r/rolesanywhere_profile.html.markdown,r/resourcegroups_resource.html.markdown,r/resourcegroups_group.html.markdown,r/resourceexplorer2_view.html.markdown,r/resourceexplorer2_index.html.markdown,r/resiliencehub_resiliency_policy.html.markdown,r/rekognition_stream_processor.html.markdown,r/rekognition_project.html.markdown,r/rekognition_collection.html.markdown,r/redshiftserverless_workgroup.html.markdown,r/redshiftserverless_usage_limit.html.markdown,r/redshiftserverless_snapshot.html.markdown,r/redshiftserverless_resource_policy.html.markdown,r/redshiftserverless_namespace.html.markdown,r/redshiftserverless_endpoint_access.html.markdown,r/redshiftserverless_custom_domain_association.html.markdown,r/redshiftdata_statement.html.markdown,r/redshift_usage_limit.html.markdown,r/redshift_subnet_group.html.markdown,r/redshift_snapshot_schedule_association.html.markdown,r/redshift_snapshot_schedule.html.markdown,r/redshift_snapshot_copy_grant.html.markdown,r/redshift_snapshot_copy.html.markdown,r/redshift_scheduled_action.html.markdown,r/redshift_resource_policy.html.markdown,r/redshift_partner.html.markdown,r/redshift_parameter_group.html.markdown,r/redshift_logging.html.markdown,r/redshift_hsm_configuration.html.markdown,r/redshift_hsm_client_certificate.html.markdown,r/redshift_event_subscription.html.markdown,r/redshift_endpoint_authorization.html.markdown,r/redshift_endpoint_access.html.markdown,r/redshift_data_share_consumer_association.html.markdown,r/redshift_data_share_authorization.html.markdown,r/redshift_cluster_snapshot.html.markdown,r/redshift_cluster_iam_roles.html.markdown,r/redshift_cluster.html.markdown,r/redshift_authentication_profile.html.markdown,r/rds_reserved_instance.html.markdown,r/rds_integration.html.markdown,r/rds_instance_state.html.markdown,r/rds_global_cluster.html.markdown,r/rds_export_task.html.markdown,r/rds_custom_db_engine_version.markdown,r/rds_cluster_role_association.html.markdown,r/rds_cluster_parameter_group.html.markdown,r/rds_cluster_instance.html.markdown,r/rds_cluster_endpoint.html.markdown,r/rds_cluster_activity_stream.html.markdown,r/rds_cluster.html.markdown,r/rds_certificate.html.markdown,r/rbin_rule.html.markdown,r/ram_sharing_with_organization.html.markdown,r/ram_resource_share_accepter.html.markdown,r/ram_resource_share.html.markdown,r/ram_resource_association.html.markdown,r/ram_principal_association.html.markdown,r/quicksight_vpc_connection.html.markdown,r/quicksight_user.html.markdown,r/quicksight_theme.html.markdown,r/quicksight_template_alias.html.markdown,r/quicksight_template.html.markdown,r/quicksight_refresh_schedule.html.markdown,r/quicksight_namespace.html.markdown,r/quicksight_ingestion.html.markdown,r/quicksight_iam_policy_assignment.html.markdown,r/quicksight_group_membership.html.markdown,r/quicksight_group.html.markdown,r/quicksight_folder_membership.html.markdown,r/quicksight_folder.html.markdown,r/quicksight_data_source.html.markdown,r/quicksight_data_set.html.markdown,r/quicksight_dashboard.html.markdown,r/quicksight_analysis.html.markdown,r/quicksight_account_subscription.html.markdown,r/qldb_stream.html.markdown,r/qldb_ledger.html.markdown,r/proxy_protocol_policy.html.markdown,r/prometheus_workspace.html.markdown,r/prometheus_scraper.html.markdown,r/prometheus_rule_group_namespace.html.markdown,r/prometheus_alert_manager_definition.html.markdown,r/placement_group.html.markdown,r/pipes_pipe.html.markdown,r/pinpointsmsvoicev2_phone_number.html.markdown,r/pinpointsmsvoicev2_opt_out_list.html.markdown,r/pinpointsmsvoicev2_configuration_set.html.markdown,r/pinpoint_sms_channel.html.markdown,r/pinpoint_gcm_channel.html.markdown,r/pinpoint_event_stream.html.markdown,r/pinpoint_email_template.markdown,r/pinpoint_email_channel.html.markdown,r/pinpoint_baidu_channel.html.markdown,r/pinpoint_app.html.markdown,r/pinpoint_apns_voip_sandbox_channel.html.markdown,r/pinpoint_apns_voip_channel.html.markdown,r/pinpoint_apns_sandbox_channel.html.markdown,r/pinpoint_apns_channel.html.markdown,r/pinpoint_adm_channel.html.markdown,r/paymentcryptography_key_alias.html.markdown,r/paymentcryptography_key.html.markdown,r/osis_pipeline.html.markdown,r/organizations_resource_policy.html.markdown,r/organizations_policy_attachment.html.markdown,r/organizations_policy.html.markdown,r/organizations_organizational_unit.html.markdown,r/organizations_organization.html.markdown,r/organizations_delegated_administrator.html.markdown,r/organizations_account.html.markdown,r/opsworks_user_profile.html.markdown,r/opsworks_static_web_layer.html.markdown,r/opsworks_stack.html.markdown,r/opsworks_rds_db_instance.html.markdown,r/opsworks_rails_app_layer.html.markdown,r/opsworks_php_app_layer.html.markdown,r/opsworks_permission.html.markdown,r/opsworks_nodejs_app_layer.html.markdown,r/opsworks_mysql_layer.html.markdown,r/opsworks_memcached_layer.html.markdown,r/opsworks_java_app_layer.html.markdown,r/opsworks_instance.html.markdown,r/opsworks_haproxy_layer.html.markdown,r/opsworks_ganglia_layer.html.markdown,r/opsworks_ecs_cluster_layer.html.markdown,r/opsworks_custom_layer.html.markdown,r/opsworks_application.html.markdown,r/opensearchserverless_vpc_endpoint.html.markdown,r/opensearchserverless_security_policy.html.markdown,r/opensearchserverless_security_config.html.markdown,r/opensearchserverless_lifecycle_policy.html.markdown,r/opensearchserverless_collection.html.markdown,r/opensearchserverless_access_policy.html.markdown,r/opensearch_vpc_endpoint.html.markdown,r/opensearch_package_association.html.markdown,r/opensearch_package.html.markdown,r/opensearch_outbound_connection.html.markdown,r/opensearch_inbound_connection_accepter.html.markdown,r/opensearch_domain_saml_options.html.markdown,r/opensearch_domain_policy.html.markdown,r/opensearch_domain.html.markdown,r/opensearch_authorize_vpc_endpoint_access.html.markdown,r/oam_sink_policy.html.markdown,r/oam_sink.html.markdown,r/oam_link.html.markdown,r/networkmonitor_probe.html.markdown,r/networkmonitor_monitor.html.markdown,r/networkmanager_vpc_attachment.html.markdown,r/networkmanager_transit_gateway_route_table_attachment.html.markdown,r/networkmanager_transit_gateway_registration.html.markdown,r/networkmanager_transit_gateway_peering.html.markdown,r/networkmanager_transit_gateway_connect_peer_association.html.markdown,r/networkmanager_site_to_site_vpn_attachment.html.markdown,r/networkmanager_site.html.markdown,r/networkmanager_link_association.html.markdown,r/networkmanager_link.html.markdown,r/networkmanager_global_network.html.markdown,r/networkmanager_device.html.markdown,r/networkmanager_customer_gateway_association.html.markdown,r/networkmanager_core_network_policy_attachment.html.markdown,r/networkmanager_core_network.html.markdown,r/networkmanager_connection.html.markdown,r/networkmanager_connect_peer.html.markdown,r/networkmanager_connect_attachment.html.markdown,r/networkmanager_attachment_accepter.html.markdown,r/networkfirewall_tls_inspection_configuration.html.markdown,r/networkfirewall_rule_group.html.markdown,r/networkfirewall_resource_policy.html.markdown,r/networkfirewall_logging_configuration.html.markdown,r/networkfirewall_firewall_policy.html.markdown,r/networkfirewall_firewall.html.markdown,r/network_interface_sg_attachment.html.markdown,r/network_interface_attachment.html.markdown,r/network_interface.html.markdown,r/network_acl_rule.html.markdown,r/network_acl_association.html.markdown,r/network_acl.html.markdown,r/neptune_subnet_group.html.markdown,r/neptune_parameter_group.html.markdown,r/neptune_global_cluster.html.markdown,r/neptune_event_subscription.html.markdown,r/neptune_cluster_snapshot.html.markdown,r/neptune_cluster_parameter_group.html.markdown,r/neptune_cluster_instance.html.markdown,r/neptune_cluster_endpoint.html.markdown,r/neptune_cluster.html.markdown,r/nat_gateway.html.markdown,r/mwaa_environment.html.markdown,r/mskconnect_worker_configuration.html.markdown,r/mskconnect_custom_plugin.html.markdown,r/mskconnect_connector.html.markdown,r/msk_vpc_connection.html.markdown,r/msk_serverless_cluster.html.markdown,r/msk_scram_secret_association.html.markdown,r/msk_replicator.html.markdown,r/msk_configuration.html.markdown,r/msk_cluster_policy.html.markdown,r/msk_cluster.html.markdown,r/mq_configuration.html.markdown,r/mq_broker.html.markdown,r/memorydb_user.html.markdown,r/memorydb_subnet_group.html.markdown,r/memorydb_snapshot.html.markdown,r/memorydb_parameter_group.html.markdown,r/memorydb_cluster.html.markdown,r/memorydb_acl.html.markdown,r/medialive_multiplex_program.html.markdown,r/medialive_multiplex.html.markdown,r/medialive_input_security_group.html.markdown,r/medialive_input.html.markdown,r/medialive_channel.html.markdown,r/media_store_container_policy.html.markdown,r/media_store_container.html.markdown,r/media_package_channel.html.markdown,r/media_convert_queue.html.markdown,r/main_route_table_association.html.markdown,r/macie2_organization_admin_account.html.markdown,r/macie2_member.html.markdown,r/macie2_invitation_accepter.html.markdown,r/macie2_findings_filter.html.markdown,r/macie2_custom_data_identifier.html.markdown,r/macie2_classification_job.html.markdown,r/macie2_classification_export_configuration.html.markdown,r/macie2_account.html.markdown,r/m2_environment.html.markdown,r/m2_deployment.html.markdown,r/m2_application.html.markdown,r/location_tracker_association.html.markdown,r/location_tracker.html.markdown,r/location_route_calculator.html.markdown,r/location_place_index.html.markdown,r/location_map.html.markdown,r/location_geofence_collection.html.markdown,r/load_balancer_policy.html.markdown,r/load_balancer_listener_policy.html.markdown,r/load_balancer_backend_server_policy.html.markdown,r/lightsail_static_ip_attachment.html.markdown,r/lightsail_static_ip.html.markdown,r/lightsail_lb_stickiness_policy.html.markdown,r/lightsail_lb_https_redirection_policy.html.markdown,r/lightsail_lb_certificate_attachment.html.markdown,r/lightsail_lb_certificate.html.markdown,r/lightsail_lb_attachment.html.markdown,r/lightsail_lb.html.markdown,r/lightsail_key_pair.html.markdown,r/lightsail_instance_public_ports.html.markdown,r/lightsail_instance.html.markdown,r/lightsail_domain_entry.html.markdown,r/lightsail_domain.html.markdown,r/lightsail_distribution.html.markdown,r/lightsail_disk_attachment.html.markdown,r/lightsail_disk.html.markdown,r/lightsail_database.html.markdown,r/lightsail_container_service_deployment_version.html.markdown,r/lightsail_container_service.html.markdown,r/lightsail_certificate.html.markdown,r/lightsail_bucket_resource_access.html.markdown,r/lightsail_bucket_access_key.html.markdown,r/lightsail_bucket.html.markdown,r/licensemanager_license_configuration.html.markdown,r/licensemanager_grant_accepter.html.markdown,r/licensemanager_grant.html.markdown,r/licensemanager_association.html.markdown,r/lexv2models_slot_type.html.markdown,r/lexv2models_slot.html.markdown,r/lexv2models_intent.html.markdown,r/lexv2models_bot_version.html.markdown,r/lexv2models_bot_locale.html.markdown,r/lexv2models_bot.html.markdown,r/lex_slot_type.html.markdown,r/lex_intent.html.markdown,r/lex_bot_alias.html.markdown,r/lex_bot.html.markdown,r/lb_trust_store_revocation.html.markdown,r/lb_trust_store.html.markdown,r/lb_target_group_attachment.html.markdown,r/lb_target_group.html.markdown,r/lb_ssl_negotiation_policy.html.markdown,r/lb_listener_rule.html.markdown,r/lb_listener_certificate.html.markdown,r/lb_listener.html.markdown,r/lb_cookie_stickiness_policy.html.markdown,r/lb.html.markdown,r/launch_template.html.markdown,r/launch_configuration.html.markdown,r/lambda_runtime_management_config.html.markdown,r/lambda_provisioned_concurrency_config.html.markdown,r/lambda_permission.html.markdown,r/lambda_layer_version_permission.html.markdown,r/lambda_layer_version.html.markdown,r/lambda_invocation.html.markdown,r/lambda_function_url.html.markdown,r/lambda_function_recursion_config.html.markdown,r/lambda_function_event_invoke_config.html.markdown,r/lambda_function.html.markdown,r/lambda_event_source_mapping.html.markdown,r/lambda_code_signing_config.html.markdown,r/lambda_alias.html.markdown,r/lakeformation_resource_lf_tags.html.markdown,r/lakeformation_resource_lf_tag.html.markdown,r/lakeformation_resource.html.markdown,r/lakeformation_permissions.html.markdown,r/lakeformation_lf_tag.html.markdown,r/lakeformation_data_lake_settings.html.markdown,r/lakeformation_data_cells_filter.html.markdown,r/kms_replica_key.html.markdown,r/kms_replica_external_key.html.markdown,r/kms_key_policy.html.markdown,r/kms_key.html.markdown,r/kms_grant.html.markdown,r/kms_external_key.html.markdown,r/kms_custom_key_store.html.markdown,r/kms_ciphertext.html.markdown,r/kms_alias.html.markdown,r/kinesisanalyticsv2_application_snapshot.html.markdown,r/kinesisanalyticsv2_application.html.markdown,r/kinesis_video_stream.html.markdown,r/kinesis_stream_consumer.html.markdown,r/kinesis_stream.html.markdown,r/kinesis_resource_policy.html.markdown,r/kinesis_firehose_delivery_stream.html.markdown,r/kinesis_analytics_application.html.markdown,r/keyspaces_table.html.markdown,r/keyspaces_keyspace.html.markdown,r/key_pair.html.markdown,r/kendra_thesaurus.html.markdown,r/kendra_query_suggestions_block_list.html.markdown,r/kendra_index.html.markdown,r/kendra_faq.html.markdown,r/kendra_experience.html.markdown,r/kendra_data_source.html.markdown,r/ivschat_room.html.markdown,r/ivschat_logging_configuration.html.markdown,r/ivs_recording_configuration.html.markdown,r/ivs_playback_key_pair.html.markdown,r/ivs_channel.html.markdown,r/iot_topic_rule_destination.html.markdown,r/iot_topic_rule.html.markdown,r/iot_thing_type.html.markdown,r/iot_thing_principal_attachment.html.markdown,r/iot_thing_group_membership.html.markdown,r/iot_thing_group.html.markdown,r/iot_thing.html.markdown,r/iot_role_alias.html.markdown,r/iot_provisioning_template.html.markdown,r/iot_policy_attachment.html.markdown,r/iot_policy.html.markdown,r/iot_logging_options.html.markdown,r/iot_indexing_configuration.html.markdown,r/iot_event_configurations.html.markdown,r/iot_domain_configuration.html.markdown,r/iot_certificate.html.markdown,r/iot_ca_certificate.html.markdown,r/iot_billing_group.html.markdown,r/iot_authorizer.html.markdown,r/internetmonitor_monitor.html.markdown,r/internet_gateway_attachment.html.markdown,r/internet_gateway.html.markdown,r/instance.html.markdown,r/inspector_resource_group.html.markdown,r/inspector_assessment_template.html.markdown,r/inspector_assessment_target.html.markdown,r/inspector2_organization_configuration.html.markdown,r/inspector2_member_association.html.markdown,r/inspector2_enabler.html.markdown,r/inspector2_delegated_admin_account.html.markdown,r/imagebuilder_workflow.html.markdown,r/imagebuilder_lifecycle_policy.html.markdown,r/imagebuilder_infrastructure_configuration.html.markdown,r/imagebuilder_image_recipe.html.markdown,r/imagebuilder_image_pipeline.html.markdown,r/imagebuilder_image.html.markdown,r/imagebuilder_distribution_configuration.html.markdown,r/imagebuilder_container_recipe.html.markdown,r/imagebuilder_component.html.markdown,r/identitystore_user.html.markdown,r/identitystore_group_membership.html.markdown,r/identitystore_group.html.markdown,r/iam_virtual_mfa_device.html.markdown,r/iam_user_ssh_key.html.markdown,r/iam_user_policy_attachments_exclusive.html.markdown,r/iam_user_policy_attachment.html.markdown,r/iam_user_policy.html.markdown,r/iam_user_policies_exclusive.html.markdown,r/iam_user_login_profile.html.markdown,r/iam_user_group_membership.html.markdown,r/iam_user.html.markdown,r/iam_signing_certificate.html.markdown,r/iam_service_specific_credential.html.markdown,r/iam_service_linked_role.html.markdown,r/iam_server_certificate.html.markdown,r/iam_security_token_service_preferences.html.markdown,r/iam_saml_provider.html.markdown,r/iam_role_policy_attachments_exclusive.html.markdown,r/iam_role_policy_attachment.html.markdown,r/iam_role_policy.html.markdown,r/iam_role_policies_exclusive.html.markdown,r/iam_role.html.markdown,r/iam_policy_attachment.html.markdown,r/iam_policy.html.markdown,r/iam_openid_connect_provider.html.markdown,r/iam_instance_profile.html.markdown,r/iam_group_policy_attachments_exclusive.html.markdown,r/iam_group_policy_attachment.html.markdown,r/iam_group_policy.html.markdown,r/iam_group_policies_exclusive.html.markdown,r/iam_group_membership.html.markdown,r/iam_group.html.markdown,r/iam_account_password_policy.html.markdown,r/iam_account_alias.html.markdown,r/iam_access_key.html.markdown,r/guardduty_threatintelset.html.markdown,r/guardduty_publishing_destination.html.markdown,r/guardduty_organization_configuration_feature.html.markdown,r/guardduty_organization_configuration.html.markdown,r/guardduty_organization_admin_account.html.markdown,r/guardduty_member.html.markdown,r/guardduty_malware_protection_plan.html.markdown,r/guardduty_ipset.html.markdown,r/guardduty_invite_accepter.html.markdown,r/guardduty_filter.html.markdown,r/guardduty_detector_feature.html.markdown,r/guardduty_detector.html.markdown,r/grafana_workspace_service_account_token.html.markdown,r/grafana_workspace_service_account.html.markdown,r/grafana_workspace_saml_configuration.html.markdown,r/grafana_workspace_api_key.html.markdown,r/grafana_workspace.html.markdown,r/grafana_role_association.html.markdown,r/grafana_license_association.html.markdown,r/glue_workflow.html.markdown,r/glue_user_defined_function.html.markdown,r/glue_trigger.html.markdown,r/glue_security_configuration.html.markdown,r/glue_schema.html.markdown,r/glue_resource_policy.html.markdown,r/glue_registry.html.markdown,r/glue_partition_index.html.markdown,r/glue_partition.html.markdown,r/glue_ml_transform.html.markdown,r/glue_job.html.markdown,r/glue_dev_endpoint.html.markdown,r/glue_data_quality_ruleset.html.markdown,r/glue_data_catalog_encryption_settings.html.markdown,r/glue_crawler.html.markdown,r/glue_connection.html.markdown,r/glue_classifier.html.markdown,r/glue_catalog_table_optimizer.html.markdown,r/glue_catalog_table.html.markdown,r/glue_catalog_database.html.markdown,r/globalaccelerator_listener.html.markdown,r/globalaccelerator_endpoint_group.html.markdown,r/globalaccelerator_custom_routing_listener.html.markdown,r/globalaccelerator_custom_routing_endpoint_group.html.markdown,r/globalaccelerator_custom_routing_accelerator.html.markdown,r/globalaccelerator_cross_account_attachment.html.markdown,r/globalaccelerator_accelerator.html.markdown,r/glacier_vault_lock.html.markdown,r/glacier_vault.html.markdown,r/gamelift_script.html.markdown,r/gamelift_game_session_queue.html.markdown,r/gamelift_game_server_group.html.markdown,r/gamelift_fleet.html.markdown,r/gamelift_build.html.markdown,r/gamelift_alias.html.markdown,r/fsx_windows_file_system.html.markdown,r/fsx_openzfs_volume.html.markdown,r/fsx_openzfs_snapshot.html.markdown,r/fsx_openzfs_file_system.html.markdown,r/fsx_ontap_volume.html.markdown,r/fsx_ontap_storage_virtual_machine.html.markdown,r/fsx_ontap_file_system.html.markdown,r/fsx_lustre_file_system.html.markdown,r/fsx_file_cache.html.markdown,r/fsx_data_repository_association.html.markdown,r/fsx_backup.html.markdown,r/fms_resource_set.html.markdown,r/fms_policy.html.markdown,r/fms_admin_account.html.markdown,r/flow_log.html.markdown,r/fis_experiment_template.html.markdown,r/finspace_kx_volume.html.markdown,r/finspace_kx_user.html.markdown,r/finspace_kx_scaling_group.html.markdown,r/finspace_kx_environment.html.markdown,r/finspace_kx_dataview.html.markdown,r/finspace_kx_database.html.markdown,r/finspace_kx_cluster.html.markdown,r/evidently_segment.html.markdown,r/evidently_project.html.markdown,r/evidently_launch.html.markdown,r/evidently_feature.html.markdown,r/emrserverless_application.html.markdown,r/emrcontainers_virtual_cluster.html.markdown,r/emrcontainers_job_template.html.markdown,r/emr_studio_session_mapping.html.markdown,r/emr_studio.html.markdown,r/emr_security_configuration.html.markdown,r/emr_managed_scaling_policy.html.markdown,r/emr_instance_group.html.markdown,r/emr_instance_fleet.html.markdown,r/emr_cluster.html.markdown,r/emr_block_public_access_configuration.html.markdown,r/elb_attachment.html.markdown,r/elb.html.markdown,r/elastictranscoder_preset.html.markdown,r/elastictranscoder_pipeline.html.markdown,r/elasticsearch_vpc_endpoint.html.markdown,r/elasticsearch_domain_saml_options.html.markdown,r/elasticsearch_domain_policy.html.markdown,r/elasticsearch_domain.html.markdown,r/elasticache_user_group_association.html.markdown,r/elasticache_user_group.html.markdown,r/elasticache_user.html.markdown,r/elasticache_subnet_group.html.markdown,r/elasticache_serverless_cache.html.markdown,r/elasticache_reserved_cache_node.html.markdown,r/elasticache_replication_group.html.markdown,r/elasticache_parameter_group.html.markdown,r/elasticache_global_replication_group.html.markdown,r/elasticache_cluster.html.markdown,r/elastic_beanstalk_environment.html.markdown,r/elastic_beanstalk_configuration_template.html.markdown,r/elastic_beanstalk_application_version.html.markdown,r/elastic_beanstalk_application.html.markdown,r/eks_pod_identity_association.html.markdown,r/eks_node_group.html.markdown,r/eks_identity_provider_config.html.markdown,r/eks_fargate_profile.html.markdown,r/eks_cluster.html.markdown,r/eks_addon.html.markdown,r/eks_access_policy_association.html.markdown,r/eks_access_entry.html.markdown,r/eip_domain_name.html.markdown,r/eip_association.html.markdown,r/eip.html.markdown,r/egress_only_internet_gateway.html.markdown,r/efs_replication_configuration.html.markdown,r/efs_mount_target.html.markdown,r/efs_file_system_policy.html.markdown,r/efs_file_system.html.markdown,r/efs_backup_policy.html.markdown,r/efs_access_point.html.markdown,r/ecs_task_set.html.markdown,r/ecs_task_definition.html.markdown,r/ecs_tag.html.markdown,r/ecs_service.html.markdown,r/ecs_cluster_capacity_providers.html.markdown,r/ecs_cluster.html.markdown,r/ecs_capacity_provider.html.markdown,r/ecs_account_setting_default.html.markdown,r/ecrpublic_repository_policy.html.markdown,r/ecrpublic_repository.html.markdown,r/ecr_repository_policy.html.markdown,r/ecr_repository_creation_template.html.markdown,r/ecr_repository.html.markdown,r/ecr_replication_configuration.html.markdown,r/ecr_registry_scanning_configuration.html.markdown,r/ecr_registry_policy.html.markdown,r/ecr_pull_through_cache_rule.html.markdown,r/ecr_lifecycle_policy.html.markdown,r/ec2_transit_gateway_vpc_attachment_accepter.html.markdown,r/ec2_transit_gateway_vpc_attachment.html.markdown,r/ec2_transit_gateway_route_table_propagation.html.markdown,r/ec2_transit_gateway_route_table_association.html.markdown,r/ec2_transit_gateway_route_table.html.markdown,r/ec2_transit_gateway_route.html.markdown,r/ec2_transit_gateway_prefix_list_reference.html.markdown,r/ec2_transit_gateway_policy_table_association.html.markdown,r/ec2_transit_gateway_policy_table.html.markdown,r/ec2_transit_gateway_peering_attachment_accepter.html.markdown,r/ec2_transit_gateway_peering_attachment.html.markdown,r/ec2_transit_gateway_multicast_group_source.html.markdown,r/ec2_transit_gateway_multicast_group_member.html.markdown,r/ec2_transit_gateway_multicast_domain_association.html.markdown,r/ec2_transit_gateway_multicast_domain.html.markdown,r/ec2_transit_gateway_default_route_table_propagation.html.markdown,r/ec2_transit_gateway_default_route_table_association.html.markdown,r/ec2_transit_gateway_connect_peer.html.markdown,r/ec2_transit_gateway_connect.html.markdown,r/ec2_transit_gateway.html.markdown,r/ec2_traffic_mirror_target.html.markdown,r/ec2_traffic_mirror_session.html.markdown,r/ec2_traffic_mirror_filter_rule.html.markdown,r/ec2_traffic_mirror_filter.html.markdown,r/ec2_tag.html.markdown,r/ec2_subnet_cidr_reservation.html.markdown,r/ec2_serial_console_access.html.markdown,r/ec2_network_insights_path.html.markdown,r/ec2_network_insights_analysis.html.markdown,r/ec2_managed_prefix_list_entry.html.markdown,r/ec2_managed_prefix_list.html.markdown,r/ec2_local_gateway_route_table_vpc_association.html.markdown,r/ec2_local_gateway_route.html.markdown,r/ec2_instance_state.html.markdown,r/ec2_instance_metadata_defaults.html.markdown,r/ec2_instance_connect_endpoint.html.markdown,r/ec2_image_block_public_access.markdown,r/ec2_host.html.markdown,r/ec2_fleet.html.markdown,r/ec2_client_vpn_route.html.markdown,r/ec2_client_vpn_network_association.html.markdown,r/ec2_client_vpn_endpoint.html.markdown,r/ec2_client_vpn_authorization_rule.html.markdown,r/ec2_carrier_gateway.html.markdown,r/ec2_capacity_reservation.html.markdown,r/ec2_capacity_block_reservation.html.markdown,r/ec2_availability_zone_group.html.markdown,r/ebs_volume.html.markdown,r/ebs_snapshot_import.html.markdown,r/ebs_snapshot_copy.html.markdown,r/ebs_snapshot_block_public_access.html.markdown,r/ebs_snapshot.html.markdown,r/ebs_fast_snapshot_restore.html.markdown,r/ebs_encryption_by_default.html.markdown,r/ebs_default_kms_key.html.markdown,r/dynamodb_tag.html.markdown,r/dynamodb_table_replica.html.markdown,r/dynamodb_table_item.html.markdown,r/dynamodb_table_export.html.markdown,r/dynamodb_table.html.markdown,r/dynamodb_resource_policy.html.markdown,r/dynamodb_kinesis_streaming_destination.html.markdown,r/dynamodb_global_table.html.markdown,r/dynamodb_contributor_insights.html.markdown,r/dx_transit_virtual_interface.html.markdown,r/dx_public_virtual_interface.html.markdown,r/dx_private_virtual_interface.html.markdown,r/dx_macsec_key_association.html.markdown,r/dx_lag.html.markdown,r/dx_hosted_transit_virtual_interface_accepter.html.markdown,r/dx_hosted_transit_virtual_interface.html.markdown,r/dx_hosted_public_virtual_interface_accepter.html.markdown,r/dx_hosted_public_virtual_interface.html.markdown,r/dx_hosted_private_virtual_interface_accepter.html.markdown,r/dx_hosted_private_virtual_interface.html.markdown,r/dx_hosted_connection.html.markdown,r/dx_gateway_association_proposal.html.markdown,r/dx_gateway_association.html.markdown,r/dx_gateway.html.markdown,r/dx_connection_confirmation.html.markdown,r/dx_connection_association.html.markdown,r/dx_connection.html.markdown,r/dx_bgp_peer.html.markdown,r/drs_replication_configuration_template.html.markdown,r/docdbelastic_cluster.html.markdown,r/docdb_subnet_group.html.markdown,r/docdb_global_cluster.html.markdown,r/docdb_event_subscription.html.markdown,r/docdb_cluster_snapshot.html.markdown,r/docdb_cluster_parameter_group.html.markdown,r/docdb_cluster_instance.html.markdown,r/docdb_cluster.html.markdown,r/dms_s3_endpoint.html.markdown,r/dms_replication_task.html.markdown,r/dms_replication_subnet_group.html.markdown,r/dms_replication_instance.html.markdown,r/dms_replication_config.html.markdown,r/dms_event_subscription.html.markdown,r/dms_endpoint.html.markdown,r/dms_certificate.html.markdown,r/dlm_lifecycle_policy.html.markdown,r/directory_service_trust.html.markdown,r/directory_service_shared_directory_accepter.html.markdown,r/directory_service_shared_directory.html.markdown,r/directory_service_region.html.markdown,r/directory_service_radius_settings.html.markdown,r/directory_service_log_subscription.html.markdown,r/directory_service_directory.html.markdown,r/directory_service_conditional_forwarder.html.markdown,r/devopsguru_service_integration.html.markdown,r/devopsguru_resource_collection.html.markdown,r/devopsguru_notification_channel.html.markdown,r/devopsguru_event_sources_config.html.markdown,r/devicefarm_upload.html.markdown,r/devicefarm_test_grid_project.html.markdown,r/devicefarm_project.html.markdown,r/devicefarm_network_profile.html.markdown,r/devicefarm_instance_profile.html.markdown,r/devicefarm_device_pool.html.markdown,r/detective_organization_configuration.html.markdown,r/detective_organization_admin_account.html.markdown,r/detective_member.html.markdown,r/detective_invitation_accepter.html.markdown,r/detective_graph.html.markdown,r/default_vpc_dhcp_options.html.markdown,r/default_vpc.html.markdown,r/default_subnet.html.markdown,r/default_security_group.html.markdown,r/default_route_table.html.markdown,r/default_network_acl.html.markdown,r/db_subnet_group.html.markdown,r/db_snapshot_copy.html.markdown,r/db_snapshot.html.markdown,r/db_proxy_target.html.markdown,r/db_proxy_endpoint.html.markdown,r/db_proxy_default_target_group.html.markdown,r/db_proxy.html.markdown,r/db_parameter_group.html.markdown,r/db_option_group.html.markdown,r/db_instance_role_association.html.markdown,r/db_instance_automated_backups_replication.html.markdown,r/db_instance.html.markdown,r/db_event_subscription.html.markdown,r/db_cluster_snapshot.html.markdown,r/dax_subnet_group.html.markdown,r/dax_parameter_group.html.markdown,r/dax_cluster.html.markdown,r/datazone_user_profile.html.markdown,r/datazone_project.html.markdown,r/datazone_glossary_term.html.markdown,r/datazone_glossary.html.markdown,r/datazone_form_type.html.markdown,r/datazone_environment_profile.html.markdown,r/datazone_environment_blueprint_configuration.html.markdown,r/datazone_environment.html.markdown,r/datazone_domain.html.markdown,r/datazone_asset_type.html.markdown,r/datasync_task.html.markdown,r/datasync_location_smb.html.markdown,r/datasync_location_s3.html.markdown,r/datasync_location_object_storage.html.markdown,r/datasync_location_nfs.html.markdown,r/datasync_location_hdfs.html.markdown,r/datasync_location_fsx_windows_file_system.html.markdown,r/datasync_location_fsx_openzfs_file_system.html.markdown,r/datasync_location_fsx_ontap_file_system.html.markdown,r/datasync_location_fsx_lustre_file_system.html.markdown,r/datasync_location_efs.html.markdown,r/datasync_location_azure_blob.html.markdown,r/datasync_agent.html.markdown,r/datapipeline_pipeline_definition.html.markdown,r/datapipeline_pipeline.html.markdown,r/dataexchange_revision.html.markdown,r/dataexchange_data_set.html.markdown,r/customerprofiles_profile.html.markdown,r/customerprofiles_domain.html.markdown,r/customer_gateway.html.markdown,r/cur_report_definition.html.markdown,r/costoptimizationhub_preferences.html.markdown,r/costoptimizationhub_enrollment_status.html.markdown,r/controltower_landing_zone.html.markdown,r/controltower_control.html.markdown,r/connect_vocabulary.html.markdown,r/connect_user_hierarchy_structure.html.markdown,r/connect_user_hierarchy_group.html.markdown,r/connect_user.html.markdown,r/connect_security_profile.html.markdown,r/connect_routing_profile.html.markdown,r/connect_quick_connect.html.markdown,r/connect_queue.html.markdown,r/connect_phone_number.html.markdown,r/connect_lambda_function_association.html.markdown,r/connect_instance_storage_config.html.markdown,r/connect_instance.html.markdown,r/connect_hours_of_operation.html.markdown,r/connect_contact_flow_module.html.markdown,r/connect_contact_flow.html.markdown,r/connect_bot_association.html.markdown,r/config_retention_configuration.html.markdown,r/config_remediation_configuration.html.markdown,r/config_organization_managed_rule.html.markdown,r/config_organization_custom_rule.html.markdown,r/config_organization_custom_policy_rule.html.markdown,r/config_organization_conformance_pack.html.markdown,r/config_delivery_channel.html.markdown,r/config_conformance_pack.html.markdown,r/config_configuration_recorder_status.html.markdown,r/config_configuration_recorder.html.markdown,r/config_configuration_aggregator.html.markdown,r/config_config_rule.html.markdown,r/config_aggregate_authorization.html.markdown,r/computeoptimizer_recommendation_preferences.html.markdown,r/computeoptimizer_enrollment_status.html.markdown,r/comprehend_entity_recognizer.html.markdown,r/comprehend_document_classifier.html.markdown,r/cognito_user_pool_ui_customization.html.markdown,r/cognito_user_pool_domain.html.markdown,r/cognito_user_pool_client.html.markdown,r/cognito_user_pool.html.markdown,r/cognito_user_in_group.html.markdown,r/cognito_user_group.html.markdown,r/cognito_user.html.markdown,r/cognito_risk_configuration.html.markdown,r/cognito_resource_server.html.markdown,r/cognito_managed_user_pool_client.html.markdown,r/cognito_identity_provider.html.markdown,r/cognito_identity_pool_roles_attachment.html.markdown,r/cognito_identity_pool_provider_principal_tag.html.markdown,r/cognito_identity_pool.html.markdown,r/codestarnotifications_notification_rule.html.markdown,r/codestarconnections_host.html.markdown,r/codestarconnections_connection.html.markdown,r/codepipeline_webhook.html.markdown,r/codepipeline_custom_action_type.html.markdown,r/codepipeline.html.markdown,r/codegurureviewer_repository_association.html.markdown,r/codeguruprofiler_profiling_group.html.markdown,r/codedeploy_deployment_group.html.markdown,r/codedeploy_deployment_config.html.markdown,r/codedeploy_app.html.markdown,r/codecommit_trigger.html.markdown,r/codecommit_repository.html.markdown,r/codecommit_approval_rule_template_association.html.markdown,r/codecommit_approval_rule_template.html.markdown,r/codecatalyst_source_repository.html.markdown,r/codecatalyst_project.html.markdown,r/codecatalyst_dev_environment.html.markdown,r/codebuild_webhook.html.markdown,r/codebuild_source_credential.html.markdown,r/codebuild_resource_policy.html.markdown,r/codebuild_report_group.html.markdown,r/codebuild_project.html.markdown,r/codebuild_fleet.html.markdown,r/codeartifact_repository_permissions_policy.html.markdown,r/codeartifact_repository.html.markdown,r/codeartifact_domain_permissions_policy.html.markdown,r/codeartifact_domain.html.markdown,r/cloudwatch_query_definition.html.markdown,r/cloudwatch_metric_stream.html.markdown,r/cloudwatch_metric_alarm.html.markdown,r/cloudwatch_log_subscription_filter.html.markdown,r/cloudwatch_log_stream.html.markdown,r/cloudwatch_log_resource_policy.html.markdown,r/cloudwatch_log_metric_filter.html.markdown,r/cloudwatch_log_group.html.markdown,r/cloudwatch_log_destination_policy.html.markdown,r/cloudwatch_log_destination.html.markdown,r/cloudwatch_log_data_protection_policy.html.markdown,r/cloudwatch_log_account_policy.html.markdown,r/cloudwatch_event_target.html.markdown,r/cloudwatch_event_rule.html.markdown,r/cloudwatch_event_permission.html.markdown,r/cloudwatch_event_endpoint.html.markdown,r/cloudwatch_event_connection.html.markdown,r/cloudwatch_event_bus_policy.html.markdown,r/cloudwatch_event_bus.html.markdown,r/cloudwatch_event_archive.html.markdown,r/cloudwatch_event_api_destination.html.markdown,r/cloudwatch_dashboard.html.markdown,r/cloudwatch_composite_alarm.html.markdown,r/cloudtrail_organization_delegated_admin_account.html.markdown,r/cloudtrail_event_data_store.html.markdown,r/cloudtrail.html.markdown,r/cloudsearch_domain_service_access_policy.html.markdown,r/cloudsearch_domain.html.markdown,r/cloudhsm_v2_hsm.html.markdown,r/cloudhsm_v2_cluster.html.markdown,r/cloudfrontkeyvaluestore_key.html.markdown,r/cloudfront_response_headers_policy.html.markdown,r/cloudfront_realtime_log_config.html.markdown,r/cloudfront_public_key.html.markdown,r/cloudfront_origin_request_policy.html.markdown,r/cloudfront_origin_access_identity.html.markdown,r/cloudfront_origin_access_control.html.markdown,r/cloudfront_monitoring_subscription.html.markdown,r/cloudfront_key_value_store.html.markdown,r/cloudfront_key_group.html.markdown,r/cloudfront_function.html.markdown,r/cloudfront_field_level_encryption_profile.html.markdown,r/cloudfront_field_level_encryption_config.html.markdown,r/cloudfront_distribution.html.markdown,r/cloudfront_continuous_deployment_policy.html.markdown,r/cloudfront_cache_policy.html.markdown,r/cloudformation_type.html.markdown,r/cloudformation_stack_set_instance.html.markdown,r/cloudformation_stack_set.html.markdown,r/cloudformation_stack_instances.html.markdown,r/cloudformation_stack.html.markdown,r/cloudcontrolapi_resource.html.markdown,r/cloud9_environment_membership.html.markdown,r/cloud9_environment_ec2.html.markdown,r/cleanrooms_configured_table.html.markdown,r/cleanrooms_collaboration.html.markdown,r/chimesdkvoice_voice_profile_domain.html.markdown,r/chimesdkvoice_sip_rule.html.markdown,r/chimesdkvoice_sip_media_application.html.markdown,r/chimesdkvoice_global_settings.html.markdown,r/chimesdkmediapipelines_media_insights_pipeline_configuration.html.markdown,r/chime_voice_connector_termination_credentials.html.markdown,r/chime_voice_connector_termination.html.markdown,r/chime_voice_connector_streaming.html.markdown,r/chime_voice_connector_origination.html.markdown,r/chime_voice_connector_logging.html.markdown,r/chime_voice_connector_group.html.markdown,r/chime_voice_connector.html.markdown,r/chatbot_teams_channel_configuration.html.markdown,r/chatbot_slack_channel_configuration.html.markdown,r/ce_cost_category.html.markdown,r/ce_cost_allocation_tag.html.markdown,r/ce_anomaly_subscription.html.markdown,r/ce_anomaly_monitor.html.markdown,r/budgets_budget_action.html.markdown,r/budgets_budget.html.markdown,r/bedrockagent_knowledge_base.html.markdown,r/bedrockagent_data_source.html.markdown,r/bedrockagent_agent_knowledge_base_association.html.markdown,r/bedrockagent_agent_alias.html.markdown,r/bedrockagent_agent_action_group.html.markdown,r/bedrockagent_agent.html.markdown,r/bedrock_provisioned_model_throughput.html.markdown,r/bedrock_model_invocation_logging_configuration.html.markdown,r/bedrock_guardrail_version.html.markdown,r/bedrock_guardrail.html.markdown,r/bedrock_custom_model.html.markdown,r/bcmdataexports_export.html.markdown,r/batch_scheduling_policy.html.markdown,r/batch_job_queue.html.markdown,r/batch_job_definition.html.markdown,r/batch_compute_environment.html.markdown,r/backup_vault_policy.html.markdown,r/backup_vault_notifications.html.markdown,r/backup_vault_lock_configuration.html.markdown,r/backup_vault.html.markdown,r/backup_selection.html.markdown,r/backup_restore_testing_selection.html.markdown,r/backup_restore_testing_plan.html.markdown,r/backup_report_plan.html.markdown,r/backup_region_settings.html.markdown,r/backup_plan.html.markdown,r/backup_logically_air_gapped_vault.html.markdown,r/backup_global_settings.html.markdown,r/backup_framework.html.markdown,r/autoscalingplans_scaling_plan.html.markdown,r/autoscaling_traffic_source_attachment.html.markdown,r/autoscaling_schedule.html.markdown,r/autoscaling_policy.html.markdown,r/autoscaling_notification.html.markdown,r/autoscaling_lifecycle_hook.html.markdown,r/autoscaling_group_tag.html.markdown,r/autoscaling_group.html.markdown,r/autoscaling_attachment.html.markdown,r/auditmanager_organization_admin_account_registration.html.markdown,r/auditmanager_framework_share.html.markdown,r/auditmanager_framework.html.markdown,r/auditmanager_control.html.markdown,r/auditmanager_assessment_report.html.markdown,r/auditmanager_assessment_delegation.html.markdown,r/auditmanager_assessment.html.markdown,r/auditmanager_account_registration.html.markdown,r/athena_workgroup.html.markdown,r/athena_prepared_statement.html.markdown,r/athena_named_query.html.markdown,r/athena_database.html.markdown,r/athena_data_catalog.html.markdown,r/appsync_type.html.markdown,r/appsync_source_api_association.html.markdown,r/appsync_resolver.html.markdown,r/appsync_graphql_api.html.markdown,r/appsync_function.html.markdown,r/appsync_domain_name_api_association.html.markdown,r/appsync_domain_name.html.markdown,r/appsync_datasource.html.markdown,r/appsync_api_key.html.markdown,r/appsync_api_cache.html.markdown,r/appstream_user_stack_association.html.markdown,r/appstream_user.html.markdown,r/appstream_stack.html.markdown,r/appstream_image_builder.html.markdown,r/appstream_fleet_stack_association.html.markdown,r/appstream_fleet.html.markdown,r/appstream_directory_config.html.markdown,r/apprunner_vpc_ingress_connection.html.markdown,r/apprunner_vpc_connector.html.markdown,r/apprunner_service.html.markdown,r/apprunner_observability_configuration.html.markdown,r/apprunner_deployment.html.markdown,r/apprunner_default_auto_scaling_configuration_version.html.markdown,r/apprunner_custom_domain_association.html.markdown,r/apprunner_connection.html.markdown,r/apprunner_auto_scaling_configuration_version.html.markdown,r/appmesh_virtual_service.html.markdown,r/appmesh_virtual_router.html.markdown,r/appmesh_virtual_node.html.markdown,r/appmesh_virtual_gateway.html.markdown,r/appmesh_route.html.markdown,r/appmesh_mesh.html.markdown,r/appmesh_gateway_route.html.markdown,r/applicationinsights_application.html.markdown,r/appintegrations_event_integration.html.markdown,r/appintegrations_data_integration.html.markdown,r/appflow_flow.html.markdown,r/appflow_connector_profile.html.markdown,r/appfabric_ingestion_destination.html.markdown,r/appfabric_ingestion.html.markdown,r/appfabric_app_bundle.html.markdown,r/appfabric_app_authorization_connection.html.markdown,r/appfabric_app_authorization.html.markdown,r/appconfig_hosted_configuration_version.html.markdown,r/appconfig_extension_association.html.markdown,r/appconfig_extension.html.markdown,r/appconfig_environment.html.markdown,r/appconfig_deployment_strategy.html.markdown,r/appconfig_deployment.html.markdown,r/appconfig_configuration_profile.html.markdown,r/appconfig_application.html.markdown,r/appautoscaling_target.html.markdown,r/appautoscaling_scheduled_action.html.markdown,r/appautoscaling_policy.html.markdown,r/app_cookie_stickiness_policy.html.markdown,r/apigatewayv2_vpc_link.html.markdown,r/apigatewayv2_stage.html.markdown,r/apigatewayv2_route_response.html.markdown,r/apigatewayv2_route.html.markdown,r/apigatewayv2_model.html.markdown,r/apigatewayv2_integration_response.html.markdown,r/apigatewayv2_integration.html.markdown,r/apigatewayv2_domain_name.html.markdown,r/apigatewayv2_deployment.html.markdown,r/apigatewayv2_authorizer.html.markdown,r/apigatewayv2_api_mapping.html.markdown,r/apigatewayv2_api.html.markdown,r/api_gateway_vpc_link.html.markdown,r/api_gateway_usage_plan_key.html.markdown,r/api_gateway_usage_plan.html.markdown,r/api_gateway_stage.html.markdown,r/api_gateway_rest_api_policy.html.markdown,r/api_gateway_rest_api.html.markdown,r/api_gateway_resource.html.markdown,r/api_gateway_request_validator.html.markdown,r/api_gateway_model.html.markdown,r/api_gateway_method_settings.html.markdown,r/api_gateway_method_response.html.markdown,r/api_gateway_method.html.markdown,r/api_gateway_integration_response.html.markdown,r/api_gateway_integration.html.markdown,r/api_gateway_gateway_response.html.markdown,r/api_gateway_domain_name.html.markdown,r/api_gateway_documentation_version.html.markdown,r/api_gateway_documentation_part.html.markdown,r/api_gateway_deployment.html.markdown,r/api_gateway_client_certificate.html.markdown,r/api_gateway_base_path_mapping.html.markdown,r/api_gateway_authorizer.html.markdown,r/api_gateway_api_key.html.markdown,r/api_gateway_account.html.markdown,r/amplify_webhook.html.markdown,r/amplify_domain_association.html.markdown,r/amplify_branch.html.markdown,r/amplify_backend_environment.html.markdown,r/amplify_app.html.markdown,r/ami_launch_permission.html.markdown,r/ami_from_instance.html.markdown,r/ami_copy.html.markdown,r/ami.html.markdown,r/acmpca_policy.html.markdown,r/acmpca_permission.html.markdown,r/acmpca_certificate_authority_certificate.html.markdown,r/acmpca_certificate_authority.html.markdown,r/acmpca_certificate.html.markdown,r/acm_certificate_validation.html.markdown,r/acm_certificate.html.markdown,r/account_region.markdown,r/account_primary_contact.html.markdown,r/account_alternate_contact.html.markdown,r/accessanalyzer_archive_rule.html.markdown,r/accessanalyzer_analyzer.html.markdown,guides/version-5-upgrade.html.markdown,guides/version-4-upgrade.html.markdown,guides/version-3-upgrade.html.markdown,guides/version-2-upgrade.html.markdown,guides/using-aws-with-awscc-provider.html.markdown,guides/resource-tagging.html.markdown,guides/custom-service-endpoints.html.markdown,guides/continuous-validation-examples.html.markdown,functions/trim_iam_role_path.html.markdown,functions/arn_parse.html.markdown,functions/arn_build.html.markdown,ephemeral-resources/secretsmanager_secret_version.html.markdown,ephemeral-resources/lambda_invocation.html.markdown,ephemeral-resources/kms_secrets.html.markdown,d/workspaces_workspace.html.markdown,d/workspaces_image.html.markdown,d/workspaces_directory.html.markdown,d/workspaces_bundle.html.markdown,d/wafv2_web_acl.html.markdown,d/wafv2_rule_group.html.markdown,d/wafv2_regex_pattern_set.html.markdown,d/wafv2_ip_set.html.markdown,d/wafregional_web_acl.html.markdown,d/wafregional_subscribed_rule_group.html.markdown,d/wafregional_rule.html.markdown,d/wafregional_rate_based_rule.html.markdown,d/wafregional_ipset.html.markdown,d/waf_web_acl.html.markdown,d/waf_subscribed_rule_group.html.markdown,d/waf_rule.html.markdown,d/waf_rate_based_rule.html.markdown,d/waf_ipset.html.markdown,d/vpn_gateway.html.markdown,d/vpcs.html.markdown,d/vpclattice_service_network.html.markdown,d/vpclattice_service.html.markdown,d/vpclattice_resource_policy.html.markdown,d/vpclattice_listener.html.markdown,d/vpclattice_auth_policy.html.markdown,d/vpc_security_group_rules.html.markdown,d/vpc_security_group_rule.html.markdown,d/vpc_peering_connections.html.markdown,d/vpc_peering_connection.html.markdown,d/vpc_ipam_preview_next_cidr.html.markdown,d/vpc_ipam_pools.html.markdown,d/vpc_ipam_pool_cidrs.html.markdown,d/vpc_ipam_pool.html.markdown,d/vpc_endpoint_service.html.markdown,d/vpc_endpoint.html.markdown,d/vpc_dhcp_options.html.markdown,d/vpc.html.markdown,d/verifiedpermissions_policy_store.html.markdown,d/transfer_server.html.markdown,d/transfer_connector.html.markdown,d/timestreamwrite_table.html.markdown,d/timestreamwrite_database.html.markdown,d/synthetics_runtime_versions.html.markdown,d/synthetics_runtime_version.html.markdown,d/subnets.html.markdown,d/subnet.html.markdown,d/storagegateway_local_disk.html.markdown,d/ssoadmin_principal_application_assignments.html.markdown,d/ssoadmin_permission_sets.html.markdown,d/ssoadmin_permission_set.html.markdown,d/ssoadmin_instances.html.markdown,d/ssoadmin_application_providers.html.markdown,d/ssoadmin_application_assignments.html.markdown,d/ssoadmin_application.html.markdown,d/ssmincidents_response_plan.html.markdown,d/ssmincidents_replication_set.html.markdown,d/ssmcontacts_rotation.html.markdown,d/ssmcontacts_plan.html.markdown,d/ssmcontacts_contact_channel.html.markdown,d/ssmcontacts_contact.html.markdown,d/ssm_patch_baselines.html.markdown,d/ssm_patch_baseline.html.markdown,d/ssm_parameters_by_path.html.markdown,d/ssm_parameter.html.markdown,d/ssm_maintenance_windows.html.markdown,d/ssm_instances.html.markdown,d/ssm_document.html.markdown,d/sqs_queues.html.markdown,d/sqs_queue.html.markdown,d/spot_datafeed_subscription.html.markdown,d/sns_topic.html.markdown,d/signer_signing_profile.html.markdown,d/signer_signing_job.html.markdown,d/shield_protection.html.markdown,d/sfn_state_machine_versions.html.markdown,d/sfn_state_machine.html.markdown,d/sfn_alias.html.markdown,d/sfn_activity.html.markdown,d/sesv2_email_identity_mail_from_attributes.html.markdown,d/sesv2_email_identity.html.markdown,d/sesv2_dedicated_ip_pool.html.markdown,d/sesv2_configuration_set.html.markdown,d/ses_email_identity.html.markdown,d/ses_domain_identity.html.markdown,d/ses_active_receipt_rule_set.html.markdown,d/servicequotas_templates.html.markdown,d/servicequotas_service_quota.html.markdown,d/servicequotas_service.html.markdown,d/servicecatalogappregistry_application.html.markdown,d/servicecatalog_provisioning_artifacts.html.markdown,d/servicecatalog_product.html.markdown,d/servicecatalog_portfolio_constraints.html.markdown,d/servicecatalog_portfolio.html.markdown,d/servicecatalog_launch_paths.html.markdown,d/servicecatalog_constraint.html.markdown,d/service_principal.html.markdown,d/service_discovery_service.html.markdown,d/service_discovery_http_namespace.html.markdown,d/service_discovery_dns_namespace.html.markdown,d/service.html.markdown,d/serverlessapplicationrepository_application.html.markdown,d/securityhub_standards_control_associations.html.markdown,d/security_groups.html.markdown,d/security_group.html.markdown,d/secretsmanager_secrets.html.markdown,d/secretsmanager_secret_versions.html.markdown,d/secretsmanager_secret_version.html.markdown,d/secretsmanager_secret_rotation.html.markdown,d/secretsmanager_secret.html.markdown,d/secretsmanager_random_password.html.markdown,d/sagemaker_prebuilt_ecr_image.html.markdown,d/s3control_multi_region_access_point.html.markdown,d/s3_objects.html.markdown,d/s3_object.html.markdown,d/s3_directory_buckets.html.markdown,d/s3_bucket_policy.html.markdown,d/s3_bucket_objects.html.markdown,d/s3_bucket_object.html.markdown,d/s3_bucket.html.markdown,d/s3_account_public_access_block.html.markdown,d/route_tables.html.markdown,d/route_table.html.markdown,d/route53profiles_profiles.html.markdown,d/route53_zones.html.markdown,d/route53_zone.html.markdown,d/route53_traffic_policy_document.html.markdown,d/route53_resolver_rules.html.markdown,d/route53_resolver_rule.html.markdown,d/route53_resolver_query_log_config.html.markdown,d/route53_resolver_firewall_rules.html.markdown,d/route53… * r/aws_memorydb_subnet_group: Standardize. * d/aws_memorydb_subnet_group: Transparent tagging. * aws_chatbot_teams_channel_configuration: use autoflex HasChanges * aws_chatbot_teams_channel_configuration: use autoflex custom types * aws_chatbot_teams_channel_configuration: use setTagsOut * aws_chatbot_slack_channel_configuration: use setTagsOut * add CHANGELOG entry * r/aws_memorydb_user: Standardize. * d/aws_memorydb_user: Transparent tagging. * Fix golangci-lint 'unparam'. * Fix golangci-lint 'staticcheck'. * Fix tfproviderdocs errors. * Update CHANGELOG.md for #40291 * Fix 'TestParameterChanges'. * 'aws_iam_organization_features' -> 'aws_iam_organizations_features'. * 'PreCheckOrganizationsTrustedServicePrincipalAccess' -> 'PreCheckOrganizationsEnabledServicePrincipal'. * r/aws_iam_organizations_features: Tidy up. * Fix typos. * Converts `content_policy_config.filters_config` to Set * Bump github.com/golangci/golangci-lint in /.ci/tools Bumps [github.com/golangci/golangci-lint](https://github.com/golangci/golangci-lint) from 1.62.0 to 1.62.2. - [Release notes](https://github.com/golangci/golangci-lint/releases) - [Changelog](https://github.com/golangci/golangci-lint/blob/master/CHANGELOG.md) - [Commits](https://github.com/golangci/golangci-lint/compare/v1.62.0...v1.62.2) --- updated-dependencies: - dependency-name: github.com/golangci/golangci-lint dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * Bump the aws-sdk-go-v2 group across 1 directory with 4 updates Bumps the aws-sdk-go-v2 group with 3 updates in the / directory: [github.com/aws/aws-sdk-go-v2/feature/s3/manager](https://github.com/aws/aws-sdk-go-v2), [github.com/aws/aws-sdk-go-v2/service/directconnect](https://github.com/aws/aws-sdk-go-v2) and [github.com/aws/aws-sdk-go-v2/service/networkmanager](https://github.com/aws/aws-sdk-go-v2). Updates `github.com/aws/aws-sdk-go-v2/feature/s3/manager` from 1.17.40 to 1.17.41 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/credentials/v1.17.40...credentials/v1.17.41) Updates `github.com/aws/aws-sdk-go-v2/service/directconnect` from 1.29.6 to 1.30.0 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/pi/v1.29.6...v1.30.0) Updates `github.com/aws/aws-sdk-go-v2/service/networkmanager` from 1.31.6 to 1.32.0 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/sns/v1.31.6...v1.32.0) Updates `github.com/aws/aws-sdk-go-v2/service/s3` from 1.68.0 to 1.69.0 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/s3/v1.68.0...service/s3/v1.69.0) --- updated-dependencies: - dependency-name: github.com/aws/aws-sdk-go-v2/feature/s3/manager dependency-type: direct:production update-type: version-update:semver-patch dependency-group: aws-sdk-go-v2 - dependency-name: github.com/aws/aws-sdk-go-v2/service/directconnect dependency-type: direct:production update-type: version-update:semver-minor dependency-group: aws-sdk-go-v2 - dependency-name: github.com/aws/aws-sdk-go-v2/service/networkmanager dependency-type: direct:production update-type: version-update:semver-minor dependency-group: aws-sdk-go-v2 - dependency-name: github.com/aws/aws-sdk-go-v2/service/s3 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: aws-sdk-go-v2 ... Signed-off-by: dependabot[bot] * Bump github.com/ProtonMail/go-crypto from 1.1.2 to 1.1.3 Bumps [github.com/ProtonMail/go-crypto](https://github.com/ProtonMail/go-crypto) from 1.1.2 to 1.1.3. - [Release notes](https://github.com/ProtonMail/go-crypto/releases) - [Commits](https://github.com/ProtonMail/go-crypto/compare/v1.1.2...v1.1.3) --- updated-dependencies: - dependency-name: github.com/ProtonMail/go-crypto dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * Fix 'TestAccMemoryDBCluster_Update_securityGroupIds'. * Remove 'testAccOrganizationsFeatures_disappears'. * Fix golangci-lint 'func `manageOrganizationFeatures` is unused (unused)'. * r/aws_db_proxy: Skip 'InvalidAction: DescribeDBProxies is not available in this region' errors in sweeper. * Update CHANGELOG.md for #40312 * Adds CHANGELOG entry * Update CHANGELOG.md for #40304 * chore: checkout .github/ files from main branch --------- Signed-off-by: dependabot[bot] Co-authored-by: Gavin Williams Co-authored-by: Nate Henjes Co-authored-by: Alex Bacchin Co-authored-by: Daniel Quackenbush <25692880+danquack@users.noreply.github.com> Co-authored-by: Sasi Co-authored-by: Andy Kretschmar Co-authored-by: changelogbot Co-authored-by: Stefan Freitag Co-authored-by: Kit Ewbank Co-authored-by: RoseSecurity Co-authored-by: Dirk Avery Co-authored-by: max-ts0gt Co-authored-by: kilmajster Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Jared Baker Co-authored-by: Dirk Avery <31492422+YakDriver@users.noreply.github.com> Co-authored-by: Jared Baker Co-authored-by: Adrian Johnson Co-authored-by: team-tf-cdk Co-authored-by: Graham Davison Co-authored-by: coveobot --- .changelog/28847.txt | 3 + .changelog/37257.txt | 3 + .changelog/40164.txt | 3 + .changelog/40172.txt | 3 + .changelog/40224.txt | 15 + .changelog/40253.txt | 3 + .changelog/40264.txt | 3 + .changelog/40268.txt | 3 + .changelog/40281.txt | 3 + .changelog/40291.txt | 3 + .changelog/40304.txt | 3 + .ci/providerlint/go.mod | 4 +- .ci/providerlint/go.sum | 4 +- .../passes/AWSAT001/testdata/go.mod | 2 +- .../passes/AWSAT002/testdata/go.mod | 2 +- .../passes/AWSAT003/testdata/go.mod | 2 +- .../passes/AWSAT004/testdata/go.mod | 2 +- .../passes/AWSAT005/testdata/go.mod | 2 +- .../passes/AWSAT006/testdata/go.mod | 2 +- .../passes/AWSR001/testdata/go.mod | 2 +- .../passes/AWSV001/testdata/go.mod | 2 +- .ci/tools/go.mod | 14 +- .ci/tools/go.sum | 24 +- .go-version | 2 +- .../components/generated/services_all.kt | 2 +- CHANGELOG.md | 34 +- go.mod | 80 +- go.sum | 156 ++-- internal/acctest/acctest.go | 25 +- internal/conns/config.go | 2 +- internal/conns/config_test.go | 9 - internal/generate/checknames/main.go | 2 +- .../generate/serviceendpointtests/file.gtpl | 8 - internal/provider/provider_config_test.go | 25 - .../service_endpoints_gen_test.go | 8 - .../account/service_endpoints_gen_test.go | 8 - .../service/acm/service_endpoints_gen_test.go | 8 - .../acmpca/service_endpoints_gen_test.go | 8 - .../service/amp/service_endpoints_gen_test.go | 8 - .../amplify/service_endpoints_gen_test.go | 8 - .../apigateway/service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../appconfig/service_endpoints_gen_test.go | 8 - .../appfabric/service_endpoints_gen_test.go | 8 - .../appflow/service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../appmesh/service_endpoints_gen_test.go | 8 - .../apprunner/service_endpoints_gen_test.go | 8 - .../appstream/service_endpoints_gen_test.go | 8 - .../appsync/service_endpoints_gen_test.go | 8 - .../athena/service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../autoscaling/service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../backup/service_endpoints_gen_test.go | 8 - internal/service/batch/eks_properties.go | 133 +++ internal/service/batch/eks_properties_test.go | 221 +++++ internal/service/batch/exports_test.go | 1 + internal/service/batch/job_definition.go | 4 +- internal/service/batch/job_definition_test.go | 195 +++++ internal/service/batch/node_properties.go | 19 +- .../service/batch/node_properties_test.go | 62 ++ .../batch/service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - internal/service/bedrock/guardrail.go | 6 +- internal/service/bedrock/guardrail_test.go | 2 + .../bedrock/service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../budgets/service_endpoints_gen_test.go | 8 - .../service/ce/service_endpoints_gen_test.go | 8 - .../chatbot/service_endpoints_gen_test.go | 8 - .../chatbot/slack_channel_configuration.go | 71 +- .../chatbot/teams_channel_configuration.go | 74 +- .../chime/service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../cleanrooms/service_endpoints_gen_test.go | 8 - .../cloud9/service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../cloudfront/service_endpoints_gen_test.go | 8 - .../cloudhsmv2/service_endpoints_gen_test.go | 8 - .../cloudsearch/service_endpoints_gen_test.go | 8 - .../cloudtrail/service_endpoints_gen_test.go | 8 - .../cloudwatch/service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../codebuild/service_endpoints_gen_test.go | 8 - .../codecommit/service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../cognitoidp/service_endpoints_gen_test.go | 8 - .../comprehend/service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../connect/service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../service/cur/service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../databrew/service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../datasync/service_endpoints_gen_test.go | 8 - .../datazone/service_endpoints_gen_test.go | 8 - .../service/dax/service_endpoints_gen_test.go | 8 - .../deploy/service_endpoints_gen_test.go | 8 - .../detective/service_endpoints_gen_test.go | 8 - .../devicefarm/service_endpoints_gen_test.go | 8 - .../devopsguru/service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../service/dlm/service_endpoints_gen_test.go | 8 - .../service/dms/service_endpoints_gen_test.go | 8 - .../docdb/service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../service/drs/service_endpoints_gen_test.go | 8 - .../service/ds/service_endpoints_gen_test.go | 8 - .../dynamodb/service_endpoints_gen_test.go | 8 - .../service/ec2/service_endpoints_gen_test.go | 8 - .../service/ecr/service_endpoints_gen_test.go | 8 - .../ecrpublic/service_endpoints_gen_test.go | 8 - .../service/ecs/service_endpoints_gen_test.go | 8 - .../service/efs/service_endpoints_gen_test.go | 8 - .../service/eks/service_endpoints_gen_test.go | 8 - .../elasticache/service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../service/elb/service_endpoints_gen_test.go | 8 - .../elbv2/service_endpoints_gen_test.go | 8 - .../service/emr/service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../events/service_endpoints_gen_test.go | 8 - .../evidently/service_endpoints_gen_test.go | 8 - .../finspace/service_endpoints_gen_test.go | 8 - .../firehose/service_endpoints_gen_test.go | 8 - .../service/fis/service_endpoints_gen_test.go | 8 - .../service/fms/service_endpoints_gen_test.go | 8 - .../service/fsx/service_endpoints_gen_test.go | 8 - .../gamelift/service_endpoints_gen_test.go | 8 - .../glacier/service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../glue/service_endpoints_gen_test.go | 8 - .../grafana/service_endpoints_gen_test.go | 8 - .../greengrass/service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../guardduty/service_endpoints_gen_test.go | 8 - .../healthlake/service_endpoints_gen_test.go | 8 - internal/service/iam/exports_test.go | 2 + .../service/iam/organizations_features.go | 250 ++++++ .../iam/organizations_features_test.go | 165 ++++ .../service/iam/service_endpoints_gen_test.go | 8 - internal/service/iam/service_package_gen.go | 4 + .../service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../inspector/service_endpoints_gen_test.go | 8 - .../inspector2/service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../service/iot/service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../iotevents/service_endpoints_gen_test.go | 8 - .../service/ivs/service_endpoints_gen_test.go | 8 - .../ivschat/service_endpoints_gen_test.go | 8 - .../kafka/service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../kendra/service_endpoints_gen_test.go | 8 - .../keyspaces/service_endpoints_gen_test.go | 8 - .../kinesis/service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../service/kms/service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../lambda/service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../lexmodels/service_endpoints_gen_test.go | 8 - .../lexv2models/service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../lightsail/service_endpoints_gen_test.go | 8 - .../logs/service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../service/m2/service_endpoints_gen_test.go | 8 - .../macie2/service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../medialive/service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../mediastore/service_endpoints_gen_test.go | 8 - internal/service/memorydb/acl.go | 179 +++- internal/service/memorydb/acl_data_source.go | 20 +- internal/service/memorydb/acl_test.go | 4 - internal/service/memorydb/cluster.go | 788 +++++++++++------- .../service/memorydb/cluster_data_source.go | 325 ++++---- .../memorydb/cluster_data_source_test.go | 3 +- internal/service/memorydb/cluster_test.go | 211 ++--- internal/service/memorydb/enum.go | 125 +-- internal/service/memorydb/exports_test.go | 9 + internal/service/memorydb/find.go | 142 ---- internal/service/memorydb/parameter_group.go | 310 +++---- .../memorydb/parameter_group_data_source.go | 25 +- .../service/memorydb/parameter_group_test.go | 240 +++--- .../memorydb/service_endpoints_gen_test.go | 8 - .../service/memorydb/service_package_gen.go | 18 + internal/service/memorydb/snapshot.go | 167 +++- .../service/memorydb/snapshot_data_source.go | 21 +- .../memorydb/snapshot_data_source_test.go | 1 + internal/service/memorydb/snapshot_test.go | 10 +- internal/service/memorydb/status.go | 124 --- internal/service/memorydb/subnet_group.go | 103 ++- .../memorydb/subnet_group_data_source.go | 29 +- internal/service/memorydb/user.go | 118 ++- internal/service/memorydb/user_data_source.go | 27 +- internal/service/memorydb/wait.go | 172 ---- .../service/mq/service_endpoints_gen_test.go | 8 - .../neptune/service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../service/oam/service_endpoints_gen_test.go | 8 - .../opensearch/service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../opsworks/service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../osis/service_endpoints_gen_test.go | 8 - .../outposts/service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../service/pcs/service_endpoints_gen_test.go | 8 - .../pinpoint/service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../pipes/service_endpoints_gen_test.go | 8 - .../polly/service_endpoints_gen_test.go | 8 - .../pricing/service_endpoints_gen_test.go | 8 - .../qbusiness/service_endpoints_gen_test.go | 8 - .../qldb/service_endpoints_gen_test.go | 8 - .../quicksight/service_endpoints_gen_test.go | 8 - .../service/ram/service_endpoints_gen_test.go | 8 - .../rbin/service_endpoints_gen_test.go | 8 - internal/service/rds/cluster_test.go | 60 ++ internal/service/rds/instance.go | 7 + internal/service/rds/instance_test.go | 241 +++--- .../reserved_instance_offering_data_source.go | 9 +- ...rved_instance_offering_data_source_test.go | 73 +- .../service/rds/service_endpoints_gen_test.go | 8 - .../redshift/service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../rekognition/service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../route53/service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../service/rum/service_endpoints_gen_test.go | 8 - .../s3/bucket_lifecycle_configuration_test.go | 18 +- .../service/s3/service_endpoints_gen_test.go | 8 - .../s3outposts/service_endpoints_gen_test.go | 8 - .../sagemaker/service_endpoints_gen_test.go | 8 - .../scheduler/service_endpoints_gen_test.go | 8 - .../schemas/service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../securityhub/service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../service/ses/service_endpoints_gen_test.go | 8 - .../sesv2/service_endpoints_gen_test.go | 8 - .../service/sfn/service_endpoints_gen_test.go | 8 - .../shield/service_endpoints_gen_test.go | 8 - .../signer/service_endpoints_gen_test.go | 8 - .../service/sns/service_endpoints_gen_test.go | 8 - .../service/sqs/service_endpoints_gen_test.go | 8 - .../service/ssm/service_endpoints_gen_test.go | 8 - .../ssmcontacts/service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../ssmsap/service_endpoints_gen_test.go | 8 - .../service/sso/service_endpoints_gen_test.go | 8 - .../ssoadmin/service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../service/sts/service_endpoints_gen_test.go | 8 - .../service/swf/service_endpoints_gen_test.go | 8 - .../synthetics/service_endpoints_gen_test.go | 8 - .../taxsettings/service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../transcribe/service_endpoints_gen_test.go | 8 - .../transfer/service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../vpclattice/service_endpoints_gen_test.go | 8 - .../service/waf/service_endpoints_gen_test.go | 8 - .../wafregional/service_endpoints_gen_test.go | 8 - .../wafv2/service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../worklink/service_endpoints_gen_test.go | 8 - .../workspaces/service_endpoints_gen_test.go | 8 - .../service_endpoints_gen_test.go | 8 - .../xray/service_endpoints_gen_test.go | 8 - internal/sweep/awsv2/skip.go | 4 + names/data/names_data.hcl | 4 +- skaff/go.mod | 2 +- tools/literally/go.mod | 2 +- tools/tfsdk2fw/go.mod | 74 +- tools/tfsdk2fw/go.sum | 144 ++-- website/allowed-subcategories.txt | 2 +- .../cdktf/python/d/memorydb_acl.html.markdown | 2 +- .../python/d/memorydb_cluster.html.markdown | 2 +- .../d/memorydb_parameter_group.html.markdown | 2 +- .../python/d/memorydb_snapshot.html.markdown | 2 +- .../d/memorydb_subnet_group.html.markdown | 2 +- .../python/d/memorydb_user.html.markdown | 2 +- .../d/organizations_policies.html.markdown | 4 +- ...izations_policies_for_target.html.markdown | 4 +- .../d/organizations_policy.html.markdown | 4 +- .../kms_secrets.html.markdown | 75 ++ .../lambda_invocation.html.markdown | 60 ++ ...ecretsmanager_secret_version.html.markdown | 76 ++ website/docs/cdktf/python/index.html.markdown | 4 +- .../r/bedrockagent_data_source.html.markdown | 14 +- .../cdktf/python/r/ecs_service.html.markdown | 12 +- website/docs/cdktf/python/r/eip.html.markdown | 4 +- .../r/fsx_openzfs_file_system.html.markdown | 4 +- ...policy_attachments_exclusive.html.markdown | 23 +- ...policy_attachments_exclusive.html.markdown | 23 +- ...policy_attachments_exclusive.html.markdown | 23 +- .../imagebuilder_image_pipeline.html.markdown | 41 +- .../python/r/lambda_function.html.markdown | 6 +- .../python/r/lb_target_group.html.markdown | 4 +- .../cdktf/python/r/memorydb_acl.html.markdown | 2 +- .../python/r/memorydb_cluster.html.markdown | 2 +- .../r/memorydb_parameter_group.html.markdown | 2 +- .../python/r/memorydb_snapshot.html.markdown | 2 +- .../r/memorydb_subnet_group.html.markdown | 2 +- .../python/r/memorydb_user.html.markdown | 2 +- .../organizations_organization.html.markdown | 4 +- .../python/r/rds_instance_state.html.markdown | 84 ++ .../python/r/s3_bucket_acl.html.markdown | 6 +- ...cket_lifecycle_configuration.html.markdown | 22 +- .../typescript/d/memorydb_acl.html.markdown | 2 +- .../d/memorydb_cluster.html.markdown | 2 +- .../d/memorydb_parameter_group.html.markdown | 2 +- .../d/memorydb_snapshot.html.markdown | 2 +- .../d/memorydb_subnet_group.html.markdown | 2 +- .../typescript/d/memorydb_user.html.markdown | 2 +- .../d/organizations_policies.html.markdown | 4 +- ...izations_policies_for_target.html.markdown | 4 +- .../d/organizations_policy.html.markdown | 4 +- .../kms_secrets.html.markdown | 85 ++ .../lambda_invocation.html.markdown | 63 ++ ...ecretsmanager_secret_version.html.markdown | 88 ++ .../docs/cdktf/typescript/index.html.markdown | 4 +- .../r/bedrockagent_data_source.html.markdown | 14 +- .../typescript/r/ecs_service.html.markdown | 12 +- .../docs/cdktf/typescript/r/eip.html.markdown | 4 +- .../r/fsx_openzfs_file_system.html.markdown | 4 +- ...policy_attachments_exclusive.html.markdown | 23 +- ...policy_attachments_exclusive.html.markdown | 23 +- ...policy_attachments_exclusive.html.markdown | 23 +- .../imagebuilder_image_pipeline.html.markdown | 65 +- .../r/lambda_function.html.markdown | 6 +- .../r/lb_target_group.html.markdown | 4 +- .../typescript/r/memorydb_acl.html.markdown | 2 +- .../r/memorydb_cluster.html.markdown | 2 +- .../r/memorydb_parameter_group.html.markdown | 2 +- .../r/memorydb_snapshot.html.markdown | 2 +- .../r/memorydb_subnet_group.html.markdown | 2 +- .../typescript/r/memorydb_user.html.markdown | 2 +- .../organizations_organization.html.markdown | 4 +- .../r/rds_instance_state.html.markdown | 94 +++ .../typescript/r/s3_bucket_acl.html.markdown | 6 +- ...cket_lifecycle_configuration.html.markdown | 22 +- website/docs/d/memorydb_acl.html.markdown | 2 +- website/docs/d/memorydb_cluster.html.markdown | 7 +- .../d/memorydb_parameter_group.html.markdown | 2 +- .../docs/d/memorydb_snapshot.html.markdown | 5 +- .../d/memorydb_subnet_group.html.markdown | 2 +- website/docs/d/memorydb_user.html.markdown | 2 +- .../custom-service-endpoints.html.markdown | 2 +- .../docs/r/bedrock_guardrail.html.markdown | 3 +- .../r/bedrockagent_data_source.html.markdown | 12 +- .../iam_organizations_features.html.markdown | 58 ++ website/docs/r/lb_target_group.html.markdown | 2 +- website/docs/r/memorydb_acl.html.markdown | 2 +- website/docs/r/memorydb_cluster.html.markdown | 9 +- .../r/memorydb_parameter_group.html.markdown | 2 +- .../docs/r/memorydb_snapshot.html.markdown | 5 +- .../r/memorydb_subnet_group.html.markdown | 2 +- website/docs/r/memorydb_user.html.markdown | 2 +- ...cket_lifecycle_configuration.html.markdown | 20 +- 405 files changed, 4397 insertions(+), 4195 deletions(-) create mode 100644 .changelog/28847.txt create mode 100644 .changelog/37257.txt create mode 100644 .changelog/40164.txt create mode 100644 .changelog/40172.txt create mode 100644 .changelog/40224.txt create mode 100644 .changelog/40253.txt create mode 100644 .changelog/40264.txt create mode 100644 .changelog/40268.txt create mode 100644 .changelog/40281.txt create mode 100644 .changelog/40291.txt create mode 100644 .changelog/40304.txt create mode 100644 internal/service/batch/eks_properties.go create mode 100644 internal/service/batch/eks_properties_test.go create mode 100644 internal/service/iam/organizations_features.go create mode 100644 internal/service/iam/organizations_features_test.go delete mode 100644 internal/service/memorydb/find.go delete mode 100644 internal/service/memorydb/status.go delete mode 100644 internal/service/memorydb/wait.go create mode 100644 website/docs/cdktf/python/ephemeral-resources/kms_secrets.html.markdown create mode 100644 website/docs/cdktf/python/ephemeral-resources/lambda_invocation.html.markdown create mode 100644 website/docs/cdktf/python/ephemeral-resources/secretsmanager_secret_version.html.markdown create mode 100644 website/docs/cdktf/python/r/rds_instance_state.html.markdown create mode 100644 website/docs/cdktf/typescript/ephemeral-resources/kms_secrets.html.markdown create mode 100644 website/docs/cdktf/typescript/ephemeral-resources/lambda_invocation.html.markdown create mode 100644 website/docs/cdktf/typescript/ephemeral-resources/secretsmanager_secret_version.html.markdown create mode 100644 website/docs/cdktf/typescript/r/rds_instance_state.html.markdown create mode 100644 website/docs/r/iam_organizations_features.html.markdown diff --git a/.changelog/28847.txt b/.changelog/28847.txt new file mode 100644 index 00000000000..ca742122768 --- /dev/null +++ b/.changelog/28847.txt @@ -0,0 +1,3 @@ +```release-note:bug +resource/aws_db_instance: When changing a `gp3` volume's `allocated_storage` to a value larger than the [threshold value for `engine`](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html#gp3-storage), fix bug causing error `InvalidParameterCombination: You must specify both the storage size and iops when modifying the storage size or iops on a DB instance that has iops` +``` diff --git a/.changelog/37257.txt b/.changelog/37257.txt new file mode 100644 index 00000000000..c93dc45e327 --- /dev/null +++ b/.changelog/37257.txt @@ -0,0 +1,3 @@ +```release-note:bug +resource/aws_db_instance: When changing `storage_type` from `io1` or `io2` to `gp3`, fix bug causing error `InvalidParameterCombination: You must specify both the storage size and iops when modifying the storage size or iops on a DB instance that has iops` +``` diff --git a/.changelog/40164.txt b/.changelog/40164.txt new file mode 100644 index 00000000000..34a1c10947f --- /dev/null +++ b/.changelog/40164.txt @@ -0,0 +1,3 @@ +```release-note:new-resource +aws_iam_organizations_features +``` diff --git a/.changelog/40172.txt b/.changelog/40172.txt new file mode 100644 index 00000000000..6041c94835c --- /dev/null +++ b/.changelog/40172.txt @@ -0,0 +1,3 @@ +```release-note:bug +resource/aws_batch_job_definition: Fix crash when specifying `eksProperties` or `ecsProperties` block +``` diff --git a/.changelog/40224.txt b/.changelog/40224.txt new file mode 100644 index 00000000000..782ad2139e2 --- /dev/null +++ b/.changelog/40224.txt @@ -0,0 +1,15 @@ +```release-note:enhancement +resource/aws_memorydb_cluster: Add `engine` argument +``` + +```release-note:enhancement +resource/aws_memorydb_snapshot: Add `cluster_configuration.engine` attribute +``` + +```release-note:enhancement +data-source/aws_memorydb_cluster: Add `engine` attribute +``` + +```release-note:enhancement +data-source/aws_memorydb_snapshot: Add `cluster_configuration.engine` attribute +``` diff --git a/.changelog/40253.txt b/.changelog/40253.txt new file mode 100644 index 00000000000..2e0a205feb8 --- /dev/null +++ b/.changelog/40253.txt @@ -0,0 +1,3 @@ +```release-note:bug +resource/aws_chatbot_slack_channel_configuration: Fix inconsistent provider result when order of `sns_topic_arns`changes +``` \ No newline at end of file diff --git a/.changelog/40264.txt b/.changelog/40264.txt new file mode 100644 index 00000000000..e77c525a67f --- /dev/null +++ b/.changelog/40264.txt @@ -0,0 +1,3 @@ +```release-note:bug +provider: Suppress `Warning: AWS account ID not found for provider` when `skip_requesting_account_id` is `true` +``` \ No newline at end of file diff --git a/.changelog/40268.txt b/.changelog/40268.txt new file mode 100644 index 00000000000..a32f43f014f --- /dev/null +++ b/.changelog/40268.txt @@ -0,0 +1,3 @@ +```release-note:note +resource/aws_s3_bucket_lifecycle_configuration: Lifecycle configurations can now be applied to directory buckets +``` diff --git a/.changelog/40281.txt b/.changelog/40281.txt new file mode 100644 index 00000000000..05356583127 --- /dev/null +++ b/.changelog/40281.txt @@ -0,0 +1,3 @@ +```release-note:bug +data-source/aws_rds_reserved_instance_offering: When `product_description` (e.g., "postgresql") is a substring of multiple products, fix `Error: multiple RDS Reserved Instance Offerings matched; use additional constraints to reduce matches to a single RDS Reserved Instance Offering` +``` diff --git a/.changelog/40291.txt b/.changelog/40291.txt new file mode 100644 index 00000000000..97e2b1ae6b5 --- /dev/null +++ b/.changelog/40291.txt @@ -0,0 +1,3 @@ +```release-note:bug +resource/aws_chatbot_teams_channel_configuration: Fix inconsistent provider result when order of `sns_topic_arns`changes +``` \ No newline at end of file diff --git a/.changelog/40304.txt b/.changelog/40304.txt new file mode 100644 index 00000000000..955eb174739 --- /dev/null +++ b/.changelog/40304.txt @@ -0,0 +1,3 @@ +```release-note:bug +resource/aws_bedrock_guardrail: Fix perpetual diff if multiple `content_policy_config.filters_config`s are specified. +``` diff --git a/.ci/providerlint/go.mod b/.ci/providerlint/go.mod index f448fe3e444..968fda4c5e6 100644 --- a/.ci/providerlint/go.mod +++ b/.ci/providerlint/go.mod @@ -2,12 +2,12 @@ module github.com/hashicorp/terraform-provider-aws/ci/providerlint go 1.23 -toolchain go1.23.2 +toolchain go1.23.3 require ( github.com/bflad/tfproviderlint v0.30.0 github.com/hashicorp/aws-sdk-go-base/v2 v2.0.0-beta.59 - github.com/hashicorp/terraform-plugin-sdk/v2 v2.34.0 + github.com/hashicorp/terraform-plugin-sdk/v2 v2.35.0 golang.org/x/tools v0.27.0 ) diff --git a/.ci/providerlint/go.sum b/.ci/providerlint/go.sum index 7606dc37bb5..4045f453ef2 100644 --- a/.ci/providerlint/go.sum +++ b/.ci/providerlint/go.sum @@ -85,8 +85,8 @@ github.com/hashicorp/terraform-plugin-go v0.25.0 h1:oi13cx7xXA6QciMcpcFi/rwA974r github.com/hashicorp/terraform-plugin-go v0.25.0/go.mod h1:+SYagMYadJP86Kvn+TGeV+ofr/R3g4/If0O5sO96MVw= github.com/hashicorp/terraform-plugin-log v0.9.0 h1:i7hOA+vdAItN1/7UrfBqBwvYPQ9TFvymaRGZED3FCV0= github.com/hashicorp/terraform-plugin-log v0.9.0/go.mod h1:rKL8egZQ/eXSyDqzLUuwUYLVdlYeamldAHSxjUFADow= -github.com/hashicorp/terraform-plugin-sdk/v2 v2.34.0 h1:kJiWGx2kiQVo97Y5IOGR4EMcZ8DtMswHhUuFibsCQQE= -github.com/hashicorp/terraform-plugin-sdk/v2 v2.34.0/go.mod h1:sl/UoabMc37HA6ICVMmGO+/0wofkVIRxf+BMb/dnoIg= +github.com/hashicorp/terraform-plugin-sdk/v2 v2.35.0 h1:wyKCCtn6pBBL46c1uIIBNUOWlNfYXfXpVo16iDyLp8Y= +github.com/hashicorp/terraform-plugin-sdk/v2 v2.35.0/go.mod h1:B0Al8NyYVr8Mp/KLwssKXG1RqnTk7FySqSn4fRuLNgw= github.com/hashicorp/terraform-registry-address v0.2.3 h1:2TAiKJ1A3MAkZlH1YI/aTVcLZRu7JseiXNRHbOAyoTI= github.com/hashicorp/terraform-registry-address v0.2.3/go.mod h1:lFHA76T8jfQteVfT7caREqguFrW3c4MFSPhZB7HHgUM= github.com/hashicorp/terraform-svchost v0.1.1 h1:EZZimZ1GxdqFRinZ1tpJwVxxt49xc/S52uzrw4x0jKQ= diff --git a/.ci/providerlint/passes/AWSAT001/testdata/go.mod b/.ci/providerlint/passes/AWSAT001/testdata/go.mod index 3c3a182398e..58ca190ffce 100644 --- a/.ci/providerlint/passes/AWSAT001/testdata/go.mod +++ b/.ci/providerlint/passes/AWSAT001/testdata/go.mod @@ -2,7 +2,7 @@ module testdata go 1.23 -toolchain go1.23.2 +toolchain go1.23.3 require ( github.com/YakDriver/regexache v0.24.0 diff --git a/.ci/providerlint/passes/AWSAT002/testdata/go.mod b/.ci/providerlint/passes/AWSAT002/testdata/go.mod index c7bf50521c1..728aa1de299 100644 --- a/.ci/providerlint/passes/AWSAT002/testdata/go.mod +++ b/.ci/providerlint/passes/AWSAT002/testdata/go.mod @@ -2,4 +2,4 @@ module testdata go 1.23 -toolchain go1.23.2 +toolchain go1.23.3 diff --git a/.ci/providerlint/passes/AWSAT003/testdata/go.mod b/.ci/providerlint/passes/AWSAT003/testdata/go.mod index c7bf50521c1..728aa1de299 100644 --- a/.ci/providerlint/passes/AWSAT003/testdata/go.mod +++ b/.ci/providerlint/passes/AWSAT003/testdata/go.mod @@ -2,4 +2,4 @@ module testdata go 1.23 -toolchain go1.23.2 +toolchain go1.23.3 diff --git a/.ci/providerlint/passes/AWSAT004/testdata/go.mod b/.ci/providerlint/passes/AWSAT004/testdata/go.mod index f27ef2c65e7..f7043fd3dc1 100644 --- a/.ci/providerlint/passes/AWSAT004/testdata/go.mod +++ b/.ci/providerlint/passes/AWSAT004/testdata/go.mod @@ -2,7 +2,7 @@ module testdata go 1.23 -toolchain go1.23.2 +toolchain go1.23.3 require github.com/hashicorp/terraform-plugin-sdk/v2 v2.35.0 diff --git a/.ci/providerlint/passes/AWSAT005/testdata/go.mod b/.ci/providerlint/passes/AWSAT005/testdata/go.mod index c7bf50521c1..728aa1de299 100644 --- a/.ci/providerlint/passes/AWSAT005/testdata/go.mod +++ b/.ci/providerlint/passes/AWSAT005/testdata/go.mod @@ -2,4 +2,4 @@ module testdata go 1.23 -toolchain go1.23.2 +toolchain go1.23.3 diff --git a/.ci/providerlint/passes/AWSAT006/testdata/go.mod b/.ci/providerlint/passes/AWSAT006/testdata/go.mod index c7bf50521c1..728aa1de299 100644 --- a/.ci/providerlint/passes/AWSAT006/testdata/go.mod +++ b/.ci/providerlint/passes/AWSAT006/testdata/go.mod @@ -2,4 +2,4 @@ module testdata go 1.23 -toolchain go1.23.2 +toolchain go1.23.3 diff --git a/.ci/providerlint/passes/AWSR001/testdata/go.mod b/.ci/providerlint/passes/AWSR001/testdata/go.mod index c7bf50521c1..728aa1de299 100644 --- a/.ci/providerlint/passes/AWSR001/testdata/go.mod +++ b/.ci/providerlint/passes/AWSR001/testdata/go.mod @@ -2,4 +2,4 @@ module testdata go 1.23 -toolchain go1.23.2 +toolchain go1.23.3 diff --git a/.ci/providerlint/passes/AWSV001/testdata/go.mod b/.ci/providerlint/passes/AWSV001/testdata/go.mod index e331314fde3..39b0154d2c7 100644 --- a/.ci/providerlint/passes/AWSV001/testdata/go.mod +++ b/.ci/providerlint/passes/AWSV001/testdata/go.mod @@ -2,7 +2,7 @@ module testdata go 1.23 -toolchain go1.23.2 +toolchain go1.23.3 require github.com/hashicorp/terraform-plugin-sdk/v2 v2.35.0 diff --git a/.ci/tools/go.mod b/.ci/tools/go.mod index 5db4f37e882..4329feb8881 100644 --- a/.ci/tools/go.mod +++ b/.ci/tools/go.mod @@ -1,11 +1,11 @@ module github.com/hashicorp/terraform-provider-aws/tools -go 1.23.2 +go 1.23.3 require ( github.com/YakDriver/tfproviderdocs v0.16.6 github.com/client9/misspell v0.3.4 - github.com/golangci/golangci-lint v1.62.0 + github.com/golangci/golangci-lint v1.62.2 github.com/hashicorp/copywrite v0.19.0 github.com/hashicorp/go-changelog v0.0.0-20241111140550-beb7aaabfbd1 github.com/katbyte/terrafmt v0.5.4 @@ -21,8 +21,8 @@ require ( 4d63.com/gochecknoglobals v0.2.1 // indirect cel.dev/expr v0.18.0 // indirect cloud.google.com/go v0.116.0 // indirect - cloud.google.com/go/auth v0.10.2 // indirect - cloud.google.com/go/auth/oauth2adapt v0.2.5 // indirect + cloud.google.com/go/auth v0.11.0 // indirect + cloud.google.com/go/auth/oauth2adapt v0.2.6 // indirect cloud.google.com/go/compute/metadata v0.5.2 // indirect cloud.google.com/go/iam v1.2.2 // indirect cloud.google.com/go/monitoring v1.21.2 // indirect @@ -278,7 +278,7 @@ require ( github.com/ssgreg/nlreturn/v2 v2.2.1 // indirect github.com/stbenjam/no-sprintf-host-port v0.1.1 // indirect github.com/stretchr/objx v0.5.2 // indirect - github.com/stretchr/testify v1.9.0 // indirect + github.com/stretchr/testify v1.10.0 // indirect github.com/subosito/gotenv v1.6.0 // indirect github.com/tdakkota/asciicheck v0.2.0 // indirect github.com/terraform-linters/tflint-plugin-sdk v0.21.0 // indirect @@ -294,7 +294,7 @@ require ( github.com/ultraware/funlen v0.1.0 // indirect github.com/ultraware/whitespace v0.1.1 // indirect github.com/uudashr/gocognit v1.1.3 // indirect - github.com/uudashr/iface v1.2.0 // indirect + github.com/uudashr/iface v1.2.1 // indirect github.com/vmihailenco/msgpack/v5 v5.4.1 // indirect github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect github.com/xanzy/ssh-agent v0.3.3 // indirect @@ -335,7 +335,7 @@ require ( golang.org/x/text v0.20.0 // indirect golang.org/x/time v0.8.0 // indirect golang.org/x/tools v0.27.0 // indirect - google.golang.org/api v0.207.0 // indirect + google.golang.org/api v0.209.0 // indirect google.golang.org/genproto v0.0.0-20241118233622-e639e219e697 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20241118233622-e639e219e697 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20241118233622-e639e219e697 // indirect diff --git a/.ci/tools/go.sum b/.ci/tools/go.sum index 3e9289816cc..86602888b91 100644 --- a/.ci/tools/go.sum +++ b/.ci/tools/go.sum @@ -52,10 +52,10 @@ cloud.google.com/go/asset v1.8.0/go.mod h1:mUNGKhiqIdbr8X7KNayoYvyc4HbbFO9URsjby cloud.google.com/go/assuredworkloads v1.5.0/go.mod h1:n8HOZ6pff6re5KYfBXcFvSViQjDwxFkAkmUFffJRbbY= cloud.google.com/go/assuredworkloads v1.6.0/go.mod h1:yo2YOk37Yc89Rsd5QMVECvjaMKymF9OP+QXWlKXUkXw= cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVoYoxeLBoj4XkKYscNI= -cloud.google.com/go/auth v0.10.2 h1:oKF7rgBfSHdp/kuhXtqU/tNDr0mZqhYbEh+6SiqzkKo= -cloud.google.com/go/auth v0.10.2/go.mod h1:xxA5AqpDrvS+Gkmo9RqrGGRh6WSNKKOXhY3zNOr38tI= -cloud.google.com/go/auth/oauth2adapt v0.2.5 h1:2p29+dePqsCHPP1bqDJcKj4qxRyYCcbzKpFyKGt3MTk= -cloud.google.com/go/auth/oauth2adapt v0.2.5/go.mod h1:AlmsELtlEBnaNTL7jCj8VQFLy6mbZv0s4Q7NGBeQ5E8= +cloud.google.com/go/auth v0.11.0 h1:Ic5SZz2lsvbYcWT5dfjNWgw6tTlGi2Wc8hyQSC9BstA= +cloud.google.com/go/auth v0.11.0/go.mod h1:xxA5AqpDrvS+Gkmo9RqrGGRh6WSNKKOXhY3zNOr38tI= +cloud.google.com/go/auth/oauth2adapt v0.2.6 h1:V6a6XDu2lTwPZWOawrAa9HUK+DB2zfJyTuciBG5hFkU= +cloud.google.com/go/auth/oauth2adapt v0.2.6/go.mod h1:AlmsELtlEBnaNTL7jCj8VQFLy6mbZv0s4Q7NGBeQ5E8= cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0= cloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= @@ -568,8 +568,8 @@ github.com/golangci/go-printf-func-name v0.1.0 h1:dVokQP+NMTO7jwO4bwsRwLWeudOVUP github.com/golangci/go-printf-func-name v0.1.0/go.mod h1:wqhWFH5mUdJQhweRnldEywnR5021wTdZSNgwYceV14s= github.com/golangci/gofmt v0.0.0-20240816233607-d8596aa466a9 h1:/1322Qns6BtQxUZDTAT4SdcoxknUki7IAoK4SAXr8ME= github.com/golangci/gofmt v0.0.0-20240816233607-d8596aa466a9/go.mod h1:Oesb/0uFAyWoaw1U1qS5zyjCg5NP9C9iwjnI4tIsXEE= -github.com/golangci/golangci-lint v1.62.0 h1:/G0g+bi1BhmGJqLdNQkKBWjcim8HjOPc4tsKuHDOhcI= -github.com/golangci/golangci-lint v1.62.0/go.mod h1:jtoOhQcKTz8B6dGNFyfQV3WZkQk+YvBDewDtNpiAJts= +github.com/golangci/golangci-lint v1.62.2 h1:b8K5K9PN+rZN1+mKLtsZHz2XXS9aYKzQ9i25x3Qnxxw= +github.com/golangci/golangci-lint v1.62.2/go.mod h1:ILWWyeFUrctpHVGMa1dg2xZPKoMUTc5OIMgW7HZr34g= github.com/golangci/misspell v0.6.0 h1:JCle2HUTNWirNlDIAUO44hUsKhOFqGPoC4LZxlaSXDs= github.com/golangci/misspell v0.6.0/go.mod h1:keMNyY6R9isGaSAu+4Q8NMBwMPkh15Gtc8UCVoDtAWo= github.com/golangci/modinfo v0.3.4 h1:oU5huX3fbxqQXdfspamej74DFX0kyGLkw1ppvXoJ8GA= @@ -1143,8 +1143,8 @@ github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1F github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= -github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= github.com/tdakkota/asciicheck v0.2.0 h1:o8jvnUANo0qXtnslk2d3nMKTFNlOnJjRrNcj0j9qkHM= @@ -1184,8 +1184,8 @@ github.com/ultraware/whitespace v0.1.1 h1:bTPOGejYFulW3PkcrqkeQwOd6NKOOXvmGD9bo/ github.com/ultraware/whitespace v0.1.1/go.mod h1:XcP1RLD81eV4BW8UhQlpaR+SDc2givTvyI8a586WjW8= github.com/uudashr/gocognit v1.1.3 h1:l+a111VcDbKfynh+airAy/DJQKaXh2m9vkoysMPSZyM= github.com/uudashr/gocognit v1.1.3/go.mod h1:aKH8/e8xbTRBwjbCkwZ8qt4l2EpKXl31KMHgSS+lZ2U= -github.com/uudashr/iface v1.2.0 h1:ECJjh5q/1Zmnv/2yFpWV6H3oMg5+Mo+vL0aqw9Gjazo= -github.com/uudashr/iface v1.2.0/go.mod h1:Ux/7d/rAF3owK4m53cTVXL4YoVHKNqnoOeQHn2xrlp0= +github.com/uudashr/iface v1.2.1 h1:vHHyzAUmWZ64Olq6NZT3vg/z1Ws56kyPdBOd5kTXDF8= +github.com/uudashr/iface v1.2.1/go.mod h1:4QvspiRd3JLPAEXBQ9AiZpLbJlrWWgRChOKDJEuQTdg= github.com/vmihailenco/msgpack/v4 v4.3.12/go.mod h1:gborTTJjAo/GWTqqRjrLCn9pgNN+NXzzngzBKDPIqw4= github.com/vmihailenco/msgpack/v5 v5.4.1 h1:cQriyiUvjTwOHg8QZaPihLWeRAAVoCpE00IUPn0Bjt8= github.com/vmihailenco/msgpack/v5 v5.4.1/go.mod h1:GaZTsDaehaPpQVyxrf5mtQlH+pc21PIudVV/E3rRQok= @@ -1716,8 +1716,8 @@ google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= -google.golang.org/api v0.207.0 h1:Fvt6IGCYjf7YLcQ+GCegeAI2QSQCfIWhRkmrMPj3JRM= -google.golang.org/api v0.207.0/go.mod h1:I53S168Yr/PNDNMi5yPnDc0/LGRZO6o7PoEbl/HY3CM= +google.golang.org/api v0.209.0 h1:Ja2OXNlyRlWCWu8o+GgI4yUn/wz9h/5ZfFbKz+dQX+w= +google.golang.org/api v0.209.0/go.mod h1:I53S168Yr/PNDNMi5yPnDc0/LGRZO6o7PoEbl/HY3CM= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= diff --git a/.go-version b/.go-version index 14bee92c9e7..ac1df3fce34 100644 --- a/.go-version +++ b/.go-version @@ -1 +1 @@ -1.23.2 +1.23.3 diff --git a/.teamcity/components/generated/services_all.kt b/.teamcity/components/generated/services_all.kt index dcc12ef9129..4e4dd545903 100644 --- a/.teamcity/components/generated/services_all.kt +++ b/.teamcity/components/generated/services_all.kt @@ -153,7 +153,7 @@ val services = mapOf( "mediapackage" to ServiceSpec("Elemental MediaPackage"), "mediapackagev2" to ServiceSpec("Elemental MediaPackage Version 2"), "mediastore" to ServiceSpec("Elemental MediaStore"), - "memorydb" to ServiceSpec("MemoryDB for Redis"), + "memorydb" to ServiceSpec("MemoryDB"), "mq" to ServiceSpec("MQ", vpcLock = true), "mwaa" to ServiceSpec("MWAA (Managed Workflows for Apache Airflow)", vpcLock = true), "neptune" to ServiceSpec("Neptune"), diff --git a/CHANGELOG.md b/CHANGELOG.md index df78e42577d..2346428ed49 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,32 @@ -## 5.77.0 (Unreleased) +## 5.78.0 (Unreleased) + +NOTES: + +* resource/aws_s3_bucket_lifecycle_configuration: Lifecycle configurations can now be applied to directory buckets ([#40268](https://github.com/hashicorp/terraform-provider-aws/issues/40268)) + +FEATURES: + +* **New Resource:** `aws_iam_organizations_features` ([#40164](https://github.com/hashicorp/terraform-provider-aws/issues/40164)) + +ENHANCEMENTS: + +* data-source/aws_memorydb_cluster: Add `engine` attribute ([#40224](https://github.com/hashicorp/terraform-provider-aws/issues/40224)) +* data-source/aws_memorydb_snapshot: Add `cluster_configuration.engine` attribute ([#40224](https://github.com/hashicorp/terraform-provider-aws/issues/40224)) +* resource/aws_memorydb_cluster: Add `engine` argument ([#40224](https://github.com/hashicorp/terraform-provider-aws/issues/40224)) +* resource/aws_memorydb_snapshot: Add `cluster_configuration.engine` attribute ([#40224](https://github.com/hashicorp/terraform-provider-aws/issues/40224)) + +BUG FIXES: + +* data-source/aws_rds_reserved_instance_offering: When `product_description` (e.g., "postgresql") is a substring of multiple products, fix `Error: multiple RDS Reserved Instance Offerings matched; use additional constraints to reduce matches to a single RDS Reserved Instance Offering` ([#40281](https://github.com/hashicorp/terraform-provider-aws/issues/40281)) +* provider: Suppress `Warning: AWS account ID not found for provider` when `skip_requesting_account_id` is `true` ([#40264](https://github.com/hashicorp/terraform-provider-aws/issues/40264)) +* resource/aws_batch_job_definition: Fix crash when specifying `eksProperties` or `ecsProperties` block ([#40172](https://github.com/hashicorp/terraform-provider-aws/issues/40172)) +* resource/aws_bedrock_guardrail: Fix perpetual diff if multiple `content_policy_config.filters_config`s are specified. ([#40304](https://github.com/hashicorp/terraform-provider-aws/issues/40304)) +* resource/aws_chatbot_slack_channel_configuration: Fix inconsistent provider result when order of `sns_topic_arns`changes ([#40253](https://github.com/hashicorp/terraform-provider-aws/issues/40253)) +* resource/aws_chatbot_teams_channel_configuration: Fix inconsistent provider result when order of `sns_topic_arns`changes ([#40291](https://github.com/hashicorp/terraform-provider-aws/issues/40291)) +* resource/aws_db_instance: When changing `storage_type` from `io1` or `io2` to `gp3`, fix bug causing error `InvalidParameterCombination: You must specify both the storage size and iops when modifying the storage size or iops on a DB instance that has iops` ([#37257](https://github.com/hashicorp/terraform-provider-aws/issues/37257)) +* resource/aws_db_instance: When changing a `gp3` volume's `allocated_storage` to a value larger than the [threshold value for `engine`](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html#gp3-storage), fix bug causing error `InvalidParameterCombination: You must specify both the storage size and iops when modifying the storage size or iops on a DB instance that has iops` ([#28847](https://github.com/hashicorp/terraform-provider-aws/issues/28847)) + +## 5.77.0 (November 21, 2024) NOTES: @@ -18,6 +46,8 @@ ENHANCEMENTS: * resource/aws_ecs_service: Add `availability_zone_rebalancing` attribute ([#40225](https://github.com/hashicorp/terraform-provider-aws/issues/40225)) * resource/aws_ecs_service: Add vpc_lattice_configurations argument ([#40177](https://github.com/hashicorp/terraform-provider-aws/issues/40177)) * resource/aws_ecs_task_definition: Add `versionConsistency` argument to `container_definitions` ([#40216](https://github.com/hashicorp/terraform-provider-aws/issues/40216)) +* resource/aws_lambda_function: Add support for `nodejs22.x` `runtime` value ([#40277](https://github.com/hashicorp/terraform-provider-aws/issues/40277)) +* resource/aws_lambda_layer_version: Add support for `nodejs22.x` `compatible_runtimes` value ([#40277](https://github.com/hashicorp/terraform-provider-aws/issues/40277)) * resource/aws_rds_global_cluster: Add `endpoint` argument to point to the writer DB instance in the current primary cluster ([#39960](https://github.com/hashicorp/terraform-provider-aws/issues/39960)) BUG FIXES: @@ -35,6 +65,8 @@ FEATURES: ENHANCEMENTS: +* resource/aws_lambda_function: Add support for `python3.13` `runtime` value ([#40277](https://github.com/hashicorp/terraform-provider-aws/issues/40277)) +* resource/aws_lambda_layer_version: Add support for `python3.13` `compatible_runtimes` value ([#40277](https://github.com/hashicorp/terraform-provider-aws/issues/40277)) * resource/aws_medialive_channel: Add missing h265 codec settings ([#40071](https://github.com/hashicorp/terraform-provider-aws/issues/40071)) BUG FIXES: diff --git a/go.mod b/go.mod index a71dc2b1e5c..2505649b640 100644 --- a/go.mod +++ b/go.mod @@ -1,13 +1,13 @@ module github.com/hashicorp/terraform-provider-aws -go 1.23.2 +go 1.23.3 // Disable experimental post-quantum key exchange mechanism X25519Kyber768Draft00 // This was causing errors with AWS Network Firewall godebug tlskyber=0 require ( - github.com/ProtonMail/go-crypto v1.1.2 + github.com/ProtonMail/go-crypto v1.1.3 github.com/YakDriver/go-version v0.1.0 github.com/YakDriver/regexache v0.24.0 github.com/aws/aws-sdk-go v1.55.5 @@ -15,29 +15,29 @@ require ( github.com/aws/aws-sdk-go-v2/config v1.28.5 github.com/aws/aws-sdk-go-v2/credentials v1.17.46 github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.20 - github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.39 + github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.41 github.com/aws/aws-sdk-go-v2/service/accessanalyzer v1.36.1 github.com/aws/aws-sdk-go-v2/service/account v1.21.6 github.com/aws/aws-sdk-go-v2/service/acm v1.30.6 github.com/aws/aws-sdk-go-v2/service/acmpca v1.37.7 github.com/aws/aws-sdk-go-v2/service/amp v1.30.3 github.com/aws/aws-sdk-go-v2/service/amplify v1.27.4 - github.com/aws/aws-sdk-go-v2/service/apigateway v1.27.6 + github.com/aws/aws-sdk-go-v2/service/apigateway v1.28.0 github.com/aws/aws-sdk-go-v2/service/apigatewayv2 v1.24.6 github.com/aws/aws-sdk-go-v2/service/appconfig v1.36.0 github.com/aws/aws-sdk-go-v2/service/appfabric v1.11.6 github.com/aws/aws-sdk-go-v2/service/appflow v1.45.7 github.com/aws/aws-sdk-go-v2/service/appintegrations v1.30.6 - github.com/aws/aws-sdk-go-v2/service/applicationautoscaling v1.33.6 + github.com/aws/aws-sdk-go-v2/service/applicationautoscaling v1.34.0 github.com/aws/aws-sdk-go-v2/service/applicationinsights v1.29.4 github.com/aws/aws-sdk-go-v2/service/applicationsignals v1.7.1 github.com/aws/aws-sdk-go-v2/service/appmesh v1.29.6 github.com/aws/aws-sdk-go-v2/service/apprunner v1.32.6 github.com/aws/aws-sdk-go-v2/service/appstream v1.41.6 - github.com/aws/aws-sdk-go-v2/service/appsync v1.39.3 + github.com/aws/aws-sdk-go-v2/service/appsync v1.40.0 github.com/aws/aws-sdk-go-v2/service/athena v1.48.4 github.com/aws/aws-sdk-go-v2/service/auditmanager v1.37.6 - github.com/aws/aws-sdk-go-v2/service/autoscaling v1.50.0 + github.com/aws/aws-sdk-go-v2/service/autoscaling v1.51.0 github.com/aws/aws-sdk-go-v2/service/autoscalingplans v1.24.6 github.com/aws/aws-sdk-go-v2/service/backup v1.39.7 github.com/aws/aws-sdk-go-v2/service/batch v1.48.1 @@ -45,7 +45,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/bedrock v1.22.4 github.com/aws/aws-sdk-go-v2/service/bedrockagent v1.27.1 github.com/aws/aws-sdk-go-v2/service/budgets v1.28.6 - github.com/aws/aws-sdk-go-v2/service/chatbot v1.8.6 + github.com/aws/aws-sdk-go-v2/service/chatbot v1.9.0 github.com/aws/aws-sdk-go-v2/service/chime v1.34.6 github.com/aws/aws-sdk-go-v2/service/chimesdkmediapipelines v1.21.1 github.com/aws/aws-sdk-go-v2/service/chimesdkvoice v1.19.6 @@ -53,13 +53,13 @@ require ( github.com/aws/aws-sdk-go-v2/service/cloud9 v1.28.6 github.com/aws/aws-sdk-go-v2/service/cloudcontrol v1.23.1 github.com/aws/aws-sdk-go-v2/service/cloudformation v1.56.0 - github.com/aws/aws-sdk-go-v2/service/cloudfront v1.42.0 + github.com/aws/aws-sdk-go-v2/service/cloudfront v1.43.0 github.com/aws/aws-sdk-go-v2/service/cloudfrontkeyvaluestore v1.8.6 github.com/aws/aws-sdk-go-v2/service/cloudhsmv2 v1.27.7 github.com/aws/aws-sdk-go-v2/service/cloudsearch v1.26.5 - github.com/aws/aws-sdk-go-v2/service/cloudtrail v1.45.1 + github.com/aws/aws-sdk-go-v2/service/cloudtrail v1.46.1 github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.43.1 - github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.43.3 + github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.44.0 github.com/aws/aws-sdk-go-v2/service/codeartifact v1.33.6 github.com/aws/aws-sdk-go-v2/service/codebuild v1.49.1 github.com/aws/aws-sdk-go-v2/service/codecatalyst v1.17.6 @@ -68,19 +68,19 @@ require ( github.com/aws/aws-sdk-go-v2/service/codedeploy v1.29.6 github.com/aws/aws-sdk-go-v2/service/codeguruprofiler v1.24.6 github.com/aws/aws-sdk-go-v2/service/codegurureviewer v1.29.6 - github.com/aws/aws-sdk-go-v2/service/codepipeline v1.36.4 + github.com/aws/aws-sdk-go-v2/service/codepipeline v1.37.0 github.com/aws/aws-sdk-go-v2/service/codestarconnections v1.29.6 github.com/aws/aws-sdk-go-v2/service/codestarnotifications v1.26.6 github.com/aws/aws-sdk-go-v2/service/cognitoidentity v1.27.6 - github.com/aws/aws-sdk-go-v2/service/cognitoidentityprovider v1.46.6 + github.com/aws/aws-sdk-go-v2/service/cognitoidentityprovider v1.47.0 github.com/aws/aws-sdk-go-v2/service/comprehend v1.35.6 github.com/aws/aws-sdk-go-v2/service/computeoptimizer v1.40.0 github.com/aws/aws-sdk-go-v2/service/configservice v1.50.6 - github.com/aws/aws-sdk-go-v2/service/connect v1.116.0 + github.com/aws/aws-sdk-go-v2/service/connect v1.117.0 github.com/aws/aws-sdk-go-v2/service/connectcases v1.21.6 github.com/aws/aws-sdk-go-v2/service/controltower v1.20.0 github.com/aws/aws-sdk-go-v2/service/costandusagereportservice v1.28.6 - github.com/aws/aws-sdk-go-v2/service/costexplorer v1.43.6 + github.com/aws/aws-sdk-go-v2/service/costexplorer v1.45.0 github.com/aws/aws-sdk-go-v2/service/costoptimizationhub v1.11.0 github.com/aws/aws-sdk-go-v2/service/customerprofiles v1.43.0 github.com/aws/aws-sdk-go-v2/service/databasemigrationservice v1.44.4 @@ -93,26 +93,26 @@ require ( github.com/aws/aws-sdk-go-v2/service/detective v1.31.6 github.com/aws/aws-sdk-go-v2/service/devicefarm v1.28.6 github.com/aws/aws-sdk-go-v2/service/devopsguru v1.34.6 - github.com/aws/aws-sdk-go-v2/service/directconnect v1.29.6 + github.com/aws/aws-sdk-go-v2/service/directconnect v1.30.0 github.com/aws/aws-sdk-go-v2/service/directoryservice v1.30.7 - github.com/aws/aws-sdk-go-v2/service/dlm v1.28.6 + github.com/aws/aws-sdk-go-v2/service/dlm v1.28.7 github.com/aws/aws-sdk-go-v2/service/docdb v1.39.5 github.com/aws/aws-sdk-go-v2/service/docdbelastic v1.14.3 github.com/aws/aws-sdk-go-v2/service/drs v1.30.6 github.com/aws/aws-sdk-go-v2/service/dynamodb v1.37.1 - github.com/aws/aws-sdk-go-v2/service/ec2 v1.192.0 + github.com/aws/aws-sdk-go-v2/service/ec2 v1.193.0 github.com/aws/aws-sdk-go-v2/service/ecr v1.36.6 github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.27.6 github.com/aws/aws-sdk-go-v2/service/ecs v1.52.0 github.com/aws/aws-sdk-go-v2/service/efs v1.34.0 github.com/aws/aws-sdk-go-v2/service/eks v1.52.1 - github.com/aws/aws-sdk-go-v2/service/elasticache v1.43.3 + github.com/aws/aws-sdk-go-v2/service/elasticache v1.44.0 github.com/aws/aws-sdk-go-v2/service/elasticbeanstalk v1.28.5 github.com/aws/aws-sdk-go-v2/service/elasticloadbalancing v1.28.5 - github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.42.0 + github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.43.0 github.com/aws/aws-sdk-go-v2/service/elasticsearchservice v1.32.6 github.com/aws/aws-sdk-go-v2/service/elastictranscoder v1.27.6 - github.com/aws/aws-sdk-go-v2/service/emr v1.46.4 + github.com/aws/aws-sdk-go-v2/service/emr v1.47.0 github.com/aws/aws-sdk-go-v2/service/emrcontainers v1.33.7 github.com/aws/aws-sdk-go-v2/service/emrserverless v1.26.6 github.com/aws/aws-sdk-go-v2/service/eventbridge v1.35.6 @@ -135,9 +135,9 @@ require ( github.com/aws/aws-sdk-go-v2/service/identitystore v1.27.6 github.com/aws/aws-sdk-go-v2/service/imagebuilder v1.38.4 github.com/aws/aws-sdk-go-v2/service/inspector v1.25.6 - github.com/aws/aws-sdk-go-v2/service/inspector2 v1.33.1 + github.com/aws/aws-sdk-go-v2/service/inspector2 v1.34.0 github.com/aws/aws-sdk-go-v2/service/internetmonitor v1.20.1 - github.com/aws/aws-sdk-go-v2/service/iot v1.60.1 + github.com/aws/aws-sdk-go-v2/service/iot v1.61.0 github.com/aws/aws-sdk-go-v2/service/iotanalytics v1.26.6 github.com/aws/aws-sdk-go-v2/service/iotevents v1.27.6 github.com/aws/aws-sdk-go-v2/service/ivs v1.42.1 @@ -152,7 +152,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/kinesisvideo v1.27.6 github.com/aws/aws-sdk-go-v2/service/kms v1.37.6 github.com/aws/aws-sdk-go-v2/service/lakeformation v1.38.3 - github.com/aws/aws-sdk-go-v2/service/lambda v1.67.0 + github.com/aws/aws-sdk-go-v2/service/lambda v1.69.0 github.com/aws/aws-sdk-go-v2/service/launchwizard v1.8.6 github.com/aws/aws-sdk-go-v2/service/lexmodelbuildingservice v1.28.6 github.com/aws/aws-sdk-go-v2/service/lexmodelsv2 v1.49.6 @@ -172,9 +172,9 @@ require ( github.com/aws/aws-sdk-go-v2/service/mq v1.27.7 github.com/aws/aws-sdk-go-v2/service/mwaa v1.33.0 github.com/aws/aws-sdk-go-v2/service/neptune v1.35.5 - github.com/aws/aws-sdk-go-v2/service/neptunegraph v1.14.4 + github.com/aws/aws-sdk-go-v2/service/neptunegraph v1.15.0 github.com/aws/aws-sdk-go-v2/service/networkfirewall v1.44.3 - github.com/aws/aws-sdk-go-v2/service/networkmanager v1.31.6 + github.com/aws/aws-sdk-go-v2/service/networkmanager v1.32.0 github.com/aws/aws-sdk-go-v2/service/networkmonitor v1.7.6 github.com/aws/aws-sdk-go-v2/service/oam v1.15.6 github.com/aws/aws-sdk-go-v2/service/opensearch v1.44.1 @@ -189,11 +189,11 @@ require ( github.com/aws/aws-sdk-go-v2/service/pinpoint v1.34.6 github.com/aws/aws-sdk-go-v2/service/pinpointsmsvoicev2 v1.18.1 github.com/aws/aws-sdk-go-v2/service/pipes v1.18.4 - github.com/aws/aws-sdk-go-v2/service/polly v1.45.6 + github.com/aws/aws-sdk-go-v2/service/polly v1.45.7 github.com/aws/aws-sdk-go-v2/service/pricing v1.32.6 github.com/aws/aws-sdk-go-v2/service/qbusiness v1.16.1 github.com/aws/aws-sdk-go-v2/service/qldb v1.25.6 - github.com/aws/aws-sdk-go-v2/service/quicksight v1.79.1 + github.com/aws/aws-sdk-go-v2/service/quicksight v1.80.0 github.com/aws/aws-sdk-go-v2/service/ram v1.29.6 github.com/aws/aws-sdk-go-v2/service/rbin v1.21.0 github.com/aws/aws-sdk-go-v2/service/rds v1.91.0 @@ -201,7 +201,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/redshiftdata v1.31.3 github.com/aws/aws-sdk-go-v2/service/redshiftserverless v1.24.3 github.com/aws/aws-sdk-go-v2/service/rekognition v1.45.7 - github.com/aws/aws-sdk-go-v2/service/resiliencehub v1.27.4 + github.com/aws/aws-sdk-go-v2/service/resiliencehub v1.28.0 github.com/aws/aws-sdk-go-v2/service/resourceexplorer2 v1.16.1 github.com/aws/aws-sdk-go-v2/service/resourcegroups v1.27.6 github.com/aws/aws-sdk-go-v2/service/resourcegroupstaggingapi v1.25.6 @@ -213,10 +213,10 @@ require ( github.com/aws/aws-sdk-go-v2/service/route53recoveryreadiness v1.21.6 github.com/aws/aws-sdk-go-v2/service/route53resolver v1.34.1 github.com/aws/aws-sdk-go-v2/service/rum v1.21.6 - github.com/aws/aws-sdk-go-v2/service/s3 v1.67.1 + github.com/aws/aws-sdk-go-v2/service/s3 v1.69.0 github.com/aws/aws-sdk-go-v2/service/s3control v1.50.1 github.com/aws/aws-sdk-go-v2/service/s3outposts v1.28.6 - github.com/aws/aws-sdk-go-v2/service/sagemaker v1.167.1 + github.com/aws/aws-sdk-go-v2/service/sagemaker v1.168.0 github.com/aws/aws-sdk-go-v2/service/scheduler v1.12.6 github.com/aws/aws-sdk-go-v2/service/schemas v1.28.7 github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.34.6 @@ -227,17 +227,17 @@ require ( github.com/aws/aws-sdk-go-v2/service/servicecatalogappregistry v1.30.6 github.com/aws/aws-sdk-go-v2/service/servicediscovery v1.33.6 github.com/aws/aws-sdk-go-v2/service/servicequotas v1.25.6 - github.com/aws/aws-sdk-go-v2/service/ses v1.28.5 + github.com/aws/aws-sdk-go-v2/service/ses v1.29.0 github.com/aws/aws-sdk-go-v2/service/sesv2 v1.38.3 - github.com/aws/aws-sdk-go-v2/service/sfn v1.33.6 + github.com/aws/aws-sdk-go-v2/service/sfn v1.34.0 github.com/aws/aws-sdk-go-v2/service/shield v1.29.6 github.com/aws/aws-sdk-go-v2/service/signer v1.26.6 - github.com/aws/aws-sdk-go-v2/service/sns v1.33.5 + github.com/aws/aws-sdk-go-v2/service/sns v1.33.6 github.com/aws/aws-sdk-go-v2/service/sqs v1.37.1 - github.com/aws/aws-sdk-go-v2/service/ssm v1.55.6 + github.com/aws/aws-sdk-go-v2/service/ssm v1.56.0 github.com/aws/aws-sdk-go-v2/service/ssmcontacts v1.26.6 github.com/aws/aws-sdk-go-v2/service/ssmincidents v1.34.6 - github.com/aws/aws-sdk-go-v2/service/ssmquicksetup v1.2.7 + github.com/aws/aws-sdk-go-v2/service/ssmquicksetup v1.3.0 github.com/aws/aws-sdk-go-v2/service/ssmsap v1.18.6 github.com/aws/aws-sdk-go-v2/service/sso v1.24.6 github.com/aws/aws-sdk-go-v2/service/ssoadmin v1.29.6 @@ -247,19 +247,19 @@ require ( github.com/aws/aws-sdk-go-v2/service/synthetics v1.30.1 github.com/aws/aws-sdk-go-v2/service/taxsettings v1.7.0 github.com/aws/aws-sdk-go-v2/service/timestreaminfluxdb v1.6.6 - github.com/aws/aws-sdk-go-v2/service/timestreamwrite v1.29.6 + github.com/aws/aws-sdk-go-v2/service/timestreamwrite v1.29.7 github.com/aws/aws-sdk-go-v2/service/transcribe v1.41.6 github.com/aws/aws-sdk-go-v2/service/transfer v1.53.5 github.com/aws/aws-sdk-go-v2/service/verifiedpermissions v1.20.2 - github.com/aws/aws-sdk-go-v2/service/vpclattice v1.12.8 + github.com/aws/aws-sdk-go-v2/service/vpclattice v1.12.9 github.com/aws/aws-sdk-go-v2/service/waf v1.25.6 github.com/aws/aws-sdk-go-v2/service/wafregional v1.25.6 github.com/aws/aws-sdk-go-v2/service/wafv2 v1.55.5 github.com/aws/aws-sdk-go-v2/service/wellarchitected v1.34.6 github.com/aws/aws-sdk-go-v2/service/worklink v1.23.2 - github.com/aws/aws-sdk-go-v2/service/workspaces v1.50.0 + github.com/aws/aws-sdk-go-v2/service/workspaces v1.50.1 github.com/aws/aws-sdk-go-v2/service/workspacesweb v1.25.0 - github.com/aws/aws-sdk-go-v2/service/xray v1.29.6 + github.com/aws/aws-sdk-go-v2/service/xray v1.30.0 github.com/aws/smithy-go v1.22.1 github.com/beevik/etree v1.4.1 github.com/cedar-policy/cedar-go v0.1.0 diff --git a/go.sum b/go.sum index b3bc9b6a9c6..7c6f98d479f 100644 --- a/go.sum +++ b/go.sum @@ -8,8 +8,8 @@ github.com/Masterminds/sprig/v3 v3.3.0 h1:mQh0Yrg1XPo6vjYXgtf5OtijNAKJRNcTdOOGZe github.com/Masterminds/sprig/v3 v3.3.0/go.mod h1:Zy1iXRYNqNLUolqCpL4uhk6SHUMAOSCzdgBfDb35Lz0= github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= -github.com/ProtonMail/go-crypto v1.1.2 h1:A7JbD57ThNqh7XjmHE+PXpQ3Dqt3BrSAC0AL0Go3KS0= -github.com/ProtonMail/go-crypto v1.1.2/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE= +github.com/ProtonMail/go-crypto v1.1.3 h1:nRBOetoydLeUb4nHajyO2bKqMLfWQ/ZPwkXqXxPxCFk= +github.com/ProtonMail/go-crypto v1.1.3/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE= github.com/YakDriver/go-version v0.1.0 h1:/x+Xg2+l89Mjtxl0VRf2+ue8cnHkw6jfYv49j6f7gZw= github.com/YakDriver/go-version v0.1.0/go.mod h1:LXwFAp1E3KBhS7FHO/FE8r3XCmvKizs/VXXXFWfoSYY= github.com/YakDriver/regexache v0.24.0 h1:zUKaixelkswzdqsqPc2sveiV//Mi/msJn0teG8zBDiA= @@ -33,8 +33,8 @@ github.com/aws/aws-sdk-go-v2/credentials v1.17.46 h1:AU7RcriIo2lXjUfHFnFKYsLCwgb github.com/aws/aws-sdk-go-v2/credentials v1.17.46/go.mod h1:1FmYyLGL08KQXQ6mcTlifyFXfJVCNJTVGuQP4m0d/UA= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.20 h1:sDSXIrlsFSFJtWKLQS4PUWRvrT580rrnuLydJrCQ/yA= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.20/go.mod h1:WZ/c+w0ofps+/OUqMwWgnfrgzZH1DZO1RIkktICsqnY= -github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.39 h1:Bdepdtm7SAUxPIZj6x4qg5al04R6tZa965T/j597XxM= -github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.39/go.mod h1:AudGmEyVwvi3k5MVpEZP2NEVF1HqtZoMze42Uq1RTiE= +github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.41 h1:hqcxMc2g/MwwnRMod9n6Bd+t+9Nf7d5qRg7RaXKPd6o= +github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.41/go.mod h1:d1eH0VrttvPmrCraU68LOyNdu26zFxQFjrVSb5vdhog= github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.24 h1:4usbeaes3yJnCFC7kfeyhkdkPtoRYPa/hTmCqMpKpLI= github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.24/go.mod h1:5CI1JemjVwde8m2WG3cz23qHKPOxbpkq0HaoreEgLIY= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.24 h1:N1zsICrQglfzaBnrfM0Ys00860C+QFwu6u/5+LomP+o= @@ -55,8 +55,8 @@ github.com/aws/aws-sdk-go-v2/service/amp v1.30.3 h1:28FOQuvHpWMdEYK9x89FszjBmwGf github.com/aws/aws-sdk-go-v2/service/amp v1.30.3/go.mod h1:QbCuQItcTOX7oQR9Nn9nGveBCqSad391I5ReOyQmtag= github.com/aws/aws-sdk-go-v2/service/amplify v1.27.4 h1:wnfodLD2dlJXX4CgYQh18nvo18dPjqZEWrtYZ6DWGh0= github.com/aws/aws-sdk-go-v2/service/amplify v1.27.4/go.mod h1:hmHZYJI1CZlr2V/qTBE8r+/U353Gn/7pOoxNpfFmZuI= -github.com/aws/aws-sdk-go-v2/service/apigateway v1.27.6 h1:CmWQaz97Uy830BdSSVw/D+K4rGQUN/u9D1Zjh/HLJ/w= -github.com/aws/aws-sdk-go-v2/service/apigateway v1.27.6/go.mod h1:WP+ceHdK5RAijZxABi1mH1kCZmQKRJNKwV+cj0iVr44= +github.com/aws/aws-sdk-go-v2/service/apigateway v1.28.0 h1:BkESaUndLOn3ZFTq4Eho347yvtiJxEQf1HWxgVu2RVI= +github.com/aws/aws-sdk-go-v2/service/apigateway v1.28.0/go.mod h1:WP+ceHdK5RAijZxABi1mH1kCZmQKRJNKwV+cj0iVr44= github.com/aws/aws-sdk-go-v2/service/apigatewayv2 v1.24.6 h1:wNUMxMjviF0fbO1pWKVFT1xDRa+BY2qwW6+YJkgIRvI= github.com/aws/aws-sdk-go-v2/service/apigatewayv2 v1.24.6/go.mod h1:pCq9ErKoUWYFfmpENhlWuhBF+NNNwVOXNrZA5C480eM= github.com/aws/aws-sdk-go-v2/service/appconfig v1.36.0 h1:6IlrKbN6rVw2wdVxm4WQ5nI/Np0eTydc5Lsa1Vq+cBs= @@ -67,8 +67,8 @@ github.com/aws/aws-sdk-go-v2/service/appflow v1.45.7 h1:UfxkfxuI4Ksq33InChPPDFg/ github.com/aws/aws-sdk-go-v2/service/appflow v1.45.7/go.mod h1:kJIzLElxd30701jCUv8leaH4GGrCCfoxpNUULd7+rK8= github.com/aws/aws-sdk-go-v2/service/appintegrations v1.30.6 h1:wUhwc2GcAZ4m00sVu2gQ9ugn5Jxk3EjZPf9KxIM+aZo= github.com/aws/aws-sdk-go-v2/service/appintegrations v1.30.6/go.mod h1:ivsyQDuUvZ2HIjoACH4KiSkaP3/rQVjPpb4yUurgPCU= -github.com/aws/aws-sdk-go-v2/service/applicationautoscaling v1.33.6 h1:tA9FFJKQEPZ1YXuO+ZIMXBYy7Jrsz5SJ4feg/zb82Ig= -github.com/aws/aws-sdk-go-v2/service/applicationautoscaling v1.33.6/go.mod h1:XBKTLJ2N61HegfI0sroliDC1MNX0L3ApqCfNoZ9POAA= +github.com/aws/aws-sdk-go-v2/service/applicationautoscaling v1.34.0 h1:GepjPOtTMErWuKclEcfUtibA2gP8kLlL6gglC2YJEMU= +github.com/aws/aws-sdk-go-v2/service/applicationautoscaling v1.34.0/go.mod h1:XBKTLJ2N61HegfI0sroliDC1MNX0L3ApqCfNoZ9POAA= github.com/aws/aws-sdk-go-v2/service/applicationinsights v1.29.4 h1:NiytCBlDQWHo7GWomxI7sBayGgYikFLRWGx67mab42o= github.com/aws/aws-sdk-go-v2/service/applicationinsights v1.29.4/go.mod h1:S/E1rruraVCEM0H11AAlulupi00RyhGmARep6mgJgec= github.com/aws/aws-sdk-go-v2/service/applicationsignals v1.7.1 h1:UU84hkab8PQfrTM8jJjEQvfYns1meYkXWcCQs7uuiSo= @@ -79,14 +79,14 @@ github.com/aws/aws-sdk-go-v2/service/apprunner v1.32.6 h1:Wqlx6m821gv7qXMJQ3f7Ju github.com/aws/aws-sdk-go-v2/service/apprunner v1.32.6/go.mod h1:liN6AXsZpCSw888Vdsc1OSeKuEVvWek31jv41mn4KCA= github.com/aws/aws-sdk-go-v2/service/appstream v1.41.6 h1:Y/npDc6JZ9rxarIqZOWZllxgtZLLjFXvwTjuhpoSqW8= github.com/aws/aws-sdk-go-v2/service/appstream v1.41.6/go.mod h1:Ex0sRVuADGJBCsP8Yvsuu+RTeAydhj5OrXxu99OlE+w= -github.com/aws/aws-sdk-go-v2/service/appsync v1.39.3 h1:2NOsVvQv5mMor0EuI8EunbuhxQHjSWUhaCqhADKCsBU= -github.com/aws/aws-sdk-go-v2/service/appsync v1.39.3/go.mod h1:d+xpwZCcffeV4l4bM1xjQgINiNPUlmwKQSkoaAnMjVE= +github.com/aws/aws-sdk-go-v2/service/appsync v1.40.0 h1:FgT5r1MEc4ZAxmYGw4VcobadiEno6CggVP+GTm2SK5I= +github.com/aws/aws-sdk-go-v2/service/appsync v1.40.0/go.mod h1:d+xpwZCcffeV4l4bM1xjQgINiNPUlmwKQSkoaAnMjVE= github.com/aws/aws-sdk-go-v2/service/athena v1.48.4 h1:FbHOJ4JekyaFLE5SG0yuHryYRuaHXd9rO4QMYK4NH5A= github.com/aws/aws-sdk-go-v2/service/athena v1.48.4/go.mod h1:sAM9gz5RsYx3nBYISXE9CRnQVk7WtCs6SjCZvygmtzQ= github.com/aws/aws-sdk-go-v2/service/auditmanager v1.37.6 h1:TLXugBC1lQUGMcVhUTdRiUnX4ulOs13hGvBlw4bBkSE= github.com/aws/aws-sdk-go-v2/service/auditmanager v1.37.6/go.mod h1:TnalEymbabDCozLHd0UxERDVwDsiUNQ8Cy7Wd6I+nUE= -github.com/aws/aws-sdk-go-v2/service/autoscaling v1.50.0 h1:5tF6T8pAKna0TZ2g77jKdTCKoIRDsaYlYxz9OC1BraI= -github.com/aws/aws-sdk-go-v2/service/autoscaling v1.50.0/go.mod h1:I1+/2m+IhnK5qEbhS3CrzjeiVloo9sItE/2K+so0fkU= +github.com/aws/aws-sdk-go-v2/service/autoscaling v1.51.0 h1:1KzQVZi7OTixxaVJ8fWaJAUBjme+iQ3zBOCZhE4RgxQ= +github.com/aws/aws-sdk-go-v2/service/autoscaling v1.51.0/go.mod h1:I1+/2m+IhnK5qEbhS3CrzjeiVloo9sItE/2K+so0fkU= github.com/aws/aws-sdk-go-v2/service/autoscalingplans v1.24.6 h1:zkRcAyCAf1sO51+tr7cdzARkojrgaqQEMNJa6SSxszw= github.com/aws/aws-sdk-go-v2/service/autoscalingplans v1.24.6/go.mod h1:Fk9vMo1pF5oomcRNwVuu/oAZWgnErNzdr1dpYlLFnjg= github.com/aws/aws-sdk-go-v2/service/backup v1.39.7 h1:YeU78WW19lWGew7OBP2lImtLvn2d5Zlktjwh268d07I= @@ -101,8 +101,8 @@ github.com/aws/aws-sdk-go-v2/service/bedrockagent v1.27.1 h1:Uq364zd0sw4Sa5DovhB github.com/aws/aws-sdk-go-v2/service/bedrockagent v1.27.1/go.mod h1:+QNM3upOuzc6CrYFdtDnNApChkfbC6lIAI2nqct4/u8= github.com/aws/aws-sdk-go-v2/service/budgets v1.28.6 h1:RVzQr0yvPN3OGZ2ipFVe1SBIwvomwjCvGg9S2q1QQbM= github.com/aws/aws-sdk-go-v2/service/budgets v1.28.6/go.mod h1:v5aGgmg7e0sS9wbdIK1CwgSIGCBmKbwnnI3F0vj3Fb0= -github.com/aws/aws-sdk-go-v2/service/chatbot v1.8.6 h1:39X0+9tooDnPfHCsH1NClflvHY0HRncKKY4OiS/nxxg= -github.com/aws/aws-sdk-go-v2/service/chatbot v1.8.6/go.mod h1:AnpVkIhMiOul0lelxDuySlmnNMW4AqEXz4VyRC5mCvo= +github.com/aws/aws-sdk-go-v2/service/chatbot v1.9.0 h1:9MsvMH/fdhu4NhtaYrAvyOGrewZTkh6W5bwxIbKAQGk= +github.com/aws/aws-sdk-go-v2/service/chatbot v1.9.0/go.mod h1:AnpVkIhMiOul0lelxDuySlmnNMW4AqEXz4VyRC5mCvo= github.com/aws/aws-sdk-go-v2/service/chime v1.34.6 h1:Jl5fsX028RPDzuKInYkCU6p+cWnvWLpBJEXPlnzdkOQ= github.com/aws/aws-sdk-go-v2/service/chime v1.34.6/go.mod h1:pqo7AjgtB9xL2KfkCFXO8wKNAFCTcfM4Yiw6nUYt7O0= github.com/aws/aws-sdk-go-v2/service/chimesdkmediapipelines v1.21.1 h1:wasRSxlF1Ye9ilVut1GngPCTwyMPc13XJyRTJPM0nO4= @@ -117,20 +117,20 @@ github.com/aws/aws-sdk-go-v2/service/cloudcontrol v1.23.1 h1:x4XUX/gadOFFsX5ndid github.com/aws/aws-sdk-go-v2/service/cloudcontrol v1.23.1/go.mod h1:8vDrlyLzxWUybo1E4Rh2UVUPM9cyu+GgTYkwFCRV6h4= github.com/aws/aws-sdk-go-v2/service/cloudformation v1.56.0 h1:zmXJiEm/fQYtFDLIUsZrcPIjTrL3R/noFICGlYBj3Ww= github.com/aws/aws-sdk-go-v2/service/cloudformation v1.56.0/go.mod h1:9nOjXCDKE+QMK4JaCrLl36PU+VEfJmI7WVehYmojO8s= -github.com/aws/aws-sdk-go-v2/service/cloudfront v1.42.0 h1:HALzRSv9rQiViTmTngO7mHQ2hZVHN1xArAofDtLCkuE= -github.com/aws/aws-sdk-go-v2/service/cloudfront v1.42.0/go.mod h1:KC7JSdRScZQpZJDJp4ze9elsg8QIWIoABjmCzDS4rtg= +github.com/aws/aws-sdk-go-v2/service/cloudfront v1.43.0 h1:Ny0HHch5IyjWd3Hh/csFvAZFPDHvu7eeePFh7+BnbZ8= +github.com/aws/aws-sdk-go-v2/service/cloudfront v1.43.0/go.mod h1:KC7JSdRScZQpZJDJp4ze9elsg8QIWIoABjmCzDS4rtg= github.com/aws/aws-sdk-go-v2/service/cloudfrontkeyvaluestore v1.8.6 h1:dke8UJCJrHoscyZ1dIPgy3cxoLdets5LnoXO9jlW2bM= github.com/aws/aws-sdk-go-v2/service/cloudfrontkeyvaluestore v1.8.6/go.mod h1:A42W0NdVTnuXFemvBZY/nNVnVKgTVJBv06fQTtVvLuo= github.com/aws/aws-sdk-go-v2/service/cloudhsmv2 v1.27.7 h1:Ymxy7Hrq/Gax/w++W0t1E2ptd9W4/nFAGl3Ls50npDI= github.com/aws/aws-sdk-go-v2/service/cloudhsmv2 v1.27.7/go.mod h1:W4rh804hNs3jvIUVrZU7W6ZzufPUTn2fvjFwDLg75Vk= github.com/aws/aws-sdk-go-v2/service/cloudsearch v1.26.5 h1:qv4Vmbrmq556QW1geLfnVU04FKotI85HgCVup2CHC0I= github.com/aws/aws-sdk-go-v2/service/cloudsearch v1.26.5/go.mod h1:bLUwLj8J6hdXNYgrlrBmYaC6k+WRiWVuuj82l4cE+dE= -github.com/aws/aws-sdk-go-v2/service/cloudtrail v1.45.1 h1:AosFx25ZlkWnNggOUuhBcG2Yx+SDRNBcV6W2+PctH+Q= -github.com/aws/aws-sdk-go-v2/service/cloudtrail v1.45.1/go.mod h1:1UmWM2dmPjAP9GndptgNB5ZO1GnVRHFUX5JK0RB+ozY= +github.com/aws/aws-sdk-go-v2/service/cloudtrail v1.46.1 h1:2ak2eGvO11EG8dbF2rduX0LFYqkSmLTaFiAXbrYeBik= +github.com/aws/aws-sdk-go-v2/service/cloudtrail v1.46.1/go.mod h1:1UmWM2dmPjAP9GndptgNB5ZO1GnVRHFUX5JK0RB+ozY= github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.43.1 h1:FbjhJTRoTujDYDwTnnE46Km5Qh1mMSH+BwTL4ODFifg= github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.43.1/go.mod h1:OwyCzHw6CH8pkLqT8uoCkOgUsgm11LTfexLZyRy6fBg= -github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.43.3 h1:hKIu7ziYNid9JAuPX5TMgfEKiGyJiPO7Icdc920uLMI= -github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.43.3/go.mod h1:Qbr4yfpNqVNl69l/GEDK+8wxLf/vHi0ChoiSDzD7thU= +github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.44.0 h1:OREVd94+oXW5a+3SSUAo4K0L5ci8cucCLu+PSiek8OU= +github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.44.0/go.mod h1:Qbr4yfpNqVNl69l/GEDK+8wxLf/vHi0ChoiSDzD7thU= github.com/aws/aws-sdk-go-v2/service/codeartifact v1.33.6 h1:Uu7boDJDhHI3P9AjMPu9/bdSfOoTlhowBTUPswP5avM= github.com/aws/aws-sdk-go-v2/service/codeartifact v1.33.6/go.mod h1:MledsPnJ3IBEYa7pWbYIitZDbSOftxNjRCxrEm5W9L0= github.com/aws/aws-sdk-go-v2/service/codebuild v1.49.1 h1:rVfkJ2IsXFUB2dRyjoCcED1LQPeTwiOGSxB2tzItrL8= @@ -147,32 +147,32 @@ github.com/aws/aws-sdk-go-v2/service/codeguruprofiler v1.24.6 h1:NHA1oFgnYErN/m1 github.com/aws/aws-sdk-go-v2/service/codeguruprofiler v1.24.6/go.mod h1:f7Z7f8TJ+jPCG3a7iw5G3Og6ZNlVV/h4Vssa2z5Ctvg= github.com/aws/aws-sdk-go-v2/service/codegurureviewer v1.29.6 h1:ZCwOHI5qLoZOKXRroD7zFC9DsJOwr7/2trzCqGmTJXk= github.com/aws/aws-sdk-go-v2/service/codegurureviewer v1.29.6/go.mod h1:LwkwNbB3ftbrnzeolIatXt5WPCpkRbVZcEnDJ4B33yE= -github.com/aws/aws-sdk-go-v2/service/codepipeline v1.36.4 h1:3gc3QzXPPIpeSPntAtUy2CR9A3pj09O5IVrirwnvjCc= -github.com/aws/aws-sdk-go-v2/service/codepipeline v1.36.4/go.mod h1:VNGtFdYLnh+4bhmz/t1grmciVHt1aPeFWu3YAUOzJeM= +github.com/aws/aws-sdk-go-v2/service/codepipeline v1.37.0 h1:NADCf4LSkrl1ADbJT1q3VxGhJ4gre77MJ40aqupZczg= +github.com/aws/aws-sdk-go-v2/service/codepipeline v1.37.0/go.mod h1:VNGtFdYLnh+4bhmz/t1grmciVHt1aPeFWu3YAUOzJeM= github.com/aws/aws-sdk-go-v2/service/codestarconnections v1.29.6 h1:OqC1rs2Rt4hOl07IcVQ3ZjXDPPCQJ20k2Xp59ZMNfmY= github.com/aws/aws-sdk-go-v2/service/codestarconnections v1.29.6/go.mod h1:NSqFyJ68sZwNuQOBCZ1c+G10d9nd03AqdkLwkRPIHPo= github.com/aws/aws-sdk-go-v2/service/codestarnotifications v1.26.6 h1:IeMC7DWOojfoApk0lSrmFO9lWdbd2EFskmYNrgegwuY= github.com/aws/aws-sdk-go-v2/service/codestarnotifications v1.26.6/go.mod h1:ZAEhVVAHdollHwVtzGSoh7gH8SGbFaOvYeHAE7lv1Uk= github.com/aws/aws-sdk-go-v2/service/cognitoidentity v1.27.6 h1:qrxndl72akI2mK6nhN5TLe+JiAklKl+vtaiAvbQ71lM= github.com/aws/aws-sdk-go-v2/service/cognitoidentity v1.27.6/go.mod h1:v4nSWzO8c2OSdtprw0PQ7UtspocKCJhH1uBd6NxL8FM= -github.com/aws/aws-sdk-go-v2/service/cognitoidentityprovider v1.46.6 h1:tj/rbVJP94sNvvq3hM5EURTgMpQ0+mGKkfvqsZ5gwrA= -github.com/aws/aws-sdk-go-v2/service/cognitoidentityprovider v1.46.6/go.mod h1:TxsMf+uRm3AHGUs2BSmnxz99BqUd6f9EiuDEhRppTY8= +github.com/aws/aws-sdk-go-v2/service/cognitoidentityprovider v1.47.0 h1:9WEhV3JmFhSMnKaY2SqcPb0bM5XIoMmAy62Fj5TNMwk= +github.com/aws/aws-sdk-go-v2/service/cognitoidentityprovider v1.47.0/go.mod h1:TxsMf+uRm3AHGUs2BSmnxz99BqUd6f9EiuDEhRppTY8= github.com/aws/aws-sdk-go-v2/service/comprehend v1.35.6 h1:cnZDmrpdVewJ22Y9Su1XpmsPIQ5oS3TujNPS04cH+7s= github.com/aws/aws-sdk-go-v2/service/comprehend v1.35.6/go.mod h1:LGMQ+uNG/xTjB8nx6Jb2SrsQqvWc7ip0vqNiiKu9EiA= github.com/aws/aws-sdk-go-v2/service/computeoptimizer v1.40.0 h1:rNj0NoMlMlV9B3rEnxv84CG5RfEqwyfjHL6P/YtX224= github.com/aws/aws-sdk-go-v2/service/computeoptimizer v1.40.0/go.mod h1:MH4YodNw/6ZHhRwow3baZ7RQP6z8GKSMsO94X5OZ3Y0= github.com/aws/aws-sdk-go-v2/service/configservice v1.50.6 h1:GsIoN6f+LLTX/Sa70WO77Cy1GTrSF9xi7e8OwwOiGcs= github.com/aws/aws-sdk-go-v2/service/configservice v1.50.6/go.mod h1:5vbQi0lIP9T7RLGyjmQZhqf5Xv9WxHXk7qlHnhEqWKc= -github.com/aws/aws-sdk-go-v2/service/connect v1.116.0 h1:ewriAQDNn5BFwyMj2atkAbk5wqcrIBMPqg2jyhuAFoY= -github.com/aws/aws-sdk-go-v2/service/connect v1.116.0/go.mod h1:oGrMxGM/Ww+glDJ7cfMU1X22kJ6XBBHXsfxIhKD6E3k= +github.com/aws/aws-sdk-go-v2/service/connect v1.117.0 h1:ELPEshWAPZzprvgJfY0vZcyuPx9eSsXpkdNyQ6kl198= +github.com/aws/aws-sdk-go-v2/service/connect v1.117.0/go.mod h1:oGrMxGM/Ww+glDJ7cfMU1X22kJ6XBBHXsfxIhKD6E3k= github.com/aws/aws-sdk-go-v2/service/connectcases v1.21.6 h1:w475oN5DyGiDt58pLYm1Gq7wKzH4FuZM1tNj+Agd1j4= github.com/aws/aws-sdk-go-v2/service/connectcases v1.21.6/go.mod h1:gCKtUjvhDcgZCLqqdc5AI9cxEFx4VCvvgKy8FL2UeXY= github.com/aws/aws-sdk-go-v2/service/controltower v1.20.0 h1:4YuCMtKeY+TwG277Rh/4zC6ijMjJ5XeMj9djxZ0luXI= github.com/aws/aws-sdk-go-v2/service/controltower v1.20.0/go.mod h1:Wwtsq9vGGX+s+z2CAU6nNVQnQUp6tP12FmGK8Gauy7M= github.com/aws/aws-sdk-go-v2/service/costandusagereportservice v1.28.6 h1:osGnDbG5/5BHoExuVOK1EN0a9cLfZ8NdqB7luLInxOA= github.com/aws/aws-sdk-go-v2/service/costandusagereportservice v1.28.6/go.mod h1:Rkaugb0V6ZcPs8GzhnEjbq+EB9K+GASbOMdxiDzTZX4= -github.com/aws/aws-sdk-go-v2/service/costexplorer v1.43.6 h1:tGvfq+De4uRTaLA1qAbCnbGrJRkQutB2yxQ9sattbyw= -github.com/aws/aws-sdk-go-v2/service/costexplorer v1.43.6/go.mod h1:rwuImPfFVkoKeuAkGrlDSFm9pT9veoRNoH25IG9Jco0= +github.com/aws/aws-sdk-go-v2/service/costexplorer v1.45.0 h1:78q3WvpWmDAg6Ssd9c9bgGLLtFuwRMhNRdSNSX8lXto= +github.com/aws/aws-sdk-go-v2/service/costexplorer v1.45.0/go.mod h1:rwuImPfFVkoKeuAkGrlDSFm9pT9veoRNoH25IG9Jco0= github.com/aws/aws-sdk-go-v2/service/costoptimizationhub v1.11.0 h1:nV8WhW54iNT4XYZphMG5zfxhpe8POhi67Dp5uHCVk80= github.com/aws/aws-sdk-go-v2/service/costoptimizationhub v1.11.0/go.mod h1:CPai3cHY5BMDEFDcUW4JrkN0vo+L3IyJgF/+Ddlm3wc= github.com/aws/aws-sdk-go-v2/service/customerprofiles v1.43.0 h1:LnSDxvx4MoC59r50lHfyDmKFtT4DVeicBn6ci+gvQ/E= @@ -197,12 +197,12 @@ github.com/aws/aws-sdk-go-v2/service/devicefarm v1.28.6 h1:LMO26c9BpvBJU7TjkIOme github.com/aws/aws-sdk-go-v2/service/devicefarm v1.28.6/go.mod h1:/gu3tsu45lTMBDGOCMq+ff6R8xFJPJTmzG03GjsgNtI= github.com/aws/aws-sdk-go-v2/service/devopsguru v1.34.6 h1:ddoKgFm/1oBHo7u553A9KiaOGHps3vDDdW6l4mLOXSg= github.com/aws/aws-sdk-go-v2/service/devopsguru v1.34.6/go.mod h1:45NHbOfJAeqabfodRAD16xwtjiJmMdUNKNfF3o8i1nE= -github.com/aws/aws-sdk-go-v2/service/directconnect v1.29.6 h1:sXYEoFEo7GLwRwqY2RZxFs7VxpmW9+Kwsq0Z7Sz9wxg= -github.com/aws/aws-sdk-go-v2/service/directconnect v1.29.6/go.mod h1:E2hAfYPWIpsei0SCp8ykbHcXFON8Knf1oBVdlwUMuVE= +github.com/aws/aws-sdk-go-v2/service/directconnect v1.30.0 h1:Ynu1cxMflxgI2nG0LlS1EsCOhNCelAO24HgZCijyNw4= +github.com/aws/aws-sdk-go-v2/service/directconnect v1.30.0/go.mod h1:E2hAfYPWIpsei0SCp8ykbHcXFON8Knf1oBVdlwUMuVE= github.com/aws/aws-sdk-go-v2/service/directoryservice v1.30.7 h1:ZwecDiXujdrRm5C8UGwdcF9YpV83lgXfzBgUEF5KeME= github.com/aws/aws-sdk-go-v2/service/directoryservice v1.30.7/go.mod h1:ndWayMkDqmOHWM2OcX8Uno6i6gSNm2O8UBNkQjQHpFg= -github.com/aws/aws-sdk-go-v2/service/dlm v1.28.6 h1:dkGszLw6/TazWioiI8i6u3uuDCdVw/ur+voFtNVEUYw= -github.com/aws/aws-sdk-go-v2/service/dlm v1.28.6/go.mod h1:r1kmK6s90DSs6cxF3UvQAGI5LMVEySns/AWL7Rc6fH4= +github.com/aws/aws-sdk-go-v2/service/dlm v1.28.7 h1:gcQxVPVOqGaltkiGow3KxZN4srjmJeVXt4xzY21VqdU= +github.com/aws/aws-sdk-go-v2/service/dlm v1.28.7/go.mod h1:r1kmK6s90DSs6cxF3UvQAGI5LMVEySns/AWL7Rc6fH4= github.com/aws/aws-sdk-go-v2/service/docdb v1.39.5 h1:gWPt2urz9yNjcNcPQ097utT1VGdoeB47yMz2strJrZo= github.com/aws/aws-sdk-go-v2/service/docdb v1.39.5/go.mod h1:3MWrxWaAZsyjlR7sPSnps1uaVQZs8zIdS4lWDCUVD3g= github.com/aws/aws-sdk-go-v2/service/docdbelastic v1.14.3 h1:CqabKk/auDP8y6gjxpHNQ9pavQA1mKe4YopiC10U1co= @@ -211,8 +211,8 @@ github.com/aws/aws-sdk-go-v2/service/drs v1.30.6 h1:gRx0PWMok7r3zmoiwdFzYRyJwp2R github.com/aws/aws-sdk-go-v2/service/drs v1.30.6/go.mod h1:k4mtLg6LgO18IaHeQX9bCms31VSXidi44A1oqMiJ6CA= github.com/aws/aws-sdk-go-v2/service/dynamodb v1.37.1 h1:vucMirlM6D+RDU8ncKaSZ/5dGrXNajozVwpmWNPn2gQ= github.com/aws/aws-sdk-go-v2/service/dynamodb v1.37.1/go.mod h1:fceORfs010mNxZbQhfqUjUeHlTwANmIT4mvHamuUaUg= -github.com/aws/aws-sdk-go-v2/service/ec2 v1.192.0 h1:mNTVdPohLShrsPSyuOCyugLx1DQGCludmuiIsminhUk= -github.com/aws/aws-sdk-go-v2/service/ec2 v1.192.0/go.mod h1:mzj8EEjIHSN2oZRXiw1Dd+uB4HZTl7hC8nBzX9IZMWw= +github.com/aws/aws-sdk-go-v2/service/ec2 v1.193.0 h1:RhSoBFT5/8tTmIseJUXM6INTXTQDF8+0oyxWBnozIms= +github.com/aws/aws-sdk-go-v2/service/ec2 v1.193.0/go.mod h1:mzj8EEjIHSN2oZRXiw1Dd+uB4HZTl7hC8nBzX9IZMWw= github.com/aws/aws-sdk-go-v2/service/ecr v1.36.6 h1:zg+3FGHA0PBs0KM25qE/rOf2o5zsjNa1g/Qq83+SDI0= github.com/aws/aws-sdk-go-v2/service/ecr v1.36.6/go.mod h1:ZSq54Z9SIsOTf1Efwgw1msilSs4XVEfVQiP9nYVnKpM= github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.27.6 h1:9DXEMWmABYPz/NXSFmp9Y14yI5FQ5jmPPvllS9hXXfY= @@ -223,20 +223,20 @@ github.com/aws/aws-sdk-go-v2/service/efs v1.34.0 h1:0VpBMWwpq5UuhneIWO19+/Mp5DmF github.com/aws/aws-sdk-go-v2/service/efs v1.34.0/go.mod h1:WBUkzX6kKt36+zyeTQYxySd0TPuvNQhNWG6vRrNBzJw= github.com/aws/aws-sdk-go-v2/service/eks v1.52.1 h1:XqyUdJbXQxY48CbBtN9a51HoTQy/kTIwrWiruRDsydk= github.com/aws/aws-sdk-go-v2/service/eks v1.52.1/go.mod h1:WTfZ/+I7aSMEna6iYm1Kjne9A8f1MyxXNfp6hCa1+Bk= -github.com/aws/aws-sdk-go-v2/service/elasticache v1.43.3 h1:rMitMatUyTL02GTh5ITa2mon+Xp6iWrISgwWmAmzGFY= -github.com/aws/aws-sdk-go-v2/service/elasticache v1.43.3/go.mod h1:yx9zxw7KuLQoIdf0ajFjNhsIve273fJDMmF/BprT8Vc= +github.com/aws/aws-sdk-go-v2/service/elasticache v1.44.0 h1:Fyzf7cqohTLamP8kht9xvkMJT3HXmz0IQGdRMk1tdJk= +github.com/aws/aws-sdk-go-v2/service/elasticache v1.44.0/go.mod h1:yx9zxw7KuLQoIdf0ajFjNhsIve273fJDMmF/BprT8Vc= github.com/aws/aws-sdk-go-v2/service/elasticbeanstalk v1.28.5 h1:bCj+S/v35iLUnHp8DiIC92sdWYweLUjBDSLFbw7vHQ0= github.com/aws/aws-sdk-go-v2/service/elasticbeanstalk v1.28.5/go.mod h1:gOJmxmxThaTRM7r8WZ6BeOCl14UE48lSgMca7U4/oMM= github.com/aws/aws-sdk-go-v2/service/elasticloadbalancing v1.28.5 h1:12Fm4tTwFk2Url99X56hdKXKVK7suzZKjtdXAILne4g= github.com/aws/aws-sdk-go-v2/service/elasticloadbalancing v1.28.5/go.mod h1:qnlecrYsTCjPhGuF+3SZaz7WGuNz/T3L/Q8a3Yc7uww= -github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.42.0 h1:C4/D90/j3EF/SokpC4HO1aPMkZV1dgqUbmejdpxQiAE= -github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.42.0/go.mod h1:pZP3I+Ts+XuhJJtZE49+ABVjfxm7u9/hxcNUYSpY3OE= +github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.43.0 h1:fIAJ5VM/ANpYV81C1Jbf4ePbElMSzuWFljezD6weU9k= +github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.43.0/go.mod h1:pZP3I+Ts+XuhJJtZE49+ABVjfxm7u9/hxcNUYSpY3OE= github.com/aws/aws-sdk-go-v2/service/elasticsearchservice v1.32.6 h1:j19Nazjj1qrrm7DufPO53F9FFzrUDlphsqpNn0HU3fg= github.com/aws/aws-sdk-go-v2/service/elasticsearchservice v1.32.6/go.mod h1:6QH9UwlCk7m5PoCPH+/UZtStdP8dLg7CzJJ/52o2pAU= github.com/aws/aws-sdk-go-v2/service/elastictranscoder v1.27.6 h1:oV6JszCETDPPHkqZahjVUaP8IlWDSUm2B5lRISvsL2g= github.com/aws/aws-sdk-go-v2/service/elastictranscoder v1.27.6/go.mod h1:JsyDIVlHAYBxZHya8YzO7RzLq24uVUs01aG9BiKOYlo= -github.com/aws/aws-sdk-go-v2/service/emr v1.46.4 h1:+Y/EZ3kCmAORSH2Q1NWxtys3+Uy/+hn/t/XbKm3jwa4= -github.com/aws/aws-sdk-go-v2/service/emr v1.46.4/go.mod h1:1Rl0CmeP2He+Oiz7PtsVJxFIt1h2m1rt0vahJtIldE8= +github.com/aws/aws-sdk-go-v2/service/emr v1.47.0 h1:S3soqtUBuxbG1FcLFiP2uGInncnM0eei+hsmCou2aBs= +github.com/aws/aws-sdk-go-v2/service/emr v1.47.0/go.mod h1:1Rl0CmeP2He+Oiz7PtsVJxFIt1h2m1rt0vahJtIldE8= github.com/aws/aws-sdk-go-v2/service/emrcontainers v1.33.7 h1:OzrMVLJ97pCg2BCER5Tk0/Fg/604Ravd4VR3rRQeKJU= github.com/aws/aws-sdk-go-v2/service/emrcontainers v1.33.7/go.mod h1:JYC8r7iUXCR02VKACPxpcOeLtYnHeKNrMzLv0U6uKVs= github.com/aws/aws-sdk-go-v2/service/emrserverless v1.26.6 h1:0SqOqOHxwzy+2i/DvV/a5Lc+UrfDFRDiCQhVT9jTFFU= @@ -281,8 +281,8 @@ github.com/aws/aws-sdk-go-v2/service/imagebuilder v1.38.4 h1:aiUxEicGm5tUeTfhsay github.com/aws/aws-sdk-go-v2/service/imagebuilder v1.38.4/go.mod h1:6tZhu4I5K6paE401s53iw4F8fskiW6Z+HfOis/MyVwg= github.com/aws/aws-sdk-go-v2/service/inspector v1.25.6 h1:7tGA6lqnXk+KU9ZAYuExBkcw9pLw/mv/bXYxO5Sgsc0= github.com/aws/aws-sdk-go-v2/service/inspector v1.25.6/go.mod h1:UJfA0/mna6xg+45rmRqxX0+72UdlLnW7r99ke5MX4JU= -github.com/aws/aws-sdk-go-v2/service/inspector2 v1.33.1 h1:kRcDnjvUTrcHnN0faXj3t+O3/wRFvPo6dkJFoe41EjE= -github.com/aws/aws-sdk-go-v2/service/inspector2 v1.33.1/go.mod h1:WDIty+W4K+zTro9oNy51ct4odnoZSEQl9VdnRyJI4pE= +github.com/aws/aws-sdk-go-v2/service/inspector2 v1.34.0 h1:qEaZRkBG/RrgakiBGSU4j2gvYiJ4R29T65YLqynr92U= +github.com/aws/aws-sdk-go-v2/service/inspector2 v1.34.0/go.mod h1:WDIty+W4K+zTro9oNy51ct4odnoZSEQl9VdnRyJI4pE= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.1 h1:iXtILhvDxB6kPvEXgsDhGaZCSC6LQET5ZHSdJozeI0Y= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.1/go.mod h1:9nu0fVANtYiAePIBh2/pFUSwtJ402hLnp854CNoDOeE= github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.4.5 h1:gvZOjQKPxFXy1ft3QnEyXmT+IqneM9QAUWlM3r0mfqw= @@ -295,8 +295,8 @@ github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.5 h1:P1doBzv5VEg1ON github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.5/go.mod h1:NOP+euMW7W3Ukt28tAxPuoWao4rhhqJD3QEBk7oCg7w= github.com/aws/aws-sdk-go-v2/service/internetmonitor v1.20.1 h1:bMINUQ0Vx+W0F55LdM/QNmCyy4EpGNFRZxtEY9YY9Y4= github.com/aws/aws-sdk-go-v2/service/internetmonitor v1.20.1/go.mod h1:FwrxOAc2QpAXWHy6pPDHqQpQy/2NuZcdvj1x+lfQEek= -github.com/aws/aws-sdk-go-v2/service/iot v1.60.1 h1:od5vzNqjcpoJQ+QjfcysAvVIdTL41b4m7uVqHBtnSYk= -github.com/aws/aws-sdk-go-v2/service/iot v1.60.1/go.mod h1:S3rkM2vxkYQdO+eEfv7EKzL11An45GCt2/lcnI5LbU0= +github.com/aws/aws-sdk-go-v2/service/iot v1.61.0 h1:VsaQ+YkTqF7R/GbzWGdT9NVhKoxhw67eSC4JIA1QH2k= +github.com/aws/aws-sdk-go-v2/service/iot v1.61.0/go.mod h1:S3rkM2vxkYQdO+eEfv7EKzL11An45GCt2/lcnI5LbU0= github.com/aws/aws-sdk-go-v2/service/iotanalytics v1.26.6 h1:HCNKm01tmleHcWYZQ9xHreJx0+2mWetldsfHK5G2LZs= github.com/aws/aws-sdk-go-v2/service/iotanalytics v1.26.6/go.mod h1:YBeFAvdZ9sTyody+TwjI++jM7+A+gGMdNxUrssNDnlI= github.com/aws/aws-sdk-go-v2/service/iotevents v1.27.6 h1:6jqw638zUZ+hCrb40uzIXL/4b6o75Yykrt5gJVtorUU= @@ -325,8 +325,8 @@ github.com/aws/aws-sdk-go-v2/service/kms v1.37.6 h1:CZImQdb1QbU9sGgJ9IswhVkxAcjk github.com/aws/aws-sdk-go-v2/service/kms v1.37.6/go.mod h1:YJDdlK0zsyxVBxGU48AR/Mi8DMrGdc1E3Yij4fNrONA= github.com/aws/aws-sdk-go-v2/service/lakeformation v1.38.3 h1:vbc9pblnCXXwSGnUW6abjBH2nN66nifZzPfh0fapXl0= github.com/aws/aws-sdk-go-v2/service/lakeformation v1.38.3/go.mod h1:GSrO+Jr1SM/Jfdd52DIN48EY2tbhgk02nogvzpLkFks= -github.com/aws/aws-sdk-go-v2/service/lambda v1.67.0 h1:3BbFvl2FPtIIS6NEE/nnytkES85Kl93/VDAFICtGzfM= -github.com/aws/aws-sdk-go-v2/service/lambda v1.67.0/go.mod h1:guz2K3x4FKSdDaoeB+TPVgJNU9oj2gftbp5cR8ela1A= +github.com/aws/aws-sdk-go-v2/service/lambda v1.69.0 h1:BXt75frE/FYtAmEDBJRBa2HexOw+oAZWZl6QknZEFgg= +github.com/aws/aws-sdk-go-v2/service/lambda v1.69.0/go.mod h1:guz2K3x4FKSdDaoeB+TPVgJNU9oj2gftbp5cR8ela1A= github.com/aws/aws-sdk-go-v2/service/launchwizard v1.8.6 h1:+GPVOamTqDV7sSYzvziM4WbEv4u5jw/2bVYDl5NnmNU= github.com/aws/aws-sdk-go-v2/service/launchwizard v1.8.6/go.mod h1:2KF56C6mZldwDGFF/vyv83VGXqDVpAaH3NwBE2+OTtw= github.com/aws/aws-sdk-go-v2/service/lexmodelbuildingservice v1.28.6 h1:G6qKJwPyBMvFyWjAWW7lbZoN6VsYBCPxzjrQRKCexFg= @@ -365,12 +365,12 @@ github.com/aws/aws-sdk-go-v2/service/mwaa v1.33.0 h1:2MD49J99Lxb43LfLItaZEPVVgXH github.com/aws/aws-sdk-go-v2/service/mwaa v1.33.0/go.mod h1:xBgoacMucYu8C1qm8Z9kcI8ZbnbPgHR2EynpoPt4RZw= github.com/aws/aws-sdk-go-v2/service/neptune v1.35.5 h1:HDoA1Z3r2TuF6CJfYSoLV5Wr70ll+GtJM4vL4n7SAv0= github.com/aws/aws-sdk-go-v2/service/neptune v1.35.5/go.mod h1:vZbGimpx06Ar8EnMRoJLNYsJ6YeYFdvozTz8Kx279lU= -github.com/aws/aws-sdk-go-v2/service/neptunegraph v1.14.4 h1:bicyAt8d5ozkA1dYNWLG2DdA3tH1biSdvC/+2qsWH5E= -github.com/aws/aws-sdk-go-v2/service/neptunegraph v1.14.4/go.mod h1:Uade5ii2gNtKGSUZ2rXZBTSow50uCWh8mNLxsBeSppM= +github.com/aws/aws-sdk-go-v2/service/neptunegraph v1.15.0 h1:BhMpfPFW0vgobYTzfrMFijjXxHCqpyB906ToYuswnpQ= +github.com/aws/aws-sdk-go-v2/service/neptunegraph v1.15.0/go.mod h1:Uade5ii2gNtKGSUZ2rXZBTSow50uCWh8mNLxsBeSppM= github.com/aws/aws-sdk-go-v2/service/networkfirewall v1.44.3 h1:5gs6lyhGYupTMTE+sFsbh35W+XPCdCt4Pgg8qEUleGw= github.com/aws/aws-sdk-go-v2/service/networkfirewall v1.44.3/go.mod h1:RrSc7fUe1EX71WfWClFvg55tAdQJ0UdG1uCOBzAgFFo= -github.com/aws/aws-sdk-go-v2/service/networkmanager v1.31.6 h1:j1DzkC+I+mSVkgLXmXadU0bU1NKqLhtJC0VAnmvTvWE= -github.com/aws/aws-sdk-go-v2/service/networkmanager v1.31.6/go.mod h1:9xE0GXvKJ9L8YedscqsmKp2H5UI9luBqqQC2P8dxvf8= +github.com/aws/aws-sdk-go-v2/service/networkmanager v1.32.0 h1:oodO2q9rmUFricTJr5KnG5HD/6b7L2kfGEyHBD34oSE= +github.com/aws/aws-sdk-go-v2/service/networkmanager v1.32.0/go.mod h1:9xE0GXvKJ9L8YedscqsmKp2H5UI9luBqqQC2P8dxvf8= github.com/aws/aws-sdk-go-v2/service/networkmonitor v1.7.6 h1:WnyUwcAeE6NYv8Zk1A/hrUsy5ypFpFFnD88dxNfpIx4= github.com/aws/aws-sdk-go-v2/service/networkmonitor v1.7.6/go.mod h1:obg4ub54CzsQSVt/Q5RMUPo48in9LO2KB/nDsuaQxZs= github.com/aws/aws-sdk-go-v2/service/oam v1.15.6 h1:rO6Yu1VrV7IvQcw7CaTxx+p3Z0IIGeY5U7iEjpM98rc= @@ -399,16 +399,16 @@ github.com/aws/aws-sdk-go-v2/service/pinpointsmsvoicev2 v1.18.1 h1:Rq87gPsr+seXV github.com/aws/aws-sdk-go-v2/service/pinpointsmsvoicev2 v1.18.1/go.mod h1:7ouFIQqHwpK5rnzhCkDfF3LioqoOiQs5UD7ANRhxCsg= github.com/aws/aws-sdk-go-v2/service/pipes v1.18.4 h1:hkcI3Is0nBoo0RwMCTY3N9jd3kLbF3eELkmb5xeWDWA= github.com/aws/aws-sdk-go-v2/service/pipes v1.18.4/go.mod h1:ubOlYYLTKhB0FNA85qTHyJGsTTR20T406ywZBXZdcNs= -github.com/aws/aws-sdk-go-v2/service/polly v1.45.6 h1:BB7f5DkU0M86skyEWjCCu2WaiLLPlZzl97np014XQJ8= -github.com/aws/aws-sdk-go-v2/service/polly v1.45.6/go.mod h1:Rp9B8Z/0JVupwGQZavo5YmYjI8mF6wNIv5+Dv4IQb3M= +github.com/aws/aws-sdk-go-v2/service/polly v1.45.7 h1:vjSRnb6eE/VeWy5sicCbp1uG3yn9idstyJ9fiwydFv4= +github.com/aws/aws-sdk-go-v2/service/polly v1.45.7/go.mod h1:Rp9B8Z/0JVupwGQZavo5YmYjI8mF6wNIv5+Dv4IQb3M= github.com/aws/aws-sdk-go-v2/service/pricing v1.32.6 h1:ZzoCQskTXjZBqKW9ZpUFUBCcK22TQZWbO+6PbX8Gu2U= github.com/aws/aws-sdk-go-v2/service/pricing v1.32.6/go.mod h1:9U+el9JTtl0llHl7GimPXMmqNHkjgMeV9vMVvznTqfs= github.com/aws/aws-sdk-go-v2/service/qbusiness v1.16.1 h1:h0NRI0sp2vSW3pocytiirHXzUzqz7sAKtECLucRjLo8= github.com/aws/aws-sdk-go-v2/service/qbusiness v1.16.1/go.mod h1:npob1eKe0EiDBkePh5Y9vnTsI8N507o/XIyZLEYfiYg= github.com/aws/aws-sdk-go-v2/service/qldb v1.25.6 h1:0x4VnCqVcYDsiQs7+VTz3qtaeyTCyB9FtZNAMkb2TCo= github.com/aws/aws-sdk-go-v2/service/qldb v1.25.6/go.mod h1:E7qOKK1pXhE9b1M+52KfCoPr8rIhFUimRgy7bxtLN1U= -github.com/aws/aws-sdk-go-v2/service/quicksight v1.79.1 h1:TjlMHaIWnSa7qV+bdfPRYYG71y2G1oK2OcwZArwCHrU= -github.com/aws/aws-sdk-go-v2/service/quicksight v1.79.1/go.mod h1:vFpU88RJn13XpH88/x7cu+onAag/9cGpjpre8t/0srE= +github.com/aws/aws-sdk-go-v2/service/quicksight v1.80.0 h1:bVG1RvmyEsy5XJNgTGKFox/PUaenvRI6kv6Svb3ifac= +github.com/aws/aws-sdk-go-v2/service/quicksight v1.80.0/go.mod h1:vFpU88RJn13XpH88/x7cu+onAag/9cGpjpre8t/0srE= github.com/aws/aws-sdk-go-v2/service/ram v1.29.6 h1:84mPZMJZHAZBFtff+UbZjAck7ZSiRY+nxmElxTEKa1c= github.com/aws/aws-sdk-go-v2/service/ram v1.29.6/go.mod h1:I6romstEDoLQy+FCQxBmCkoKB3TkpFqiYKrc56nQEFI= github.com/aws/aws-sdk-go-v2/service/rbin v1.21.0 h1:Tx49bha+JoGKWeph1Z5zcyDr4u2e5CrTunWxlI0dsoU= @@ -423,8 +423,8 @@ github.com/aws/aws-sdk-go-v2/service/redshiftserverless v1.24.3 h1:kK6hgb+NPtKbV github.com/aws/aws-sdk-go-v2/service/redshiftserverless v1.24.3/go.mod h1:rM2oYKRheMpuxjJ7fkIqoegIVdG4GkdOqRx1PSx9xYs= github.com/aws/aws-sdk-go-v2/service/rekognition v1.45.7 h1:kC6qaN1AVzhBzDo/0sUCdkJVcamuMslppfys4oGtxR4= github.com/aws/aws-sdk-go-v2/service/rekognition v1.45.7/go.mod h1:/OYd+ham4lcrARFxWjW+TzBZ0u1gprKqbOUAnX4e0D4= -github.com/aws/aws-sdk-go-v2/service/resiliencehub v1.27.4 h1:DDV5IgFQaDoPiPK04iZfoDhW17z8jSWzbeOP+Voh474= -github.com/aws/aws-sdk-go-v2/service/resiliencehub v1.27.4/go.mod h1:qjJmrIFydKnYY0o/pzlSRiVW3MlfexrcfLGprTB9RGU= +github.com/aws/aws-sdk-go-v2/service/resiliencehub v1.28.0 h1:j4tpuJDBBOrjO0nu0/OYF+npDe0zUKDh87Bvu6xMm5M= +github.com/aws/aws-sdk-go-v2/service/resiliencehub v1.28.0/go.mod h1:qjJmrIFydKnYY0o/pzlSRiVW3MlfexrcfLGprTB9RGU= github.com/aws/aws-sdk-go-v2/service/resourceexplorer2 v1.16.1 h1:4sLI1tQYWtjUKbGcqi24jrK9yCRj9dzDlpoHI0nPBBM= github.com/aws/aws-sdk-go-v2/service/resourceexplorer2 v1.16.1/go.mod h1:/BvZpktD03eMkAyP9EJgIZ/0KpfCKAokOo+rFAPWNQo= github.com/aws/aws-sdk-go-v2/service/resourcegroups v1.27.6 h1:1Xt2iiHMw+5WwGLaKZ7KhB+NabAHdPo2pPmSQJO9RAY= @@ -447,14 +447,14 @@ github.com/aws/aws-sdk-go-v2/service/route53resolver v1.34.1 h1:FlKzCc4JH3i87BpF github.com/aws/aws-sdk-go-v2/service/route53resolver v1.34.1/go.mod h1:Srhr/nWE3+IKKhOqUBc/hYmdgCgxt2Z91GMFFtJyOeE= github.com/aws/aws-sdk-go-v2/service/rum v1.21.6 h1:4U/ss6VTGPGvnSzDyojk/atrOWhJ9OPh4RHwYEm86aA= github.com/aws/aws-sdk-go-v2/service/rum v1.21.6/go.mod h1:kAUyICwBeSM4d/WWS2ZcRz9RLtd0ZuDEQbTf4YCmcbA= -github.com/aws/aws-sdk-go-v2/service/s3 v1.67.1 h1:LXLnDfjT/P6SPIaCE86xCOjJROPn4FNB2EdN68vMK5c= -github.com/aws/aws-sdk-go-v2/service/s3 v1.67.1/go.mod h1:ralv4XawHjEMaHOWnTFushl0WRqim/gQWesAMF6hTow= +github.com/aws/aws-sdk-go-v2/service/s3 v1.69.0 h1:Q2ax8S21clKOnHhhr933xm3JxdJebql+R7aNo7p7GBQ= +github.com/aws/aws-sdk-go-v2/service/s3 v1.69.0/go.mod h1:ralv4XawHjEMaHOWnTFushl0WRqim/gQWesAMF6hTow= github.com/aws/aws-sdk-go-v2/service/s3control v1.50.1 h1:WjVnnNd++hjjmuODULNfZaW2zEKZVrDGZvdQUK2dF8M= github.com/aws/aws-sdk-go-v2/service/s3control v1.50.1/go.mod h1:ymXHnBHIxM/iqrgGphFuoUfuczoy4inIr2LH8PRj8NQ= github.com/aws/aws-sdk-go-v2/service/s3outposts v1.28.6 h1:zzoRIW5fgL23XkMtW4eDNMvWreQLOJNeFCK2tmjfz1w= github.com/aws/aws-sdk-go-v2/service/s3outposts v1.28.6/go.mod h1:eWYAk3ydR9kivn2OqgXUAgZTvmeSQeoYKiEFIQFVm1M= -github.com/aws/aws-sdk-go-v2/service/sagemaker v1.167.1 h1:ZuWM7eVEdaG73ltv7eUXeKGFSDkpSX0Ub5E6YHdsBy0= -github.com/aws/aws-sdk-go-v2/service/sagemaker v1.167.1/go.mod h1:F2Dsgm3rYCwBQ3kceuZwwdx6N/7jpcRIREp3CGMBwV8= +github.com/aws/aws-sdk-go-v2/service/sagemaker v1.168.0 h1:t3gEqynGngUIZ3dqg9LsrGgK/4Qemqy/LQJtpI7waow= +github.com/aws/aws-sdk-go-v2/service/sagemaker v1.168.0/go.mod h1:F2Dsgm3rYCwBQ3kceuZwwdx6N/7jpcRIREp3CGMBwV8= github.com/aws/aws-sdk-go-v2/service/scheduler v1.12.6 h1:68IWlYXT4lWbn1EmL8NBouGTyi9W/IXkXSJbTiasjXY= github.com/aws/aws-sdk-go-v2/service/scheduler v1.12.6/go.mod h1:p6YS4Jv8IRTR8g77fl7iAYa72RfFV5t7ek8TP8/fKVM= github.com/aws/aws-sdk-go-v2/service/schemas v1.28.7 h1:2Wt+RX/lsLb/+np1UV9naIpl0gg03bs7rkt76Gr6W8s= @@ -475,28 +475,28 @@ github.com/aws/aws-sdk-go-v2/service/servicediscovery v1.33.6 h1:SNpBx1RGzJRBdiU github.com/aws/aws-sdk-go-v2/service/servicediscovery v1.33.6/go.mod h1:wUxQDWQLkWd7A7ROXBwiOhjKFOvHAoKHbrykS9xq9D0= github.com/aws/aws-sdk-go-v2/service/servicequotas v1.25.6 h1:GiXCmQ0LWJxMqxeRK8Oc1w2Ufyn9ADxc0MXZMzFTYyI= github.com/aws/aws-sdk-go-v2/service/servicequotas v1.25.6/go.mod h1:j97IqfLFihFonWq16KSfpMENWQ1PvLjNhjoJfpwYTv8= -github.com/aws/aws-sdk-go-v2/service/ses v1.28.5 h1:fct7t4dGDFoJRk+8EIYBXLNsjd0PdvlRRTtfVwkMwSc= -github.com/aws/aws-sdk-go-v2/service/ses v1.28.5/go.mod h1:JRCjHrdiLrSoHRbbOd0lTQOS5U9Yxe72wB3Rk+e2tcQ= +github.com/aws/aws-sdk-go-v2/service/ses v1.29.0 h1:b6Je/QdCfxf6xupis7Eu8fH6SPFE3tG/Xd6MDOpOGJo= +github.com/aws/aws-sdk-go-v2/service/ses v1.29.0/go.mod h1:JRCjHrdiLrSoHRbbOd0lTQOS5U9Yxe72wB3Rk+e2tcQ= github.com/aws/aws-sdk-go-v2/service/sesv2 v1.38.3 h1:el5Rx1kxCrz4rb/lCPl+Hq33ZAdKohbOTlcks7nR7L0= github.com/aws/aws-sdk-go-v2/service/sesv2 v1.38.3/go.mod h1:Lw3+PgymmO/wdBXubwIAn+RiG7T/cD9gE5kicRmN54A= -github.com/aws/aws-sdk-go-v2/service/sfn v1.33.6 h1:nS79DBMlscyO8OYSJXgv/MlVAevIia3jIrupV6Cj57Q= -github.com/aws/aws-sdk-go-v2/service/sfn v1.33.6/go.mod h1:3dMtLKPPdu8n0VakTR9ncAjFGvnRyLMD1Ib5USqCLG4= +github.com/aws/aws-sdk-go-v2/service/sfn v1.34.0 h1:fWI2n4gv/RHaPaRbceJsQxlvVwBdH2a1v/qjFx1xI58= +github.com/aws/aws-sdk-go-v2/service/sfn v1.34.0/go.mod h1:3dMtLKPPdu8n0VakTR9ncAjFGvnRyLMD1Ib5USqCLG4= github.com/aws/aws-sdk-go-v2/service/shield v1.29.6 h1:6Gyhego+FPrK45FxaQ0wRm4EpovxHc51M4WFaQdGJz0= github.com/aws/aws-sdk-go-v2/service/shield v1.29.6/go.mod h1:KYGAHKJFsHD+QVZ08NHHjAtA0FBrfm5YVSGe7eV4AH0= github.com/aws/aws-sdk-go-v2/service/signer v1.26.6 h1:inoZy/MBkjYLTsvOlU+b3ifeBiWbtQlSp5CKAoFb/6k= github.com/aws/aws-sdk-go-v2/service/signer v1.26.6/go.mod h1:PlARViFxCTRAUavXGcQObbvAneCEeln0hvpQCsHJATU= -github.com/aws/aws-sdk-go-v2/service/sns v1.33.5 h1:nJDOsZumqKsejsiGKgpezFzI2oatHmQi/kKKC4wS8v4= -github.com/aws/aws-sdk-go-v2/service/sns v1.33.5/go.mod h1:SODr0Lu3lFdT0SGsGX1TzFTapwveBrT5wztVoYtppm8= +github.com/aws/aws-sdk-go-v2/service/sns v1.33.6 h1:lEUtRHICiXsd7VRwRjXaY7MApT2X4Ue0Mrwe6XbyBro= +github.com/aws/aws-sdk-go-v2/service/sns v1.33.6/go.mod h1:SODr0Lu3lFdT0SGsGX1TzFTapwveBrT5wztVoYtppm8= github.com/aws/aws-sdk-go-v2/service/sqs v1.37.1 h1:39WvSrVq9DD6UHkD+fx5x19P5KpRQfNdtgReDVNbelc= github.com/aws/aws-sdk-go-v2/service/sqs v1.37.1/go.mod h1:3gwPzC9LER/BTQdQZ3r6dUktb1rSjABF1D3Sr6nS7VU= -github.com/aws/aws-sdk-go-v2/service/ssm v1.55.6 h1:mh6Osa3cjwaaVSzJ92a8x1dBh8XQ7ekKLHyhjtx5RRw= -github.com/aws/aws-sdk-go-v2/service/ssm v1.55.6/go.mod h1:l9qF25TzH95FhcIak6e4vt79KE4I7M2Nf59eMUVjj6c= +github.com/aws/aws-sdk-go-v2/service/ssm v1.56.0 h1:mADKqoZaodipGgiZfuAjtlcr4IVBtXPZKVjkzUZCCYM= +github.com/aws/aws-sdk-go-v2/service/ssm v1.56.0/go.mod h1:l9qF25TzH95FhcIak6e4vt79KE4I7M2Nf59eMUVjj6c= github.com/aws/aws-sdk-go-v2/service/ssmcontacts v1.26.6 h1:mYRRsmR2P2tGRzoAWOc0dhh6/wm5xF9MRkMJ/OJdkNk= github.com/aws/aws-sdk-go-v2/service/ssmcontacts v1.26.6/go.mod h1:aTtebl9x8vxZTTUamDzvujt1OICEpcZED1oCi80yyJw= github.com/aws/aws-sdk-go-v2/service/ssmincidents v1.34.6 h1:dqJenl1BmS8fQWI8Ol/h3WdME5lRiYdmggoHv1fihVY= github.com/aws/aws-sdk-go-v2/service/ssmincidents v1.34.6/go.mod h1:NU/CID+MNfIEoHY+XOQ4xvtF8vPm0eco0thWTY2EM9o= -github.com/aws/aws-sdk-go-v2/service/ssmquicksetup v1.2.7 h1:d26uTPkNtnu91NP0+OUAiJL8HoBqzexaElP+8e97zRM= -github.com/aws/aws-sdk-go-v2/service/ssmquicksetup v1.2.7/go.mod h1:MtHMOMSvnNeeu3F5WP30eZwSp1qRbxjkT2xor1mb/H4= +github.com/aws/aws-sdk-go-v2/service/ssmquicksetup v1.3.0 h1:SYNFn4FRwdrh0tWdRBcrVN1T3/QgisV/E68/y+0cda8= +github.com/aws/aws-sdk-go-v2/service/ssmquicksetup v1.3.0/go.mod h1:MtHMOMSvnNeeu3F5WP30eZwSp1qRbxjkT2xor1mb/H4= github.com/aws/aws-sdk-go-v2/service/ssmsap v1.18.6 h1:uJACk0uiWe+s5Y7CWo15ojwRS4uwxBsfjrcG/QxztKo= github.com/aws/aws-sdk-go-v2/service/ssmsap v1.18.6/go.mod h1:v676cxw/KjLk2vM97EL/nrpiX160mY97QErDa2ArdUs= github.com/aws/aws-sdk-go-v2/service/sso v1.24.6 h1:3zu537oLmsPfDMyjnUS2g+F2vITgy5pB74tHI+JBNoM= @@ -517,16 +517,16 @@ github.com/aws/aws-sdk-go-v2/service/taxsettings v1.7.0 h1:NWEjSezAbU7klTwlWJFLh github.com/aws/aws-sdk-go-v2/service/taxsettings v1.7.0/go.mod h1:jHBnwkzXiAFmiNEKEuyBxE+eEqfa1qm7wggL7RTgqHM= github.com/aws/aws-sdk-go-v2/service/timestreaminfluxdb v1.6.6 h1:Ouja3w2uigjuZ5wa7aR0CaHZTe+niXSzUvJS/4E1Wa0= github.com/aws/aws-sdk-go-v2/service/timestreaminfluxdb v1.6.6/go.mod h1:OVSgcDB+hYKLrNiho0Y19pQiOMnth63hprCxzpblayA= -github.com/aws/aws-sdk-go-v2/service/timestreamwrite v1.29.6 h1:AOlSnlkT0ZgJxuMcH8Fes1NBg4xNtKTB3+LF4bzHMII= -github.com/aws/aws-sdk-go-v2/service/timestreamwrite v1.29.6/go.mod h1:UyyUbIDdMO1cGXWA37B/KylPyLrq5kNU1m2E+ojF610= +github.com/aws/aws-sdk-go-v2/service/timestreamwrite v1.29.7 h1:i3Uuh/LLP1Qh3x0qh8i2OnaU+nZ5u3oMwffIrtH7yjc= +github.com/aws/aws-sdk-go-v2/service/timestreamwrite v1.29.7/go.mod h1:UyyUbIDdMO1cGXWA37B/KylPyLrq5kNU1m2E+ojF610= github.com/aws/aws-sdk-go-v2/service/transcribe v1.41.6 h1:0uM86aXF1xuNNP94lvMua36AS4/urnnV0JIoZs1hgdM= github.com/aws/aws-sdk-go-v2/service/transcribe v1.41.6/go.mod h1:VdynE2CDkpp9p96Nsy+eFE5PJferzNnjuB1kMcjl0Uk= github.com/aws/aws-sdk-go-v2/service/transfer v1.53.5 h1:xyvVof+cdQogIXJDKJdhJ2dVF/svxrjv4zEP1T9fIV0= github.com/aws/aws-sdk-go-v2/service/transfer v1.53.5/go.mod h1:tjYLu1usUNMh2mMGrahX1ZQd7WSIwqe0O7wGd5Gq4aU= github.com/aws/aws-sdk-go-v2/service/verifiedpermissions v1.20.2 h1:ERPfTAJIbZxwDJKCPvsZacGqodEx4dj9K2OC4sDnrCk= github.com/aws/aws-sdk-go-v2/service/verifiedpermissions v1.20.2/go.mod h1:f4UivZUJxaK4N/UIJXQgpirh3yWsNxMzWsrk0sUvZrk= -github.com/aws/aws-sdk-go-v2/service/vpclattice v1.12.8 h1:a7UROHRTNSQrJ2h4BETtfACcPjWuZPoPpeMBmxS7K00= -github.com/aws/aws-sdk-go-v2/service/vpclattice v1.12.8/go.mod h1:X0X0qZ4S3qpAm8NfTdW4lacTf2VusIV3sbwF+CN3d4k= +github.com/aws/aws-sdk-go-v2/service/vpclattice v1.12.9 h1:GRU6B7siT+PRSIS9JmOFLugE90//aCQ9jOfk09wxI+g= +github.com/aws/aws-sdk-go-v2/service/vpclattice v1.12.9/go.mod h1:X0X0qZ4S3qpAm8NfTdW4lacTf2VusIV3sbwF+CN3d4k= github.com/aws/aws-sdk-go-v2/service/waf v1.25.6 h1:FgT+D2lZj5PP1enlTMg4i7yHPCDjk7css+GEQbkwHiI= github.com/aws/aws-sdk-go-v2/service/waf v1.25.6/go.mod h1:CdOaduoCFkcCa1F3V0FfKsRflqwjuuctnt0eyDQlt0Y= github.com/aws/aws-sdk-go-v2/service/wafregional v1.25.6 h1:ZAVHrgxHso3D6ZrWYNW8ZYpWei5YRdMNu4teYal/B4c= @@ -537,12 +537,12 @@ github.com/aws/aws-sdk-go-v2/service/wellarchitected v1.34.6 h1:gRlAqT37MBjotuhc github.com/aws/aws-sdk-go-v2/service/wellarchitected v1.34.6/go.mod h1:5/10vqAzXC/biuHdbkYAULETemq0j+7fafDQyqUjKRA= github.com/aws/aws-sdk-go-v2/service/worklink v1.23.2 h1:VN3Qydtdl3UlJRHVxQxSP1d8I5gtvT5zdaCCAfZST7Y= github.com/aws/aws-sdk-go-v2/service/worklink v1.23.2/go.mod h1:Z3RLpIq4q49syd921XdsKeD584kPu89iKTEjluh7908= -github.com/aws/aws-sdk-go-v2/service/workspaces v1.50.0 h1:7rGPAEvw9t7crYz4C4n80GHLe9O8XxbmeBywWp7iCVw= -github.com/aws/aws-sdk-go-v2/service/workspaces v1.50.0/go.mod h1:ZKS7KNf+/ecd+vfEVnfee4ZKg09jrB6/14Qnf79Y+so= +github.com/aws/aws-sdk-go-v2/service/workspaces v1.50.1 h1:c974+tQIdxp/CoNWQfG6JWc90dgZDnup8/k8M0aR4+U= +github.com/aws/aws-sdk-go-v2/service/workspaces v1.50.1/go.mod h1:ZKS7KNf+/ecd+vfEVnfee4ZKg09jrB6/14Qnf79Y+so= github.com/aws/aws-sdk-go-v2/service/workspacesweb v1.25.0 h1:H5JtZI/cuMrzvzl44q542vCr3w3EHlYl5+0ac9MdAik= github.com/aws/aws-sdk-go-v2/service/workspacesweb v1.25.0/go.mod h1:NgEGK1Ex63erNYNTWMenNczoi8/nguJvIvobKYp1LQ8= -github.com/aws/aws-sdk-go-v2/service/xray v1.29.6 h1:petUl/lqCEs41/fs28skMHZZsBah5oQk6uHKZSBqApk= -github.com/aws/aws-sdk-go-v2/service/xray v1.29.6/go.mod h1:+wep8ElVmvR0bCsQ1SQWMKhAlA3+Ks0+uitEfYQ8zO8= +github.com/aws/aws-sdk-go-v2/service/xray v1.30.0 h1:3kGcueLqlC3x5LqVWgckz38Kd5pHqpzhVC95beoZVyI= +github.com/aws/aws-sdk-go-v2/service/xray v1.30.0/go.mod h1:+wep8ElVmvR0bCsQ1SQWMKhAlA3+Ks0+uitEfYQ8zO8= github.com/aws/smithy-go v1.22.1 h1:/HPHZQ0g7f4eUeK6HKglFz8uwVfZKgoI25rb/J+dnro= github.com/aws/smithy-go v1.22.1/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg= github.com/beevik/etree v1.4.1 h1:PmQJDDYahBGNKDcpdX8uPy1xRCwoCGVUiW669MEirVI= diff --git a/internal/acctest/acctest.go b/internal/acctest/acctest.go index a5d9a723224..231d50bbeb6 100644 --- a/internal/acctest/acctest.go +++ b/internal/acctest/acctest.go @@ -12,8 +12,8 @@ import ( "net" "os" "os/exec" - "reflect" "regexp" + "slices" "strconv" "strings" "sync" @@ -31,7 +31,6 @@ import ( dstypes "github.com/aws/aws-sdk-go-v2/service/directoryservice/types" ec2types "github.com/aws/aws-sdk-go-v2/service/ec2/types" "github.com/aws/aws-sdk-go-v2/service/iam" - iamtypes "github.com/aws/aws-sdk-go-v2/service/iam/types" "github.com/aws/aws-sdk-go-v2/service/inspector2" inspector2types "github.com/aws/aws-sdk-go-v2/service/inspector2/types" organizationstypes "github.com/aws/aws-sdk-go-v2/service/organizations/types" @@ -1122,6 +1121,20 @@ func PreCheckOrganizationsEnabled(ctx context.Context, t *testing.T) *organizati return PreCheckOrganizationsEnabledWithProvider(ctx, t, func() *schema.Provider { return Provider }) } +func PreCheckOrganizationsEnabledServicePrincipal(ctx context.Context, t *testing.T, servicePrincipalName string) { + t.Helper() + + servicePrincipalNames, err := tforganizations.FindEnabledServicePrincipalNames(ctx, Provider.Meta().(*conns.AWSClient).OrganizationsClient(ctx)) + + if err != nil { + t.Fatalf("reading Organization service principals: %s", err) + } + + if !slices.Contains(servicePrincipalNames, servicePrincipalName) { + t.Skipf("trusted access for %s must be enabled in AWS Organizations", servicePrincipalName) + } +} + func PreCheckOrganizationsEnabledWithProvider(ctx context.Context, t *testing.T, providerF ProviderFunc) *organizationstypes.Organization { t.Helper() @@ -1270,7 +1283,7 @@ func PreCheckIAMServiceLinkedRoleWithProvider(ctx context.Context, t *testing.T, input := &iam.ListRolesInput{ PathPrefix: aws.String(pathPrefix), } - var role iamtypes.Role + var roleFound bool pages := iam.NewListRolesPaginator(conn, input) for pages.HasMorePages() { @@ -1282,13 +1295,13 @@ func PreCheckIAMServiceLinkedRoleWithProvider(ctx context.Context, t *testing.T, t.Fatalf("listing IAM roles: %s", err) } - for _, r := range page.Roles { - role = r + if len(page.Roles) > 0 { + roleFound = true break } } - if reflect.ValueOf(role).IsZero() { + if !roleFound { t.Skipf("skipping tests; missing IAM service-linked role %s. Please create the role and retry", pathPrefix) } } diff --git a/internal/conns/config.go b/internal/conns/config.go index 7f7a5afc0ef..8ee7c6d6270 100644 --- a/internal/conns/config.go +++ b/internal/conns/config.go @@ -190,7 +190,7 @@ func (c *Config) ConfigureProvider(ctx context.Context, client *AWSClient) (*AWS }) } - if accountID == "" { + if accountID == "" && !awsbaseConfig.SkipRequestingAccountId { diags = append(diags, errs.NewWarningDiagnostic( "AWS account ID not found for provider", "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.")) diff --git a/internal/conns/config_test.go b/internal/conns/config_test.go index f7684e658ac..843f68d1ac3 100644 --- a/internal/conns/config_test.go +++ b/internal/conns/config_test.go @@ -16,7 +16,6 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" terraformsdk "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" "github.com/hashicorp/terraform-provider-aws/internal/conns" - "github.com/hashicorp/terraform-provider-aws/internal/errs" "github.com/hashicorp/terraform-provider-aws/internal/errs/sdkdiag" "github.com/hashicorp/terraform-provider-aws/internal/provider" ) @@ -462,14 +461,6 @@ func TestProxyConfig(t *testing.T) { } expectedDiags := tc.expectedDiags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/generate/checknames/main.go b/internal/generate/checknames/main.go index f84da2a64b1..b0556283813 100644 --- a/internal/generate/checknames/main.go +++ b/internal/generate/checknames/main.go @@ -272,7 +272,7 @@ func checkDocFile(dir, name string, prefixes []DocPrefix) error { sc := scanner.Text() sc = strings.TrimSuffix(strings.TrimPrefix(sc, "subcategory: \""), "\"") if hf != sc { - return fmt.Errorf("file (%s) subcategory (%s) doesn't match file name prefix, expecting %s", name, sc, hf) + return fmt.Errorf("file (%s) subcategory (%s) doesn't match HumanFriendly, expecting %s", name, sc, hf) } case 2: continue diff --git a/internal/generate/serviceendpointtests/file.gtpl b/internal/generate/serviceendpointtests/file.gtpl index 1e03e4eb331..c179c917b55 100644 --- a/internal/generate/serviceendpointtests/file.gtpl +++ b/internal/generate/serviceendpointtests/file.gtpl @@ -756,14 +756,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/provider/provider_config_test.go b/internal/provider/provider_config_test.go index ca31f974b14..e1d4ed25489 100644 --- a/internal/provider/provider_config_test.go +++ b/internal/provider/provider_config_test.go @@ -181,14 +181,7 @@ sso_start_url = https://d-123456789a.awsapps.com/start# diags = append(diags, p.Configure(ctx, rc)...) - // The provider always returns a warning if there is no account ID var expected diag.Diagnostics - expected = append(expected, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) if diff := cmp.Diff(diags, expected, cmp.Comparer(sdkdiag.Comparer)); diff != "" { t.Errorf("unexpected diagnostics difference: %s", diff) @@ -282,16 +275,7 @@ func (d testCaseDriver) Apply(ctx context.Context, t *testing.T) (context.Contex diags = append(diags, p.Configure(ctx, rc)...) - // The provider always returns a warning if there is no account ID var expected diag.Diagnostics - if d.mode == configtesting.TestModeLocal { - expected = append(expected, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - } if diff := cmp.Diff(diags, expected, cmp.Comparer(sdkdiag.Comparer)); diff != "" { t.Errorf("unexpected diagnostics difference: %s", diff) @@ -623,15 +607,6 @@ func TestProviderConfig_AssumeRole(t *testing.T) { //nolint:paralleltest diags = append(diags, p.Configure(ctx, rc)...) expectedDiags := tc.ExpectedDiags - // If the provider attempts authorization, it always returns a warning if there is no account ID - if !tc.ExpectedDiags.HasError() { - expectedDiags = append(expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - } if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { t.Errorf("unexpected diagnostics difference: %s", diff) diff --git a/internal/service/accessanalyzer/service_endpoints_gen_test.go b/internal/service/accessanalyzer/service_endpoints_gen_test.go index 3492eed5f79..73a007c055d 100644 --- a/internal/service/accessanalyzer/service_endpoints_gen_test.go +++ b/internal/service/accessanalyzer/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/account/service_endpoints_gen_test.go b/internal/service/account/service_endpoints_gen_test.go index 4607523fa19..a0e60a840e0 100644 --- a/internal/service/account/service_endpoints_gen_test.go +++ b/internal/service/account/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/acm/service_endpoints_gen_test.go b/internal/service/acm/service_endpoints_gen_test.go index 2ba1986e91c..99ddffe9310 100644 --- a/internal/service/acm/service_endpoints_gen_test.go +++ b/internal/service/acm/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/acmpca/service_endpoints_gen_test.go b/internal/service/acmpca/service_endpoints_gen_test.go index 8a4981b8fe6..a115689e089 100644 --- a/internal/service/acmpca/service_endpoints_gen_test.go +++ b/internal/service/acmpca/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/amp/service_endpoints_gen_test.go b/internal/service/amp/service_endpoints_gen_test.go index 0d8e8290dee..bc1dc256aba 100644 --- a/internal/service/amp/service_endpoints_gen_test.go +++ b/internal/service/amp/service_endpoints_gen_test.go @@ -603,14 +603,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/amplify/service_endpoints_gen_test.go b/internal/service/amplify/service_endpoints_gen_test.go index 489787ff1c3..02dad53c5e0 100644 --- a/internal/service/amplify/service_endpoints_gen_test.go +++ b/internal/service/amplify/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/apigateway/service_endpoints_gen_test.go b/internal/service/apigateway/service_endpoints_gen_test.go index 8e711a643e8..5c68a80ff84 100644 --- a/internal/service/apigateway/service_endpoints_gen_test.go +++ b/internal/service/apigateway/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/apigatewayv2/service_endpoints_gen_test.go b/internal/service/apigatewayv2/service_endpoints_gen_test.go index 9d11714f220..6f0d69bb1ee 100644 --- a/internal/service/apigatewayv2/service_endpoints_gen_test.go +++ b/internal/service/apigatewayv2/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/appautoscaling/service_endpoints_gen_test.go b/internal/service/appautoscaling/service_endpoints_gen_test.go index 20fbb93c7c5..a73925ee599 100644 --- a/internal/service/appautoscaling/service_endpoints_gen_test.go +++ b/internal/service/appautoscaling/service_endpoints_gen_test.go @@ -529,14 +529,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/appconfig/service_endpoints_gen_test.go b/internal/service/appconfig/service_endpoints_gen_test.go index 13fb79a7ec2..64aa8f1e741 100644 --- a/internal/service/appconfig/service_endpoints_gen_test.go +++ b/internal/service/appconfig/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/appfabric/service_endpoints_gen_test.go b/internal/service/appfabric/service_endpoints_gen_test.go index fd69829f6b2..185696124b8 100644 --- a/internal/service/appfabric/service_endpoints_gen_test.go +++ b/internal/service/appfabric/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/appflow/service_endpoints_gen_test.go b/internal/service/appflow/service_endpoints_gen_test.go index d32279f6e76..43173ea79e1 100644 --- a/internal/service/appflow/service_endpoints_gen_test.go +++ b/internal/service/appflow/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/appintegrations/service_endpoints_gen_test.go b/internal/service/appintegrations/service_endpoints_gen_test.go index a3c1cd5a619..736953c2e9c 100644 --- a/internal/service/appintegrations/service_endpoints_gen_test.go +++ b/internal/service/appintegrations/service_endpoints_gen_test.go @@ -526,14 +526,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/applicationinsights/service_endpoints_gen_test.go b/internal/service/applicationinsights/service_endpoints_gen_test.go index 45651ead4af..46449132469 100644 --- a/internal/service/applicationinsights/service_endpoints_gen_test.go +++ b/internal/service/applicationinsights/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/applicationsignals/service_endpoints_gen_test.go b/internal/service/applicationsignals/service_endpoints_gen_test.go index 42948cb0c99..88fdc2b4506 100644 --- a/internal/service/applicationsignals/service_endpoints_gen_test.go +++ b/internal/service/applicationsignals/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/appmesh/service_endpoints_gen_test.go b/internal/service/appmesh/service_endpoints_gen_test.go index 0cf8492581f..18c7e1d36c1 100644 --- a/internal/service/appmesh/service_endpoints_gen_test.go +++ b/internal/service/appmesh/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/apprunner/service_endpoints_gen_test.go b/internal/service/apprunner/service_endpoints_gen_test.go index d941d44fef9..c0c5e503885 100644 --- a/internal/service/apprunner/service_endpoints_gen_test.go +++ b/internal/service/apprunner/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/appstream/service_endpoints_gen_test.go b/internal/service/appstream/service_endpoints_gen_test.go index a4daf567c52..dcba070f77f 100644 --- a/internal/service/appstream/service_endpoints_gen_test.go +++ b/internal/service/appstream/service_endpoints_gen_test.go @@ -448,14 +448,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/appsync/service_endpoints_gen_test.go b/internal/service/appsync/service_endpoints_gen_test.go index 24404b45c8c..864c9e759a1 100644 --- a/internal/service/appsync/service_endpoints_gen_test.go +++ b/internal/service/appsync/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/athena/service_endpoints_gen_test.go b/internal/service/athena/service_endpoints_gen_test.go index 3131e21d2e2..97532e94cf2 100644 --- a/internal/service/athena/service_endpoints_gen_test.go +++ b/internal/service/athena/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/auditmanager/service_endpoints_gen_test.go b/internal/service/auditmanager/service_endpoints_gen_test.go index 5bc33b78269..e898e8d07e9 100644 --- a/internal/service/auditmanager/service_endpoints_gen_test.go +++ b/internal/service/auditmanager/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/autoscaling/service_endpoints_gen_test.go b/internal/service/autoscaling/service_endpoints_gen_test.go index 2053b029063..61b5c4eb08d 100644 --- a/internal/service/autoscaling/service_endpoints_gen_test.go +++ b/internal/service/autoscaling/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/autoscalingplans/service_endpoints_gen_test.go b/internal/service/autoscalingplans/service_endpoints_gen_test.go index 255cb6b423b..4530d9f3a52 100644 --- a/internal/service/autoscalingplans/service_endpoints_gen_test.go +++ b/internal/service/autoscalingplans/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/backup/service_endpoints_gen_test.go b/internal/service/backup/service_endpoints_gen_test.go index a233c7cb97b..bcf3977da01 100644 --- a/internal/service/backup/service_endpoints_gen_test.go +++ b/internal/service/backup/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/batch/eks_properties.go b/internal/service/batch/eks_properties.go new file mode 100644 index 00000000000..71e94def5d1 --- /dev/null +++ b/internal/service/batch/eks_properties.go @@ -0,0 +1,133 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +package batch + +import ( + "cmp" + "slices" + _ "unsafe" // Required for go:linkname + + "github.com/aws/aws-sdk-go-v2/aws" + _ "github.com/aws/aws-sdk-go-v2/service/batch" // Required for go:linkname + awstypes "github.com/aws/aws-sdk-go-v2/service/batch/types" + tfjson "github.com/hashicorp/terraform-provider-aws/internal/json" + tfslices "github.com/hashicorp/terraform-provider-aws/internal/slices" +) + +type eksProperties awstypes.EksProperties + +func (ep *eksProperties) reduce() { + if ep.PodProperties == nil { + return + } + ep.orderContainers() + ep.orderEnvironmentVariables() + + // Set all empty slices to nil. + if len(ep.PodProperties.Containers) == 0 { + ep.PodProperties.Containers = nil + } else { + for j, container := range ep.PodProperties.Containers { + if len(container.Args) == 0 { + container.Args = nil + } + if len(container.Command) == 0 { + container.Command = nil + } + if len(container.Env) == 0 { + container.Env = nil + } + if len(container.VolumeMounts) == 0 { + container.VolumeMounts = nil + } + ep.PodProperties.Containers[j] = container + } + } + if len(ep.PodProperties.InitContainers) == 0 { + ep.PodProperties.InitContainers = nil + } else { + for j, container := range ep.PodProperties.InitContainers { + if len(container.Args) == 0 { + container.Args = nil + } + if len(container.Command) == 0 { + container.Command = nil + } + if len(container.Env) == 0 { + container.Env = nil + } + if len(container.VolumeMounts) == 0 { + container.VolumeMounts = nil + } + ep.PodProperties.InitContainers[j] = container + } + } + if ep.PodProperties.DnsPolicy == nil { + ep.PodProperties.DnsPolicy = aws.String("ClusterFirst") + } + if ep.PodProperties.HostNetwork == nil { + ep.PodProperties.HostNetwork = aws.Bool(true) + } + if len(ep.PodProperties.Volumes) == 0 { + ep.PodProperties.Volumes = nil + } + if len(ep.PodProperties.ImagePullSecrets) == 0 { + ep.PodProperties.ImagePullSecrets = nil + } +} + +func (ep *eksProperties) orderContainers() { + slices.SortFunc(ep.PodProperties.Containers, func(a, b awstypes.EksContainer) int { + return cmp.Compare(aws.ToString(a.Name), aws.ToString(b.Name)) + }) +} + +func (ep *eksProperties) orderEnvironmentVariables() { + for j, container := range ep.PodProperties.Containers { + // Remove environment variables with empty values. + container.Env = tfslices.Filter(container.Env, func(kvp awstypes.EksContainerEnvironmentVariable) bool { + return aws.ToString(kvp.Value) != "" + }) + + slices.SortFunc(container.Env, func(a, b awstypes.EksContainerEnvironmentVariable) int { + return cmp.Compare(aws.ToString(a.Name), aws.ToString(b.Name)) + }) + + ep.PodProperties.Containers[j].Env = container.Env + } +} + +func equivalentEKSPropertiesJSON(str1, str2 string) (bool, error) { + if str1 == "" { + str1 = "{}" + } + + if str2 == "" { + str2 = "{}" + } + + var ep1 eksProperties + err := tfjson.DecodeFromString(str1, &ep1) + if err != nil { + return false, err + } + ep1.reduce() + b1, err := tfjson.EncodeToBytes(ep1) + if err != nil { + return false, err + } + + var ep2 eksProperties + err = tfjson.DecodeFromString(str2, &ep2) + if err != nil { + return false, err + } + ep2.reduce() + b2, err := tfjson.EncodeToBytes(ep2) + if err != nil { + return false, err + } + + return tfjson.EqualBytes(b1, b2), nil +} diff --git a/internal/service/batch/eks_properties_test.go b/internal/service/batch/eks_properties_test.go new file mode 100644 index 00000000000..f8633cf400a --- /dev/null +++ b/internal/service/batch/eks_properties_test.go @@ -0,0 +1,221 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +package batch_test + +import ( + "testing" + + "github.com/google/go-cmp/cmp" + "github.com/hashicorp/terraform-provider-aws/internal/acctest/jsoncmp" + tfbatch "github.com/hashicorp/terraform-provider-aws/internal/service/batch" +) + +func TestEquivalentEKSPropertiesJSON(t *testing.T) { + t.Parallel() + + testCases := map[string]struct { + apiJSON string + configurationJSON string + wantEquivalent bool + wantErr bool + }{ + "empty": { + apiJSON: ``, + configurationJSON: ``, + wantEquivalent: true, + }, + "reordered containers": { + apiJSON: ` + { + "podProperties": { + "containers": [ + { + "name": "container1", + "image": "my_ecr_image1" + }, + { + "name": "container2", + "image": "my_ecr_image2" + } + ] + } + } + `, + configurationJSON: ` + { + "podProperties": { + "containers": [ + { + "name": "container2", + "image": "my_ecr_image2" + }, + { + "name": "container1", + "image": "my_ecr_image1" + } + ] + } + } + `, + wantEquivalent: true, + }, + "reordered environment": { + apiJSON: ` + { + "podProperties": { + "containers": [ + { + "name": "container1", + "image": "my_ecr_image1", + "env": [ + { + "name": "VARNAME1", + "value": "VARVAL1" + }, + { + "name": "VARNAME2", + "value": "VARVAL2" + } + ] + }, + { + "name": "container2", + "image": "my_ecr_image2", + "env": [] + } + ] + } + } + `, + configurationJSON: ` + { + "podProperties": { + "containers": [ + { + "name": "container1", + "image": "my_ecr_image1", + "env": [ + { + "name": "VARNAME2", + "value": "VARVAL2" + }, + { + "name": "VARNAME1", + "value": "VARVAL1" + } + ] + }, + { + "name": "container2", + "image": "my_ecr_image2" + } + ] + } + } + `, + wantEquivalent: true, + }, + "full": { + apiJSON: ` + { + "podProperties": { + "containers": [ + { + "command": ["sleep", "60"], + "env": [ + { + "name": "test", + "value": "Environment Variable" + } + ], + "image": "public.ecr.aws/amazonlinux/amazonlinux:1", + "volumeMounts": [], + "name": "container_a", + "resources": { + "requests": { + "cpu": "1.0", + "memory": "2048" + } + } + }, + { + "command": ["sleep", "360"], + "env": [], + "image": "public.ecr.aws/amazonlinux/amazonlinux:1", + "volumeMounts": [], + "name": "container_b", + "resources": { + "requests": { + "cpu": "1.0", + "memory": "2048" + } + } + } + ], + "volumes": [] + } + } + `, + configurationJSON: ` + { + "podProperties": { + "containers": [ + { + "command": ["sleep", "60"], + "env": [ + { + "name": "test", + "value": "Environment Variable" + } + ], + "image": "public.ecr.aws/amazonlinux/amazonlinux:1", + "name": "container_a", + "resources": { + "requests": { + "cpu": "1.0", + "memory": "2048" + } + } + }, + { + "command": ["sleep", "360"], + "image": "public.ecr.aws/amazonlinux/amazonlinux:1", + "name": "container_b", + "resources": { + "requests": { + "cpu": "1.0", + "memory": "2048" + } + } + } + ] + } + } + `, + wantEquivalent: true, + }, + } + + for name, testCase := range testCases { + t.Run(name, func(t *testing.T) { + t.Parallel() + + output, err := tfbatch.EquivalentEKSPropertiesJSON(testCase.configurationJSON, testCase.apiJSON) + if got, want := err != nil, testCase.wantErr; !cmp.Equal(got, want) { + t.Errorf("EquivalentEKSPropertiesJSON err %t, want %t", got, want) + } + + if err == nil { + if got, want := output, testCase.wantEquivalent; !cmp.Equal(got, want) { + t.Errorf("EquivalentEKSPropertiesJSON equivalent %t, want %t", got, want) + if want { + if diff := jsoncmp.Diff(testCase.configurationJSON, testCase.apiJSON); diff != "" { + t.Errorf("unexpected diff (+wanted, -got): %s", diff) + } + } + } + } + }) + } +} diff --git a/internal/service/batch/exports_test.go b/internal/service/batch/exports_test.go index 76b02713eb3..15efdbeb904 100644 --- a/internal/service/batch/exports_test.go +++ b/internal/service/batch/exports_test.go @@ -12,6 +12,7 @@ var ( EquivalentContainerPropertiesJSON = equivalentContainerPropertiesJSON EquivalentECSPropertiesJSON = equivalentECSPropertiesJSON + EquivalentEKSPropertiesJSON = equivalentEKSPropertiesJSON EquivalentNodePropertiesJSON = equivalentNodePropertiesJSON ExpandEC2ConfigurationsUpdate = expandEC2ConfigurationsUpdate ExpandLaunchTemplateSpecificationUpdate = expandLaunchTemplateSpecificationUpdate diff --git a/internal/service/batch/job_definition.go b/internal/service/batch/job_definition.go index 0823b3b0f76..ed591698a20 100644 --- a/internal/service/batch/job_definition.go +++ b/internal/service/batch/job_definition.go @@ -790,7 +790,9 @@ func resourceJobDefinitionCreate(ctx context.Context, d *schema.ResourceData, me } for _, node := range props.NodeRangeProperties { - diags = append(diags, removeEmptyEnvironmentVariables(node.Container.Environment, cty.GetAttrPath("node_properties"))...) + if node.Container != nil { + diags = append(diags, removeEmptyEnvironmentVariables(node.Container.Environment, cty.GetAttrPath("node_properties"))...) + } } input.NodeProperties = props } diff --git a/internal/service/batch/job_definition_test.go b/internal/service/batch/job_definition_test.go index 07bada9a3b3..76694043cdb 100644 --- a/internal/service/batch/job_definition_test.go +++ b/internal/service/batch/job_definition_test.go @@ -775,6 +775,103 @@ func TestAccBatchJobDefinition_NodeProperties_advanced(t *testing.T) { }) } +func TestAccBatchJobDefinition_NodeProperties_withEKS(t *testing.T) { + ctx := acctest.Context(t) + var jd awstypes.JobDefinition + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + resourceName := "aws_batch_job_definition.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.BatchServiceID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckJobDefinitionDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccJobDefinitionConfig_nodePropertiesEKS(rName), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckJobDefinitionExists(ctx, resourceName, &jd), + acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "batch", regexache.MustCompile(fmt.Sprintf(`job-definition/%s:\d+`, rName))), + acctest.CheckResourceAttrEquivalentJSON(resourceName, "node_properties", `{ + "mainNode": 0, + "nodeRangeProperties": [ + { + "eksProperties": { + "podProperties": { + "containers": [ + { + "args": [], + "command": ["sleep", "60"], + "env": [], + "image": "public.ecr.aws/amazonlinux/amazonlinux = 2", + "name": "test-eks-container-1", + "resources": { "requests": { "memory": "1024Mi", "cpu": "1" } }, + "securityContext": { + "privileged": true, + "readOnlyRootFilesystem": true, + "runAsGroup": 3000, + "runAsNonRoot": true, + "runAsUser": 1000 + }, + "volumeMounts": [] + } + ], + "imagePullSecrets": [], + "initContainers": [], + "volumes": [] + } + }, + "instanceTypes": [], + "targetNodes": "0:" + } + ], + "numNodes": 1 + }`), + ), + }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + ImportStateVerifyIgnore: []string{ + "deregister_on_new_revision", + "node_properties", + }, + }, + }, + }) +} + +func TestAccBatchJobDefinition_NodeProperties_withECS(t *testing.T) { + ctx := acctest.Context(t) + var jd awstypes.JobDefinition + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + resourceName := "aws_batch_job_definition.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.BatchServiceID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckJobDefinitionDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccJobDefinitionConfig_nodePropertiesECS(rName), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckJobDefinitionExists(ctx, resourceName, &jd), + acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "batch", regexache.MustCompile(fmt.Sprintf(`job-definition/%s:\d+`, rName))), + ), + }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + ImportStateVerifyIgnore: []string{ + "deregister_on_new_revision", + }, + }, + }, + }) +} func TestAccBatchJobDefinition_EKSProperties_basic(t *testing.T) { ctx := acctest.Context(t) var jd awstypes.JobDefinition @@ -1368,6 +1465,104 @@ CONTAINER_PROPERTIES `, rName) } +func testAccJobDefinitionConfig_nodePropertiesEKS(rName string) string { + return fmt.Sprintf(` +resource "aws_batch_job_definition" "test" { + name = %[1]q + type = "multinode" + retry_strategy { + attempts = 1 + } + + node_properties = jsonencode({ + mainNode = 0 + numNodes = 1 + nodeRangeProperties = [{ + targetNodes = "0:" + eksProperties = { + podProperties = { + containers = [ + { + name = "test-eks-container-1" + image = "public.ecr.aws/amazonlinux/amazonlinux = 2" + command = [ + "sleep", + "60" + ] + resources = { + requests = { + memory = "1024Mi" + cpu = "1" + } + } + securityContext = { + "runAsUser" = 1000 + "runAsGroup" = 3000 + "privileged" = true + "readOnlyRootFilesystem" = true + "runAsNonRoot" = true + } + } + ] + } + } + }] + }) +} + `, rName) +} + +func testAccJobDefinitionConfig_nodePropertiesECS(rName string) string { + return fmt.Sprintf(` +resource "aws_batch_job_definition" "test" { + name = %[1]q + type = "multinode" + retry_strategy { + attempts = 1 + } + + node_properties = jsonencode({ + mainNode = 0 + numNodes = 1 + nodeRangeProperties = [{ + targetNodes = "0:" + ecsProperties = { + taskProperties = [{ + containers = [{ + image = "public.ecr.aws/amazonlinux/amazonlinux:1" + command = ["sleep", "60"] + name = "container_a" + privileged = false + resourceRequirements = [{ + value = "1" + type = "VCPU" + }, + { + value = "2048" + type = "MEMORY" + }] + }, + { + image = "public.ecr.aws/amazonlinux/amazonlinux:1" + command = ["sleep", "360"] + name = "container_b" + resourceRequirements = [{ + value = "1" + type = "VCPU" + }, + { + value = "2048" + type = "MEMORY" + }] + }] + }] + } + }] + }) +} +`, rName) +} + func testAccJobDefinitionConfig_containerProperties(rName, subcommand string) string { return acctest.ConfigCompose( acctest.ConfigLambdaBase(rName, rName, rName), diff --git a/internal/service/batch/node_properties.go b/internal/service/batch/node_properties.go index db18d473466..95201a367a6 100644 --- a/internal/service/batch/node_properties.go +++ b/internal/service/batch/node_properties.go @@ -15,18 +15,29 @@ import ( type nodeProperties struct { MainNode *int64 NodeRangeProperties []*nodeRangeProperty - NumNodes *int64 + + NumNodes *int64 } type nodeRangeProperty struct { - Container *containerProperties - TargetNodes *string + Container *containerProperties + EcsProperties *ecsProperties + EKSProperties *eksProperties + TargetNodes *string } func (np *nodeProperties) reduce() { // Deal with Environment objects which may be re-ordered in the API. for _, node := range np.NodeRangeProperties { - node.Container.reduce() + if node.Container != nil { + node.Container.reduce() + } + if node.EcsProperties != nil { + node.EcsProperties.reduce() + } + if node.EKSProperties != nil { + node.EKSProperties.reduce() + } } } diff --git a/internal/service/batch/node_properties_test.go b/internal/service/batch/node_properties_test.go index 67a6c3eb35c..1a8a4f9267c 100644 --- a/internal/service/batch/node_properties_test.go +++ b/internal/service/batch/node_properties_test.go @@ -131,6 +131,68 @@ func TestEquivalentNodePropertiesJSON(t *testing.T) { ], "numNodes": 2 } +`, + wantEquivalent: true, + }, + "Single node ECS Properties with multiple containers": { + apiJSON: ` +{ + "mainNode": 1, + "nodeRangeProperties": [ + { + "ecsProperties": { + "taskProperties": [ + { + "containers": [ + { + "name": "container1", + "image": "my_ecr_image1" + }, + { + "name": "container2", + "image": "my_ecr_image2" + } + ] + } + ] + }, + "targetNodes": "0:", + "environment": [], + "mountPoints": [] + } + ], + "numNodes": 1 +} +`, + configurationJSON: ` +{ + "mainNode": 1, + "nodeRangeProperties": [ + { + "ecsProperties": { + "taskProperties": [ + { + "containers": [ + { + "name": "container2", + "image": "my_ecr_image2" + }, + { + "name": "container1", + "image": "my_ecr_image1" + } + ] + } + ] + }, + "targetNodes": "0:", + "environment": [], + "mountPoints": [] + } + ], + "numNodes": 1 +} + `, wantEquivalent: true, }, diff --git a/internal/service/batch/service_endpoints_gen_test.go b/internal/service/batch/service_endpoints_gen_test.go index 764f65d6809..4f010a53f8d 100644 --- a/internal/service/batch/service_endpoints_gen_test.go +++ b/internal/service/batch/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/bcmdataexports/service_endpoints_gen_test.go b/internal/service/bcmdataexports/service_endpoints_gen_test.go index 0800718081b..0a1b5923cc6 100644 --- a/internal/service/bcmdataexports/service_endpoints_gen_test.go +++ b/internal/service/bcmdataexports/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/bedrock/guardrail.go b/internal/service/bedrock/guardrail.go index 04e3c61c219..f2c70aa5a19 100644 --- a/internal/service/bedrock/guardrail.go +++ b/internal/service/bedrock/guardrail.go @@ -135,8 +135,8 @@ func (r *resourceGuardrail) Schema(ctx context.Context, req resource.SchemaReque }, NestedObject: schema.NestedBlockObject{ Blocks: map[string]schema.Block{ - "filters_config": schema.ListNestedBlock{ - CustomType: fwtypes.NewListNestedObjectTypeOf[filtersConfig](ctx), + "filters_config": schema.SetNestedBlock{ + CustomType: fwtypes.NewSetNestedObjectTypeOf[filtersConfig](ctx), NestedObject: schema.NestedBlockObject{ Attributes: map[string]schema.Attribute{ "input_strength": schema.StringAttribute{ @@ -667,7 +667,7 @@ type resourceGuardrailData struct { } type contentPolicyConfig struct { - Filters fwtypes.ListNestedObjectValueOf[filtersConfig] `tfsdk:"filters_config"` + Filters fwtypes.SetNestedObjectValueOf[filtersConfig] `tfsdk:"filters_config"` } type filtersConfig struct { diff --git a/internal/service/bedrock/guardrail_test.go b/internal/service/bedrock/guardrail_test.go index 50b38161c06..c1e85f5eb9b 100644 --- a/internal/service/bedrock/guardrail_test.go +++ b/internal/service/bedrock/guardrail_test.go @@ -47,6 +47,8 @@ func TestAccBedrockGuardrail_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "blocked_outputs_messaging", "test"), resource.TestCheckResourceAttr(resourceName, "content_policy_config.#", "1"), resource.TestCheckResourceAttr(resourceName, "content_policy_config.0.filters_config.#", "2"), + resource.TestCheckResourceAttr(resourceName, "contextual_grounding_policy_config.#", "1"), + resource.TestCheckResourceAttr(resourceName, "contextual_grounding_policy_config.0.filters_config.#", "1"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedAt), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "test"), resource.TestCheckNoResourceAttr(resourceName, names.AttrKMSKeyARN), diff --git a/internal/service/bedrock/service_endpoints_gen_test.go b/internal/service/bedrock/service_endpoints_gen_test.go index ef142654060..d478281d007 100644 --- a/internal/service/bedrock/service_endpoints_gen_test.go +++ b/internal/service/bedrock/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/bedrockagent/service_endpoints_gen_test.go b/internal/service/bedrockagent/service_endpoints_gen_test.go index dd93710cafd..8127a581bcc 100644 --- a/internal/service/bedrockagent/service_endpoints_gen_test.go +++ b/internal/service/bedrockagent/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/budgets/service_endpoints_gen_test.go b/internal/service/budgets/service_endpoints_gen_test.go index a0baff30f19..1350c8e1290 100644 --- a/internal/service/budgets/service_endpoints_gen_test.go +++ b/internal/service/budgets/service_endpoints_gen_test.go @@ -449,14 +449,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/ce/service_endpoints_gen_test.go b/internal/service/ce/service_endpoints_gen_test.go index ab49d3c6d65..3d67da902f5 100644 --- a/internal/service/ce/service_endpoints_gen_test.go +++ b/internal/service/ce/service_endpoints_gen_test.go @@ -526,14 +526,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/chatbot/service_endpoints_gen_test.go b/internal/service/chatbot/service_endpoints_gen_test.go index 4e5a0262510..93370450026 100644 --- a/internal/service/chatbot/service_endpoints_gen_test.go +++ b/internal/service/chatbot/service_endpoints_gen_test.go @@ -448,14 +448,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/chatbot/slack_channel_configuration.go b/internal/service/chatbot/slack_channel_configuration.go index 06e5c259f30..a878965774f 100644 --- a/internal/service/chatbot/slack_channel_configuration.go +++ b/internal/service/chatbot/slack_channel_configuration.go @@ -19,6 +19,7 @@ import ( "github.com/hashicorp/terraform-plugin-framework/resource/schema/boolplanmodifier" "github.com/hashicorp/terraform-plugin-framework/resource/schema/listplanmodifier" "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/setplanmodifier" "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringdefault" "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" "github.com/hashicorp/terraform-plugin-framework/types" @@ -64,9 +65,9 @@ func (r *slackChannelConfigurationResource) Schema(ctx context.Context, request Required: true, }, "guardrail_policy_arns": schema.ListAttribute{ - Optional: true, - Computed: true, - ElementType: types.StringType, + CustomType: fwtypes.ListOfStringType, + Optional: true, + Computed: true, PlanModifiers: []planmodifier.List{ listplanmodifier.UseStateForUnknown(), }, @@ -95,12 +96,12 @@ func (r *slackChannelConfigurationResource) Schema(ctx context.Context, request "slack_team_name": schema.StringAttribute{ Computed: true, }, - "sns_topic_arns": schema.ListAttribute{ - Optional: true, - Computed: true, - ElementType: types.StringType, - PlanModifiers: []planmodifier.List{ - listplanmodifier.UseStateForUnknown(), + "sns_topic_arns": schema.SetAttribute{ + CustomType: fwtypes.SetOfStringType, + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Set{ + setplanmodifier.UseStateForUnknown(), }, }, names.AttrTags: tftags.TagsAttribute(), @@ -201,6 +202,8 @@ func (r *slackChannelConfigurationResource) Read(ctx context.Context, request re return } + setTagsOut(ctx, output.Tags) + response.Diagnostics.Append(response.State.Set(ctx, &data)...) } @@ -218,7 +221,13 @@ func (r *slackChannelConfigurationResource) Update(ctx context.Context, request conn := r.Meta().ChatbotClient(ctx) - if slackChannelConfigurationHasChanges(ctx, new, old) { + diff, d := fwflex.Calculate(ctx, new, old) + response.Diagnostics.Append(d...) + if response.Diagnostics.HasError() { + return + } + + if diff.HasChanges() { input := &chatbot.UpdateSlackChannelConfigurationInput{} response.Diagnostics.Append(fwflex.Expand(ctx, new, input)...) if response.Diagnostics.HasError() { @@ -398,20 +407,20 @@ func waitSlackChannelConfigurationDeleted(ctx context.Context, conn *chatbot.Cli } type slackChannelConfigurationResourceModel struct { - ChatConfigurationARN types.String `tfsdk:"chat_configuration_arn"` - ConfigurationName types.String `tfsdk:"configuration_name"` - GuardrailPolicyARNs types.List `tfsdk:"guardrail_policy_arns"` - IAMRoleARN types.String `tfsdk:"iam_role_arn"` - LoggingLevel fwtypes.StringEnum[loggingLevel] `tfsdk:"logging_level"` - SlackChannelID types.String `tfsdk:"slack_channel_id"` - SlackChannelName types.String `tfsdk:"slack_channel_name"` - SlackTeamID types.String `tfsdk:"slack_team_id"` - SlackTeamName types.String `tfsdk:"slack_team_name"` - SNSTopicARNs types.List `tfsdk:"sns_topic_arns"` - Tags tftags.Map `tfsdk:"tags"` - TagsAll tftags.Map `tfsdk:"tags_all"` - Timeouts timeouts.Value `tfsdk:"timeouts"` - UserAuthorizationRequired types.Bool `tfsdk:"user_authorization_required"` + ChatConfigurationARN types.String `tfsdk:"chat_configuration_arn"` + ConfigurationName types.String `tfsdk:"configuration_name"` + GuardrailPolicyARNs fwtypes.ListValueOf[types.String] `tfsdk:"guardrail_policy_arns"` + IAMRoleARN types.String `tfsdk:"iam_role_arn"` + LoggingLevel fwtypes.StringEnum[loggingLevel] `tfsdk:"logging_level"` + SlackChannelID types.String `tfsdk:"slack_channel_id"` + SlackChannelName types.String `tfsdk:"slack_channel_name"` + SlackTeamID types.String `tfsdk:"slack_team_id"` + SlackTeamName types.String `tfsdk:"slack_team_name"` + SNSTopicARNs fwtypes.SetValueOf[types.String] `tfsdk:"sns_topic_arns"` + Tags tftags.Map `tfsdk:"tags"` + TagsAll tftags.Map `tfsdk:"tags_all"` + Timeouts timeouts.Value `tfsdk:"timeouts"` + UserAuthorizationRequired types.Bool `tfsdk:"user_authorization_required"` } func (data *slackChannelConfigurationResourceModel) InitFromID() error { @@ -434,17 +443,3 @@ func (loggingLevel) Values() []loggingLevel { loggingLevelNone, } } - -func slackChannelConfigurationHasChanges(_ context.Context, plan, state slackChannelConfigurationResourceModel) bool { - return !plan.ChatConfigurationARN.Equal(state.ChatConfigurationARN) || - !plan.ConfigurationName.Equal(state.ConfigurationName) || - !plan.GuardrailPolicyARNs.Equal(state.GuardrailPolicyARNs) || - !plan.IAMRoleARN.Equal(state.IAMRoleARN) || - !plan.LoggingLevel.Equal(state.LoggingLevel) || - !plan.SlackChannelID.Equal(state.SlackChannelID) || - !plan.SlackChannelName.Equal(state.SlackChannelName) || - !plan.SlackTeamID.Equal(state.SlackTeamID) || - !plan.SlackTeamName.Equal(state.SlackTeamName) || - !plan.SNSTopicARNs.Equal(state.SNSTopicARNs) || - !plan.UserAuthorizationRequired.Equal(state.UserAuthorizationRequired) -} diff --git a/internal/service/chatbot/teams_channel_configuration.go b/internal/service/chatbot/teams_channel_configuration.go index ddfb41cfc64..c472864a124 100644 --- a/internal/service/chatbot/teams_channel_configuration.go +++ b/internal/service/chatbot/teams_channel_configuration.go @@ -18,6 +18,7 @@ import ( "github.com/hashicorp/terraform-plugin-framework/resource/schema/boolplanmodifier" "github.com/hashicorp/terraform-plugin-framework/resource/schema/listplanmodifier" "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/setplanmodifier" "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringdefault" "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" "github.com/hashicorp/terraform-plugin-framework/types" @@ -73,9 +74,9 @@ func (r *teamsChannelConfigurationResource) Schema(ctx context.Context, request Required: true, }, "guardrail_policy_arns": schema.ListAttribute{ - Optional: true, - Computed: true, - ElementType: types.StringType, + CustomType: fwtypes.ListOfStringType, + Optional: true, + Computed: true, PlanModifiers: []planmodifier.List{ listplanmodifier.UseStateForUnknown(), }, @@ -92,12 +93,12 @@ func (r *teamsChannelConfigurationResource) Schema(ctx context.Context, request stringplanmodifier.UseStateForUnknown(), }, }, - "sns_topic_arns": schema.ListAttribute{ - Optional: true, - Computed: true, - ElementType: types.StringType, - PlanModifiers: []planmodifier.List{ - listplanmodifier.UseStateForUnknown(), + "sns_topic_arns": schema.SetAttribute{ + CustomType: fwtypes.SetOfStringType, + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Set{ + setplanmodifier.UseStateForUnknown(), }, }, names.AttrTags: tftags.TagsAttribute(), @@ -204,6 +205,8 @@ func (r *teamsChannelConfigurationResource) Read(ctx context.Context, request re return } + setTagsOut(ctx, output.Tags) + response.Diagnostics.Append(response.State.Set(ctx, &data)...) } @@ -221,7 +224,13 @@ func (r *teamsChannelConfigurationResource) Update(ctx context.Context, request conn := r.Meta().ChatbotClient(ctx) - if teamsChannelConfigurationHasChanges(ctx, new, old) { + diff, d := fwflex.Calculate(ctx, new, old) + response.Diagnostics.Append(d...) + if response.Diagnostics.HasError() { + return + } + + if diff.HasChanges() { input := &chatbot.UpdateMicrosoftTeamsChannelConfigurationInput{} response.Diagnostics.Append(fwflex.Expand(ctx, new, input)...) if response.Diagnostics.HasError() { @@ -402,34 +411,19 @@ func waitTeamsChannelConfigurationDeleted(ctx context.Context, conn *chatbot.Cli } type teamsChannelConfigurationResourceModel struct { - ChannelID types.String `tfsdk:"channel_id"` - ChannelName types.String `tfsdk:"channel_name"` - ChatConfigurationARN types.String `tfsdk:"chat_configuration_arn"` - ConfigurationName types.String `tfsdk:"configuration_name"` - GuardrailPolicyARNs types.List `tfsdk:"guardrail_policy_arns"` - IAMRoleARN types.String `tfsdk:"iam_role_arn"` - LoggingLevel fwtypes.StringEnum[loggingLevel] `tfsdk:"logging_level"` - SNSTopicARNs types.List `tfsdk:"sns_topic_arns"` - Tags tftags.Map `tfsdk:"tags"` - TagsAll tftags.Map `tfsdk:"tags_all"` - TeamID types.String `tfsdk:"team_id"` - TeamName types.String `tfsdk:"team_name"` - TenantID types.String `tfsdk:"tenant_id"` - Timeouts timeouts.Value `tfsdk:"timeouts"` - UserAuthorizationRequired types.Bool `tfsdk:"user_authorization_required"` -} - -func teamsChannelConfigurationHasChanges(_ context.Context, plan, state teamsChannelConfigurationResourceModel) bool { - return !plan.ChannelID.Equal(state.ChannelID) || - !plan.ChannelName.Equal(state.ChannelName) || - !plan.ChatConfigurationARN.Equal(state.ChatConfigurationARN) || - !plan.ConfigurationName.Equal(state.ConfigurationName) || - !plan.GuardrailPolicyARNs.Equal(state.GuardrailPolicyARNs) || - !plan.IAMRoleARN.Equal(state.IAMRoleARN) || - !plan.LoggingLevel.Equal(state.LoggingLevel) || - !plan.SNSTopicARNs.Equal(state.SNSTopicARNs) || - !plan.TeamID.Equal(state.TeamID) || - !plan.TeamName.Equal(state.TeamName) || - !plan.TenantID.Equal(state.TenantID) || - !plan.UserAuthorizationRequired.Equal(state.UserAuthorizationRequired) + ChannelID types.String `tfsdk:"channel_id"` + ChannelName types.String `tfsdk:"channel_name"` + ChatConfigurationARN types.String `tfsdk:"chat_configuration_arn"` + ConfigurationName types.String `tfsdk:"configuration_name"` + GuardrailPolicyARNs fwtypes.ListValueOf[types.String] `tfsdk:"guardrail_policy_arns"` + IAMRoleARN types.String `tfsdk:"iam_role_arn"` + LoggingLevel fwtypes.StringEnum[loggingLevel] `tfsdk:"logging_level"` + SNSTopicARNs fwtypes.SetValueOf[types.String] `tfsdk:"sns_topic_arns"` + Tags tftags.Map `tfsdk:"tags"` + TagsAll tftags.Map `tfsdk:"tags_all"` + TeamID types.String `tfsdk:"team_id"` + TeamName types.String `tfsdk:"team_name"` + TenantID types.String `tfsdk:"tenant_id"` + Timeouts timeouts.Value `tfsdk:"timeouts"` + UserAuthorizationRequired types.Bool `tfsdk:"user_authorization_required"` } diff --git a/internal/service/chime/service_endpoints_gen_test.go b/internal/service/chime/service_endpoints_gen_test.go index c6d659ae472..f6e5822bcc9 100644 --- a/internal/service/chime/service_endpoints_gen_test.go +++ b/internal/service/chime/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/chimesdkmediapipelines/service_endpoints_gen_test.go b/internal/service/chimesdkmediapipelines/service_endpoints_gen_test.go index ea8e9eef360..ca7ebe0268b 100644 --- a/internal/service/chimesdkmediapipelines/service_endpoints_gen_test.go +++ b/internal/service/chimesdkmediapipelines/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/chimesdkvoice/service_endpoints_gen_test.go b/internal/service/chimesdkvoice/service_endpoints_gen_test.go index 18a7981417a..e2f14ddff8f 100644 --- a/internal/service/chimesdkvoice/service_endpoints_gen_test.go +++ b/internal/service/chimesdkvoice/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/cleanrooms/service_endpoints_gen_test.go b/internal/service/cleanrooms/service_endpoints_gen_test.go index 1720ad4fe3d..b467d5ffcc9 100644 --- a/internal/service/cleanrooms/service_endpoints_gen_test.go +++ b/internal/service/cleanrooms/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/cloud9/service_endpoints_gen_test.go b/internal/service/cloud9/service_endpoints_gen_test.go index aa962dedf3a..f5e3c282544 100644 --- a/internal/service/cloud9/service_endpoints_gen_test.go +++ b/internal/service/cloud9/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/cloudcontrol/service_endpoints_gen_test.go b/internal/service/cloudcontrol/service_endpoints_gen_test.go index 709501221b1..06d736e587a 100644 --- a/internal/service/cloudcontrol/service_endpoints_gen_test.go +++ b/internal/service/cloudcontrol/service_endpoints_gen_test.go @@ -526,14 +526,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/cloudformation/service_endpoints_gen_test.go b/internal/service/cloudformation/service_endpoints_gen_test.go index f35a0e39a32..11629412a7e 100644 --- a/internal/service/cloudformation/service_endpoints_gen_test.go +++ b/internal/service/cloudformation/service_endpoints_gen_test.go @@ -448,14 +448,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/cloudfront/service_endpoints_gen_test.go b/internal/service/cloudfront/service_endpoints_gen_test.go index f7fa1821c77..0c59e13644e 100644 --- a/internal/service/cloudfront/service_endpoints_gen_test.go +++ b/internal/service/cloudfront/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/cloudhsmv2/service_endpoints_gen_test.go b/internal/service/cloudhsmv2/service_endpoints_gen_test.go index 811d32dac27..8771178a3de 100644 --- a/internal/service/cloudhsmv2/service_endpoints_gen_test.go +++ b/internal/service/cloudhsmv2/service_endpoints_gen_test.go @@ -526,14 +526,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/cloudsearch/service_endpoints_gen_test.go b/internal/service/cloudsearch/service_endpoints_gen_test.go index d8500ca39d7..7f33406838d 100644 --- a/internal/service/cloudsearch/service_endpoints_gen_test.go +++ b/internal/service/cloudsearch/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/cloudtrail/service_endpoints_gen_test.go b/internal/service/cloudtrail/service_endpoints_gen_test.go index 2973c41a286..7ff0220c554 100644 --- a/internal/service/cloudtrail/service_endpoints_gen_test.go +++ b/internal/service/cloudtrail/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/cloudwatch/service_endpoints_gen_test.go b/internal/service/cloudwatch/service_endpoints_gen_test.go index c95c2e415b7..e13e934adcd 100644 --- a/internal/service/cloudwatch/service_endpoints_gen_test.go +++ b/internal/service/cloudwatch/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/codeartifact/service_endpoints_gen_test.go b/internal/service/codeartifact/service_endpoints_gen_test.go index a9f103d38d1..e92c84420f5 100644 --- a/internal/service/codeartifact/service_endpoints_gen_test.go +++ b/internal/service/codeartifact/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/codebuild/service_endpoints_gen_test.go b/internal/service/codebuild/service_endpoints_gen_test.go index 177bbeaf0dc..63c0f2f7961 100644 --- a/internal/service/codebuild/service_endpoints_gen_test.go +++ b/internal/service/codebuild/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/codecommit/service_endpoints_gen_test.go b/internal/service/codecommit/service_endpoints_gen_test.go index 247aa61c725..d373503e2e0 100644 --- a/internal/service/codecommit/service_endpoints_gen_test.go +++ b/internal/service/codecommit/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/codeconnections/service_endpoints_gen_test.go b/internal/service/codeconnections/service_endpoints_gen_test.go index 297fa202382..08be6f23d60 100644 --- a/internal/service/codeconnections/service_endpoints_gen_test.go +++ b/internal/service/codeconnections/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/codeguruprofiler/service_endpoints_gen_test.go b/internal/service/codeguruprofiler/service_endpoints_gen_test.go index 8d997899d37..cea45f27999 100644 --- a/internal/service/codeguruprofiler/service_endpoints_gen_test.go +++ b/internal/service/codeguruprofiler/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/codegurureviewer/service_endpoints_gen_test.go b/internal/service/codegurureviewer/service_endpoints_gen_test.go index f50f0bbc096..145094bca0b 100644 --- a/internal/service/codegurureviewer/service_endpoints_gen_test.go +++ b/internal/service/codegurureviewer/service_endpoints_gen_test.go @@ -449,14 +449,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/codepipeline/service_endpoints_gen_test.go b/internal/service/codepipeline/service_endpoints_gen_test.go index a8fdaf433c5..741fb7fa77d 100644 --- a/internal/service/codepipeline/service_endpoints_gen_test.go +++ b/internal/service/codepipeline/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/codestarconnections/service_endpoints_gen_test.go b/internal/service/codestarconnections/service_endpoints_gen_test.go index 028ed58394a..66ad7c84c81 100644 --- a/internal/service/codestarconnections/service_endpoints_gen_test.go +++ b/internal/service/codestarconnections/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/codestarnotifications/service_endpoints_gen_test.go b/internal/service/codestarnotifications/service_endpoints_gen_test.go index e43aa97538f..ef166b489c1 100644 --- a/internal/service/codestarnotifications/service_endpoints_gen_test.go +++ b/internal/service/codestarnotifications/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/cognitoidentity/service_endpoints_gen_test.go b/internal/service/cognitoidentity/service_endpoints_gen_test.go index c19bb621a26..f568a8f7d41 100644 --- a/internal/service/cognitoidentity/service_endpoints_gen_test.go +++ b/internal/service/cognitoidentity/service_endpoints_gen_test.go @@ -448,14 +448,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/cognitoidp/service_endpoints_gen_test.go b/internal/service/cognitoidp/service_endpoints_gen_test.go index 389dbed44f0..1caaa6a6c03 100644 --- a/internal/service/cognitoidp/service_endpoints_gen_test.go +++ b/internal/service/cognitoidp/service_endpoints_gen_test.go @@ -528,14 +528,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/comprehend/service_endpoints_gen_test.go b/internal/service/comprehend/service_endpoints_gen_test.go index d46c3591c97..1a3e08dc39d 100644 --- a/internal/service/comprehend/service_endpoints_gen_test.go +++ b/internal/service/comprehend/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/computeoptimizer/service_endpoints_gen_test.go b/internal/service/computeoptimizer/service_endpoints_gen_test.go index 063816f5658..13516205404 100644 --- a/internal/service/computeoptimizer/service_endpoints_gen_test.go +++ b/internal/service/computeoptimizer/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/configservice/service_endpoints_gen_test.go b/internal/service/configservice/service_endpoints_gen_test.go index a6980b8ed2f..4a3f718e0b2 100644 --- a/internal/service/configservice/service_endpoints_gen_test.go +++ b/internal/service/configservice/service_endpoints_gen_test.go @@ -526,14 +526,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/connect/service_endpoints_gen_test.go b/internal/service/connect/service_endpoints_gen_test.go index 9481815b647..533ab30e65d 100644 --- a/internal/service/connect/service_endpoints_gen_test.go +++ b/internal/service/connect/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/connectcases/service_endpoints_gen_test.go b/internal/service/connectcases/service_endpoints_gen_test.go index afff1f28e73..0d8d7c24a72 100644 --- a/internal/service/connectcases/service_endpoints_gen_test.go +++ b/internal/service/connectcases/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/controltower/service_endpoints_gen_test.go b/internal/service/controltower/service_endpoints_gen_test.go index abd6b6376f7..de203ea56f1 100644 --- a/internal/service/controltower/service_endpoints_gen_test.go +++ b/internal/service/controltower/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/costoptimizationhub/service_endpoints_gen_test.go b/internal/service/costoptimizationhub/service_endpoints_gen_test.go index c5c18f17dab..1aa61b49903 100644 --- a/internal/service/costoptimizationhub/service_endpoints_gen_test.go +++ b/internal/service/costoptimizationhub/service_endpoints_gen_test.go @@ -448,14 +448,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/cur/service_endpoints_gen_test.go b/internal/service/cur/service_endpoints_gen_test.go index 6e3afb756c3..d310153aa52 100644 --- a/internal/service/cur/service_endpoints_gen_test.go +++ b/internal/service/cur/service_endpoints_gen_test.go @@ -528,14 +528,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/customerprofiles/service_endpoints_gen_test.go b/internal/service/customerprofiles/service_endpoints_gen_test.go index 7b66076e114..023060a68a3 100644 --- a/internal/service/customerprofiles/service_endpoints_gen_test.go +++ b/internal/service/customerprofiles/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/databrew/service_endpoints_gen_test.go b/internal/service/databrew/service_endpoints_gen_test.go index 51c659b54bb..e623d94d9aa 100644 --- a/internal/service/databrew/service_endpoints_gen_test.go +++ b/internal/service/databrew/service_endpoints_gen_test.go @@ -526,14 +526,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/dataexchange/service_endpoints_gen_test.go b/internal/service/dataexchange/service_endpoints_gen_test.go index e174eb195eb..1baaaf508f9 100644 --- a/internal/service/dataexchange/service_endpoints_gen_test.go +++ b/internal/service/dataexchange/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/datapipeline/service_endpoints_gen_test.go b/internal/service/datapipeline/service_endpoints_gen_test.go index 6ec7fe7bbff..a3d95f46a63 100644 --- a/internal/service/datapipeline/service_endpoints_gen_test.go +++ b/internal/service/datapipeline/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/datasync/service_endpoints_gen_test.go b/internal/service/datasync/service_endpoints_gen_test.go index 97bedbe9482..028c5d42e07 100644 --- a/internal/service/datasync/service_endpoints_gen_test.go +++ b/internal/service/datasync/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/datazone/service_endpoints_gen_test.go b/internal/service/datazone/service_endpoints_gen_test.go index d7d0f2730e8..aae9308e9e7 100644 --- a/internal/service/datazone/service_endpoints_gen_test.go +++ b/internal/service/datazone/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/dax/service_endpoints_gen_test.go b/internal/service/dax/service_endpoints_gen_test.go index f8fd2d90bb1..10cf23fbedd 100644 --- a/internal/service/dax/service_endpoints_gen_test.go +++ b/internal/service/dax/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/deploy/service_endpoints_gen_test.go b/internal/service/deploy/service_endpoints_gen_test.go index 2cf6c69e054..b353742fc29 100644 --- a/internal/service/deploy/service_endpoints_gen_test.go +++ b/internal/service/deploy/service_endpoints_gen_test.go @@ -526,14 +526,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/detective/service_endpoints_gen_test.go b/internal/service/detective/service_endpoints_gen_test.go index f7e14ad1877..48403c2a41e 100644 --- a/internal/service/detective/service_endpoints_gen_test.go +++ b/internal/service/detective/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/devicefarm/service_endpoints_gen_test.go b/internal/service/devicefarm/service_endpoints_gen_test.go index 2e2c4e8562a..4ecc07c29b7 100644 --- a/internal/service/devicefarm/service_endpoints_gen_test.go +++ b/internal/service/devicefarm/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/devopsguru/service_endpoints_gen_test.go b/internal/service/devopsguru/service_endpoints_gen_test.go index 668a2d21795..8d62ced20dc 100644 --- a/internal/service/devopsguru/service_endpoints_gen_test.go +++ b/internal/service/devopsguru/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/directconnect/service_endpoints_gen_test.go b/internal/service/directconnect/service_endpoints_gen_test.go index 90b0c2842b5..6b919e87ed4 100644 --- a/internal/service/directconnect/service_endpoints_gen_test.go +++ b/internal/service/directconnect/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/dlm/service_endpoints_gen_test.go b/internal/service/dlm/service_endpoints_gen_test.go index 3295da2ebcc..a65bd6ad748 100644 --- a/internal/service/dlm/service_endpoints_gen_test.go +++ b/internal/service/dlm/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/dms/service_endpoints_gen_test.go b/internal/service/dms/service_endpoints_gen_test.go index d277409befe..63071fdcae5 100644 --- a/internal/service/dms/service_endpoints_gen_test.go +++ b/internal/service/dms/service_endpoints_gen_test.go @@ -603,14 +603,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/docdb/service_endpoints_gen_test.go b/internal/service/docdb/service_endpoints_gen_test.go index d113991d47f..af619796439 100644 --- a/internal/service/docdb/service_endpoints_gen_test.go +++ b/internal/service/docdb/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/docdbelastic/service_endpoints_gen_test.go b/internal/service/docdbelastic/service_endpoints_gen_test.go index 25707f020e5..6916483559d 100644 --- a/internal/service/docdbelastic/service_endpoints_gen_test.go +++ b/internal/service/docdbelastic/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/drs/service_endpoints_gen_test.go b/internal/service/drs/service_endpoints_gen_test.go index 27959a892b6..8c0f1e29137 100644 --- a/internal/service/drs/service_endpoints_gen_test.go +++ b/internal/service/drs/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/ds/service_endpoints_gen_test.go b/internal/service/ds/service_endpoints_gen_test.go index c638b73886b..ac5a70b6281 100644 --- a/internal/service/ds/service_endpoints_gen_test.go +++ b/internal/service/ds/service_endpoints_gen_test.go @@ -526,14 +526,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/dynamodb/service_endpoints_gen_test.go b/internal/service/dynamodb/service_endpoints_gen_test.go index 5a5a82b299a..0f6cfe52f25 100644 --- a/internal/service/dynamodb/service_endpoints_gen_test.go +++ b/internal/service/dynamodb/service_endpoints_gen_test.go @@ -584,14 +584,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/ec2/service_endpoints_gen_test.go b/internal/service/ec2/service_endpoints_gen_test.go index bc8c454f559..2562197fec4 100644 --- a/internal/service/ec2/service_endpoints_gen_test.go +++ b/internal/service/ec2/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/ecr/service_endpoints_gen_test.go b/internal/service/ecr/service_endpoints_gen_test.go index 7d7229bfa3c..3deb58277cd 100644 --- a/internal/service/ecr/service_endpoints_gen_test.go +++ b/internal/service/ecr/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/ecrpublic/service_endpoints_gen_test.go b/internal/service/ecrpublic/service_endpoints_gen_test.go index b448239fdec..7e37283a6e9 100644 --- a/internal/service/ecrpublic/service_endpoints_gen_test.go +++ b/internal/service/ecrpublic/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/ecs/service_endpoints_gen_test.go b/internal/service/ecs/service_endpoints_gen_test.go index 6a1fdeb5170..e9d48effa9c 100644 --- a/internal/service/ecs/service_endpoints_gen_test.go +++ b/internal/service/ecs/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/efs/service_endpoints_gen_test.go b/internal/service/efs/service_endpoints_gen_test.go index 0ef947028ad..61a57dfea0d 100644 --- a/internal/service/efs/service_endpoints_gen_test.go +++ b/internal/service/efs/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/eks/service_endpoints_gen_test.go b/internal/service/eks/service_endpoints_gen_test.go index 1181e9c6b6a..0fa3c6d0ed8 100644 --- a/internal/service/eks/service_endpoints_gen_test.go +++ b/internal/service/eks/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/elasticache/service_endpoints_gen_test.go b/internal/service/elasticache/service_endpoints_gen_test.go index 66561e6c6f0..70e9998d1a5 100644 --- a/internal/service/elasticache/service_endpoints_gen_test.go +++ b/internal/service/elasticache/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/elasticbeanstalk/service_endpoints_gen_test.go b/internal/service/elasticbeanstalk/service_endpoints_gen_test.go index 8f970bb66f2..43462450e44 100644 --- a/internal/service/elasticbeanstalk/service_endpoints_gen_test.go +++ b/internal/service/elasticbeanstalk/service_endpoints_gen_test.go @@ -526,14 +526,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/elasticsearch/service_endpoints_gen_test.go b/internal/service/elasticsearch/service_endpoints_gen_test.go index 62aed15f32e..f6de8349d9a 100644 --- a/internal/service/elasticsearch/service_endpoints_gen_test.go +++ b/internal/service/elasticsearch/service_endpoints_gen_test.go @@ -603,14 +603,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/elastictranscoder/service_endpoints_gen_test.go b/internal/service/elastictranscoder/service_endpoints_gen_test.go index 3a575e20f22..e6a41baf784 100644 --- a/internal/service/elastictranscoder/service_endpoints_gen_test.go +++ b/internal/service/elastictranscoder/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/elb/service_endpoints_gen_test.go b/internal/service/elb/service_endpoints_gen_test.go index aeae5bc8f16..ad123d7ebac 100644 --- a/internal/service/elb/service_endpoints_gen_test.go +++ b/internal/service/elb/service_endpoints_gen_test.go @@ -526,14 +526,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/elbv2/service_endpoints_gen_test.go b/internal/service/elbv2/service_endpoints_gen_test.go index 3ba453dd8d8..d7ce6644fbb 100644 --- a/internal/service/elbv2/service_endpoints_gen_test.go +++ b/internal/service/elbv2/service_endpoints_gen_test.go @@ -526,14 +526,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/emr/service_endpoints_gen_test.go b/internal/service/emr/service_endpoints_gen_test.go index 53e39f5f9a5..27002431070 100644 --- a/internal/service/emr/service_endpoints_gen_test.go +++ b/internal/service/emr/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/emrcontainers/service_endpoints_gen_test.go b/internal/service/emrcontainers/service_endpoints_gen_test.go index 175758645a7..b58a97fea91 100644 --- a/internal/service/emrcontainers/service_endpoints_gen_test.go +++ b/internal/service/emrcontainers/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/emrserverless/service_endpoints_gen_test.go b/internal/service/emrserverless/service_endpoints_gen_test.go index 9ed185d27b9..2ed18a4cbd1 100644 --- a/internal/service/emrserverless/service_endpoints_gen_test.go +++ b/internal/service/emrserverless/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/events/service_endpoints_gen_test.go b/internal/service/events/service_endpoints_gen_test.go index afff382f21f..5e5e311d92d 100644 --- a/internal/service/events/service_endpoints_gen_test.go +++ b/internal/service/events/service_endpoints_gen_test.go @@ -603,14 +603,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/evidently/service_endpoints_gen_test.go b/internal/service/evidently/service_endpoints_gen_test.go index c0afa167f98..a195eefe1df 100644 --- a/internal/service/evidently/service_endpoints_gen_test.go +++ b/internal/service/evidently/service_endpoints_gen_test.go @@ -526,14 +526,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/finspace/service_endpoints_gen_test.go b/internal/service/finspace/service_endpoints_gen_test.go index 98e53cb5923..8a85a733e82 100644 --- a/internal/service/finspace/service_endpoints_gen_test.go +++ b/internal/service/finspace/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/firehose/service_endpoints_gen_test.go b/internal/service/firehose/service_endpoints_gen_test.go index e5ce88f6d37..74df003a60f 100644 --- a/internal/service/firehose/service_endpoints_gen_test.go +++ b/internal/service/firehose/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/fis/service_endpoints_gen_test.go b/internal/service/fis/service_endpoints_gen_test.go index 9cf07d653af..e64c9ea488a 100644 --- a/internal/service/fis/service_endpoints_gen_test.go +++ b/internal/service/fis/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/fms/service_endpoints_gen_test.go b/internal/service/fms/service_endpoints_gen_test.go index 4518e79c8ef..96548e89c18 100644 --- a/internal/service/fms/service_endpoints_gen_test.go +++ b/internal/service/fms/service_endpoints_gen_test.go @@ -448,14 +448,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/fsx/service_endpoints_gen_test.go b/internal/service/fsx/service_endpoints_gen_test.go index 922b885044c..7613bd88b72 100644 --- a/internal/service/fsx/service_endpoints_gen_test.go +++ b/internal/service/fsx/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/gamelift/service_endpoints_gen_test.go b/internal/service/gamelift/service_endpoints_gen_test.go index c22cb9bbf14..7f2be02a7bf 100644 --- a/internal/service/gamelift/service_endpoints_gen_test.go +++ b/internal/service/gamelift/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/glacier/service_endpoints_gen_test.go b/internal/service/glacier/service_endpoints_gen_test.go index b468527e4d1..79eace34388 100644 --- a/internal/service/glacier/service_endpoints_gen_test.go +++ b/internal/service/glacier/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/globalaccelerator/service_endpoints_gen_test.go b/internal/service/globalaccelerator/service_endpoints_gen_test.go index 7cf86ae2a3c..e3c31fbaa33 100644 --- a/internal/service/globalaccelerator/service_endpoints_gen_test.go +++ b/internal/service/globalaccelerator/service_endpoints_gen_test.go @@ -448,14 +448,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/glue/service_endpoints_gen_test.go b/internal/service/glue/service_endpoints_gen_test.go index 9da7219779e..a18eecfda58 100644 --- a/internal/service/glue/service_endpoints_gen_test.go +++ b/internal/service/glue/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/grafana/service_endpoints_gen_test.go b/internal/service/grafana/service_endpoints_gen_test.go index d9db6aa43ca..d2c65bd14fb 100644 --- a/internal/service/grafana/service_endpoints_gen_test.go +++ b/internal/service/grafana/service_endpoints_gen_test.go @@ -603,14 +603,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/greengrass/service_endpoints_gen_test.go b/internal/service/greengrass/service_endpoints_gen_test.go index b05eb37fec9..2d40b8e1718 100644 --- a/internal/service/greengrass/service_endpoints_gen_test.go +++ b/internal/service/greengrass/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/groundstation/service_endpoints_gen_test.go b/internal/service/groundstation/service_endpoints_gen_test.go index 98438121a26..22e0664bdd6 100644 --- a/internal/service/groundstation/service_endpoints_gen_test.go +++ b/internal/service/groundstation/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/guardduty/service_endpoints_gen_test.go b/internal/service/guardduty/service_endpoints_gen_test.go index 744c3268cd7..6918c0b91ff 100644 --- a/internal/service/guardduty/service_endpoints_gen_test.go +++ b/internal/service/guardduty/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/healthlake/service_endpoints_gen_test.go b/internal/service/healthlake/service_endpoints_gen_test.go index 11200726be0..00be72faa2c 100644 --- a/internal/service/healthlake/service_endpoints_gen_test.go +++ b/internal/service/healthlake/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/iam/exports_test.go b/internal/service/iam/exports_test.go index 41cd72221c9..d75fb25008c 100644 --- a/internal/service/iam/exports_test.go +++ b/internal/service/iam/exports_test.go @@ -14,6 +14,7 @@ var ( ResourceGroupPolicyAttachment = resourceGroupPolicyAttachment ResourceInstanceProfile = resourceInstanceProfile ResourceOpenIDConnectProvider = resourceOpenIDConnectProvider + ResourceOrganizationsFeatures = newOrganizationsFeaturesResource ResourcePolicy = resourcePolicy ResourcePolicyAttachment = resourcePolicyAttachment ResourceRolePolicy = resourceRolePolicy @@ -45,6 +46,7 @@ var ( FindGroupPolicyAttachmentsByName = findGroupPolicyAttachmentsByName FindInstanceProfileByName = findInstanceProfileByName FindOpenIDConnectProviderByARN = findOpenIDConnectProviderByARN + FindOrganizationsFeatures = findOrganizationsFeatures FindPolicyByARN = findPolicyByARN FindRolePoliciesByName = findRolePoliciesByName FindRolePolicyAttachmentsByName = findRolePolicyAttachmentsByName diff --git a/internal/service/iam/organizations_features.go b/internal/service/iam/organizations_features.go new file mode 100644 index 00000000000..43468a6c6e3 --- /dev/null +++ b/internal/service/iam/organizations_features.go @@ -0,0 +1,250 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +package iam + +import ( + "context" + "fmt" + "slices" + + "github.com/aws/aws-sdk-go-v2/service/iam" + awstypes "github.com/aws/aws-sdk-go-v2/service/iam/types" + "github.com/hashicorp/terraform-plugin-framework/resource" + "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/types" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry" + "github.com/hashicorp/terraform-provider-aws/internal/errs" + "github.com/hashicorp/terraform-provider-aws/internal/errs/fwdiag" + "github.com/hashicorp/terraform-provider-aws/internal/framework" + fwflex "github.com/hashicorp/terraform-provider-aws/internal/framework/flex" + fwtypes "github.com/hashicorp/terraform-provider-aws/internal/framework/types" + "github.com/hashicorp/terraform-provider-aws/internal/tfresource" + itypes "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/names" +) + +// @FrameworkResource("aws_iam_organizations_features", name="Organizations Features") +func newOrganizationsFeaturesResource(context.Context) (resource.ResourceWithConfigure, error) { + r := &organizationsFeaturesResource{} + + return r, nil +} + +type organizationsFeaturesResource struct { + framework.ResourceWithConfigure + framework.WithImportByID +} + +func (*organizationsFeaturesResource) Metadata(_ context.Context, request resource.MetadataRequest, response *resource.MetadataResponse) { + response.TypeName = "aws_iam_organizations_features" +} + +func (r *organizationsFeaturesResource) Schema(ctx context.Context, request resource.SchemaRequest, response *resource.SchemaResponse) { + response.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + "enabled_features": schema.SetAttribute{ + CustomType: fwtypes.NewSetTypeOf[fwtypes.StringEnum[awstypes.FeatureType]](ctx), + Required: true, + ElementType: fwtypes.StringEnumType[awstypes.FeatureType](), + }, + names.AttrID: framework.IDAttribute(), + }, + } +} + +func (r *organizationsFeaturesResource) Create(ctx context.Context, request resource.CreateRequest, response *resource.CreateResponse) { + var data organizationsFeaturesResourceModel + response.Diagnostics.Append(request.Plan.Get(ctx, &data)...) + if response.Diagnostics.HasError() { + return + } + + conn := r.Meta().IAMClient(ctx) + + var enabledFeatures []awstypes.FeatureType + response.Diagnostics.Append(fwflex.Expand(ctx, data.EnabledFeatures, &enabledFeatures)...) + if response.Diagnostics.HasError() { + return + } + + if err := updateOrganizationFeatures(ctx, conn, enabledFeatures, []awstypes.FeatureType{}); err != nil { + response.Diagnostics.AddError("creating IAM Organizations Features", err.Error()) + + return + } + + output, err := findOrganizationsFeatures(ctx, conn) + + if err != nil { + response.Diagnostics.AddError("reading IAM Organizations Features", err.Error()) + + return + } + + // Set values for unknowns. + data.OrganizationID = fwflex.StringToFramework(ctx, output.OrganizationId) + + response.Diagnostics.Append(response.State.Set(ctx, data)...) +} + +func (r *organizationsFeaturesResource) Read(ctx context.Context, request resource.ReadRequest, response *resource.ReadResponse) { + var data organizationsFeaturesResourceModel + response.Diagnostics.Append(request.State.Get(ctx, &data)...) + if response.Diagnostics.HasError() { + return + } + + conn := r.Meta().IAMClient(ctx) + + output, err := findOrganizationsFeatures(ctx, conn) + + if tfresource.NotFound(err) { + response.Diagnostics.Append(fwdiag.NewResourceNotFoundWarningDiagnostic(err)) + response.State.RemoveResource(ctx) + + return + } + + if err != nil { + response.Diagnostics.AddError(fmt.Sprintf("reading IAM Organizations Features (%s)", data.OrganizationID.ValueString()), err.Error()) + + return + } + + response.Diagnostics.Append(fwflex.Flatten(ctx, output.EnabledFeatures, &data.EnabledFeatures)...) + if response.Diagnostics.HasError() { + return + } + + response.Diagnostics.Append(response.State.Set(ctx, &data)...) +} + +func (r *organizationsFeaturesResource) Update(ctx context.Context, request resource.UpdateRequest, response *resource.UpdateResponse) { + var old, new organizationsFeaturesResourceModel + response.Diagnostics.Append(request.Plan.Get(ctx, &new)...) + if response.Diagnostics.HasError() { + return + } + response.Diagnostics.Append(request.State.Get(ctx, &old)...) + if response.Diagnostics.HasError() { + return + } + + var oldFeatures, newFeatures []awstypes.FeatureType + response.Diagnostics.Append(fwflex.Expand(ctx, old.EnabledFeatures, &oldFeatures)...) + if response.Diagnostics.HasError() { + return + } + response.Diagnostics.Append(fwflex.Expand(ctx, new.EnabledFeatures, &newFeatures)...) + if response.Diagnostics.HasError() { + return + } + + conn := r.Meta().IAMClient(ctx) + + if err := updateOrganizationFeatures(ctx, conn, newFeatures, oldFeatures); err != nil { + response.Diagnostics.AddError(fmt.Sprintf("updating IAM Organizations Features (%s)", new.OrganizationID.ValueString()), err.Error()) + + return + } + + response.Diagnostics.Append(response.State.Set(ctx, &new)...) +} + +func (r *organizationsFeaturesResource) Delete(ctx context.Context, request resource.DeleteRequest, response *resource.DeleteResponse) { + var data organizationsFeaturesResourceModel + response.Diagnostics.Append(request.State.Get(ctx, &data)...) + if response.Diagnostics.HasError() { + return + } + + conn := r.Meta().IAMClient(ctx) + + var enabledFeatures []awstypes.FeatureType + response.Diagnostics.Append(fwflex.Expand(ctx, data.EnabledFeatures, &enabledFeatures)...) + if response.Diagnostics.HasError() { + return + } + + if err := updateOrganizationFeatures(ctx, conn, []awstypes.FeatureType{}, enabledFeatures); err != nil { + response.Diagnostics.AddError(fmt.Sprintf("deleting IAM Organizations Features (%s)", data.OrganizationID.ValueString()), err.Error()) + + return + } +} + +type organizationsFeaturesResourceModel struct { + EnabledFeatures fwtypes.SetValueOf[fwtypes.StringEnum[awstypes.FeatureType]] `tfsdk:"enabled_features"` + OrganizationID types.String `tfsdk:"id"` +} + +func findOrganizationsFeatures(ctx context.Context, conn *iam.Client) (*iam.ListOrganizationsFeaturesOutput, error) { + input := &iam.ListOrganizationsFeaturesInput{} + + output, err := conn.ListOrganizationsFeatures(ctx, input) + + if errs.IsA[*awstypes.OrganizationNotFoundException](err) { + return nil, &retry.NotFoundError{ + LastError: err, + LastRequest: input, + } + } + + if err != nil { + return nil, err + } + + if output == nil || len(output.EnabledFeatures) == 0 { + return nil, tfresource.NewEmptyResultError(input) + } + + return output, nil +} + +func updateOrganizationFeatures(ctx context.Context, conn *iam.Client, new, old []awstypes.FeatureType) error { + toEnable := itypes.Set[awstypes.FeatureType](new).Difference(old) + toDisable := itypes.Set[awstypes.FeatureType](old).Difference(new) + + if slices.Contains(toEnable, awstypes.FeatureTypeRootCredentialsManagement) { + input := &iam.EnableOrganizationsRootCredentialsManagementInput{} + + _, err := conn.EnableOrganizationsRootCredentialsManagement(ctx, input) + + if err != nil { + return fmt.Errorf("enabling Organizations root credentials management: %w", err) + } + } + + if slices.Contains(toEnable, awstypes.FeatureTypeRootSessions) { + input := &iam.EnableOrganizationsRootSessionsInput{} + + _, err := conn.EnableOrganizationsRootSessions(ctx, input) + + if err != nil { + return fmt.Errorf("enabling Organizations root sessions: %w", err) + } + } + + if slices.Contains(toDisable, awstypes.FeatureTypeRootCredentialsManagement) { + input := &iam.DisableOrganizationsRootCredentialsManagementInput{} + + _, err := conn.DisableOrganizationsRootCredentialsManagement(ctx, input) + + if err != nil { + return fmt.Errorf("disabling Organizations root credentials management: %w", err) + } + } + + if slices.Contains(toDisable, awstypes.FeatureTypeRootSessions) { + input := &iam.DisableOrganizationsRootSessionsInput{} + + _, err := conn.DisableOrganizationsRootSessions(ctx, input) + + if err != nil { + return fmt.Errorf("disabling Organizations root sessions: %w", err) + } + } + + return nil +} diff --git a/internal/service/iam/organizations_features_test.go b/internal/service/iam/organizations_features_test.go new file mode 100644 index 00000000000..38088d23dc1 --- /dev/null +++ b/internal/service/iam/organizations_features_test.go @@ -0,0 +1,165 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +package iam_test + +import ( + "context" + "fmt" + "strings" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/knownvalue" + "github.com/hashicorp/terraform-plugin-testing/statecheck" + "github.com/hashicorp/terraform-plugin-testing/terraform" + "github.com/hashicorp/terraform-plugin-testing/tfjsonpath" + "github.com/hashicorp/terraform-provider-aws/internal/acctest" + "github.com/hashicorp/terraform-provider-aws/internal/conns" + tfiam "github.com/hashicorp/terraform-provider-aws/internal/service/iam" + "github.com/hashicorp/terraform-provider-aws/internal/tfresource" + "github.com/hashicorp/terraform-provider-aws/names" +) + +func TestAccIAMOrganizationsFeatures_serial(t *testing.T) { + t.Parallel() + + testCases := map[string]func(t *testing.T){ + acctest.CtBasic: testAccOrganizationsFeatures_basic, + "update": testAccOrganizationsFeatures_update, + } + + acctest.RunSerialTests1Level(t, testCases, 0) +} + +func testAccOrganizationsFeatures_basic(t *testing.T) { + ctx := acctest.Context(t) + resourceName := "aws_iam_organizations_features.test" + + resource.Test(t, resource.TestCase{ + PreCheck: func() { + acctest.PreCheck(ctx, t) + acctest.PreCheckOrganizationManagementAccount(ctx, t) + acctest.PreCheckOrganizationsEnabledServicePrincipal(ctx, t, "iam.amazonaws.com") + }, + ErrorCheck: acctest.ErrorCheck(t, names.IAMServiceID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckOrganizationsFeaturesDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccOrganizationsFeaturesConfig_basic([]string{"RootCredentialsManagement", "RootSessions"}), + Check: resource.ComposeTestCheckFunc( + testAccCheckOrganizationsFeaturesExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New("enabled_features"), knownvalue.SetSizeExact(2)), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New("enabled_features"), knownvalue.SetExact([]knownvalue.Check{ + knownvalue.StringExact("RootCredentialsManagement"), + knownvalue.StringExact("RootSessions"), + })), + }, + }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: false, + }, + }, + }) +} + +func testAccOrganizationsFeatures_update(t *testing.T) { + ctx := acctest.Context(t) + resourceName := "aws_iam_organizations_features.test" + + resource.Test(t, resource.TestCase{ + PreCheck: func() { + acctest.PreCheck(ctx, t) + acctest.PreCheckOrganizationManagementAccount(ctx, t) + acctest.PreCheckOrganizationsEnabledServicePrincipal(ctx, t, "iam.amazonaws.com") + }, + ErrorCheck: acctest.ErrorCheck(t, names.IAMServiceID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckOrganizationsFeaturesDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccOrganizationsFeaturesConfig_basic([]string{"RootCredentialsManagement"}), + Check: resource.ComposeTestCheckFunc( + testAccCheckOrganizationsFeaturesExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New("enabled_features"), knownvalue.SetSizeExact(1)), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New("enabled_features"), knownvalue.SetExact([]knownvalue.Check{ + knownvalue.StringExact("RootCredentialsManagement"), + })), + }, + }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: false, + }, + { + Config: testAccOrganizationsFeaturesConfig_basic([]string{"RootSessions"}), + Check: resource.ComposeTestCheckFunc( + testAccCheckOrganizationsFeaturesExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New("enabled_features"), knownvalue.SetSizeExact(1)), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New("enabled_features"), knownvalue.SetExact([]knownvalue.Check{ + knownvalue.StringExact("RootSessions"), + })), + }, + }, + }, + }) +} + +func testAccCheckOrganizationsFeaturesDestroy(ctx context.Context) resource.TestCheckFunc { + return func(s *terraform.State) error { + conn := acctest.Provider.Meta().(*conns.AWSClient).IAMClient(ctx) + + for _, rs := range s.RootModule().Resources { + if rs.Type != "aws_iam_organizations_features" { + continue + } + + _, err := tfiam.FindOrganizationsFeatures(ctx, conn) + + if tfresource.NotFound(err) { + continue + } + + if err != nil { + return err + } + + return fmt.Errorf("IAM Organizations Features %s still exists", rs.Primary.ID) + } + + return nil + } +} + +func testAccCheckOrganizationsFeaturesExists(ctx context.Context, n string) resource.TestCheckFunc { + return func(s *terraform.State) error { + _, ok := s.RootModule().Resources[n] + if !ok { + return fmt.Errorf("Not found: %s", n) + } + + conn := acctest.Provider.Meta().(*conns.AWSClient).IAMClient(ctx) + + _, err := tfiam.FindOrganizationsFeatures(ctx, conn) + + return err + } +} + +func testAccOrganizationsFeaturesConfig_basic(features []string) string { + return fmt.Sprintf(` +resource "aws_iam_organizations_features" "test" { + enabled_features = [%[1]s] +} +`, fmt.Sprintf(`"%s"`, strings.Join(features, `", "`))) +} diff --git a/internal/service/iam/service_endpoints_gen_test.go b/internal/service/iam/service_endpoints_gen_test.go index 6f8b3786825..65b0cca8ed8 100644 --- a/internal/service/iam/service_endpoints_gen_test.go +++ b/internal/service/iam/service_endpoints_gen_test.go @@ -584,14 +584,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/iam/service_package_gen.go b/internal/service/iam/service_package_gen.go index 8029167973b..d16f91c483a 100644 --- a/internal/service/iam/service_package_gen.go +++ b/internal/service/iam/service_package_gen.go @@ -20,6 +20,10 @@ func (p *servicePackage) FrameworkDataSources(ctx context.Context) []*types.Serv func (p *servicePackage) FrameworkResources(ctx context.Context) []*types.ServicePackageFrameworkResource { return []*types.ServicePackageFrameworkResource{ + { + Factory: newOrganizationsFeaturesResource, + Name: "Organizations Features", + }, { Factory: newResourceGroupPoliciesExclusive, Name: "Group Policies Exclusive", diff --git a/internal/service/identitystore/service_endpoints_gen_test.go b/internal/service/identitystore/service_endpoints_gen_test.go index f80aed4ade0..5223dc6845c 100644 --- a/internal/service/identitystore/service_endpoints_gen_test.go +++ b/internal/service/identitystore/service_endpoints_gen_test.go @@ -448,14 +448,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/imagebuilder/service_endpoints_gen_test.go b/internal/service/imagebuilder/service_endpoints_gen_test.go index 73686a1041e..d7e3580e7a8 100644 --- a/internal/service/imagebuilder/service_endpoints_gen_test.go +++ b/internal/service/imagebuilder/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/inspector/service_endpoints_gen_test.go b/internal/service/inspector/service_endpoints_gen_test.go index ca305ad3994..d47f8af331b 100644 --- a/internal/service/inspector/service_endpoints_gen_test.go +++ b/internal/service/inspector/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/inspector2/service_endpoints_gen_test.go b/internal/service/inspector2/service_endpoints_gen_test.go index 2523dc2b352..5a20d82d677 100644 --- a/internal/service/inspector2/service_endpoints_gen_test.go +++ b/internal/service/inspector2/service_endpoints_gen_test.go @@ -526,14 +526,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/internetmonitor/service_endpoints_gen_test.go b/internal/service/internetmonitor/service_endpoints_gen_test.go index f0434020f4c..85b663d8f8d 100644 --- a/internal/service/internetmonitor/service_endpoints_gen_test.go +++ b/internal/service/internetmonitor/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/iot/service_endpoints_gen_test.go b/internal/service/iot/service_endpoints_gen_test.go index bf6f67bff33..a40ed8f51e1 100644 --- a/internal/service/iot/service_endpoints_gen_test.go +++ b/internal/service/iot/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/iotanalytics/service_endpoints_gen_test.go b/internal/service/iotanalytics/service_endpoints_gen_test.go index 5b5f4a5f965..63c0f7de229 100644 --- a/internal/service/iotanalytics/service_endpoints_gen_test.go +++ b/internal/service/iotanalytics/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/iotevents/service_endpoints_gen_test.go b/internal/service/iotevents/service_endpoints_gen_test.go index a79d9486820..0aacc8fdf31 100644 --- a/internal/service/iotevents/service_endpoints_gen_test.go +++ b/internal/service/iotevents/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/ivs/service_endpoints_gen_test.go b/internal/service/ivs/service_endpoints_gen_test.go index f5f62e5e571..a28d374f6cd 100644 --- a/internal/service/ivs/service_endpoints_gen_test.go +++ b/internal/service/ivs/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/ivschat/service_endpoints_gen_test.go b/internal/service/ivschat/service_endpoints_gen_test.go index fd395364de1..cc80a69cd26 100644 --- a/internal/service/ivschat/service_endpoints_gen_test.go +++ b/internal/service/ivschat/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/kafka/service_endpoints_gen_test.go b/internal/service/kafka/service_endpoints_gen_test.go index 0e1cad4dc8f..47f10332b4a 100644 --- a/internal/service/kafka/service_endpoints_gen_test.go +++ b/internal/service/kafka/service_endpoints_gen_test.go @@ -526,14 +526,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/kafkaconnect/service_endpoints_gen_test.go b/internal/service/kafkaconnect/service_endpoints_gen_test.go index 1944d366551..78936adfcab 100644 --- a/internal/service/kafkaconnect/service_endpoints_gen_test.go +++ b/internal/service/kafkaconnect/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/kendra/service_endpoints_gen_test.go b/internal/service/kendra/service_endpoints_gen_test.go index afe8ae2b1d2..79d57dfe870 100644 --- a/internal/service/kendra/service_endpoints_gen_test.go +++ b/internal/service/kendra/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/keyspaces/service_endpoints_gen_test.go b/internal/service/keyspaces/service_endpoints_gen_test.go index 1981f82c75b..104751e42a4 100644 --- a/internal/service/keyspaces/service_endpoints_gen_test.go +++ b/internal/service/keyspaces/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/kinesis/service_endpoints_gen_test.go b/internal/service/kinesis/service_endpoints_gen_test.go index b26f7c8e725..18570e2d333 100644 --- a/internal/service/kinesis/service_endpoints_gen_test.go +++ b/internal/service/kinesis/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/kinesisanalytics/service_endpoints_gen_test.go b/internal/service/kinesisanalytics/service_endpoints_gen_test.go index d12211193c6..50f1209dfae 100644 --- a/internal/service/kinesisanalytics/service_endpoints_gen_test.go +++ b/internal/service/kinesisanalytics/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/kinesisanalyticsv2/service_endpoints_gen_test.go b/internal/service/kinesisanalyticsv2/service_endpoints_gen_test.go index 87a85205cf6..746fa577c6a 100644 --- a/internal/service/kinesisanalyticsv2/service_endpoints_gen_test.go +++ b/internal/service/kinesisanalyticsv2/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/kinesisvideo/service_endpoints_gen_test.go b/internal/service/kinesisvideo/service_endpoints_gen_test.go index 01cfc6e0e2a..8ee88636874 100644 --- a/internal/service/kinesisvideo/service_endpoints_gen_test.go +++ b/internal/service/kinesisvideo/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/kms/service_endpoints_gen_test.go b/internal/service/kms/service_endpoints_gen_test.go index 7b548b12fb2..5cfb45fb6e3 100644 --- a/internal/service/kms/service_endpoints_gen_test.go +++ b/internal/service/kms/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/lakeformation/service_endpoints_gen_test.go b/internal/service/lakeformation/service_endpoints_gen_test.go index 0f89fbd9d1f..26303e21a0e 100644 --- a/internal/service/lakeformation/service_endpoints_gen_test.go +++ b/internal/service/lakeformation/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/lambda/service_endpoints_gen_test.go b/internal/service/lambda/service_endpoints_gen_test.go index c3b9b403391..b521cf3d7f6 100644 --- a/internal/service/lambda/service_endpoints_gen_test.go +++ b/internal/service/lambda/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/launchwizard/service_endpoints_gen_test.go b/internal/service/launchwizard/service_endpoints_gen_test.go index 7ba10b35434..3c8fce5992d 100644 --- a/internal/service/launchwizard/service_endpoints_gen_test.go +++ b/internal/service/launchwizard/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/lexmodels/service_endpoints_gen_test.go b/internal/service/lexmodels/service_endpoints_gen_test.go index 30d172749f1..d35fa658569 100644 --- a/internal/service/lexmodels/service_endpoints_gen_test.go +++ b/internal/service/lexmodels/service_endpoints_gen_test.go @@ -688,14 +688,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/lexv2models/service_endpoints_gen_test.go b/internal/service/lexv2models/service_endpoints_gen_test.go index 04e4c8a4d65..dab711a0075 100644 --- a/internal/service/lexv2models/service_endpoints_gen_test.go +++ b/internal/service/lexv2models/service_endpoints_gen_test.go @@ -526,14 +526,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/licensemanager/service_endpoints_gen_test.go b/internal/service/licensemanager/service_endpoints_gen_test.go index 07e126a210a..4977d11f7a4 100644 --- a/internal/service/licensemanager/service_endpoints_gen_test.go +++ b/internal/service/licensemanager/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/lightsail/service_endpoints_gen_test.go b/internal/service/lightsail/service_endpoints_gen_test.go index 4b66fdcb547..07595d1915b 100644 --- a/internal/service/lightsail/service_endpoints_gen_test.go +++ b/internal/service/lightsail/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/logs/service_endpoints_gen_test.go b/internal/service/logs/service_endpoints_gen_test.go index 2a43a35018c..fc6f599af13 100644 --- a/internal/service/logs/service_endpoints_gen_test.go +++ b/internal/service/logs/service_endpoints_gen_test.go @@ -603,14 +603,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/lookoutmetrics/service_endpoints_gen_test.go b/internal/service/lookoutmetrics/service_endpoints_gen_test.go index 05fc8364fc6..bb4975163c5 100644 --- a/internal/service/lookoutmetrics/service_endpoints_gen_test.go +++ b/internal/service/lookoutmetrics/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/m2/service_endpoints_gen_test.go b/internal/service/m2/service_endpoints_gen_test.go index de5debb2c93..5550ecd6fb7 100644 --- a/internal/service/m2/service_endpoints_gen_test.go +++ b/internal/service/m2/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/macie2/service_endpoints_gen_test.go b/internal/service/macie2/service_endpoints_gen_test.go index 80a094eabaf..f8a8e469280 100644 --- a/internal/service/macie2/service_endpoints_gen_test.go +++ b/internal/service/macie2/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/mediaconnect/service_endpoints_gen_test.go b/internal/service/mediaconnect/service_endpoints_gen_test.go index 3f3e1213e9f..8a4351ffad0 100644 --- a/internal/service/mediaconnect/service_endpoints_gen_test.go +++ b/internal/service/mediaconnect/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/mediaconvert/service_endpoints_gen_test.go b/internal/service/mediaconvert/service_endpoints_gen_test.go index 51deed3013f..2f802b1f7fb 100644 --- a/internal/service/mediaconvert/service_endpoints_gen_test.go +++ b/internal/service/mediaconvert/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/medialive/service_endpoints_gen_test.go b/internal/service/medialive/service_endpoints_gen_test.go index d2ff84c4b6d..4d849e63551 100644 --- a/internal/service/medialive/service_endpoints_gen_test.go +++ b/internal/service/medialive/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/mediapackage/service_endpoints_gen_test.go b/internal/service/mediapackage/service_endpoints_gen_test.go index 2a4f6cdd788..1543ca65ecd 100644 --- a/internal/service/mediapackage/service_endpoints_gen_test.go +++ b/internal/service/mediapackage/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/mediapackagev2/service_endpoints_gen_test.go b/internal/service/mediapackagev2/service_endpoints_gen_test.go index fab2b6f1b32..3355ec9939e 100644 --- a/internal/service/mediapackagev2/service_endpoints_gen_test.go +++ b/internal/service/mediapackagev2/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/mediastore/service_endpoints_gen_test.go b/internal/service/mediastore/service_endpoints_gen_test.go index 15ae8686486..d09a6e5e8e5 100644 --- a/internal/service/mediastore/service_endpoints_gen_test.go +++ b/internal/service/mediastore/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/memorydb/acl.go b/internal/service/memorydb/acl.go index 18e883b3ca9..ffd4b69606c 100644 --- a/internal/service/memorydb/acl.go +++ b/internal/service/memorydb/acl.go @@ -6,12 +6,14 @@ package memorydb import ( "context" "log" + "time" "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/service/memorydb" awstypes "github.com/aws/aws-sdk-go-v2/service/memorydb/types" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/id" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" "github.com/hashicorp/terraform-provider-aws/internal/conns" @@ -81,7 +83,6 @@ func resourceACL() *schema.Resource { func resourceACLCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics - conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) name := create.Name(d.Get(names.AttrName).(string), d.Get(names.AttrNamePrefix).(string)) @@ -94,25 +95,48 @@ func resourceACLCreate(ctx context.Context, d *schema.ResourceData, meta interfa input.UserNames = flex.ExpandStringValueSet(v.(*schema.Set)) } - log.Printf("[DEBUG] Creating MemoryDB ACL: %+v", input) _, err := conn.CreateACL(ctx, input) if err != nil { return sdkdiag.AppendErrorf(diags, "creating MemoryDB ACL (%s): %s", name, err) } - if err := waitACLActive(ctx, conn, name); err != nil { - return sdkdiag.AppendErrorf(diags, "waiting for MemoryDB ACL (%s) to be created: %s", name, err) - } - d.SetId(name) + if _, err := waitACLActive(ctx, conn, d.Id()); err != nil { + return sdkdiag.AppendErrorf(diags, "waiting for MemoryDB ACL (%s) create: %s", d.Id(), err) + } + return append(diags, resourceACLRead(ctx, d, meta)...) } -func resourceACLUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { +func resourceACLRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics + conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) + + acl, err := findACLByName(ctx, conn, d.Id()) + if !d.IsNewResource() && tfresource.NotFound(err) { + log.Printf("[WARN] MemoryDB ACL (%s) not found, removing from state", d.Id()) + d.SetId("") + return diags + } + + if err != nil { + return sdkdiag.AppendErrorf(diags, "reading MemoryDB ACL (%s): %s", d.Id(), err) + } + + d.Set(names.AttrARN, acl.ARN) + d.Set("minimum_engine_version", acl.MinimumEngineVersion) + d.Set(names.AttrName, acl.Name) + d.Set(names.AttrNamePrefix, create.NamePrefixFromName(aws.ToString(acl.Name))) + d.Set("user_names", acl.UserNames) + + return diags +} + +func resourceACLUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { + var diags diag.Diagnostics conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) if d.HasChangesExcept(names.AttrTags, names.AttrTagsAll) { @@ -121,9 +145,9 @@ func resourceACLUpdate(ctx context.Context, d *schema.ResourceData, meta interfa } o, n := d.GetChange("user_names") - oldSet, newSet := o.(*schema.Set), n.(*schema.Set) + os, ns := o.(*schema.Set), n.(*schema.Set) - if toAdd := newSet.Difference(oldSet); toAdd.Len() > 0 { + if toAdd := ns.Difference(os); toAdd.Len() > 0 { input.UserNamesToAdd = flex.ExpandStringValueSet(toAdd) } @@ -134,9 +158,10 @@ func resourceACLUpdate(ctx context.Context, d *schema.ResourceData, meta interfa // InvalidParameterValueException. To work around this, filter out any // users that have been reported as no longer being in the group. - initialState, err := FindACLByName(ctx, conn, d.Id()) + initialState, err := findACLByName(ctx, conn, d.Id()) + if err != nil { - return sdkdiag.AppendErrorf(diags, "getting MemoryDB ACL (%s) current state: %s", d.Id(), err) + return sdkdiag.AppendErrorf(diags, "reading MemoryDB ACL (%s): %s", d.Id(), err) } initialUserNames := map[string]struct{}{} @@ -144,7 +169,7 @@ func resourceACLUpdate(ctx context.Context, d *schema.ResourceData, meta interfa initialUserNames[userName] = struct{}{} } - for _, v := range oldSet.Difference(newSet).List() { + for _, v := range os.Difference(ns).List() { userNameToRemove := v.(string) _, userNameStillPresent := initialUserNames[userNameToRemove] @@ -154,15 +179,14 @@ func resourceACLUpdate(ctx context.Context, d *schema.ResourceData, meta interfa } if len(input.UserNamesToAdd) > 0 || len(input.UserNamesToRemove) > 0 { - log.Printf("[DEBUG] Updating MemoryDB ACL (%s)", d.Id()) - _, err := conn.UpdateACL(ctx, input) + if err != nil { return sdkdiag.AppendErrorf(diags, "updating MemoryDB ACL (%s): %s", d.Id(), err) } - if err := waitACLActive(ctx, conn, d.Id()); err != nil { - return sdkdiag.AppendErrorf(diags, "waiting for MemoryDB ACL (%s) to be modified: %s", d.Id(), err) + if _, err := waitACLActive(ctx, conn, d.Id()); err != nil { + return sdkdiag.AppendErrorf(diags, "waiting for MemoryDB ACL (%s) update: %s", d.Id(), err) } } } @@ -170,53 +194,124 @@ func resourceACLUpdate(ctx context.Context, d *schema.ResourceData, meta interfa return append(diags, resourceACLRead(ctx, d, meta)...) } -func resourceACLRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { +func resourceACLDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics - conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) - acl, err := FindACLByName(ctx, conn, d.Id()) + log.Printf("[DEBUG] Deleting MemoryDB ACL: (%s)", d.Id()) + _, err := conn.DeleteACL(ctx, &memorydb.DeleteACLInput{ + ACLName: aws.String(d.Id()), + }) - if !d.IsNewResource() && tfresource.NotFound(err) { - log.Printf("[WARN] MemoryDB ACL (%s) not found, removing from state", d.Id()) - d.SetId("") + if errs.IsA[*awstypes.ACLNotFoundFault](err) { return diags } if err != nil { - return sdkdiag.AppendErrorf(diags, "reading MemoryDB ACL (%s): %s", d.Id(), err) + return sdkdiag.AppendErrorf(diags, "deleting MemoryDB ACL (%s): %s", d.Id(), err) } - d.Set(names.AttrARN, acl.ARN) - d.Set("minimum_engine_version", acl.MinimumEngineVersion) - d.Set(names.AttrName, acl.Name) - d.Set(names.AttrNamePrefix, create.NamePrefixFromName(aws.ToString(acl.Name))) - d.Set("user_names", flex.FlattenStringValueSet(acl.UserNames)) + if _, err := waitACLDeleted(ctx, conn, d.Id()); err != nil { + return sdkdiag.AppendErrorf(diags, "waiting for MemoryDB ACL (%s) delete: %s", d.Id(), err) + } return diags } -func resourceACLDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - var diags diag.Diagnostics +func findACLByName(ctx context.Context, conn *memorydb.Client, name string) (*awstypes.ACL, error) { + input := &memorydb.DescribeACLsInput{ + ACLName: aws.String(name), + } - conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) + return findACL(ctx, conn, input) +} - log.Printf("[DEBUG] Deleting MemoryDB ACL: (%s)", d.Id()) - _, err := conn.DeleteACL(ctx, &memorydb.DeleteACLInput{ - ACLName: aws.String(d.Id()), - }) +func findACL(ctx context.Context, conn *memorydb.Client, input *memorydb.DescribeACLsInput) (*awstypes.ACL, error) { + output, err := findACLs(ctx, conn, input) - if errs.IsA[*awstypes.ACLNotFoundFault](err) { - return diags + if err != nil { + return nil, err } - if err != nil { - return sdkdiag.AppendErrorf(diags, "deleting MemoryDB ACL (%s): %s", d.Id(), err) + return tfresource.AssertSingleValueResult(output) +} + +func findACLs(ctx context.Context, conn *memorydb.Client, input *memorydb.DescribeACLsInput) ([]awstypes.ACL, error) { + var output []awstypes.ACL + + pages := memorydb.NewDescribeACLsPaginator(conn, input) + for pages.HasMorePages() { + page, err := pages.NextPage(ctx) + + if errs.IsA[*awstypes.ACLNotFoundFault](err) { + return nil, &retry.NotFoundError{ + LastError: err, + LastRequest: input, + } + } + + if err != nil { + return nil, err + } + + output = append(output, page.ACLs...) } - if err := waitACLDeleted(ctx, conn, d.Id()); err != nil { - return sdkdiag.AppendErrorf(diags, "waiting for MemoryDB ACL (%s) to be deleted: %s", d.Id(), err) + return output, nil +} + +func statusACL(ctx context.Context, conn *memorydb.Client, name string) retry.StateRefreshFunc { + return func() (interface{}, string, error) { + output, err := findACLByName(ctx, conn, name) + + if tfresource.NotFound(err) { + return nil, "", nil + } + + if err != nil { + return nil, "", err + } + + return output, aws.ToString(output.Status), nil } +} - return diags +func waitACLActive(ctx context.Context, conn *memorydb.Client, name string) (*awstypes.ACL, error) { //nolint:unparam + const ( + timeout = 5 * time.Minute + ) + stateConf := &retry.StateChangeConf{ + Pending: []string{aclStatusCreating, aclStatusModifying}, + Target: []string{aclStatusActive}, + Refresh: statusACL(ctx, conn, name), + Timeout: timeout, + } + + outputRaw, err := stateConf.WaitForStateContext(ctx) + + if output, ok := outputRaw.(*awstypes.ACL); ok { + return output, err + } + + return nil, err +} + +func waitACLDeleted(ctx context.Context, conn *memorydb.Client, name string) (*awstypes.ACL, error) { + const ( + timeout = 5 * time.Minute + ) + stateConf := &retry.StateChangeConf{ + Pending: []string{aclStatusDeleting}, + Target: []string{}, + Refresh: statusACL(ctx, conn, name), + Timeout: timeout, + } + + outputRaw, err := stateConf.WaitForStateContext(ctx) + + if output, ok := outputRaw.(*awstypes.ACL); ok { + return output, err + } + + return nil, err } diff --git a/internal/service/memorydb/acl_data_source.go b/internal/service/memorydb/acl_data_source.go index 5166b31bde5..6ecfded6eb1 100644 --- a/internal/service/memorydb/acl_data_source.go +++ b/internal/service/memorydb/acl_data_source.go @@ -11,13 +11,13 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/errs/sdkdiag" - "github.com/hashicorp/terraform-provider-aws/internal/flex" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" "github.com/hashicorp/terraform-provider-aws/internal/tfresource" "github.com/hashicorp/terraform-provider-aws/names" ) // @SDKDataSource("aws_memorydb_acl", name="ACL") +// @Tags(identifierAttribute="arn") func dataSourceACL() *schema.Resource { return &schema.Resource{ ReadWithoutTimeout: dataSourceACLRead, @@ -47,34 +47,20 @@ func dataSourceACL() *schema.Resource { func dataSourceACLRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics - conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) - ignoreTagsConfig := meta.(*conns.AWSClient).IgnoreTagsConfig(ctx) name := d.Get(names.AttrName).(string) - - acl, err := FindACLByName(ctx, conn, name) + acl, err := findACLByName(ctx, conn, name) if err != nil { return sdkdiag.AppendFromErr(diags, tfresource.SingularDataSourceFindError("MemoryDB ACL", err)) } d.SetId(aws.ToString(acl.Name)) - d.Set(names.AttrARN, acl.ARN) d.Set("minimum_engine_version", acl.MinimumEngineVersion) d.Set(names.AttrName, acl.Name) - d.Set("user_names", flex.FlattenStringValueSet(acl.UserNames)) - - tags, err := listTags(ctx, conn, d.Get(names.AttrARN).(string)) - - if err != nil { - return sdkdiag.AppendErrorf(diags, "listing tags for MemoryDB ACL (%s): %s", d.Id(), err) - } - - if err := d.Set(names.AttrTags, tags.IgnoreAWS().IgnoreConfig(ignoreTagsConfig).Map()); err != nil { - return sdkdiag.AppendErrorf(diags, "setting tags: %s", err) - } + d.Set("user_names", acl.UserNames) return diags } diff --git a/internal/service/memorydb/acl_test.go b/internal/service/memorydb/acl_test.go index 8c7b28209de..f58b7b50d17 100644 --- a/internal/service/memorydb/acl_test.go +++ b/internal/service/memorydb/acl_test.go @@ -328,10 +328,6 @@ func testAccCheckACLExists(ctx context.Context, n string) resource.TestCheckFunc return fmt.Errorf("Not found: %s", n) } - if rs.Primary.ID == "" { - return fmt.Errorf("No MemoryDB ACL ID is set") - } - conn := acctest.Provider.Meta().(*conns.AWSClient).MemoryDBClient(ctx) _, err := tfmemorydb.FindACLByName(ctx, conn, rs.Primary.Attributes[names.AttrName]) diff --git a/internal/service/memorydb/cluster.go b/internal/service/memorydb/cluster.go index 57542e6c863..ec8b06cf70b 100644 --- a/internal/service/memorydb/cluster.go +++ b/internal/service/memorydb/cluster.go @@ -15,13 +15,17 @@ import ( awstypes "github.com/aws/aws-sdk-go-v2/service/memorydb/types" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/id" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/create" + "github.com/hashicorp/terraform-provider-aws/internal/enum" "github.com/hashicorp/terraform-provider-aws/internal/errs" "github.com/hashicorp/terraform-provider-aws/internal/errs/sdkdiag" "github.com/hashicorp/terraform-provider-aws/internal/flex" + "github.com/hashicorp/terraform-provider-aws/internal/sdkv2" + tfslices "github.com/hashicorp/terraform-provider-aws/internal/slices" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" "github.com/hashicorp/terraform-provider-aws/internal/tfresource" "github.com/hashicorp/terraform-provider-aws/internal/verify" @@ -42,213 +46,221 @@ func resourceCluster() *schema.Resource { }, Timeouts: &schema.ResourceTimeout{ - Create: schema.DefaultTimeout(clusterAvailableTimeout), - Update: schema.DefaultTimeout(clusterAvailableTimeout), - Delete: schema.DefaultTimeout(clusterDeletedTimeout), + Create: schema.DefaultTimeout(120 * time.Minute), + Update: schema.DefaultTimeout(120 * time.Minute), + Delete: schema.DefaultTimeout(120 * time.Minute), }, CustomizeDiff: verify.SetTagsDiff, - Schema: map[string]*schema.Schema{ - "acl_name": { - Type: schema.TypeString, - Required: true, - }, - names.AttrARN: { - Type: schema.TypeString, - Computed: true, - }, - names.AttrAutoMinorVersionUpgrade: { - Type: schema.TypeBool, - Optional: true, - Default: true, - ForceNew: true, - }, - "cluster_endpoint": endpointSchema(), - "data_tiering": { - Type: schema.TypeBool, - ForceNew: true, - Optional: true, - Default: false, - }, - names.AttrDescription: { - Type: schema.TypeString, - Optional: true, - Default: "Managed by Terraform", - }, - "engine_patch_version": { - Type: schema.TypeString, - Computed: true, - }, - names.AttrEngineVersion: { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "final_snapshot_name": { - Type: schema.TypeString, - Optional: true, - ValidateFunc: validateResourceName(snapshotNameMaxLength), - }, - names.AttrKMSKeyARN: { - // The API will accept an ID, but return the ARN on every read. - // For the sake of consistency, force everyone to use ARN-s. - // To prevent confusion, the attribute is suffixed _arn rather - // than the _id implied by the API. - Type: schema.TypeString, - Optional: true, - ForceNew: true, - ValidateFunc: verify.ValidARN, - }, - "maintenance_window": { - Type: schema.TypeString, - Optional: true, - Computed: true, - ValidateFunc: verify.ValidOnceAWeekWindowFormat, - }, - names.AttrName: { - Type: schema.TypeString, - Optional: true, - Computed: true, - ForceNew: true, - ConflictsWith: []string{names.AttrNamePrefix}, - ValidateFunc: validateResourceName(clusterNameMaxLength), - }, - names.AttrNamePrefix: { - Type: schema.TypeString, - Optional: true, - Computed: true, - ForceNew: true, - ConflictsWith: []string{names.AttrName}, - ValidateFunc: validateResourceNamePrefix(clusterNameMaxLength - id.UniqueIDSuffixLength), - }, - "node_type": { - Type: schema.TypeString, - Required: true, - }, - "num_replicas_per_shard": { - Type: schema.TypeInt, - Optional: true, - Default: 1, - ValidateFunc: validation.IntBetween(0, 5), - }, - "num_shards": { - Type: schema.TypeInt, - Optional: true, - Default: 1, - ValidateFunc: validation.IntAtLeast(1), - }, - names.AttrParameterGroupName: { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - names.AttrPort: { - Type: schema.TypeInt, - Optional: true, - Computed: true, - ForceNew: true, - }, - names.AttrSecurityGroupIDs: { - Type: schema.TypeSet, - Optional: true, - Elem: &schema.Schema{ - Type: schema.TypeString, + SchemaFunc: func() map[string]*schema.Schema { + return map[string]*schema.Schema{ + "acl_name": { + Type: schema.TypeString, + Required: true, }, - }, - "shards": { - Type: schema.TypeSet, - Computed: true, - Set: shardHash, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - names.AttrName: { - Type: schema.TypeString, - Computed: true, - }, - "nodes": { - Type: schema.TypeSet, - Computed: true, - Set: nodeHash, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - names.AttrAvailabilityZone: { - Type: schema.TypeString, - Computed: true, - }, - names.AttrCreateTime: { - Type: schema.TypeString, - Computed: true, - }, - names.AttrEndpoint: endpointSchema(), - names.AttrName: { - Type: schema.TypeString, - Computed: true, + names.AttrARN: { + Type: schema.TypeString, + Computed: true, + }, + names.AttrAutoMinorVersionUpgrade: { + Type: schema.TypeBool, + Optional: true, + Default: true, + ForceNew: true, + }, + "cluster_endpoint": endpointSchema(), + "data_tiering": { + Type: schema.TypeBool, + ForceNew: true, + Optional: true, + Default: false, + }, + names.AttrDescription: { + Type: schema.TypeString, + Optional: true, + Default: "Managed by Terraform", + }, + "engine_patch_version": { + Type: schema.TypeString, + Computed: true, + }, + names.AttrEngine: { + Type: schema.TypeString, + Optional: true, + Computed: true, + ValidateDiagFunc: enum.Validate[clusterEngine](), + }, + names.AttrEngineVersion: { + Type: schema.TypeString, + Optional: true, + Computed: true, + }, + "final_snapshot_name": { + Type: schema.TypeString, + Optional: true, + ValidateFunc: validateResourceName(snapshotNameMaxLength), + }, + names.AttrKMSKeyARN: { + // The API will accept an ID, but return the ARN on every read. + // For the sake of consistency, force everyone to use ARN-s. + // To prevent confusion, the attribute is suffixed _arn rather + // than the _id implied by the API. + Type: schema.TypeString, + Optional: true, + ForceNew: true, + ValidateFunc: verify.ValidARN, + }, + "maintenance_window": { + Type: schema.TypeString, + Optional: true, + Computed: true, + ValidateFunc: verify.ValidOnceAWeekWindowFormat, + }, + names.AttrName: { + Type: schema.TypeString, + Optional: true, + Computed: true, + ForceNew: true, + ConflictsWith: []string{names.AttrNamePrefix}, + ValidateFunc: validateResourceName(clusterNameMaxLength), + }, + names.AttrNamePrefix: { + Type: schema.TypeString, + Optional: true, + Computed: true, + ForceNew: true, + ConflictsWith: []string{names.AttrName}, + ValidateFunc: validateResourceNamePrefix(clusterNameMaxLength - id.UniqueIDSuffixLength), + }, + "node_type": { + Type: schema.TypeString, + Required: true, + }, + "num_replicas_per_shard": { + Type: schema.TypeInt, + Optional: true, + Default: 1, + ValidateFunc: validation.IntBetween(0, 5), + }, + "num_shards": { + Type: schema.TypeInt, + Optional: true, + Default: 1, + ValidateFunc: validation.IntAtLeast(1), + }, + names.AttrParameterGroupName: { + Type: schema.TypeString, + Optional: true, + Computed: true, + }, + names.AttrPort: { + Type: schema.TypeInt, + Optional: true, + Computed: true, + ForceNew: true, + }, + names.AttrSecurityGroupIDs: { + Type: schema.TypeSet, + Optional: true, + Elem: &schema.Schema{ + Type: schema.TypeString, + }, + }, + "shards": { + Type: schema.TypeSet, + Computed: true, + Set: clusterShardHash, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + names.AttrName: { + Type: schema.TypeString, + Computed: true, + }, + "nodes": { + Type: schema.TypeSet, + Computed: true, + Set: clusterShardNodeHash, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + names.AttrAvailabilityZone: { + Type: schema.TypeString, + Computed: true, + }, + names.AttrCreateTime: { + Type: schema.TypeString, + Computed: true, + }, + names.AttrEndpoint: endpointSchema(), + names.AttrName: { + Type: schema.TypeString, + Computed: true, + }, }, }, }, - }, - "num_nodes": { - Type: schema.TypeInt, - Computed: true, - }, - "slots": { - Type: schema.TypeString, - Computed: true, + "num_nodes": { + Type: schema.TypeInt, + Computed: true, + }, + "slots": { + Type: schema.TypeString, + Computed: true, + }, }, }, }, - }, - "snapshot_arns": { - Type: schema.TypeList, - Optional: true, - ForceNew: true, - ConflictsWith: []string{"snapshot_name"}, - Elem: &schema.Schema{ - Type: schema.TypeString, - ValidateFunc: validation.All( - verify.ValidARN, - validation.StringDoesNotContainAny(","), - ), + "snapshot_arns": { + Type: schema.TypeList, + Optional: true, + ForceNew: true, + ConflictsWith: []string{"snapshot_name"}, + Elem: &schema.Schema{ + Type: schema.TypeString, + ValidateFunc: validation.All( + verify.ValidARN, + validation.StringDoesNotContainAny(","), + ), + }, }, - }, - "snapshot_name": { - Type: schema.TypeString, - Optional: true, - ForceNew: true, - ConflictsWith: []string{"snapshot_arns"}, - }, - "snapshot_retention_limit": { - Type: schema.TypeInt, - Computed: true, - Optional: true, - ValidateFunc: validation.IntBetween(0, 35), - }, - "snapshot_window": { - Type: schema.TypeString, - Optional: true, - Computed: true, - ValidateFunc: verify.ValidOnceADayWindowFormat, - }, - names.AttrSNSTopicARN: { - Type: schema.TypeString, - Optional: true, - ValidateFunc: verify.ValidARN, - }, - "subnet_group_name": { - Type: schema.TypeString, - Optional: true, - Computed: true, - ForceNew: true, - }, - names.AttrTags: tftags.TagsSchema(), - names.AttrTagsAll: tftags.TagsSchemaComputed(), - "tls_enabled": { - Type: schema.TypeBool, - Optional: true, - Default: true, - ForceNew: true, - }, + "snapshot_name": { + Type: schema.TypeString, + Optional: true, + ForceNew: true, + ConflictsWith: []string{"snapshot_arns"}, + }, + "snapshot_retention_limit": { + Type: schema.TypeInt, + Computed: true, + Optional: true, + ValidateFunc: validation.IntBetween(0, 35), + }, + "snapshot_window": { + Type: schema.TypeString, + Optional: true, + Computed: true, + ValidateFunc: verify.ValidOnceADayWindowFormat, + }, + names.AttrSNSTopicARN: { + Type: schema.TypeString, + Optional: true, + ValidateFunc: verify.ValidARN, + }, + "subnet_group_name": { + Type: schema.TypeString, + Optional: true, + Computed: true, + ForceNew: true, + }, + names.AttrTags: tftags.TagsSchema(), + names.AttrTagsAll: tftags.TagsSchemaComputed(), + "tls_enabled": { + Type: schema.TypeBool, + Optional: true, + Default: true, + ForceNew: true, + }, + } }, } } @@ -274,7 +286,6 @@ func endpointSchema() *schema.Schema { func resourceClusterCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics - conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) name := create.Name(d.Get(names.AttrName).(string), d.Get(names.AttrNamePrefix).(string)) @@ -297,6 +308,10 @@ func resourceClusterCreate(ctx context.Context, d *schema.ResourceData, meta int input.Description = aws.String(v.(string)) } + if v, ok := d.GetOk(names.AttrEngine); ok { + input.Engine = aws.String(v.(string)) + } + if v, ok := d.GetOk(names.AttrEngineVersion); ok { input.EngineVersion = aws.String(v.(string)) } @@ -322,14 +337,11 @@ func resourceClusterCreate(ctx context.Context, d *schema.ResourceData, meta int } if v, ok := d.GetOk("snapshot_arns"); ok && len(v.([]interface{})) > 0 { - v := v.([]interface{}) - input.SnapshotArns = flex.ExpandStringValueList(v) - log.Printf("[DEBUG] Restoring MemoryDB Cluster (%s) from S3 snapshots %#v", name, v) + input.SnapshotArns = flex.ExpandStringValueList(v.([]interface{})) } if v, ok := d.GetOk("snapshot_name"); ok { input.SnapshotName = aws.String(v.(string)) - log.Printf("[DEBUG] Restoring MemoryDB Cluster (%s) from snapshot %s", name, v.(string)) } if v, ok := d.GetOk("snapshot_retention_limit"); ok { @@ -348,25 +360,89 @@ func resourceClusterCreate(ctx context.Context, d *schema.ResourceData, meta int input.SubnetGroupName = aws.String(v.(string)) } - log.Printf("[DEBUG] Creating MemoryDB Cluster: %+v", input) _, err := conn.CreateCluster(ctx, input) if err != nil { return sdkdiag.AppendErrorf(diags, "creating MemoryDB Cluster (%s): %s", name, err) } - if err := waitClusterAvailable(ctx, conn, name, d.Timeout(schema.TimeoutCreate)); err != nil { - return sdkdiag.AppendErrorf(diags, "waiting for MemoryDB Cluster (%s) to be created: %s", name, err) - } - d.SetId(name) + if _, err := waitClusterAvailable(ctx, conn, d.Id(), d.Timeout(schema.TimeoutCreate)); err != nil { + return sdkdiag.AppendErrorf(diags, "waiting for MemoryDB Cluster (%s) create: %s", d.Id(), err) + } + return append(diags, resourceClusterRead(ctx, d, meta)...) } -func resourceClusterUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { +func resourceClusterRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics + conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) + + cluster, err := findClusterByName(ctx, conn, d.Id()) + + if !d.IsNewResource() && tfresource.NotFound(err) { + log.Printf("[WARN] MemoryDB Cluster (%s) not found, removing from state", d.Id()) + d.SetId("") + return diags + } + + if err != nil { + return sdkdiag.AppendErrorf(diags, "reading MemoryDB Cluster (%s): %s", d.Id(), err) + } + + d.Set("acl_name", cluster.ACLName) + d.Set(names.AttrARN, cluster.ARN) + d.Set(names.AttrAutoMinorVersionUpgrade, cluster.AutoMinorVersionUpgrade) + if v := cluster.ClusterEndpoint; v != nil { + d.Set("cluster_endpoint", flattenEndpoint(v)) + d.Set(names.AttrPort, v.Port) + } + if v := string(cluster.DataTiering); v != "" { + v, err := strconv.ParseBool(v) + if err != nil { + return sdkdiag.AppendFromErr(diags, err) + } + d.Set("data_tiering", v) + } + d.Set(names.AttrDescription, cluster.Description) + d.Set("engine_patch_version", cluster.EnginePatchVersion) + d.Set(names.AttrEngine, cluster.Engine) + d.Set(names.AttrEngineVersion, cluster.EngineVersion) + d.Set(names.AttrKMSKeyARN, cluster.KmsKeyId) // KmsKeyId is actually an ARN here. + d.Set("maintenance_window", cluster.MaintenanceWindow) + d.Set(names.AttrName, cluster.Name) + d.Set(names.AttrNamePrefix, create.NamePrefixFromName(aws.ToString(cluster.Name))) + d.Set("node_type", cluster.NodeType) + if v, err := deriveClusterNumReplicasPerShard(cluster); err != nil { + return sdkdiag.AppendFromErr(diags, err) + } else { + d.Set("num_replicas_per_shard", v) + } + d.Set("num_shards", cluster.NumberOfShards) + d.Set(names.AttrParameterGroupName, cluster.ParameterGroupName) + d.Set(names.AttrSecurityGroupIDs, tfslices.ApplyToAll(cluster.SecurityGroups, func(v awstypes.SecurityGroupMembership) string { + return aws.ToString(v.SecurityGroupId) + })) + if err := d.Set("shards", flattenShards(cluster.Shards)); err != nil { + return sdkdiag.AppendErrorf(diags, "setting shards: %s", err) + } + d.Set("snapshot_retention_limit", cluster.SnapshotRetentionLimit) + d.Set("snapshot_window", cluster.SnapshotWindow) + if aws.ToString(cluster.SnsTopicStatus) == clusterSNSTopicStatusActive { + d.Set(names.AttrSNSTopicARN, cluster.SnsTopicArn) + } else { + d.Set(names.AttrSNSTopicARN, "") + } + d.Set("subnet_group_name", cluster.SubnetGroupName) + d.Set("tls_enabled", cluster.TLSEnabled) + + return diags +} + +func resourceClusterUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { + var diags diag.Diagnostics conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) if d.HasChangesExcept("final_snapshot_name", names.AttrTags, names.AttrTagsAll) { @@ -385,6 +461,10 @@ func resourceClusterUpdate(ctx context.Context, d *schema.ResourceData, meta int input.Description = aws.String(d.Get(names.AttrDescription).(string)) } + if d.HasChange(names.AttrEngine) { + input.Engine = aws.String(d.Get(names.AttrEngine).(string)) + } + if d.HasChange(names.AttrEngineVersion) { input.EngineVersion = aws.String(d.Get(names.AttrEngineVersion).(string)) } @@ -439,36 +519,33 @@ func resourceClusterUpdate(ctx context.Context, d *schema.ResourceData, meta int if d.HasChange(names.AttrSNSTopicARN) { v := d.Get(names.AttrSNSTopicARN).(string) - input.SnsTopicArn = aws.String(v) - if v == "" { - input.SnsTopicStatus = aws.String(ClusterSNSTopicStatusInactive) + input.SnsTopicStatus = aws.String(clusterSNSTopicStatusInactive) } else { - input.SnsTopicStatus = aws.String(ClusterSNSTopicStatusActive) + input.SnsTopicStatus = aws.String(clusterSNSTopicStatusActive) } } - log.Printf("[DEBUG] Updating MemoryDB Cluster (%s)", d.Id()) - _, err := conn.UpdateCluster(ctx, input) + if err != nil { return sdkdiag.AppendErrorf(diags, "updating MemoryDB Cluster (%s): %s", d.Id(), err) } - if err := waitClusterAvailable(ctx, conn, d.Id(), d.Timeout(schema.TimeoutUpdate)); err != nil { - return sdkdiag.AppendErrorf(diags, "waiting for MemoryDB Cluster (%s) to be modified: %s", d.Id(), err) + if _, err := waitClusterAvailable(ctx, conn, d.Id(), d.Timeout(schema.TimeoutUpdate)); err != nil { + return sdkdiag.AppendErrorf(diags, "waiting for MemoryDB Cluster (%s) update: %s", d.Id(), err) } if waitParameterGroupInSync { - if err := waitClusterParameterGroupInSync(ctx, conn, d.Id()); err != nil { - return sdkdiag.AppendErrorf(diags, "waiting for MemoryDB Cluster (%s) parameter group to be in sync: %s", d.Id(), err) + if _, err := waitClusterParameterGroupInSync(ctx, conn, d.Id()); err != nil { + return sdkdiag.AppendErrorf(diags, "waiting for MemoryDB Cluster (%s) parameter group: %s", d.Id(), err) } } if waitSecurityGroupsActive { - if err := waitClusterSecurityGroupsActive(ctx, conn, d.Id()); err != nil { - return sdkdiag.AppendErrorf(diags, "waiting for MemoryDB Cluster (%s) security groups to be available: %s", d.Id(), err) + if _, err := waitClusterSecurityGroupsActive(ctx, conn, d.Id()); err != nil { + return sdkdiag.AppendErrorf(diags, "waiting for MemoryDB Cluster (%s) security groups: %s", d.Id(), err) } } } @@ -476,165 +553,256 @@ func resourceClusterUpdate(ctx context.Context, d *schema.ResourceData, meta int return append(diags, resourceClusterRead(ctx, d, meta)...) } -func resourceClusterRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { +func resourceClusterDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics - conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) - cluster, err := FindClusterByName(ctx, conn, d.Id()) + input := &memorydb.DeleteClusterInput{ + ClusterName: aws.String(d.Id()), + } - if !d.IsNewResource() && tfresource.NotFound(err) { - log.Printf("[WARN] MemoryDB Cluster (%s) not found, removing from state", d.Id()) - d.SetId("") + if v := d.Get("final_snapshot_name"); v != nil && len(v.(string)) > 0 { + input.FinalSnapshotName = aws.String(v.(string)) + } + + log.Printf("[DEBUG] Deleting MemoryDB Cluster: (%s)", d.Id()) + _, err := conn.DeleteCluster(ctx, input) + + if errs.IsA[*awstypes.ClusterNotFoundFault](err) { return diags } if err != nil { - return sdkdiag.AppendErrorf(diags, "reading MemoryDB Cluster (%s): %s", d.Id(), err) + return sdkdiag.AppendErrorf(diags, "deleting MemoryDB Cluster (%s): %s", d.Id(), err) } - d.Set("acl_name", cluster.ACLName) - d.Set(names.AttrARN, cluster.ARN) - d.Set(names.AttrAutoMinorVersionUpgrade, cluster.AutoMinorVersionUpgrade) - - if v := cluster.ClusterEndpoint; v != nil { - d.Set("cluster_endpoint", flattenEndpoint(v)) - d.Set(names.AttrPort, v.Port) + if _, err := waitClusterDeleted(ctx, conn, d.Id(), d.Timeout(schema.TimeoutDelete)); err != nil { + return sdkdiag.AppendErrorf(diags, "waiting for MemoryDB Cluster (%s) delete: %s", d.Id(), err) } - if v := string(cluster.DataTiering); v != "" { - b, err := strconv.ParseBool(v) - if err != nil { - return sdkdiag.AppendErrorf(diags, "reading data_tiering for MemoryDB Cluster (%s): %s", d.Id(), err) - } + return diags +} - d.Set("data_tiering", b) +func findClusterByName(ctx context.Context, conn *memorydb.Client, name string) (*awstypes.Cluster, error) { + input := &memorydb.DescribeClustersInput{ + ClusterName: aws.String(name), + ShowShardDetails: aws.Bool(true), } - d.Set(names.AttrDescription, cluster.Description) - d.Set("engine_patch_version", cluster.EnginePatchVersion) - d.Set(names.AttrEngineVersion, cluster.EngineVersion) - d.Set(names.AttrKMSKeyARN, cluster.KmsKeyId) // KmsKeyId is actually an ARN here. - d.Set("maintenance_window", cluster.MaintenanceWindow) - d.Set(names.AttrName, cluster.Name) - d.Set(names.AttrNamePrefix, create.NamePrefixFromName(aws.ToString(cluster.Name))) - d.Set("node_type", cluster.NodeType) + return findCluster(ctx, conn, input) +} + +func findCluster(ctx context.Context, conn *memorydb.Client, input *memorydb.DescribeClustersInput) (*awstypes.Cluster, error) { + output, err := findClusters(ctx, conn, input) - numReplicasPerShard, err := deriveClusterNumReplicasPerShard(cluster) if err != nil { - return sdkdiag.AppendErrorf(diags, "reading num_replicas_per_shard for MemoryDB Cluster (%s): %s", d.Id(), err) + return nil, err } - d.Set("num_replicas_per_shard", numReplicasPerShard) - d.Set("num_shards", cluster.NumberOfShards) - d.Set(names.AttrParameterGroupName, cluster.ParameterGroupName) + return tfresource.AssertSingleValueResult(output) +} - var securityGroupIds []*string - for _, v := range cluster.SecurityGroups { - securityGroupIds = append(securityGroupIds, v.SecurityGroupId) - } - d.Set(names.AttrSecurityGroupIDs, flex.FlattenStringSet(securityGroupIds)) +func findClusters(ctx context.Context, conn *memorydb.Client, input *memorydb.DescribeClustersInput) ([]awstypes.Cluster, error) { + var output []awstypes.Cluster - if err := d.Set("shards", flattenShards(cluster.Shards)); err != nil { - return sdkdiag.AppendErrorf(diags, "failed to set shards for MemoryDB Cluster (%s): %s", d.Id(), err) + pages := memorydb.NewDescribeClustersPaginator(conn, input) + for pages.HasMorePages() { + page, err := pages.NextPage(ctx) + + if errs.IsA[*awstypes.ClusterNotFoundFault](err) { + return nil, &retry.NotFoundError{ + LastError: err, + LastRequest: input, + } + } + + if err != nil { + return nil, err + } + + output = append(output, page.Clusters...) } - d.Set("snapshot_retention_limit", cluster.SnapshotRetentionLimit) - d.Set("snapshot_window", cluster.SnapshotWindow) + return output, nil +} - if aws.ToString(cluster.SnsTopicStatus) == ClusterSNSTopicStatusActive { - d.Set(names.AttrSNSTopicARN, cluster.SnsTopicArn) - } else { - d.Set(names.AttrSNSTopicARN, "") +func statusCluster(ctx context.Context, conn *memorydb.Client, name string) retry.StateRefreshFunc { + return func() (interface{}, string, error) { + output, err := findClusterByName(ctx, conn, name) + + if tfresource.NotFound(err) { + return nil, "", nil + } + + if err != nil { + return nil, "", err + } + + return output, aws.ToString(output.Status), nil } +} - d.Set("subnet_group_name", cluster.SubnetGroupName) - d.Set("tls_enabled", cluster.TLSEnabled) +func statusClusterParameterGroup(ctx context.Context, conn *memorydb.Client, name string) retry.StateRefreshFunc { + return func() (interface{}, string, error) { + output, err := findClusterByName(ctx, conn, name) - return diags + if tfresource.NotFound(err) { + return nil, "", nil + } + + if err != nil { + return nil, "", err + } + + return output, aws.ToString(output.ParameterGroupStatus), nil + } } -func resourceClusterDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - var diags diag.Diagnostics +func statusClusterSecurityGroups(ctx context.Context, conn *memorydb.Client, name string) retry.StateRefreshFunc { + return func() (interface{}, string, error) { + output, err := findClusterByName(ctx, conn, name) - conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) + if tfresource.NotFound(err) { + return nil, "", nil + } - input := &memorydb.DeleteClusterInput{ - ClusterName: aws.String(d.Id()), + if err != nil { + return nil, "", err + } + + for _, v := range output.SecurityGroups { + // When at least one security group change is being applied (whether + // that be adding or removing an SG), say that we're still in progress. + if aws.ToString(v.Status) != clusterSecurityGroupStatusActive { + return output, clusterSecurityGroupStatusModifying, nil + } + } + + return output, clusterSecurityGroupStatusActive, nil } +} - if v := d.Get("final_snapshot_name"); v != nil && len(v.(string)) > 0 { - input.FinalSnapshotName = aws.String(v.(string)) +func waitClusterAvailable(ctx context.Context, conn *memorydb.Client, name string, timeout time.Duration) (*awstypes.Cluster, error) { //nolint:unparam + stateConf := &retry.StateChangeConf{ + Pending: []string{clusterStatusCreating, clusterStatusUpdating, clusterStatusSnapshotting}, + Target: []string{clusterStatusAvailable}, + Refresh: statusCluster(ctx, conn, name), + Timeout: timeout, } - log.Printf("[DEBUG] Deleting MemoryDB Cluster: (%s)", d.Id()) - _, err := conn.DeleteCluster(ctx, input) + outputRaw, err := stateConf.WaitForStateContext(ctx) - if errs.IsA[*awstypes.ClusterNotFoundFault](err) { - return diags + if output, ok := outputRaw.(*awstypes.Cluster); ok { + return output, err } - if err != nil { - return sdkdiag.AppendErrorf(diags, "deleting MemoryDB Cluster (%s): %s", d.Id(), err) + return nil, err +} + +func waitClusterDeleted(ctx context.Context, conn *memorydb.Client, name string, timeout time.Duration) (*awstypes.Cluster, error) { + stateConf := &retry.StateChangeConf{ + Pending: []string{clusterStatusDeleting}, + Target: []string{}, + Refresh: statusCluster(ctx, conn, name), + Timeout: timeout, } - if err := waitClusterDeleted(ctx, conn, d.Id(), d.Timeout(schema.TimeoutDelete)); err != nil { - return sdkdiag.AppendErrorf(diags, "waiting for MemoryDB Cluster (%s) to be deleted: %s", d.Id(), err) + outputRaw, err := stateConf.WaitForStateContext(ctx) + + if output, ok := outputRaw.(*awstypes.Cluster); ok { + return output, err } - return diags + return nil, err } -func shardHash(v interface{}) int { - return create.StringHashcode(v.(map[string]interface{})[names.AttrName].(string)) +func waitClusterParameterGroupInSync(ctx context.Context, conn *memorydb.Client, name string) (*awstypes.Cluster, error) { + const ( + timeout = 60 * time.Minute + ) + stateConf := &retry.StateChangeConf{ + Pending: []string{clusterParameterGroupStatusApplying}, + Target: []string{clusterParameterGroupStatusInSync}, + Refresh: statusClusterParameterGroup(ctx, conn, name), + Timeout: timeout, + } + + outputRaw, err := stateConf.WaitForStateContext(ctx) + + if output, ok := outputRaw.(*awstypes.Cluster); ok { + return output, err + } + + return nil, err } -func nodeHash(v interface{}) int { - return create.StringHashcode(v.(map[string]interface{})[names.AttrName].(string)) +func waitClusterSecurityGroupsActive(ctx context.Context, conn *memorydb.Client, name string) (*awstypes.Cluster, error) { + const ( + timeout = 10 * time.Minute + ) + stateConf := &retry.StateChangeConf{ + Pending: []string{clusterSecurityGroupStatusModifying}, + Target: []string{clusterSecurityGroupStatusActive}, + Refresh: statusClusterSecurityGroups(ctx, conn, name), + Timeout: timeout, + } + + outputRaw, err := stateConf.WaitForStateContext(ctx) + + if output, ok := outputRaw.(*awstypes.Cluster); ok { + return output, err + } + + return nil, err } -func flattenEndpoint(endpoint *awstypes.Endpoint) []interface{} { - if endpoint == nil { +var ( + clusterShardHash = sdkv2.SimpleSchemaSetFunc(names.AttrName) + clusterShardNodeHash = sdkv2.SimpleSchemaSetFunc(names.AttrName) +) + +func flattenEndpoint(apiObject *awstypes.Endpoint) []interface{} { + if apiObject == nil { return []interface{}{} } - m := map[string]interface{}{} + tfMap := map[string]interface{}{} - if v := aws.ToString(endpoint.Address); v != "" { - m[names.AttrAddress] = v + if v := aws.ToString(apiObject.Address); v != "" { + tfMap[names.AttrAddress] = v } - if endpoint.Port != 0 { - m[names.AttrPort] = endpoint.Port + if apiObject.Port != 0 { + tfMap[names.AttrPort] = apiObject.Port } - return []interface{}{m} + return []interface{}{tfMap} } -func flattenShards(shards []awstypes.Shard) *schema.Set { - shardSet := schema.NewSet(shardHash, nil) +func flattenShards(apiObjects []awstypes.Shard) *schema.Set { + tfSet := schema.NewSet(clusterShardHash, nil) - for _, shard := range shards { - nodeSet := schema.NewSet(nodeHash, nil) + for _, apiObject := range apiObjects { + nodeSet := schema.NewSet(clusterShardNodeHash, nil) - for _, node := range shard.Nodes { + for _, apiObject := range apiObject.Nodes { nodeSet.Add(map[string]interface{}{ - names.AttrAvailabilityZone: aws.ToString(node.AvailabilityZone), - names.AttrCreateTime: aws.ToTime(node.CreateTime).Format(time.RFC3339), - names.AttrEndpoint: flattenEndpoint(node.Endpoint), - names.AttrName: aws.ToString(node.Name), + names.AttrAvailabilityZone: aws.ToString(apiObject.AvailabilityZone), + names.AttrCreateTime: aws.ToTime(apiObject.CreateTime).Format(time.RFC3339), + names.AttrEndpoint: flattenEndpoint(apiObject.Endpoint), + names.AttrName: aws.ToString(apiObject.Name), }) } - shardSet.Add(map[string]interface{}{ - names.AttrName: aws.ToString(shard.Name), - "num_nodes": int(aws.ToInt32(shard.NumberOfNodes)), + tfSet.Add(map[string]interface{}{ + names.AttrName: aws.ToString(apiObject.Name), + "num_nodes": aws.ToInt32(apiObject.NumberOfNodes), "nodes": nodeSet, - "slots": aws.ToString(shard.Slots), + "slots": aws.ToString(apiObject.Slots), }) } - return shardSet + return tfSet } // deriveClusterNumReplicasPerShard determines the replicas per shard @@ -646,7 +814,7 @@ func deriveClusterNumReplicasPerShard(cluster *awstypes.Cluster) (int, error) { var maxNumberOfNodesPerShard int32 for _, shard := range cluster.Shards { - if aws.ToString(shard.Status) != ClusterShardStatusAvailable { + if aws.ToString(shard.Status) != clusterShardStatusAvailable { continue } diff --git a/internal/service/memorydb/cluster_data_source.go b/internal/service/memorydb/cluster_data_source.go index 2c8d926670b..3a4876af9bf 100644 --- a/internal/service/memorydb/cluster_data_source.go +++ b/internal/service/memorydb/cluster_data_source.go @@ -8,244 +8,227 @@ import ( "strconv" "github.com/aws/aws-sdk-go-v2/aws" + awstypes "github.com/aws/aws-sdk-go-v2/service/memorydb/types" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/errs/sdkdiag" - "github.com/hashicorp/terraform-provider-aws/internal/flex" + tfslices "github.com/hashicorp/terraform-provider-aws/internal/slices" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" "github.com/hashicorp/terraform-provider-aws/internal/tfresource" "github.com/hashicorp/terraform-provider-aws/names" ) // @SDKDataSource("aws_memorydb_cluster", name="Cluster") +// @Tags(identifierAttribute="arn") func dataSourceCluster() *schema.Resource { return &schema.Resource{ ReadWithoutTimeout: dataSourceClusterRead, - Schema: map[string]*schema.Schema{ - "acl_name": { - Type: schema.TypeString, - Computed: true, - }, - names.AttrARN: { - Type: schema.TypeString, - Computed: true, - }, - names.AttrAutoMinorVersionUpgrade: { - Type: schema.TypeBool, - Computed: true, - }, - "cluster_endpoint": endpointSchema(), - "data_tiering": { - Type: schema.TypeBool, - Computed: true, - }, - names.AttrDescription: { - Type: schema.TypeString, - Computed: true, - }, - "engine_patch_version": { - Type: schema.TypeString, - Computed: true, - }, - names.AttrEngineVersion: { - Type: schema.TypeString, - Computed: true, - }, - "final_snapshot_name": { - Type: schema.TypeString, - Computed: true, - }, - names.AttrKMSKeyARN: { - Type: schema.TypeString, - Computed: true, - }, - "maintenance_window": { - Type: schema.TypeString, - Computed: true, - }, - names.AttrName: { - Type: schema.TypeString, - Required: true, - }, - "node_type": { - Type: schema.TypeString, - Computed: true, - }, - "num_replicas_per_shard": { - Type: schema.TypeInt, - Computed: true, - }, - "num_shards": { - Type: schema.TypeInt, - Computed: true, - }, - names.AttrParameterGroupName: { - Type: schema.TypeString, - Computed: true, - }, - names.AttrPort: { - Type: schema.TypeInt, - Computed: true, - }, - names.AttrSecurityGroupIDs: { - Type: schema.TypeSet, - Computed: true, - Elem: &schema.Schema{ - Type: schema.TypeString, - }, - }, - "shards": { - Type: schema.TypeSet, - Computed: true, - Set: shardHash, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - names.AttrName: { - Type: schema.TypeString, - Computed: true, - }, - "nodes": { - Type: schema.TypeSet, - Computed: true, - Set: nodeHash, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - names.AttrAvailabilityZone: { - Type: schema.TypeString, - Computed: true, - }, - names.AttrCreateTime: { - Type: schema.TypeString, - Computed: true, - }, - names.AttrEndpoint: endpointSchema(), - names.AttrName: { - Type: schema.TypeString, - Computed: true, + SchemaFunc: func() map[string]*schema.Schema { + return map[string]*schema.Schema{ + "acl_name": { + Type: schema.TypeString, + Computed: true, + }, + names.AttrARN: { + Type: schema.TypeString, + Computed: true, + }, + names.AttrAutoMinorVersionUpgrade: { + Type: schema.TypeBool, + Computed: true, + }, + "cluster_endpoint": endpointSchema(), + "data_tiering": { + Type: schema.TypeBool, + Computed: true, + }, + names.AttrDescription: { + Type: schema.TypeString, + Computed: true, + }, + "engine_patch_version": { + Type: schema.TypeString, + Computed: true, + }, + names.AttrEngine: { + Type: schema.TypeString, + Computed: true, + }, + names.AttrEngineVersion: { + Type: schema.TypeString, + Computed: true, + }, + "final_snapshot_name": { + Type: schema.TypeString, + Computed: true, + }, + names.AttrKMSKeyARN: { + Type: schema.TypeString, + Computed: true, + }, + "maintenance_window": { + Type: schema.TypeString, + Computed: true, + }, + names.AttrName: { + Type: schema.TypeString, + Required: true, + }, + "node_type": { + Type: schema.TypeString, + Computed: true, + }, + "num_replicas_per_shard": { + Type: schema.TypeInt, + Computed: true, + }, + "num_shards": { + Type: schema.TypeInt, + Computed: true, + }, + names.AttrParameterGroupName: { + Type: schema.TypeString, + Computed: true, + }, + names.AttrPort: { + Type: schema.TypeInt, + Computed: true, + }, + names.AttrSecurityGroupIDs: { + Type: schema.TypeSet, + Computed: true, + Elem: &schema.Schema{ + Type: schema.TypeString, + }, + }, + "shards": { + Type: schema.TypeSet, + Computed: true, + Set: clusterShardHash, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + names.AttrName: { + Type: schema.TypeString, + Computed: true, + }, + "nodes": { + Type: schema.TypeSet, + Computed: true, + Set: clusterShardNodeHash, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + names.AttrAvailabilityZone: { + Type: schema.TypeString, + Computed: true, + }, + names.AttrCreateTime: { + Type: schema.TypeString, + Computed: true, + }, + names.AttrEndpoint: endpointSchema(), + names.AttrName: { + Type: schema.TypeString, + Computed: true, + }, }, }, }, - }, - "num_nodes": { - Type: schema.TypeInt, - Computed: true, - }, - "slots": { - Type: schema.TypeString, - Computed: true, + "num_nodes": { + Type: schema.TypeInt, + Computed: true, + }, + "slots": { + Type: schema.TypeString, + Computed: true, + }, }, }, }, - }, - "snapshot_retention_limit": { - Type: schema.TypeInt, - Computed: true, - }, - "snapshot_window": { - Type: schema.TypeString, - Computed: true, - }, - names.AttrSNSTopicARN: { - Type: schema.TypeString, - Computed: true, - }, - "subnet_group_name": { - Type: schema.TypeString, - Computed: true, - }, - names.AttrTags: tftags.TagsSchemaComputed(), - "tls_enabled": { - Type: schema.TypeBool, - Computed: true, - }, + "snapshot_retention_limit": { + Type: schema.TypeInt, + Computed: true, + }, + "snapshot_window": { + Type: schema.TypeString, + Computed: true, + }, + names.AttrSNSTopicARN: { + Type: schema.TypeString, + Computed: true, + }, + "subnet_group_name": { + Type: schema.TypeString, + Computed: true, + }, + names.AttrTags: tftags.TagsSchemaComputed(), + "tls_enabled": { + Type: schema.TypeBool, + Computed: true, + }, + } }, } } func dataSourceClusterRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics - conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) - ignoreTagsConfig := meta.(*conns.AWSClient).IgnoreTagsConfig(ctx) name := d.Get(names.AttrName).(string) - - cluster, err := FindClusterByName(ctx, conn, name) + cluster, err := findClusterByName(ctx, conn, name) if err != nil { return sdkdiag.AppendFromErr(diags, tfresource.SingularDataSourceFindError("MemoryDB Cluster", err)) } d.SetId(aws.ToString(cluster.Name)) - d.Set("acl_name", cluster.ACLName) d.Set(names.AttrARN, cluster.ARN) d.Set(names.AttrAutoMinorVersionUpgrade, cluster.AutoMinorVersionUpgrade) - if v := cluster.ClusterEndpoint; v != nil { d.Set("cluster_endpoint", flattenEndpoint(v)) d.Set(names.AttrPort, v.Port) } - if v := string(cluster.DataTiering); v != "" { - b, err := strconv.ParseBool(v) + v, err := strconv.ParseBool(v) if err != nil { - return sdkdiag.AppendErrorf(diags, "reading data_tiering for MemoryDB Cluster (%s): %s", d.Id(), err) + return sdkdiag.AppendFromErr(diags, err) } - d.Set("data_tiering", b) + d.Set("data_tiering", v) } - d.Set(names.AttrDescription, cluster.Description) d.Set("engine_patch_version", cluster.EnginePatchVersion) + d.Set(names.AttrEngine, cluster.Engine) d.Set(names.AttrEngineVersion, cluster.EngineVersion) d.Set(names.AttrKMSKeyARN, cluster.KmsKeyId) // KmsKeyId is actually an ARN here. d.Set("maintenance_window", cluster.MaintenanceWindow) d.Set(names.AttrName, cluster.Name) d.Set("node_type", cluster.NodeType) - - numReplicasPerShard, err := deriveClusterNumReplicasPerShard(cluster) - if err != nil { - return sdkdiag.AppendErrorf(diags, "reading num_replicas_per_shard for MemoryDB Cluster (%s): %s", d.Id(), err) + if v, err := deriveClusterNumReplicasPerShard(cluster); err != nil { + return sdkdiag.AppendFromErr(diags, err) + } else { + d.Set("num_replicas_per_shard", v) } - d.Set("num_replicas_per_shard", numReplicasPerShard) - d.Set("num_shards", cluster.NumberOfShards) d.Set(names.AttrParameterGroupName, cluster.ParameterGroupName) - - var securityGroupIds []*string - for _, v := range cluster.SecurityGroups { - securityGroupIds = append(securityGroupIds, v.SecurityGroupId) - } - d.Set(names.AttrSecurityGroupIDs, flex.FlattenStringSet(securityGroupIds)) - + d.Set(names.AttrSecurityGroupIDs, tfslices.ApplyToAll(cluster.SecurityGroups, func(v awstypes.SecurityGroupMembership) string { + return aws.ToString(v.SecurityGroupId) + })) if err := d.Set("shards", flattenShards(cluster.Shards)); err != nil { - return sdkdiag.AppendErrorf(diags, "failed to set shards for MemoryDB Cluster (%s): %s", d.Id(), err) + return sdkdiag.AppendErrorf(diags, "setting shards: %s", err) } - d.Set("snapshot_retention_limit", cluster.SnapshotRetentionLimit) d.Set("snapshot_window", cluster.SnapshotWindow) - - if aws.ToString(cluster.SnsTopicStatus) == ClusterSNSTopicStatusActive { + if aws.ToString(cluster.SnsTopicStatus) == clusterSNSTopicStatusActive { d.Set(names.AttrSNSTopicARN, cluster.SnsTopicArn) } else { d.Set(names.AttrSNSTopicARN, "") } - d.Set("subnet_group_name", cluster.SubnetGroupName) d.Set("tls_enabled", cluster.TLSEnabled) - tags, err := listTags(ctx, conn, d.Get(names.AttrARN).(string)) - - if err != nil { - return sdkdiag.AppendErrorf(diags, "listing tags for MemoryDB Cluster (%s): %s", d.Id(), err) - } - - if err := d.Set(names.AttrTags, tags.IgnoreAWS().IgnoreConfig(ignoreTagsConfig).Map()); err != nil { - return sdkdiag.AppendErrorf(diags, "setting tags: %s", err) - } - return diags } diff --git a/internal/service/memorydb/cluster_data_source_test.go b/internal/service/memorydb/cluster_data_source_test.go index 8c07f74552d..13a8ca6b199 100644 --- a/internal/service/memorydb/cluster_data_source_test.go +++ b/internal/service/memorydb/cluster_data_source_test.go @@ -35,6 +35,7 @@ func TestAccMemoryDBClusterDataSource_basic(t *testing.T) { resource.TestCheckResourceAttrPair(dataSourceName, "data_tiering", resourceName, "data_tiering"), resource.TestCheckResourceAttrPair(dataSourceName, names.AttrDescription, resourceName, names.AttrDescription), resource.TestCheckResourceAttrPair(dataSourceName, "engine_patch_version", resourceName, "engine_patch_version"), + resource.TestCheckResourceAttrPair(dataSourceName, names.AttrEngine, resourceName, names.AttrEngine), resource.TestCheckResourceAttrPair(dataSourceName, names.AttrEngineVersion, resourceName, names.AttrEngineVersion), resource.TestCheckResourceAttrPair(dataSourceName, names.AttrKMSKeyARN, resourceName, names.AttrKMSKeyARN), resource.TestCheckResourceAttrPair(dataSourceName, "maintenance_window", resourceName, "maintenance_window"), @@ -72,7 +73,7 @@ func TestAccMemoryDBClusterDataSource_basic(t *testing.T) { func testAccClusterDataSourceConfig_basic(rName string) string { return acctest.ConfigCompose( testAccClusterConfig_baseNetwork(rName), - testAccClusterConfigBaseUserAndACL(rName), + testAccClusterConfig_baseUserAndACL(rName), fmt.Sprintf(` resource "aws_security_group" "test" { name = %[1]q diff --git a/internal/service/memorydb/cluster_test.go b/internal/service/memorydb/cluster_test.go index c5ce455a85b..1d4a8f03211 100644 --- a/internal/service/memorydb/cluster_test.go +++ b/internal/service/memorydb/cluster_test.go @@ -42,6 +42,7 @@ func TestAccMemoryDBCluster_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "data_tiering", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "Managed by Terraform"), resource.TestCheckResourceAttrSet(resourceName, "engine_patch_version"), + resource.TestCheckResourceAttr(resourceName, names.AttrEngine, "redis"), resource.TestCheckResourceAttrSet(resourceName, names.AttrEngineVersion), resource.TestCheckResourceAttr(resourceName, names.AttrKMSKeyARN, ""), resource.TestCheckResourceAttrSet(resourceName, "maintenance_window"), @@ -470,12 +471,7 @@ func TestAccMemoryDBCluster_Update_description(t *testing.T) { }) } -// As of writing, 6.2 is the one and only MemoryDB engine version available, -// so we cannot check upgrade behaviour. -// -// The API should allow upgrades with some unknown waiting time, and disallow -// downgrades. -func TestAccMemoryDBCluster_Update_engineVersion(t *testing.T) { +func TestAccMemoryDBCluster_Update_engine(t *testing.T) { ctx := acctest.Context(t) rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) @@ -488,10 +484,10 @@ func TestAccMemoryDBCluster_Update_engineVersion(t *testing.T) { CheckDestroy: testAccCheckClusterDestroy(ctx), Steps: []resource.TestStep{ { - Config: testAccClusterConfig_engineVersionNull(rName), + Config: testAccClusterConfig_engine(rName, "redis", "7.1"), Check: resource.ComposeTestCheckFunc( testAccCheckClusterExists(ctx, resourceName), - resource.TestCheckResourceAttrSet(resourceName, names.AttrEngineVersion), + resource.TestCheckResourceAttr(resourceName, names.AttrEngine, "redis"), ), }, { @@ -500,10 +496,10 @@ func TestAccMemoryDBCluster_Update_engineVersion(t *testing.T) { ImportStateVerify: true, }, { - Config: testAccClusterConfig_engineVersion(rName, "7.1"), + Config: testAccClusterConfig_engine(rName, "valkey", "7.2"), Check: resource.ComposeTestCheckFunc( testAccCheckClusterExists(ctx, resourceName), - resource.TestCheckResourceAttr(resourceName, names.AttrEngineVersion, "7.1"), + resource.TestCheckResourceAttr(resourceName, names.AttrEngine, "valkey"), ), }, { @@ -987,7 +983,7 @@ func TestAccMemoryDBCluster_Update_snsTopicARN(t *testing.T) { }) } -func TestAccMemoryDBCluster_Update_tags(t *testing.T) { +func TestAccMemoryDBCluster_tags(t *testing.T) { ctx := acctest.Context(t) rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resourceName := "aws_memorydb_cluster.test" @@ -999,11 +995,11 @@ func TestAccMemoryDBCluster_Update_tags(t *testing.T) { CheckDestroy: testAccCheckClusterDestroy(ctx), Steps: []resource.TestStep{ { - Config: testAccClusterConfig_tags0(rName), + Config: testAccClusterConfig_tags1(rName, acctest.CtKey1, acctest.CtValue1), Check: resource.ComposeTestCheckFunc( testAccCheckClusterExists(ctx, resourceName), - resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), - resource.TestCheckResourceAttr(resourceName, acctest.CtTagsAllPercent, "0"), + resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "1"), + resource.TestCheckResourceAttr(resourceName, acctest.CtTagsKey1, acctest.CtValue1), ), }, { @@ -1012,43 +1008,78 @@ func TestAccMemoryDBCluster_Update_tags(t *testing.T) { ImportStateVerify: true, }, { - Config: testAccClusterConfig_tags2(rName, "Key1", acctest.CtValue1, "Key2", acctest.CtValue2), + Config: testAccClusterConfig_tags2(rName, acctest.CtKey1, acctest.CtValue1Updated, acctest.CtKey2, acctest.CtValue2), Check: resource.ComposeTestCheckFunc( testAccCheckClusterExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "2"), - resource.TestCheckResourceAttr(resourceName, "tags.Key1", acctest.CtValue1), - resource.TestCheckResourceAttr(resourceName, "tags.Key2", acctest.CtValue2), - resource.TestCheckResourceAttr(resourceName, acctest.CtTagsAllPercent, "2"), - resource.TestCheckResourceAttr(resourceName, "tags_all.Key1", acctest.CtValue1), - resource.TestCheckResourceAttr(resourceName, "tags_all.Key2", acctest.CtValue2), + resource.TestCheckResourceAttr(resourceName, acctest.CtTagsKey1, acctest.CtValue1Updated), + resource.TestCheckResourceAttr(resourceName, acctest.CtTagsKey2, acctest.CtValue2), ), }, { - ResourceName: resourceName, - ImportState: true, - ImportStateVerify: true, - }, - { - Config: testAccClusterConfig_tags1(rName, "Key1", acctest.CtValue1), + Config: testAccClusterConfig_tags1(rName, acctest.CtKey2, acctest.CtValue2), Check: resource.ComposeTestCheckFunc( testAccCheckClusterExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "1"), - resource.TestCheckResourceAttr(resourceName, "tags.Key1", acctest.CtValue1), - resource.TestCheckResourceAttr(resourceName, acctest.CtTagsAllPercent, "1"), - resource.TestCheckResourceAttr(resourceName, "tags_all.Key1", acctest.CtValue1), + resource.TestCheckResourceAttr(resourceName, acctest.CtTagsKey2, acctest.CtValue2), ), }, + }, + }) +} + +func TestAccMemoryDBCluster_valkeyEngine(t *testing.T) { + ctx := acctest.Context(t) + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + resourceName := "aws_memorydb_cluster.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheck(t) }, + ErrorCheck: acctest.ErrorCheck(t, names.MemoryDBServiceID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckClusterDestroy(ctx), + Steps: []resource.TestStep{ { - ResourceName: resourceName, - ImportState: true, - ImportStateVerify: true, - }, - { - Config: testAccClusterConfig_tags0(rName), + Config: testAccClusterConfig_engine(rName, "valkey", "7.2"), Check: resource.ComposeTestCheckFunc( testAccCheckClusterExists(ctx, resourceName), - resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), - resource.TestCheckResourceAttr(resourceName, acctest.CtTagsAllPercent, "0"), + resource.TestCheckTypeSetElemAttrPair(resourceName, "acl_name", "aws_memorydb_acl.test", names.AttrID), + acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "memorydb", "cluster/"+rName), + resource.TestCheckResourceAttr(resourceName, names.AttrAutoMinorVersionUpgrade, acctest.CtFalse), + resource.TestMatchResourceAttr(resourceName, "cluster_endpoint.0.address", regexache.MustCompile(`^clustercfg\..*?\.amazonaws\.com$`)), + resource.TestCheckResourceAttr(resourceName, "cluster_endpoint.0.port", "6379"), + resource.TestCheckResourceAttr(resourceName, "data_tiering", acctest.CtFalse), + resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "Managed by Terraform"), + resource.TestCheckResourceAttrSet(resourceName, "engine_patch_version"), + resource.TestCheckResourceAttr(resourceName, names.AttrEngine, "valkey"), + resource.TestCheckResourceAttrSet(resourceName, names.AttrEngineVersion), + resource.TestCheckResourceAttr(resourceName, names.AttrKMSKeyARN, ""), + resource.TestCheckResourceAttrSet(resourceName, "maintenance_window"), + resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), + resource.TestCheckResourceAttr(resourceName, "node_type", "db.t4g.small"), + resource.TestCheckResourceAttr(resourceName, "num_replicas_per_shard", "1"), + resource.TestCheckResourceAttr(resourceName, "num_shards", "2"), + resource.TestCheckResourceAttrSet(resourceName, names.AttrParameterGroupName), + resource.TestCheckResourceAttr(resourceName, names.AttrPort, "6379"), + resource.TestCheckResourceAttr(resourceName, "security_group_ids.#", "1"), + resource.TestCheckTypeSetElemAttrPair(resourceName, "security_group_ids.*", "aws_security_group.test", names.AttrID), + resource.TestCheckResourceAttr(resourceName, "shards.#", "2"), + resource.TestMatchResourceAttr(resourceName, "shards.0.name", regexache.MustCompile(`^000[12]$`)), + resource.TestCheckResourceAttr(resourceName, "shards.0.num_nodes", "2"), + resource.TestCheckResourceAttr(resourceName, "shards.0.slots", "0-8191"), + resource.TestCheckResourceAttr(resourceName, "shards.0.nodes.#", "2"), + resource.TestCheckResourceAttrSet(resourceName, "shards.0.nodes.0.availability_zone"), + acctest.CheckResourceAttrRFC3339(resourceName, "shards.0.nodes.0.create_time"), + resource.TestMatchResourceAttr(resourceName, "shards.0.nodes.0.name", regexache.MustCompile(`^`+rName+`-000[12]-00[12]$`)), + resource.TestMatchResourceAttr(resourceName, "shards.0.nodes.0.endpoint.0.address", regexache.MustCompile(`^`+rName+`-000[12]-00[12]\..*?\.amazonaws\.com$`)), + resource.TestCheckResourceAttr(resourceName, "shards.0.nodes.0.endpoint.0.port", "6379"), + resource.TestCheckResourceAttr(resourceName, "snapshot_retention_limit", "7"), + resource.TestCheckResourceAttrSet(resourceName, "snapshot_window"), + resource.TestCheckResourceAttr(resourceName, names.AttrSNSTopicARN, ""), + resource.TestCheckTypeSetElemAttrPair(resourceName, "subnet_group_name", "aws_memorydb_subnet_group.test", names.AttrID), + resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "1"), + resource.TestCheckResourceAttr(resourceName, "tags.Test", "test"), + resource.TestCheckResourceAttr(resourceName, "tls_enabled", acctest.CtTrue), ), }, { @@ -1130,7 +1161,7 @@ resource "aws_memorydb_subnet_group" "test" { ) } -func testAccClusterConfigBaseUserAndACL(rName string) string { +func testAccClusterConfig_baseUserAndACL(rName string) string { return fmt.Sprintf(` resource "aws_memorydb_user" "test" { access_string = "on ~* &* +@all" @@ -1152,12 +1183,15 @@ resource "aws_memorydb_acl" "test" { func testAccClusterConfig_basic(rName string) string { return acctest.ConfigCompose( testAccClusterConfig_baseNetwork(rName), - testAccClusterConfigBaseUserAndACL(rName), + testAccClusterConfig_baseUserAndACL(rName), fmt.Sprintf(` resource "aws_security_group" "test" { - name = %[1]q - description = %[1]q - vpc_id = aws_vpc.test.id + name = %[1]q + vpc_id = aws_vpc.test.id + + tags = { + Name = %[1]q + } } resource "aws_memorydb_cluster" "test" { @@ -1178,6 +1212,40 @@ resource "aws_memorydb_cluster" "test" { ) } +func testAccClusterConfig_engine(rName, engine, engineVersion string) string { + return acctest.ConfigCompose( + testAccClusterConfig_baseNetwork(rName), + testAccClusterConfig_baseUserAndACL(rName), + fmt.Sprintf(` +resource "aws_security_group" "test" { + name = %[1]q + vpc_id = aws_vpc.test.id + + tags = { + Name = %[1]q + } +} + +resource "aws_memorydb_cluster" "test" { + acl_name = aws_memorydb_acl.test.id + auto_minor_version_upgrade = false + name = %[1]q + engine = %[2]q + engine_version = %[3]q + node_type = "db.t4g.small" + num_shards = 2 + security_group_ids = [aws_security_group.test.id] + snapshot_retention_limit = 7 + subnet_group_name = aws_memorydb_subnet_group.test.id + + tags = { + Test = "test" + } +} +`, rName, engine, engineVersion), + ) +} + func testAccClusterConfig_defaults(rName string) string { return acctest.ConfigCompose( fmt.Sprintf(` @@ -1241,7 +1309,7 @@ resource "aws_memorydb_cluster" "test" { func testAccClusterConfig_aclName(rName, aclName string) string { return acctest.ConfigCompose( testAccClusterConfig_baseNetwork(rName), - testAccClusterConfigBaseUserAndACL(rName), + testAccClusterConfig_baseUserAndACL(rName), fmt.Sprintf(` resource "aws_memorydb_cluster" "test" { depends_on = [aws_memorydb_acl.test] @@ -1286,39 +1354,6 @@ resource "aws_memorydb_cluster" "test" { ) } -func testAccClusterConfig_engineVersionNull(rName string) string { - return acctest.ConfigCompose( - testAccClusterConfig_baseNetwork(rName), - fmt.Sprintf(` -resource "aws_memorydb_cluster" "test" { - acl_name = "open-access" - name = %[1]q - node_type = "db.t4g.small" - num_replicas_per_shard = 0 - num_shards = 1 - subnet_group_name = aws_memorydb_subnet_group.test.id -} -`, rName), - ) -} - -func testAccClusterConfig_engineVersion(rName, engineVersion string) string { - return acctest.ConfigCompose( - testAccClusterConfig_baseNetwork(rName), - fmt.Sprintf(` -resource "aws_memorydb_cluster" "test" { - acl_name = "open-access" - engine_version = %[2]q - name = %[1]q - node_type = "db.t4g.small" - num_replicas_per_shard = 0 - num_shards = 1 - subnet_group_name = aws_memorydb_subnet_group.test.id -} -`, rName, engineVersion), - ) -} - func testAccClusterConfig_finalSnapshotName(rName, finalSnapshotName string) string { return acctest.ConfigCompose( testAccClusterConfig_baseNetwork(rName), @@ -1473,8 +1508,14 @@ func testAccClusterConfig_securityGroups(rName string, sgCount, sgCountInCluster testAccClusterConfig_baseNetwork(rName), fmt.Sprintf(` resource "aws_security_group" "test" { - count = %[2]d + count = %[2]d + vpc_id = aws_vpc.test.id + name = "%[1]s-${count.index}" + + tags = { + Name = %[1]q + } } resource "aws_memorydb_cluster" "test" { @@ -1600,22 +1641,6 @@ resource "aws_memorydb_cluster" "test" { ) } -func testAccClusterConfig_tags0(rName string) string { - return acctest.ConfigCompose( - testAccClusterConfig_baseNetwork(rName), - fmt.Sprintf(` -resource "aws_memorydb_cluster" "test" { - acl_name = "open-access" - name = %[1]q - node_type = "db.t4g.small" - num_replicas_per_shard = 0 - num_shards = 1 - subnet_group_name = aws_memorydb_subnet_group.test.id -} -`, rName), - ) -} - func testAccClusterConfig_tags1(rName, tag1Key, tag1Value string) string { return acctest.ConfigCompose( testAccClusterConfig_baseNetwork(rName), diff --git a/internal/service/memorydb/enum.go b/internal/service/memorydb/enum.go index 9c5b1eaa287..7503519982b 100644 --- a/internal/service/memorydb/enum.go +++ b/internal/service/memorydb/enum.go @@ -9,119 +9,66 @@ package memorydb // unlikely to be exhaustive. const ( - ACLStatusActive = "active" - ACLStatusCreating = "creating" - ACLStatusDeleting = "deleting" - ACLStatusModifying = "modifying" + aclStatusActive = "active" + aclStatusCreating = "creating" + aclStatusDeleting = "deleting" + aclStatusModifying = "modifying" ) -func ACLStatus_Values() []string { - return []string{ - ACLStatusActive, - ACLStatusCreating, - ACLStatusDeleting, - ACLStatusModifying, - } -} - const ( - ClusterStatusAvailable = "available" - ClusterStatusCreating = "creating" - ClusterStatusDeleting = "deleting" - ClusterStatusSnapshotting = "snapshotting" - ClusterStatusUpdating = "updating" + clusterStatusAvailable = "available" + clusterStatusCreating = "creating" + clusterStatusDeleting = "deleting" + clusterStatusSnapshotting = "snapshotting" + clusterStatusUpdating = "updating" ) -func ClusterStatus_Values() []string { - return []string{ - ClusterStatusAvailable, - ClusterStatusCreating, - ClusterStatusDeleting, - ClusterStatusSnapshotting, - ClusterStatusUpdating, - } -} - const ( - ClusterParameterGroupStatusApplying = "applying" - ClusterParameterGroupStatusInSync = "in-sync" + clusterParameterGroupStatusApplying = "applying" + clusterParameterGroupStatusInSync = "in-sync" ) -func ClusterParameterGroupStatus_Values() []string { - return []string{ - ClusterParameterGroupStatusApplying, - ClusterParameterGroupStatusInSync, - } -} - const ( - ClusterSecurityGroupStatusActive = "active" - ClusterSecurityGroupStatusModifying = "modifying" + clusterSecurityGroupStatusActive = "active" + clusterSecurityGroupStatusModifying = "modifying" ) -func ClusterSecurityGroupStatus_Values() []string { - return []string{ - ClusterSecurityGroupStatusActive, - ClusterSecurityGroupStatusModifying, - } -} - const ( - ClusterShardStatusAvailable = "available" - ClusterShardStatusCreating = "creating" - ClusterShardStatusDeleting = "deleting" - ClusterShardStatusModifying = "modifying" + clusterShardStatusAvailable = "available" + clusterShardStatusCreating = "creating" + clusterShardStatusDeleting = "deleting" + clusterShardStatusModifying = "modifying" ) -func ClusterShardStatus_Values() []string { - return []string{ - ClusterShardStatusAvailable, - ClusterShardStatusCreating, - ClusterShardStatusDeleting, - ClusterShardStatusModifying, - } -} - const ( - ClusterSNSTopicStatusActive = "ACTIVE" - ClusterSNSTopicStatusInactive = "INACTIVE" + clusterSNSTopicStatusActive = "ACTIVE" + clusterSNSTopicStatusInactive = "INACTIVE" ) -func ClusterSNSTopicStatus_Values() []string { - return []string{ - ClusterSNSTopicStatusActive, - ClusterSNSTopicStatusInactive, - } -} +const ( + snapshotStatusAvailable = "available" + snapshotStatusCopying = "copying" + snapshotStatusCreating = "creating" + snapshotStatusDeleting = "deleting" + snapshotStatusRestoring = "restoring" +) const ( - SnapshotStatusAvailable = "available" - SnapshotStatusCopying = "copying" - SnapshotStatusCreating = "creating" - SnapshotStatusDeleting = "deleting" - SnapshotStatusRestoring = "restoring" + userStatusActive = "active" + userStatusDeleting = "deleting" + userStatusModifying = "modifying" ) -func SnapshotStatus_Values() []string { - return []string{ - SnapshotStatusCreating, - SnapshotStatusAvailable, - SnapshotStatusRestoring, - SnapshotStatusCopying, - SnapshotStatusDeleting, - } -} +type clusterEngine string const ( - UserStatusActive = "active" - UserStatusDeleting = "deleting" - UserStatusModifying = "modifying" + clusterEngineRedis clusterEngine = "redis" + clusterEngineValkey clusterEngine = "valkey" ) -func UserStatus_Values() []string { - return []string{ - UserStatusActive, - UserStatusDeleting, - UserStatusModifying, +func (clusterEngine) Values() []clusterEngine { + return []clusterEngine{ + clusterEngineRedis, + clusterEngineValkey, } } diff --git a/internal/service/memorydb/exports_test.go b/internal/service/memorydb/exports_test.go index 390d77dc827..dd13a4b546d 100644 --- a/internal/service/memorydb/exports_test.go +++ b/internal/service/memorydb/exports_test.go @@ -11,4 +11,13 @@ var ( ResourceSnapshot = resourceSnapshot ResourceSubnetGroup = resourceSubnetGroup ResourceUser = resourceUser + + FindACLByName = findACLByName + FindClusterByName = findClusterByName + FindParameterGroupByName = findParameterGroupByName + FindSnapshotByName = findSnapshotByName + FindSubnetGroupByName = findSubnetGroupByName + FindUserByName = findUserByName + ParameterChanges = parameterChanges + ParameterHash = parameterHash ) diff --git a/internal/service/memorydb/find.go b/internal/service/memorydb/find.go deleted file mode 100644 index d99be4281ec..00000000000 --- a/internal/service/memorydb/find.go +++ /dev/null @@ -1,142 +0,0 @@ -// Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 - -package memorydb - -import ( - "context" - - "github.com/aws/aws-sdk-go-v2/aws" - "github.com/aws/aws-sdk-go-v2/service/memorydb" - awstypes "github.com/aws/aws-sdk-go-v2/service/memorydb/types" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry" - "github.com/hashicorp/terraform-provider-aws/internal/errs" - "github.com/hashicorp/terraform-provider-aws/internal/tfresource" -) - -func FindACLByName(ctx context.Context, conn *memorydb.Client, name string) (*awstypes.ACL, error) { - input := memorydb.DescribeACLsInput{ - ACLName: aws.String(name), - } - - output, err := conn.DescribeACLs(ctx, &input) - - if errs.IsA[*awstypes.ACLNotFoundFault](err) { - return nil, &retry.NotFoundError{ - LastError: err, - LastRequest: input, - } - } - - if err != nil { - return nil, err - } - - return tfresource.AssertSingleValueResult(output.ACLs) -} - -func FindClusterByName(ctx context.Context, conn *memorydb.Client, name string) (*awstypes.Cluster, error) { - input := memorydb.DescribeClustersInput{ - ClusterName: aws.String(name), - ShowShardDetails: aws.Bool(true), - } - - output, err := conn.DescribeClusters(ctx, &input) - - if errs.IsA[*awstypes.ClusterNotFoundFault](err) { - return nil, &retry.NotFoundError{ - LastError: err, - LastRequest: input, - } - } - - if err != nil { - return nil, err - } - - return tfresource.AssertSingleValueResult(output.Clusters) -} - -func FindParameterGroupByName(ctx context.Context, conn *memorydb.Client, name string) (*awstypes.ParameterGroup, error) { - input := memorydb.DescribeParameterGroupsInput{ - ParameterGroupName: aws.String(name), - } - - output, err := conn.DescribeParameterGroups(ctx, &input) - - if errs.IsA[*awstypes.ParameterGroupNotFoundFault](err) { - return nil, &retry.NotFoundError{ - LastError: err, - LastRequest: input, - } - } - - if err != nil { - return nil, err - } - - return tfresource.AssertSingleValueResult(output.ParameterGroups) -} - -func FindSnapshotByName(ctx context.Context, conn *memorydb.Client, name string) (*awstypes.Snapshot, error) { - input := memorydb.DescribeSnapshotsInput{ - SnapshotName: aws.String(name), - } - - output, err := conn.DescribeSnapshots(ctx, &input) - - if errs.IsA[*awstypes.SnapshotNotFoundFault](err) { - return nil, &retry.NotFoundError{ - LastError: err, - LastRequest: input, - } - } - - if err != nil { - return nil, err - } - - return tfresource.AssertSingleValueResult(output.Snapshots) -} - -func FindSubnetGroupByName(ctx context.Context, conn *memorydb.Client, name string) (*awstypes.SubnetGroup, error) { - input := memorydb.DescribeSubnetGroupsInput{ - SubnetGroupName: aws.String(name), - } - - output, err := conn.DescribeSubnetGroups(ctx, &input) - - if errs.IsA[*awstypes.SubnetGroupNotFoundFault](err) { - return nil, &retry.NotFoundError{ - LastError: err, - LastRequest: input, - } - } - - if err != nil { - return nil, err - } - - return tfresource.AssertSingleValueResult(output.SubnetGroups) -} - -func FindUserByName(ctx context.Context, conn *memorydb.Client, name string) (*awstypes.User, error) { - input := memorydb.DescribeUsersInput{ - UserName: aws.String(name), - } - - output, err := conn.DescribeUsers(ctx, &input) - - if errs.IsA[*awstypes.UserNotFoundFault](err) { - return nil, &retry.NotFoundError{ - LastError: err, - LastRequest: input, - } - } - - if err != nil { - return nil, err - } - - return tfresource.AssertSingleValueResult(output.Users) -} diff --git a/internal/service/memorydb/parameter_group.go b/internal/service/memorydb/parameter_group.go index 0444678df5b..625357ac1b2 100644 --- a/internal/service/memorydb/parameter_group.go +++ b/internal/service/memorydb/parameter_group.go @@ -4,10 +4,10 @@ package memorydb import ( - "bytes" "context" "fmt" "log" + "slices" "strings" "time" @@ -22,6 +22,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/create" "github.com/hashicorp/terraform-provider-aws/internal/errs" "github.com/hashicorp/terraform-provider-aws/internal/errs/sdkdiag" + "github.com/hashicorp/terraform-provider-aws/internal/sdkv2" tfslices "github.com/hashicorp/terraform-provider-aws/internal/slices" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" "github.com/hashicorp/terraform-provider-aws/internal/tfresource" @@ -91,7 +92,7 @@ func resourceParameterGroup() *schema.Resource { }, }, }, - Set: ParameterHash, + Set: parameterHash, }, names.AttrTags: tftags.TagsSchema(), names.AttrTagsAll: tftags.TagsSchemaComputed(), @@ -99,9 +100,12 @@ func resourceParameterGroup() *schema.Resource { } } +var ( + parameterHash = sdkv2.SimpleSchemaSetFunc(names.AttrName, names.AttrValue) +) + func resourceParameterGroupCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics - conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) name := create.Name(d.Get(names.AttrName).(string), d.Get(names.AttrNamePrefix).(string)) @@ -112,7 +116,6 @@ func resourceParameterGroupCreate(ctx context.Context, d *schema.ResourceData, m Tags: getTagsIn(ctx), } - log.Printf("[DEBUG] Creating MemoryDB Parameter Group: %+v", input) output, err := conn.CreateParameterGroup(ctx, input) if err != nil { @@ -122,71 +125,15 @@ func resourceParameterGroupCreate(ctx context.Context, d *schema.ResourceData, m d.SetId(name) d.Set(names.AttrARN, output.ParameterGroup.ARN) - log.Printf("[INFO] MemoryDB Parameter Group ID: %s", d.Id()) - // Update to apply parameter changes. return append(diags, resourceParameterGroupUpdate(ctx, d, meta)...) } -func resourceParameterGroupUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - var diags diag.Diagnostics - - conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) - - if d.HasChange(names.AttrParameter) { - o, n := d.GetChange(names.AttrParameter) - toRemove, toAdd := ParameterChanges(o, n) - - log.Printf("[DEBUG] Updating MemoryDB Parameter Group (%s)", d.Id()) - log.Printf("[DEBUG] Parameters to remove: %#v", toRemove) - log.Printf("[DEBUG] Parameters to add or update: %#v", toAdd) - - // The API is limited to updating no more than 20 parameters at a time. - const maxParams = 20 - - for len(toRemove) > 0 { - // Removing a parameter from state is equivalent to resetting it - // to its default state. - - var paramsToReset []*awstypes.ParameterNameValue - if len(toRemove) <= maxParams { - paramsToReset, toRemove = toRemove[:], nil - } else { - paramsToReset, toRemove = toRemove[:maxParams], toRemove[maxParams:] - } - - err := resetParameterGroupParameters(ctx, conn, d.Get(names.AttrName).(string), paramsToReset) - - if err != nil { - return sdkdiag.AppendErrorf(diags, "resetting MemoryDB Parameter Group (%s) parameters to defaults: %s", d.Id(), err) - } - } - - for len(toAdd) > 0 { - var paramsToModify []*awstypes.ParameterNameValue - if len(toAdd) <= maxParams { - paramsToModify, toAdd = toAdd[:], nil - } else { - paramsToModify, toAdd = toAdd[:maxParams], toAdd[maxParams:] - } - - err := modifyParameterGroupParameters(ctx, conn, d.Get(names.AttrName).(string), paramsToModify) - - if err != nil { - return sdkdiag.AppendErrorf(diags, "modifying MemoryDB Parameter Group (%s) parameters: %s", d.Id(), err) - } - } - } - - return append(diags, resourceParameterGroupRead(ctx, d, meta)...) -} - func resourceParameterGroupRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics - conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) - group, err := FindParameterGroupByName(ctx, conn, d.Id()) + group, err := findParameterGroupByName(ctx, conn, d.Id()) if !d.IsNewResource() && tfresource.NotFound(err) { log.Printf("[WARN] MemoryDB Parameter Group (%s) not found, removing from state", d.Id()) @@ -205,22 +152,71 @@ func resourceParameterGroupRead(ctx context.Context, d *schema.ResourceData, met d.Set(names.AttrNamePrefix, create.NamePrefixFromName(aws.ToString(group.Name))) userDefinedParameters := createUserDefinedParameterMap(d) - parameters, err := listParameterGroupParameters(ctx, conn, d.Get(names.AttrFamily).(string), d.Id(), userDefinedParameters) + if err != nil { - return sdkdiag.AppendErrorf(diags, "listing parameters for MemoryDB Parameter Group (%s): %s", d.Id(), err) + return sdkdiag.AppendFromErr(diags, err) } if err := d.Set(names.AttrParameter, flattenParameters(parameters)); err != nil { - return sdkdiag.AppendErrorf(diags, "failed to set parameter: %s", err) + return sdkdiag.AppendErrorf(diags, "setting parameter: %s", err) } return diags } -func resourceParameterGroupDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { +func resourceParameterGroupUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics + conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) + + if d.HasChange(names.AttrParameter) { + o, n := d.GetChange(names.AttrParameter) + toRemove, toAdd := parameterChanges(o, n) + + // The API is limited to updating no more than 20 parameters at a time. + const maxParams = 20 + + // Removing a parameter from state is equivalent to resetting it + // to its default state. + for chunk := range slices.Chunk(toRemove, maxParams) { + input := &memorydb.ResetParameterGroupInput{ + ParameterGroupName: aws.String(d.Id()), + ParameterNames: tfslices.ApplyToAll(chunk, func(v awstypes.ParameterNameValue) string { + return aws.ToString(v.ParameterName) + }), + } + + const ( + timeout = 30 * time.Second + ) + _, err := tfresource.RetryWhenIsAErrorMessageContains[*awstypes.InvalidParameterGroupStateFault](ctx, timeout, func() (interface{}, error) { + return conn.ResetParameterGroup(ctx, input) + }, " has pending changes") + + if err != nil { + return sdkdiag.AppendErrorf(diags, "resetting MemoryDB Parameter Group (%s) parameters to defaults: %s", d.Id(), err) + } + } + + for chunk := range slices.Chunk(toAdd, maxParams) { + input := &memorydb.UpdateParameterGroupInput{ + ParameterGroupName: aws.String(d.Id()), + ParameterNameValues: chunk, + } + + _, err := conn.UpdateParameterGroup(ctx, input) + if err != nil { + return sdkdiag.AppendErrorf(diags, "modifying MemoryDB Parameter Group (%s) parameters: %s", d.Id(), err) + } + } + } + + return append(diags, resourceParameterGroupRead(ctx, d, meta)...) +} + +func resourceParameterGroupDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { + var diags diag.Diagnostics conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) log.Printf("[DEBUG] Deleting MemoryDB Parameter Group: (%s)", d.Id()) @@ -239,130 +235,144 @@ func resourceParameterGroupDelete(ctx context.Context, d *schema.ResourceData, m return diags } -// resetParameterGroupParameters resets the given parameters to their default values. -func resetParameterGroupParameters(ctx context.Context, conn *memorydb.Client, name string, parameters []*awstypes.ParameterNameValue) error { - var parameterNames []string - for _, parameter := range parameters { - parameterNames = append(parameterNames, *parameter.ParameterName) +func findParameterGroupByName(ctx context.Context, conn *memorydb.Client, name string) (*awstypes.ParameterGroup, error) { + input := &memorydb.DescribeParameterGroupsInput{ + ParameterGroupName: aws.String(name), } - input := memorydb.ResetParameterGroupInput{ - ParameterGroupName: aws.String(name), - ParameterNames: parameterNames, + return findParameterGroup(ctx, conn, input) +} + +func findParameterGroup(ctx context.Context, conn *memorydb.Client, input *memorydb.DescribeParameterGroupsInput) (*awstypes.ParameterGroup, error) { + output, err := findParameterGroups(ctx, conn, input) + + if err != nil { + return nil, err } - return retry.RetryContext(ctx, 30*time.Second, func() *retry.RetryError { - _, err := conn.ResetParameterGroup(ctx, &input) - if err != nil { - if errs.IsAErrorMessageContains[*awstypes.InvalidParameterGroupStateFault](err, " has pending changes") { - return retry.RetryableError(err) + return tfresource.AssertSingleValueResult(output) +} + +func findParameterGroups(ctx context.Context, conn *memorydb.Client, input *memorydb.DescribeParameterGroupsInput) ([]awstypes.ParameterGroup, error) { + var output []awstypes.ParameterGroup + + pages := memorydb.NewDescribeParameterGroupsPaginator(conn, input) + for pages.HasMorePages() { + page, err := pages.NextPage(ctx) + + if errs.IsA[*awstypes.ParameterGroupNotFoundFault](err) { + return nil, &retry.NotFoundError{ + LastError: err, + LastRequest: input, } - return retry.NonRetryableError(err) } - return nil - }) + + if err != nil { + return nil, err + } + + output = append(output, page.ParameterGroups...) + } + + return output, nil } -// modifyParameterGroupParameters updates the given parameters. -func modifyParameterGroupParameters(ctx context.Context, conn *memorydb.Client, name string, parameters []*awstypes.ParameterNameValue) error { - input := memorydb.UpdateParameterGroupInput{ - ParameterGroupName: aws.String(name), - ParameterNameValues: tfslices.Values(parameters), +func findParametersByParameterGroupName(ctx context.Context, conn *memorydb.Client, name string) ([]awstypes.Parameter, error) { + input := &memorydb.DescribeParametersInput{ + ParameterGroupName: aws.String(name), } - _, err := conn.UpdateParameterGroup(ctx, &input) - return err + + return findParameters(ctx, conn, input) } -// listParameterGroupParameters returns the user-defined MemoryDB parameters -// in the group with the given name and family. -// -// Parameters given in userDefined will be returned even if the value is equal -// to the default. -func listParameterGroupParameters(ctx context.Context, conn *memorydb.Client, family, name string, userDefined map[string]string) ([]awstypes.Parameter, error) { - query := func(ctx context.Context, parameterGroupName string) ([]awstypes.Parameter, error) { - input := memorydb.DescribeParametersInput{ - ParameterGroupName: aws.String(parameterGroupName), +func findParameters(ctx context.Context, conn *memorydb.Client, input *memorydb.DescribeParametersInput) ([]awstypes.Parameter, error) { + var output []awstypes.Parameter + + pages := memorydb.NewDescribeParametersPaginator(conn, input) + for pages.HasMorePages() { + page, err := pages.NextPage(ctx) + + if errs.IsA[*awstypes.ParameterGroupNotFoundFault](err) { + return nil, &retry.NotFoundError{ + LastError: err, + LastRequest: input, + } } - output, err := conn.DescribeParameters(ctx, &input) if err != nil { return nil, err } - return output.Parameters, nil + output = append(output, page.Parameters...) } + return output, nil +} + +// listParameterGroupParameters returns the user-defined MemoryDB parameters +// in the group with the given name and family. +// +// Parameters given in userDefined will be returned even if the value is equal +// to the default. +func listParameterGroupParameters(ctx context.Context, conn *memorydb.Client, family, name string, userDefined map[string]string) ([]awstypes.Parameter, error) { // There isn't an official API for defaults, and the mapping of family // to default parameter group name is a guess. - defaultsFamily := "default." + strings.ReplaceAll(family, "_", "-") + defaults, err := findParametersByParameterGroupName(ctx, conn, defaultsFamily) - defaults, err := query(ctx, defaultsFamily) if err != nil { - return nil, fmt.Errorf("list defaults for family %s: %w", defaultsFamily, err) + return nil, fmt.Errorf("reading MemoryDB Parameter Group (%s) parameters: %w", defaultsFamily, err) } defaultValueByName := map[string]string{} - for _, defaultPV := range defaults { - defaultValueByName[aws.ToString(defaultPV.Name)] = aws.ToString(defaultPV.Value) + for _, v := range defaults { + defaultValueByName[aws.ToString(v.Name)] = aws.ToString(v.Value) } - current, err := query(ctx, name) + current, err := findParametersByParameterGroupName(ctx, conn, name) + if err != nil { - return nil, err + return nil, fmt.Errorf("reading MemoryDB Parameter Group (%s) parameters: %w", name, err) } - var result []awstypes.Parameter + var apiObjects []awstypes.Parameter - for _, parameter := range current { - name := aws.ToString(parameter.Name) - currentValue := aws.ToString(parameter.Value) + for _, v := range current { + name := aws.ToString(v.Name) + currentValue := aws.ToString(v.Value) defaultValue := defaultValueByName[name] _, isUserDefined := userDefined[name] if currentValue != defaultValue || isUserDefined { - result = append(result, parameter) + apiObjects = append(apiObjects, v) } } - return result, nil + return apiObjects, nil } -// ParameterHash was copy-pasted from ElastiCache. -func ParameterHash(v interface{}) int { - var buf bytes.Buffer - m := v.(map[string]interface{}) - buf.WriteString(fmt.Sprintf("%s-", m[names.AttrName].(string))) - buf.WriteString(fmt.Sprintf("%s-", m[names.AttrValue].(string))) - - return create.StringHashcode(buf.String()) -} - -// ParameterChanges was copy-pasted from ElastiCache. -func ParameterChanges(o, n interface{}) (remove, addOrUpdate []*awstypes.ParameterNameValue) { +func parameterChanges(o, n interface{}) (remove, addOrUpdate []awstypes.ParameterNameValue) { if o == nil { o = new(schema.Set) } if n == nil { n = new(schema.Set) } + os, ns := o.(*schema.Set), n.(*schema.Set) - os := o.(*schema.Set) - ns := n.(*schema.Set) - - om := make(map[string]*awstypes.ParameterNameValue, os.Len()) - for _, raw := range os.List() { - param := raw.(map[string]interface{}) - om[param[names.AttrName].(string)] = expandParameterNameValue(param) + om := make(map[string]awstypes.ParameterNameValue, os.Len()) + for _, tfMapRaw := range os.List() { + tfMap := tfMapRaw.(map[string]interface{}) + om[tfMap[names.AttrName].(string)] = expandParameterNameValue(tfMap) } - nm := make(map[string]*awstypes.ParameterNameValue, len(addOrUpdate)) - for _, raw := range ns.List() { - param := raw.(map[string]interface{}) - nm[param[names.AttrName].(string)] = expandParameterNameValue(param) + nm := make(map[string]awstypes.ParameterNameValue, len(addOrUpdate)) + for _, tfMapRaw := range ns.List() { + tfMap := tfMapRaw.(map[string]interface{}) + nm[tfMap[names.AttrName].(string)] = expandParameterNameValue(tfMap) } // Remove: key is in old, but not in new - remove = make([]*awstypes.ParameterNameValue, 0, os.Len()) + remove = make([]awstypes.ParameterNameValue, 0, os.Len()) for k := range om { if _, ok := nm[k]; !ok { remove = append(remove, om[k]) @@ -370,7 +380,7 @@ func ParameterChanges(o, n interface{}) (remove, addOrUpdate []*awstypes.Paramet } // Add or Update: key is in new, but not in old or has changed value - addOrUpdate = make([]*awstypes.ParameterNameValue, 0, ns.Len()) + addOrUpdate = make([]awstypes.ParameterNameValue, 0, ns.Len()) for k, nv := range nm { ov, ok := om[k] if !ok || ok && (aws.ToString(nv.ParameterValue) != aws.ToString(ov.ParameterValue)) { @@ -381,23 +391,25 @@ func ParameterChanges(o, n interface{}) (remove, addOrUpdate []*awstypes.Paramet return remove, addOrUpdate } -func flattenParameters(list []awstypes.Parameter) []map[string]interface{} { - result := make([]map[string]interface{}, 0, len(list)) - for _, i := range list { - if i.Value != nil { - result = append(result, map[string]interface{}{ - names.AttrName: strings.ToLower(aws.ToString(i.Name)), - names.AttrValue: aws.ToString(i.Value), +func flattenParameters(apiObjects []awstypes.Parameter) []interface{} { + tfList := make([]interface{}, 0, len(apiObjects)) + + for _, apiObject := range apiObjects { + if apiObject.Value != nil { + tfList = append(tfList, map[string]interface{}{ + names.AttrName: strings.ToLower(aws.ToString(apiObject.Name)), + names.AttrValue: aws.ToString(apiObject.Value), }) } } - return result + + return tfList } -func expandParameterNameValue(param map[string]interface{}) *awstypes.ParameterNameValue { - return &awstypes.ParameterNameValue{ - ParameterName: aws.String(param[names.AttrName].(string)), - ParameterValue: aws.String(param[names.AttrValue].(string)), +func expandParameterNameValue(tfMap map[string]interface{}) awstypes.ParameterNameValue { + return awstypes.ParameterNameValue{ + ParameterName: aws.String(tfMap[names.AttrName].(string)), + ParameterValue: aws.String(tfMap[names.AttrValue].(string)), } } diff --git a/internal/service/memorydb/parameter_group_data_source.go b/internal/service/memorydb/parameter_group_data_source.go index 92a10dd628f..f9f532a3e6b 100644 --- a/internal/service/memorydb/parameter_group_data_source.go +++ b/internal/service/memorydb/parameter_group_data_source.go @@ -17,6 +17,7 @@ import ( ) // @SDKDataSource("aws_memorydb_parameter_group", name="Parameter Group") +// @Tags(identifierAttribute="arn") func dataSourceParameterGroup() *schema.Resource { return &schema.Resource{ ReadWithoutTimeout: dataSourceParameterGroupRead, @@ -53,7 +54,7 @@ func dataSourceParameterGroup() *schema.Resource { }, }, }, - Set: ParameterHash, + Set: parameterHash, }, names.AttrTags: tftags.TagsSchemaComputed(), }, @@ -62,44 +63,30 @@ func dataSourceParameterGroup() *schema.Resource { func dataSourceParameterGroupRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics - conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) - ignoreTagsConfig := meta.(*conns.AWSClient).IgnoreTagsConfig(ctx) name := d.Get(names.AttrName).(string) - - group, err := FindParameterGroupByName(ctx, conn, name) + group, err := findParameterGroupByName(ctx, conn, name) if err != nil { return sdkdiag.AppendFromErr(diags, tfresource.SingularDataSourceFindError("MemoryDB Parameter Group", err)) } d.SetId(aws.ToString(group.Name)) - d.Set(names.AttrARN, group.ARN) d.Set(names.AttrDescription, group.Description) d.Set(names.AttrFamily, group.Family) d.Set(names.AttrName, group.Name) userDefinedParameters := createUserDefinedParameterMap(d) - parameters, err := listParameterGroupParameters(ctx, conn, d.Get(names.AttrFamily).(string), d.Id(), userDefinedParameters) - if err != nil { - return sdkdiag.AppendErrorf(diags, "listing parameters for MemoryDB Parameter Group (%s): %s", d.Id(), err) - } - - if err := d.Set(names.AttrParameter, flattenParameters(parameters)); err != nil { - return sdkdiag.AppendErrorf(diags, "failed to set parameter: %s", err) - } - - tags, err := listTags(ctx, conn, d.Get(names.AttrARN).(string)) if err != nil { - return sdkdiag.AppendErrorf(diags, "listing tags for MemoryDB Parameter Group (%s): %s", d.Id(), err) + return sdkdiag.AppendFromErr(diags, err) } - if err := d.Set(names.AttrTags, tags.IgnoreAWS().IgnoreConfig(ignoreTagsConfig).Map()); err != nil { - return sdkdiag.AppendErrorf(diags, "setting tags: %s", err) + if err := d.Set(names.AttrParameter, flattenParameters(parameters)); err != nil { + return sdkdiag.AppendErrorf(diags, "setting parameter: %s", err) } return diags diff --git a/internal/service/memorydb/parameter_group_test.go b/internal/service/memorydb/parameter_group_test.go index b0f3d1f2111..4e6d754d0f9 100644 --- a/internal/service/memorydb/parameter_group_test.go +++ b/internal/service/memorydb/parameter_group_test.go @@ -6,11 +6,12 @@ package memorydb_test import ( "context" "fmt" - "reflect" "testing" "github.com/aws/aws-sdk-go-v2/aws" awstypes "github.com/aws/aws-sdk-go-v2/service/memorydb/types" + "github.com/google/go-cmp/cmp" + "github.com/google/go-cmp/cmp/cmpopts" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" @@ -22,6 +23,126 @@ import ( "github.com/hashicorp/terraform-provider-aws/names" ) +func TestParameterChanges(t *testing.T) { + t.Parallel() + + cases := []struct { + Name string + Old *schema.Set + New *schema.Set + ExpectedRemove []awstypes.ParameterNameValue + ExpectedAddOrUpdate []awstypes.ParameterNameValue + }{ + { + Name: "Empty", + Old: new(schema.Set), + New: new(schema.Set), + ExpectedRemove: []awstypes.ParameterNameValue{}, + ExpectedAddOrUpdate: []awstypes.ParameterNameValue{}, + }, + { + Name: "Remove all", + Old: schema.NewSet(tfmemorydb.ParameterHash, []interface{}{ + map[string]interface{}{ + names.AttrName: "reserved-memory", + names.AttrValue: "0", + }, + }), + New: new(schema.Set), + ExpectedRemove: []awstypes.ParameterNameValue{ + { + ParameterName: aws.String("reserved-memory"), + ParameterValue: aws.String("0"), + }, + }, + ExpectedAddOrUpdate: []awstypes.ParameterNameValue{}, + }, + { + Name: "No change", + Old: schema.NewSet(tfmemorydb.ParameterHash, []interface{}{ + map[string]interface{}{ + names.AttrName: "reserved-memory", + names.AttrValue: "0", + }, + }), + New: schema.NewSet(tfmemorydb.ParameterHash, []interface{}{ + map[string]interface{}{ + names.AttrName: "reserved-memory", + names.AttrValue: "0", + }, + }), + ExpectedRemove: []awstypes.ParameterNameValue{}, + ExpectedAddOrUpdate: []awstypes.ParameterNameValue{}, + }, + { + Name: "Remove partial", + Old: schema.NewSet(tfmemorydb.ParameterHash, []interface{}{ + map[string]interface{}{ + names.AttrName: "reserved-memory", + names.AttrValue: "0", + }, + map[string]interface{}{ + names.AttrName: "appendonly", + names.AttrValue: "yes", + }, + }), + New: schema.NewSet(tfmemorydb.ParameterHash, []interface{}{ + map[string]interface{}{ + names.AttrName: "appendonly", + names.AttrValue: "yes", + }, + }), + ExpectedRemove: []awstypes.ParameterNameValue{ + { + ParameterName: aws.String("reserved-memory"), + ParameterValue: aws.String("0"), + }, + }, + ExpectedAddOrUpdate: []awstypes.ParameterNameValue{}, + }, + { + Name: "Add to existing", + Old: schema.NewSet(tfmemorydb.ParameterHash, []interface{}{ + map[string]interface{}{ + names.AttrName: "appendonly", + names.AttrValue: "yes", + }, + }), + New: schema.NewSet(tfmemorydb.ParameterHash, []interface{}{ + map[string]interface{}{ + names.AttrName: "appendonly", + names.AttrValue: "yes", + }, + map[string]interface{}{ + names.AttrName: "appendfsync", + names.AttrValue: "always", + }, + }), + ExpectedRemove: []awstypes.ParameterNameValue{}, + ExpectedAddOrUpdate: []awstypes.ParameterNameValue{ + { + ParameterName: aws.String("appendfsync"), + ParameterValue: aws.String("always"), + }, + }, + }, + } + + ignoreExportedOpts := cmpopts.IgnoreUnexported( + awstypes.ParameterNameValue{}, + ) + + for _, tc := range cases { + remove, addOrUpdate := tfmemorydb.ParameterChanges(tc.Old, tc.New) + if diff := cmp.Diff(remove, tc.ExpectedRemove, ignoreExportedOpts); diff != "" { + t.Errorf("unexpected Remove diff (+wanted, -got): %s", diff) + } + if diff := cmp.Diff(addOrUpdate, tc.ExpectedAddOrUpdate, ignoreExportedOpts); diff != "" { + t.Errorf("unexpected AddOrUpdate diff (+wanted, -got): %s", diff) + } + } +} + func TestAccMemoryDBParameterGroup_basic(t *testing.T) { ctx := acctest.Context(t) rName := "tf-test-" + sdkacctest.RandString(8) @@ -415,120 +536,3 @@ resource "aws_memorydb_parameter_group" "test" { } `, rName, tagKey1, tagValue1, tagKey2, tagValue2) } - -// TestParameterChanges was copy-pasted from the ElastiCache implementation. -func TestParameterChanges(t *testing.T) { - t.Parallel() - - cases := []struct { - Name string - Old *schema.Set - New *schema.Set - ExpectedRemove []*awstypes.ParameterNameValue - ExpectedAddOrUpdate []*awstypes.ParameterNameValue - }{ - { - Name: "Empty", - Old: new(schema.Set), - New: new(schema.Set), - ExpectedRemove: []*awstypes.ParameterNameValue{}, - ExpectedAddOrUpdate: []*awstypes.ParameterNameValue{}, - }, - { - Name: "Remove all", - Old: schema.NewSet(tfmemorydb.ParameterHash, []interface{}{ - map[string]interface{}{ - names.AttrName: "reserved-memory", - names.AttrValue: "0", - }, - }), - New: new(schema.Set), - ExpectedRemove: []*awstypes.ParameterNameValue{ - { - ParameterName: aws.String("reserved-memory"), - ParameterValue: aws.String("0"), - }, - }, - ExpectedAddOrUpdate: []*awstypes.ParameterNameValue{}, - }, - { - Name: "No change", - Old: schema.NewSet(tfmemorydb.ParameterHash, []interface{}{ - map[string]interface{}{ - names.AttrName: "reserved-memory", - names.AttrValue: "0", - }, - }), - New: schema.NewSet(tfmemorydb.ParameterHash, []interface{}{ - map[string]interface{}{ - names.AttrName: "reserved-memory", - names.AttrValue: "0", - }, - }), - ExpectedRemove: []*awstypes.ParameterNameValue{}, - ExpectedAddOrUpdate: []*awstypes.ParameterNameValue{}, - }, - { - Name: "Remove partial", - Old: schema.NewSet(tfmemorydb.ParameterHash, []interface{}{ - map[string]interface{}{ - names.AttrName: "reserved-memory", - names.AttrValue: "0", - }, - map[string]interface{}{ - names.AttrName: "appendonly", - names.AttrValue: "yes", - }, - }), - New: schema.NewSet(tfmemorydb.ParameterHash, []interface{}{ - map[string]interface{}{ - names.AttrName: "appendonly", - names.AttrValue: "yes", - }, - }), - ExpectedRemove: []*awstypes.ParameterNameValue{ - { - ParameterName: aws.String("reserved-memory"), - ParameterValue: aws.String("0"), - }, - }, - ExpectedAddOrUpdate: []*awstypes.ParameterNameValue{}, - }, - { - Name: "Add to existing", - Old: schema.NewSet(tfmemorydb.ParameterHash, []interface{}{ - map[string]interface{}{ - names.AttrName: "appendonly", - names.AttrValue: "yes", - }, - }), - New: schema.NewSet(tfmemorydb.ParameterHash, []interface{}{ - map[string]interface{}{ - names.AttrName: "appendonly", - names.AttrValue: "yes", - }, - map[string]interface{}{ - names.AttrName: "appendfsync", - names.AttrValue: "always", - }, - }), - ExpectedRemove: []*awstypes.ParameterNameValue{}, - ExpectedAddOrUpdate: []*awstypes.ParameterNameValue{ - { - ParameterName: aws.String("appendfsync"), - ParameterValue: aws.String("always"), - }, - }, - }, - } - - for _, tc := range cases { - remove, addOrUpdate := tfmemorydb.ParameterChanges(tc.Old, tc.New) - if !reflect.DeepEqual(remove, tc.ExpectedRemove) { - t.Errorf("Case %q: Remove did not match\n%#v\n\nGot:\n%#v", tc.Name, tc.ExpectedRemove, remove) - } - if !reflect.DeepEqual(addOrUpdate, tc.ExpectedAddOrUpdate) { - t.Errorf("Case %q: AddOrUpdate did not match\n%#v\n\nGot:\n%#v", tc.Name, tc.ExpectedAddOrUpdate, addOrUpdate) - } - } -} diff --git a/internal/service/memorydb/service_endpoints_gen_test.go b/internal/service/memorydb/service_endpoints_gen_test.go index e1a0f90f420..b0bc3a83512 100644 --- a/internal/service/memorydb/service_endpoints_gen_test.go +++ b/internal/service/memorydb/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/memorydb/service_package_gen.go b/internal/service/memorydb/service_package_gen.go index 6792524af95..eb718223ac5 100644 --- a/internal/service/memorydb/service_package_gen.go +++ b/internal/service/memorydb/service_package_gen.go @@ -28,31 +28,49 @@ func (p *servicePackage) SDKDataSources(ctx context.Context) []*types.ServicePac Factory: dataSourceACL, TypeName: "aws_memorydb_acl", Name: "ACL", + Tags: &types.ServicePackageResourceTags{ + IdentifierAttribute: names.AttrARN, + }, }, { Factory: dataSourceCluster, TypeName: "aws_memorydb_cluster", Name: "Cluster", + Tags: &types.ServicePackageResourceTags{ + IdentifierAttribute: names.AttrARN, + }, }, { Factory: dataSourceParameterGroup, TypeName: "aws_memorydb_parameter_group", Name: "Parameter Group", + Tags: &types.ServicePackageResourceTags{ + IdentifierAttribute: names.AttrARN, + }, }, { Factory: dataSourceSnapshot, TypeName: "aws_memorydb_snapshot", Name: "Snapshot", + Tags: &types.ServicePackageResourceTags{ + IdentifierAttribute: names.AttrARN, + }, }, { Factory: dataSourceSubnetGroup, TypeName: "aws_memorydb_subnet_group", Name: "Subnet Group", + Tags: &types.ServicePackageResourceTags{ + IdentifierAttribute: names.AttrARN, + }, }, { Factory: dataSourceUser, TypeName: "aws_memorydb_user", Name: "User", + Tags: &types.ServicePackageResourceTags{ + IdentifierAttribute: names.AttrARN, + }, }, } } diff --git a/internal/service/memorydb/snapshot.go b/internal/service/memorydb/snapshot.go index 66598878d87..5c64b1f2b8b 100644 --- a/internal/service/memorydb/snapshot.go +++ b/internal/service/memorydb/snapshot.go @@ -6,12 +6,14 @@ package memorydb import ( "context" "log" + "time" "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/service/memorydb" awstypes "github.com/aws/aws-sdk-go-v2/service/memorydb/types" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/id" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/create" @@ -37,8 +39,8 @@ func resourceSnapshot() *schema.Resource { }, Timeouts: &schema.ResourceTimeout{ - Create: schema.DefaultTimeout(snapshotAvailableTimeout), - Delete: schema.DefaultTimeout(snapshotDeletedTimeout), + Create: schema.DefaultTimeout(120 * time.Minute), + Delete: schema.DefaultTimeout(120 * time.Minute), }, CustomizeDiff: verify.SetTagsDiff, @@ -57,6 +59,10 @@ func resourceSnapshot() *schema.Resource { Type: schema.TypeString, Computed: true, }, + names.AttrEngine: { + Type: schema.TypeString, + Computed: true, + }, names.AttrEngineVersion: { Type: schema.TypeString, Computed: true, @@ -151,7 +157,6 @@ func resourceSnapshot() *schema.Resource { func resourceSnapshotCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics - conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) name := create.Name(d.Get(names.AttrName).(string), d.Get(names.AttrNamePrefix).(string)) @@ -165,33 +170,26 @@ func resourceSnapshotCreate(ctx context.Context, d *schema.ResourceData, meta in input.KmsKeyId = aws.String(v.(string)) } - log.Printf("[DEBUG] Creating MemoryDB Snapshot: %+v", input) _, err := conn.CreateSnapshot(ctx, input) if err != nil { return sdkdiag.AppendErrorf(diags, "creating MemoryDB Snapshot (%s): %s", name, err) } - if err := waitSnapshotAvailable(ctx, conn, name, d.Timeout(schema.TimeoutCreate)); err != nil { - return sdkdiag.AppendErrorf(diags, "waiting for MemoryDB Snapshot (%s) to be created: %s", name, err) - } - d.SetId(name) - return append(diags, resourceSnapshotRead(ctx, d, meta)...) -} + if _, err := waitSnapshotAvailable(ctx, conn, d.Id(), d.Timeout(schema.TimeoutCreate)); err != nil { + return sdkdiag.AppendErrorf(diags, "waiting for MemoryDB Snapshot (%s) create: %s", d.Id(), err) + } -func resourceSnapshotUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - // Tags only. - return resourceSnapshotRead(ctx, d, meta) + return append(diags, resourceSnapshotRead(ctx, d, meta)...) } func resourceSnapshotRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics - conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) - snapshot, err := FindSnapshotByName(ctx, conn, d.Id()) + snapshot, err := findSnapshotByName(ctx, conn, d.Id()) if !d.IsNewResource() && tfresource.NotFound(err) { log.Printf("[WARN] MemoryDB Snapshot (%s) not found, removing from state", d.Id()) @@ -205,7 +203,7 @@ func resourceSnapshotRead(ctx context.Context, d *schema.ResourceData, meta inte d.Set(names.AttrARN, snapshot.ARN) if err := d.Set("cluster_configuration", flattenClusterConfiguration(snapshot.ClusterConfiguration)); err != nil { - return sdkdiag.AppendErrorf(diags, "failed to set cluster_configuration for MemoryDB Snapshot (%s): %s", d.Id(), err) + return sdkdiag.AppendErrorf(diags, "setting cluster_configuration: %s", err) } d.Set(names.AttrClusterName, snapshot.ClusterConfiguration.Name) d.Set(names.AttrKMSKeyARN, snapshot.KmsKeyId) @@ -216,9 +214,13 @@ func resourceSnapshotRead(ctx context.Context, d *schema.ResourceData, meta inte return diags } +func resourceSnapshotUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { + // Tags only. + return resourceSnapshotRead(ctx, d, meta) +} + func resourceSnapshotDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics - conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) log.Printf("[DEBUG] Deleting MemoryDB Snapshot: (%s)", d.Id()) @@ -234,33 +236,126 @@ func resourceSnapshotDelete(ctx context.Context, d *schema.ResourceData, meta in return sdkdiag.AppendErrorf(diags, "deleting MemoryDB Snapshot (%s): %s", d.Id(), err) } - if err := waitSnapshotDeleted(ctx, conn, d.Id(), d.Timeout(schema.TimeoutDelete)); err != nil { - return sdkdiag.AppendErrorf(diags, "waiting for MemoryDB Snapshot (%s) to be deleted: %s", d.Id(), err) + if _, err := waitSnapshotDeleted(ctx, conn, d.Id(), d.Timeout(schema.TimeoutDelete)); err != nil { + return sdkdiag.AppendErrorf(diags, "waiting for MemoryDB Snapshot (%s) delete: %s", d.Id(), err) } return diags } -func flattenClusterConfiguration(v *awstypes.ClusterConfiguration) []interface{} { - if v == nil { +func findSnapshotByName(ctx context.Context, conn *memorydb.Client, name string) (*awstypes.Snapshot, error) { + input := &memorydb.DescribeSnapshotsInput{ + SnapshotName: aws.String(name), + } + + return findSnapshot(ctx, conn, input) +} + +func findSnapshot(ctx context.Context, conn *memorydb.Client, input *memorydb.DescribeSnapshotsInput) (*awstypes.Snapshot, error) { + output, err := findSnapshots(ctx, conn, input) + + if err != nil { + return nil, err + } + + return tfresource.AssertSingleValueResult(output) +} + +func findSnapshots(ctx context.Context, conn *memorydb.Client, input *memorydb.DescribeSnapshotsInput) ([]awstypes.Snapshot, error) { + var output []awstypes.Snapshot + + pages := memorydb.NewDescribeSnapshotsPaginator(conn, input) + for pages.HasMorePages() { + page, err := pages.NextPage(ctx) + + if errs.IsA[*awstypes.SnapshotNotFoundFault](err) { + return nil, &retry.NotFoundError{ + LastError: err, + LastRequest: input, + } + } + + if err != nil { + return nil, err + } + + output = append(output, page.Snapshots...) + } + + return output, nil +} + +func statusSnapshot(ctx context.Context, conn *memorydb.Client, name string) retry.StateRefreshFunc { + return func() (interface{}, string, error) { + output, err := findSnapshotByName(ctx, conn, name) + + if tfresource.NotFound(err) { + return nil, "", nil + } + + if err != nil { + return nil, "", err + } + + return output, aws.ToString(output.Status), nil + } +} + +func waitSnapshotAvailable(ctx context.Context, conn *memorydb.Client, name string, timeout time.Duration) (*awstypes.Snapshot, error) { + stateConf := &retry.StateChangeConf{ + Pending: []string{snapshotStatusCreating}, + Target: []string{snapshotStatusAvailable}, + Refresh: statusSnapshot(ctx, conn, name), + Timeout: timeout, + } + + outputRaw, err := stateConf.WaitForStateContext(ctx) + + if output, ok := outputRaw.(*awstypes.Snapshot); ok { + return output, err + } + + return nil, err +} + +func waitSnapshotDeleted(ctx context.Context, conn *memorydb.Client, name string, timeout time.Duration) (*awstypes.Snapshot, error) { + stateConf := &retry.StateChangeConf{ + Pending: []string{snapshotStatusDeleting}, + Target: []string{}, + Refresh: statusSnapshot(ctx, conn, name), + Timeout: timeout, + } + + outputRaw, err := stateConf.WaitForStateContext(ctx) + + if output, ok := outputRaw.(*awstypes.Snapshot); ok { + return output, err + } + + return nil, err +} + +func flattenClusterConfiguration(apiObject *awstypes.ClusterConfiguration) []interface{} { + if apiObject == nil { return []interface{}{} } - m := map[string]interface{}{ - names.AttrDescription: aws.ToString(v.Description), - names.AttrEngineVersion: aws.ToString(v.EngineVersion), - "maintenance_window": aws.ToString(v.MaintenanceWindow), - names.AttrName: aws.ToString(v.Name), - "node_type": aws.ToString(v.NodeType), - "num_shards": aws.ToInt32(v.NumShards), - names.AttrParameterGroupName: aws.ToString(v.ParameterGroupName), - names.AttrPort: aws.ToInt32(v.Port), - "snapshot_retention_limit": aws.ToInt32(v.SnapshotRetentionLimit), - "snapshot_window": aws.ToString(v.SnapshotWindow), - "subnet_group_name": aws.ToString(v.SubnetGroupName), - names.AttrTopicARN: aws.ToString(v.TopicArn), - names.AttrVPCID: aws.ToString(v.VpcId), + tfMap := map[string]interface{}{ + names.AttrDescription: aws.ToString(apiObject.Description), + names.AttrEngine: aws.ToString(apiObject.Engine), + names.AttrEngineVersion: aws.ToString(apiObject.EngineVersion), + "maintenance_window": aws.ToString(apiObject.MaintenanceWindow), + names.AttrName: aws.ToString(apiObject.Name), + "node_type": aws.ToString(apiObject.NodeType), + "num_shards": aws.ToInt32(apiObject.NumShards), + names.AttrParameterGroupName: aws.ToString(apiObject.ParameterGroupName), + names.AttrPort: aws.ToInt32(apiObject.Port), + "snapshot_retention_limit": aws.ToInt32(apiObject.SnapshotRetentionLimit), + "snapshot_window": aws.ToString(apiObject.SnapshotWindow), + "subnet_group_name": aws.ToString(apiObject.SubnetGroupName), + names.AttrTopicARN: aws.ToString(apiObject.TopicArn), + names.AttrVPCID: aws.ToString(apiObject.VpcId), } - return []interface{}{m} + return []interface{}{tfMap} } diff --git a/internal/service/memorydb/snapshot_data_source.go b/internal/service/memorydb/snapshot_data_source.go index caed4c96d89..fa7304f64a5 100644 --- a/internal/service/memorydb/snapshot_data_source.go +++ b/internal/service/memorydb/snapshot_data_source.go @@ -17,6 +17,7 @@ import ( ) // @SDKDataSource("aws_memorydb_snapshot", name="Snapshot") +// @Tags(identifierAttribute="arn") func dataSourceSnapshot() *schema.Resource { return &schema.Resource{ ReadWithoutTimeout: dataSourceSnapshotRead, @@ -35,6 +36,10 @@ func dataSourceSnapshot() *schema.Resource { Type: schema.TypeString, Computed: true, }, + names.AttrEngine: { + Type: schema.TypeString, + Computed: true, + }, names.AttrEngineVersion: { Type: schema.TypeString, Computed: true, @@ -109,13 +114,11 @@ func dataSourceSnapshot() *schema.Resource { func dataSourceSnapshotRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics - conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) - ignoreTagsConfig := meta.(*conns.AWSClient).IgnoreTagsConfig(ctx) name := d.Get(names.AttrName).(string) - snapshot, err := FindSnapshotByName(ctx, conn, name) + snapshot, err := findSnapshotByName(ctx, conn, name) if err != nil { return sdkdiag.AppendFromErr(diags, tfresource.SingularDataSourceFindError("MemoryDB Snapshot", err)) @@ -125,22 +128,12 @@ func dataSourceSnapshotRead(ctx context.Context, d *schema.ResourceData, meta in d.Set(names.AttrARN, snapshot.ARN) if err := d.Set("cluster_configuration", flattenClusterConfiguration(snapshot.ClusterConfiguration)); err != nil { - return sdkdiag.AppendErrorf(diags, "failed to set cluster_configuration for MemoryDB Snapshot (%s): %s", d.Id(), err) + return sdkdiag.AppendErrorf(diags, "setting cluster_configuration: %s", err) } d.Set(names.AttrClusterName, snapshot.ClusterConfiguration.Name) d.Set(names.AttrKMSKeyARN, snapshot.KmsKeyId) d.Set(names.AttrName, snapshot.Name) d.Set(names.AttrSource, snapshot.Source) - tags, err := listTags(ctx, conn, d.Get(names.AttrARN).(string)) - - if err != nil { - return sdkdiag.AppendErrorf(diags, "listing tags for MemoryDB Snapshot (%s): %s", d.Id(), err) - } - - if err := d.Set(names.AttrTags, tags.IgnoreAWS().IgnoreConfig(ignoreTagsConfig).Map()); err != nil { - return sdkdiag.AppendErrorf(diags, "setting tags: %s", err) - } - return diags } diff --git a/internal/service/memorydb/snapshot_data_source_test.go b/internal/service/memorydb/snapshot_data_source_test.go index d281bddd0e8..3c3f3ade238 100644 --- a/internal/service/memorydb/snapshot_data_source_test.go +++ b/internal/service/memorydb/snapshot_data_source_test.go @@ -29,6 +29,7 @@ func TestAccMemoryDBSnapshotDataSource_basic(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttrPair(dataSourceName, names.AttrARN, resourceName, names.AttrARN), resource.TestCheckTypeSetElemAttrPair(dataSourceName, "cluster_configuration.0.description", resourceName, "cluster_configuration.0.description"), + resource.TestCheckTypeSetElemAttrPair(dataSourceName, "cluster_configuration.0.engine", resourceName, "cluster_configuration.0.engine"), resource.TestCheckTypeSetElemAttrPair(dataSourceName, "cluster_configuration.0.engine_version", resourceName, "cluster_configuration.0.engine_version"), resource.TestCheckTypeSetElemAttrPair(dataSourceName, "cluster_configuration.0.maintenance_window", resourceName, "cluster_configuration.0.maintenance_window"), resource.TestCheckTypeSetElemAttrPair(dataSourceName, "cluster_configuration.0.name", resourceName, "cluster_configuration.0.name"), diff --git a/internal/service/memorydb/snapshot_test.go b/internal/service/memorydb/snapshot_test.go index 7ec40bc5aca..4a438e25c3c 100644 --- a/internal/service/memorydb/snapshot_test.go +++ b/internal/service/memorydb/snapshot_test.go @@ -35,6 +35,7 @@ func TestAccMemoryDBSnapshot_basic(t *testing.T) { testAccCheckSnapshotExists(ctx, resourceName), acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "memorydb", "snapshot/"+rName), resource.TestCheckTypeSetElemAttrPair(resourceName, "cluster_configuration.0.description", "aws_memorydb_cluster.test", names.AttrDescription), + resource.TestCheckTypeSetElemAttrPair(resourceName, "cluster_configuration.0.engine", "aws_memorydb_cluster.test", names.AttrEngine), resource.TestCheckTypeSetElemAttrPair(resourceName, "cluster_configuration.0.engine_version", "aws_memorydb_cluster.test", names.AttrEngineVersion), resource.TestCheckTypeSetElemAttrPair(resourceName, "cluster_configuration.0.maintenance_window", "aws_memorydb_cluster.test", "maintenance_window"), resource.TestCheckTypeSetElemAttrPair(resourceName, "cluster_configuration.0.name", "aws_memorydb_cluster.test", names.AttrName), @@ -286,9 +287,12 @@ resource "aws_memorydb_subnet_group" "test" { } resource "aws_security_group" "test" { - name = %[1]q - description = %[1]q - vpc_id = aws_vpc.test.id + name = %[1]q + vpc_id = aws_vpc.test.id + + tags = { + Name = %[1]q + } } resource "aws_memorydb_cluster" "test" { diff --git a/internal/service/memorydb/status.go b/internal/service/memorydb/status.go deleted file mode 100644 index 30ded7af769..00000000000 --- a/internal/service/memorydb/status.go +++ /dev/null @@ -1,124 +0,0 @@ -// Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 - -package memorydb - -import ( - "context" - - "github.com/aws/aws-sdk-go-v2/aws" - "github.com/aws/aws-sdk-go-v2/service/memorydb" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry" - "github.com/hashicorp/terraform-provider-aws/internal/tfresource" -) - -// statusACL fetches the MemoryDB ACL and its status. -func statusACL(ctx context.Context, conn *memorydb.Client, aclName string) retry.StateRefreshFunc { - return func() (interface{}, string, error) { - acl, err := FindACLByName(ctx, conn, aclName) - - if tfresource.NotFound(err) { - return nil, "", nil - } - - if err != nil { - return nil, "", err - } - - return acl, aws.ToString(acl.Status), nil - } -} - -// statusCluster fetches the MemoryDB Cluster and its status. -func statusCluster(ctx context.Context, conn *memorydb.Client, clusterName string) retry.StateRefreshFunc { - return func() (interface{}, string, error) { - cluster, err := FindClusterByName(ctx, conn, clusterName) - - if tfresource.NotFound(err) { - return nil, "", nil - } - - if err != nil { - return nil, "", err - } - - return cluster, aws.ToString(cluster.Status), nil - } -} - -// statusClusterParameterGroup fetches the MemoryDB Cluster and its parameter group status. -func statusClusterParameterGroup(ctx context.Context, conn *memorydb.Client, clusterName string) retry.StateRefreshFunc { - return func() (interface{}, string, error) { - cluster, err := FindClusterByName(ctx, conn, clusterName) - - if tfresource.NotFound(err) { - return nil, "", nil - } - - if err != nil { - return nil, "", err - } - - return cluster, aws.ToString(cluster.ParameterGroupStatus), nil - } -} - -// statusClusterSecurityGroups fetches the MemoryDB Cluster and its security group status. -func statusClusterSecurityGroups(ctx context.Context, conn *memorydb.Client, clusterName string) retry.StateRefreshFunc { - return func() (interface{}, string, error) { - cluster, err := FindClusterByName(ctx, conn, clusterName) - - if tfresource.NotFound(err) { - return nil, "", nil - } - - if err != nil { - return nil, "", err - } - - for _, sg := range cluster.SecurityGroups { - // When at least one security group change is being applied (whether - // that be adding or removing an SG), say that we're still in progress. - - if aws.ToString(sg.Status) != ClusterSecurityGroupStatusActive { - return cluster, ClusterSecurityGroupStatusModifying, nil - } - } - - return cluster, ClusterSecurityGroupStatusActive, nil - } -} - -// statusSnapshot fetches the MemoryDB Snapshot and its status. -func statusSnapshot(ctx context.Context, conn *memorydb.Client, snapshotName string) retry.StateRefreshFunc { - return func() (interface{}, string, error) { - snapshot, err := FindSnapshotByName(ctx, conn, snapshotName) - - if tfresource.NotFound(err) { - return nil, "", nil - } - - if err != nil { - return nil, "", err - } - - return snapshot, aws.ToString(snapshot.Status), nil - } -} - -// statusUser fetches the MemoryDB user and its status. -func statusUser(ctx context.Context, conn *memorydb.Client, userName string) retry.StateRefreshFunc { - return func() (interface{}, string, error) { - user, err := FindUserByName(ctx, conn, userName) - - if tfresource.NotFound(err) { - return nil, "", nil - } - - if err != nil { - return nil, "", err - } - - return user, aws.ToString(user.Status), nil - } -} diff --git a/internal/service/memorydb/subnet_group.go b/internal/service/memorydb/subnet_group.go index c4c6f7c64b1..b01015569fa 100644 --- a/internal/service/memorydb/subnet_group.go +++ b/internal/service/memorydb/subnet_group.go @@ -12,12 +12,14 @@ import ( awstypes "github.com/aws/aws-sdk-go-v2/service/memorydb/types" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/id" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/create" "github.com/hashicorp/terraform-provider-aws/internal/errs" "github.com/hashicorp/terraform-provider-aws/internal/errs/sdkdiag" "github.com/hashicorp/terraform-provider-aws/internal/flex" + tfslices "github.com/hashicorp/terraform-provider-aws/internal/slices" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" "github.com/hashicorp/terraform-provider-aws/internal/tfresource" "github.com/hashicorp/terraform-provider-aws/internal/verify" @@ -83,7 +85,6 @@ func resourceSubnetGroup() *schema.Resource { func resourceSubnetGroupCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics - conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) name := create.Name(d.Get(names.AttrName).(string), d.Get(names.AttrNamePrefix).(string)) @@ -94,7 +95,6 @@ func resourceSubnetGroupCreate(ctx context.Context, d *schema.ResourceData, meta Tags: getTagsIn(ctx), } - log.Printf("[DEBUG] Creating MemoryDB Subnet Group: %+v", input) _, err := conn.CreateSubnetGroup(ctx, input) if err != nil { @@ -106,35 +106,11 @@ func resourceSubnetGroupCreate(ctx context.Context, d *schema.ResourceData, meta return append(diags, resourceSubnetGroupRead(ctx, d, meta)...) } -func resourceSubnetGroupUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - var diags diag.Diagnostics - - conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) - - if d.HasChangesExcept(names.AttrTags, names.AttrTagsAll) { - input := &memorydb.UpdateSubnetGroupInput{ - Description: aws.String(d.Get(names.AttrDescription).(string)), - SubnetGroupName: aws.String(d.Id()), - SubnetIds: flex.ExpandStringValueSet(d.Get(names.AttrSubnetIDs).(*schema.Set)), - } - - log.Printf("[DEBUG] Updating MemoryDB Subnet Group: %+v", input) - _, err := conn.UpdateSubnetGroup(ctx, input) - - if err != nil { - return sdkdiag.AppendErrorf(diags, "updating MemoryDB Subnet Group (%s): %s", d.Id(), err) - } - } - - return append(diags, resourceSubnetGroupRead(ctx, d, meta)...) -} - func resourceSubnetGroupRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics - conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) - group, err := FindSubnetGroupByName(ctx, conn, d.Id()) + group, err := findSubnetGroupByName(ctx, conn, d.Id()) if !d.IsNewResource() && tfresource.NotFound(err) { log.Printf("[WARN] MemoryDB Subnet Group (%s) not found, removing from state", d.Id()) @@ -146,24 +122,41 @@ func resourceSubnetGroupRead(ctx context.Context, d *schema.ResourceData, meta i return sdkdiag.AppendErrorf(diags, "reading MemoryDB Subnet Group (%s): %s", d.Id(), err) } - var subnetIds []*string - for _, subnet := range group.Subnets { - subnetIds = append(subnetIds, subnet.Identifier) - } - d.Set(names.AttrARN, group.ARN) d.Set(names.AttrDescription, group.Description) - d.Set(names.AttrSubnetIDs, flex.FlattenStringSet(subnetIds)) d.Set(names.AttrName, group.Name) d.Set(names.AttrNamePrefix, create.NamePrefixFromName(aws.ToString(group.Name))) + d.Set(names.AttrSubnetIDs, tfslices.ApplyToAll(group.Subnets, func(v awstypes.Subnet) string { + return aws.ToString(v.Identifier) + })) d.Set(names.AttrVPCID, group.VpcId) return diags } -func resourceSubnetGroupDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { +func resourceSubnetGroupUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics + conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) + + if d.HasChangesExcept(names.AttrTags, names.AttrTagsAll) { + input := &memorydb.UpdateSubnetGroupInput{ + Description: aws.String(d.Get(names.AttrDescription).(string)), + SubnetGroupName: aws.String(d.Id()), + SubnetIds: flex.ExpandStringValueSet(d.Get(names.AttrSubnetIDs).(*schema.Set)), + } + + _, err := conn.UpdateSubnetGroup(ctx, input) + + if err != nil { + return sdkdiag.AppendErrorf(diags, "updating MemoryDB Subnet Group (%s): %s", d.Id(), err) + } + } + + return append(diags, resourceSubnetGroupRead(ctx, d, meta)...) +} +func resourceSubnetGroupDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { + var diags diag.Diagnostics conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) log.Printf("[DEBUG] Deleting MemoryDB Subnet Group: (%s)", d.Id()) @@ -181,3 +174,45 @@ func resourceSubnetGroupDelete(ctx context.Context, d *schema.ResourceData, meta return diags } + +func findSubnetGroupByName(ctx context.Context, conn *memorydb.Client, name string) (*awstypes.SubnetGroup, error) { + input := &memorydb.DescribeSubnetGroupsInput{ + SubnetGroupName: aws.String(name), + } + + return findSubnetGroup(ctx, conn, input) +} + +func findSubnetGroup(ctx context.Context, conn *memorydb.Client, input *memorydb.DescribeSubnetGroupsInput) (*awstypes.SubnetGroup, error) { + output, err := findSubnetGroups(ctx, conn, input) + + if err != nil { + return nil, err + } + + return tfresource.AssertSingleValueResult(output) +} + +func findSubnetGroups(ctx context.Context, conn *memorydb.Client, input *memorydb.DescribeSubnetGroupsInput) ([]awstypes.SubnetGroup, error) { + var output []awstypes.SubnetGroup + + pages := memorydb.NewDescribeSubnetGroupsPaginator(conn, input) + for pages.HasMorePages() { + page, err := pages.NextPage(ctx) + + if errs.IsA[*awstypes.SubnetGroupNotFoundFault](err) { + return nil, &retry.NotFoundError{ + LastError: err, + LastRequest: input, + } + } + + if err != nil { + return nil, err + } + + output = append(output, page.SubnetGroups...) + } + + return output, nil +} diff --git a/internal/service/memorydb/subnet_group_data_source.go b/internal/service/memorydb/subnet_group_data_source.go index 52bc8d3183d..09251eed90f 100644 --- a/internal/service/memorydb/subnet_group_data_source.go +++ b/internal/service/memorydb/subnet_group_data_source.go @@ -7,17 +7,19 @@ import ( "context" "github.com/aws/aws-sdk-go-v2/aws" + awstypes "github.com/aws/aws-sdk-go-v2/service/memorydb/types" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/errs/sdkdiag" - "github.com/hashicorp/terraform-provider-aws/internal/flex" + tfslices "github.com/hashicorp/terraform-provider-aws/internal/slices" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" "github.com/hashicorp/terraform-provider-aws/internal/tfresource" "github.com/hashicorp/terraform-provider-aws/names" ) // @SDKDataSource("aws_memorydb_subnet_group", name="Subnet Group") +// @Tags(identifierAttribute="arn") func dataSourceSubnetGroup() *schema.Resource { return &schema.Resource{ ReadWithoutTimeout: dataSourceSubnetGroupRead, @@ -51,40 +53,23 @@ func dataSourceSubnetGroup() *schema.Resource { func dataSourceSubnetGroupRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics - conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) - ignoreTagsConfig := meta.(*conns.AWSClient).IgnoreTagsConfig(ctx) name := d.Get(names.AttrName).(string) - - group, err := FindSubnetGroupByName(ctx, conn, name) + group, err := findSubnetGroupByName(ctx, conn, name) if err != nil { return sdkdiag.AppendFromErr(diags, tfresource.SingularDataSourceFindError("MemoryDB Subnet Group", err)) } d.SetId(aws.ToString(group.Name)) - - var subnetIds []*string - for _, subnet := range group.Subnets { - subnetIds = append(subnetIds, subnet.Identifier) - } - d.Set(names.AttrARN, group.ARN) d.Set(names.AttrDescription, group.Description) - d.Set(names.AttrSubnetIDs, flex.FlattenStringSet(subnetIds)) d.Set(names.AttrName, group.Name) + d.Set(names.AttrSubnetIDs, tfslices.ApplyToAll(group.Subnets, func(v awstypes.Subnet) string { + return aws.ToString(v.Identifier) + })) d.Set(names.AttrVPCID, group.VpcId) - tags, err := listTags(ctx, conn, d.Get(names.AttrARN).(string)) - - if err != nil { - return sdkdiag.AppendErrorf(diags, "listing tags for MemoryDB Subnet Group (%s): %s", d.Id(), err) - } - - if err := d.Set(names.AttrTags, tags.IgnoreAWS().IgnoreConfig(ignoreTagsConfig).Map()); err != nil { - return sdkdiag.AppendErrorf(diags, "setting tags: %s", err) - } - return diags } diff --git a/internal/service/memorydb/user.go b/internal/service/memorydb/user.go index 7a6ac9d4e39..ac29c1ead65 100644 --- a/internal/service/memorydb/user.go +++ b/internal/service/memorydb/user.go @@ -6,11 +6,13 @@ package memorydb import ( "context" "log" + "time" "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/service/memorydb" awstypes "github.com/aws/aws-sdk-go-v2/service/memorydb/types" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" "github.com/hashicorp/terraform-provider-aws/internal/conns" @@ -96,7 +98,6 @@ func resourceUser() *schema.Resource { func resourceUserCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics - conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) userName := d.Get(names.AttrUserName).(string) @@ -123,10 +124,9 @@ func resourceUserCreate(ctx context.Context, d *schema.ResourceData, meta interf func resourceUserRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics - conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) - user, err := FindUserByName(ctx, conn, d.Id()) + user, err := findUserByName(ctx, conn, d.Id()) if !d.IsNewResource() && tfresource.NotFound(err) { log.Printf("[WARN] MemoryDB User (%s) not found, removing from state", d.Id()) @@ -140,19 +140,17 @@ func resourceUserRead(ctx context.Context, d *schema.ResourceData, meta interfac d.Set("access_string", user.AccessString) d.Set(names.AttrARN, user.ARN) - if v := user.Authentication; v != nil { - authenticationMode := map[string]interface{}{ + tfMap := map[string]interface{}{ "passwords": d.Get("authentication_mode.0.passwords"), "password_count": aws.ToInt32(v.PasswordCount), - names.AttrType: string(v.Type), + names.AttrType: v.Type, } - if err := d.Set("authentication_mode", []interface{}{authenticationMode}); err != nil { + if err := d.Set("authentication_mode", []interface{}{tfMap}); err != nil { return sdkdiag.AppendErrorf(diags, "setting authentication_mode: %s", err) } } - d.Set("minimum_engine_version", user.MinimumEngineVersion) d.Set(names.AttrUserName, user.Name) @@ -161,7 +159,6 @@ func resourceUserRead(ctx context.Context, d *schema.ResourceData, meta interfac func resourceUserUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics - conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) if d.HasChangesExcept(names.AttrTags, names.AttrTagsAll) { @@ -183,7 +180,7 @@ func resourceUserUpdate(ctx context.Context, d *schema.ResourceData, meta interf return sdkdiag.AppendErrorf(diags, "updating MemoryDB User (%s): %s", d.Id(), err) } - if err := waitUserActive(ctx, conn, d.Id()); err != nil { + if _, err := waitUserActive(ctx, conn, d.Id()); err != nil { return sdkdiag.AppendErrorf(diags, "waiting for MemoryDB User (%s) update: %s", d.Id(), err) } } @@ -193,7 +190,6 @@ func resourceUserUpdate(ctx context.Context, d *schema.ResourceData, meta interf func resourceUserDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics - conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) log.Printf("[DEBUG] Deleting MemoryDB User: (%s)", d.Id()) @@ -209,13 +205,111 @@ func resourceUserDelete(ctx context.Context, d *schema.ResourceData, meta interf return sdkdiag.AppendErrorf(diags, "deleting MemoryDB User (%s): %s", d.Id(), err) } - if err := waitUserDeleted(ctx, conn, d.Id()); err != nil { + if _, err := waitUserDeleted(ctx, conn, d.Id()); err != nil { return sdkdiag.AppendErrorf(diags, "waiting for MemoryDB User (%s) delete: %s", d.Id(), err) } return diags } +func findUserByName(ctx context.Context, conn *memorydb.Client, name string) (*awstypes.User, error) { + input := &memorydb.DescribeUsersInput{ + UserName: aws.String(name), + } + + return findUser(ctx, conn, input) +} + +func findUser(ctx context.Context, conn *memorydb.Client, input *memorydb.DescribeUsersInput) (*awstypes.User, error) { + output, err := findUsers(ctx, conn, input) + + if err != nil { + return nil, err + } + + return tfresource.AssertSingleValueResult(output) +} + +func findUsers(ctx context.Context, conn *memorydb.Client, input *memorydb.DescribeUsersInput) ([]awstypes.User, error) { + var output []awstypes.User + + pages := memorydb.NewDescribeUsersPaginator(conn, input) + for pages.HasMorePages() { + page, err := pages.NextPage(ctx) + + if errs.IsA[*awstypes.UserNotFoundFault](err) { + return nil, &retry.NotFoundError{ + LastError: err, + LastRequest: input, + } + } + + if err != nil { + return nil, err + } + + output = append(output, page.Users...) + } + + return output, nil +} + +func statusUser(ctx context.Context, conn *memorydb.Client, userName string) retry.StateRefreshFunc { + return func() (interface{}, string, error) { + user, err := findUserByName(ctx, conn, userName) + + if tfresource.NotFound(err) { + return nil, "", nil + } + + if err != nil { + return nil, "", err + } + + return user, aws.ToString(user.Status), nil + } +} + +func waitUserActive(ctx context.Context, conn *memorydb.Client, userName string) (*awstypes.User, error) { + const ( + timeout = 5 * time.Minute + ) + stateConf := &retry.StateChangeConf{ + Pending: []string{userStatusModifying}, + Target: []string{userStatusActive}, + Refresh: statusUser(ctx, conn, userName), + Timeout: timeout, + } + + outputRaw, err := stateConf.WaitForStateContext(ctx) + + if output, ok := outputRaw.(*awstypes.User); ok { + return output, err + } + + return nil, err +} + +func waitUserDeleted(ctx context.Context, conn *memorydb.Client, userName string) (*awstypes.User, error) { + const ( + timeout = 5 * time.Minute + ) + stateConf := &retry.StateChangeConf{ + Pending: []string{userStatusDeleting}, + Target: []string{}, + Refresh: statusUser(ctx, conn, userName), + Timeout: timeout, + } + + outputRaw, err := stateConf.WaitForStateContext(ctx) + + if output, ok := outputRaw.(*awstypes.User); ok { + return output, err + } + + return nil, err +} + func expandAuthenticationMode(tfMap map[string]interface{}) *awstypes.AuthenticationMode { if tfMap == nil { return nil diff --git a/internal/service/memorydb/user_data_source.go b/internal/service/memorydb/user_data_source.go index 4a04f3e1cea..b33174d1d2c 100644 --- a/internal/service/memorydb/user_data_source.go +++ b/internal/service/memorydb/user_data_source.go @@ -17,6 +17,7 @@ import ( ) // @SDKDataSource("aws_memorydb_user", name="User") +// @Tags(identifierAttribute="arn") func dataSourceUser() *schema.Resource { return &schema.Resource{ ReadWithoutTimeout: dataSourceUserRead, @@ -61,46 +62,30 @@ func dataSourceUser() *schema.Resource { func dataSourceUserRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics - conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) - ignoreTagsConfig := meta.(*conns.AWSClient).IgnoreTagsConfig(ctx) userName := d.Get(names.AttrUserName).(string) - - user, err := FindUserByName(ctx, conn, userName) + user, err := findUserByName(ctx, conn, userName) if err != nil { return sdkdiag.AppendFromErr(diags, tfresource.SingularDataSourceFindError("MemoryDB User", err)) } d.SetId(aws.ToString(user.Name)) - d.Set("access_string", user.AccessString) d.Set(names.AttrARN, user.ARN) - if v := user.Authentication; v != nil { - authenticationMode := map[string]interface{}{ + tfMap := map[string]interface{}{ "password_count": aws.ToInt32(v.PasswordCount), - names.AttrType: string(v.Type), + names.AttrType: v.Type, } - if err := d.Set("authentication_mode", []interface{}{authenticationMode}); err != nil { - return sdkdiag.AppendErrorf(diags, "failed to set authentication_mode of MemoryDB User (%s): %s", d.Id(), err) + if err := d.Set("authentication_mode", []interface{}{tfMap}); err != nil { + return sdkdiag.AppendErrorf(diags, "setting authentication_mode: %s", err) } } - d.Set("minimum_engine_version", user.MinimumEngineVersion) d.Set(names.AttrUserName, user.Name) - tags, err := listTags(ctx, conn, d.Get(names.AttrARN).(string)) - - if err != nil { - return sdkdiag.AppendErrorf(diags, "listing tags for MemoryDB User (%s): %s", d.Id(), err) - } - - if err := d.Set(names.AttrTags, tags.IgnoreAWS().IgnoreConfig(ignoreTagsConfig).Map()); err != nil { - return sdkdiag.AppendErrorf(diags, "setting tags: %s", err) - } - return diags } diff --git a/internal/service/memorydb/wait.go b/internal/service/memorydb/wait.go deleted file mode 100644 index b546a885833..00000000000 --- a/internal/service/memorydb/wait.go +++ /dev/null @@ -1,172 +0,0 @@ -// Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 - -package memorydb - -import ( - "context" - "time" - - "github.com/aws/aws-sdk-go-v2/service/memorydb" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry" -) - -const ( - aclActiveTimeout = 5 * time.Minute - aclDeletedTimeout = 5 * time.Minute - - clusterAvailableTimeout = 120 * time.Minute - clusterDeletedTimeout = 120 * time.Minute - - clusterParameterGroupInSyncTimeout = 60 * time.Minute - - clusterSecurityGroupsActiveTimeout = 10 * time.Minute - - userActiveTimeout = 5 * time.Minute - userDeletedTimeout = 5 * time.Minute - - snapshotAvailableTimeout = 120 * time.Minute - snapshotDeletedTimeout = 120 * time.Minute -) - -// waitACLActive waits for MemoryDB ACL to reach an active state after modifications. -func waitACLActive(ctx context.Context, conn *memorydb.Client, aclId string) error { - stateConf := &retry.StateChangeConf{ - Pending: []string{ACLStatusCreating, ACLStatusModifying}, - Target: []string{ACLStatusActive}, - Refresh: statusACL(ctx, conn, aclId), - Timeout: aclActiveTimeout, - } - - _, err := stateConf.WaitForStateContext(ctx) - - return err -} - -// waitACLDeleted waits for MemoryDB ACL to be deleted. -func waitACLDeleted(ctx context.Context, conn *memorydb.Client, aclId string) error { - stateConf := &retry.StateChangeConf{ - Pending: []string{ACLStatusDeleting}, - Target: []string{}, - Refresh: statusACL(ctx, conn, aclId), - Timeout: aclDeletedTimeout, - } - - _, err := stateConf.WaitForStateContext(ctx) - - return err -} - -// waitClusterAvailable waits for MemoryDB Cluster to reach an active state after modifications. -func waitClusterAvailable(ctx context.Context, conn *memorydb.Client, clusterId string, timeout time.Duration) error { - stateConf := &retry.StateChangeConf{ - Pending: []string{ClusterStatusCreating, ClusterStatusUpdating, ClusterStatusSnapshotting}, - Target: []string{ClusterStatusAvailable}, - Refresh: statusCluster(ctx, conn, clusterId), - Timeout: timeout, - } - - _, err := stateConf.WaitForStateContext(ctx) - - return err -} - -// waitClusterDeleted waits for MemoryDB Cluster to be deleted. -func waitClusterDeleted(ctx context.Context, conn *memorydb.Client, clusterId string, timeout time.Duration) error { - stateConf := &retry.StateChangeConf{ - Pending: []string{ClusterStatusDeleting}, - Target: []string{}, - Refresh: statusCluster(ctx, conn, clusterId), - Timeout: timeout, - } - - _, err := stateConf.WaitForStateContext(ctx) - - return err -} - -// waitClusterParameterGroupInSync waits for MemoryDB Cluster to come in sync -// with a new parameter group. -func waitClusterParameterGroupInSync(ctx context.Context, conn *memorydb.Client, clusterId string) error { - stateConf := &retry.StateChangeConf{ - Pending: []string{ClusterParameterGroupStatusApplying}, - Target: []string{ClusterParameterGroupStatusInSync}, - Refresh: statusClusterParameterGroup(ctx, conn, clusterId), - Timeout: clusterParameterGroupInSyncTimeout, - } - - _, err := stateConf.WaitForStateContext(ctx) - - return err -} - -// waitClusterSecurityGroupsActive waits for MemoryDB Cluster to apply all -// security group-related changes. -func waitClusterSecurityGroupsActive(ctx context.Context, conn *memorydb.Client, clusterId string) error { - stateConf := &retry.StateChangeConf{ - Pending: []string{ClusterSecurityGroupStatusModifying}, - Target: []string{ClusterSecurityGroupStatusActive}, - Refresh: statusClusterSecurityGroups(ctx, conn, clusterId), - Timeout: clusterSecurityGroupsActiveTimeout, - } - - _, err := stateConf.WaitForStateContext(ctx) - - return err -} - -// waitUserActive waits for MemoryDB user to reach an active state after modifications. -func waitUserActive(ctx context.Context, conn *memorydb.Client, userId string) error { - stateConf := &retry.StateChangeConf{ - Pending: []string{UserStatusModifying}, - Target: []string{UserStatusActive}, - Refresh: statusUser(ctx, conn, userId), - Timeout: userActiveTimeout, - } - - _, err := stateConf.WaitForStateContext(ctx) - - return err -} - -// waitUserDeleted waits for MemoryDB user to be deleted. -func waitUserDeleted(ctx context.Context, conn *memorydb.Client, userId string) error { - stateConf := &retry.StateChangeConf{ - Pending: []string{UserStatusDeleting}, - Target: []string{}, - Refresh: statusUser(ctx, conn, userId), - Timeout: userDeletedTimeout, - } - - _, err := stateConf.WaitForStateContext(ctx) - - return err -} - -// waitSnapshotAvailable waits for MemoryDB snapshot to reach the available state. -func waitSnapshotAvailable(ctx context.Context, conn *memorydb.Client, snapshotId string, timeout time.Duration) error { - stateConf := &retry.StateChangeConf{ - Pending: []string{SnapshotStatusCreating}, - Target: []string{SnapshotStatusAvailable}, - Refresh: statusSnapshot(ctx, conn, snapshotId), - Timeout: timeout, - } - - _, err := stateConf.WaitForStateContext(ctx) - - return err -} - -// waitSnapshotDeleted waits for MemoryDB snapshot to be deleted. -func waitSnapshotDeleted(ctx context.Context, conn *memorydb.Client, snapshotId string, timeout time.Duration) error { - stateConf := &retry.StateChangeConf{ - Pending: []string{SnapshotStatusDeleting}, - Target: []string{}, - Refresh: statusSnapshot(ctx, conn, snapshotId), - Timeout: timeout, - } - - _, err := stateConf.WaitForStateContext(ctx) - - return err -} diff --git a/internal/service/mq/service_endpoints_gen_test.go b/internal/service/mq/service_endpoints_gen_test.go index a018a0c7826..455f0318d3d 100644 --- a/internal/service/mq/service_endpoints_gen_test.go +++ b/internal/service/mq/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/neptune/service_endpoints_gen_test.go b/internal/service/neptune/service_endpoints_gen_test.go index ae1a79862a2..9d62ffd63f7 100644 --- a/internal/service/neptune/service_endpoints_gen_test.go +++ b/internal/service/neptune/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/networkfirewall/service_endpoints_gen_test.go b/internal/service/networkfirewall/service_endpoints_gen_test.go index 09ef8d43516..a7abb1afc94 100644 --- a/internal/service/networkfirewall/service_endpoints_gen_test.go +++ b/internal/service/networkfirewall/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/networkmanager/service_endpoints_gen_test.go b/internal/service/networkmanager/service_endpoints_gen_test.go index d0e196defd7..da112b836e9 100644 --- a/internal/service/networkmanager/service_endpoints_gen_test.go +++ b/internal/service/networkmanager/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/networkmonitor/service_endpoints_gen_test.go b/internal/service/networkmonitor/service_endpoints_gen_test.go index 7182f23b502..96a0cfd89ae 100644 --- a/internal/service/networkmonitor/service_endpoints_gen_test.go +++ b/internal/service/networkmonitor/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/oam/service_endpoints_gen_test.go b/internal/service/oam/service_endpoints_gen_test.go index 6b10039fdfb..830082c2d8f 100644 --- a/internal/service/oam/service_endpoints_gen_test.go +++ b/internal/service/oam/service_endpoints_gen_test.go @@ -526,14 +526,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/opensearch/service_endpoints_gen_test.go b/internal/service/opensearch/service_endpoints_gen_test.go index 44171c3b91a..643e9534643 100644 --- a/internal/service/opensearch/service_endpoints_gen_test.go +++ b/internal/service/opensearch/service_endpoints_gen_test.go @@ -526,14 +526,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/opensearchserverless/service_endpoints_gen_test.go b/internal/service/opensearchserverless/service_endpoints_gen_test.go index 044dac2bdba..89a7301f56d 100644 --- a/internal/service/opensearchserverless/service_endpoints_gen_test.go +++ b/internal/service/opensearchserverless/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/opsworks/service_endpoints_gen_test.go b/internal/service/opsworks/service_endpoints_gen_test.go index 2873117e0d5..d7e053650a1 100644 --- a/internal/service/opsworks/service_endpoints_gen_test.go +++ b/internal/service/opsworks/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/organizations/service_endpoints_gen_test.go b/internal/service/organizations/service_endpoints_gen_test.go index a7f9700896e..ff4b9b31a5d 100644 --- a/internal/service/organizations/service_endpoints_gen_test.go +++ b/internal/service/organizations/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/osis/service_endpoints_gen_test.go b/internal/service/osis/service_endpoints_gen_test.go index 88ae205b501..de95d29fa99 100644 --- a/internal/service/osis/service_endpoints_gen_test.go +++ b/internal/service/osis/service_endpoints_gen_test.go @@ -526,14 +526,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/outposts/service_endpoints_gen_test.go b/internal/service/outposts/service_endpoints_gen_test.go index 7eb501943c2..1f5a9e58ca3 100644 --- a/internal/service/outposts/service_endpoints_gen_test.go +++ b/internal/service/outposts/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/pcaconnectorad/service_endpoints_gen_test.go b/internal/service/pcaconnectorad/service_endpoints_gen_test.go index 902131dd5cf..4294452fa25 100644 --- a/internal/service/pcaconnectorad/service_endpoints_gen_test.go +++ b/internal/service/pcaconnectorad/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/pcs/service_endpoints_gen_test.go b/internal/service/pcs/service_endpoints_gen_test.go index 81d9ad95d6b..d3537097fcd 100644 --- a/internal/service/pcs/service_endpoints_gen_test.go +++ b/internal/service/pcs/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/pinpoint/service_endpoints_gen_test.go b/internal/service/pinpoint/service_endpoints_gen_test.go index b077f7e1fdd..5a25cbf1312 100644 --- a/internal/service/pinpoint/service_endpoints_gen_test.go +++ b/internal/service/pinpoint/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/pinpointsmsvoicev2/service_endpoints_gen_test.go b/internal/service/pinpointsmsvoicev2/service_endpoints_gen_test.go index 08f908915ce..557df08cc89 100644 --- a/internal/service/pinpointsmsvoicev2/service_endpoints_gen_test.go +++ b/internal/service/pinpointsmsvoicev2/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/pipes/service_endpoints_gen_test.go b/internal/service/pipes/service_endpoints_gen_test.go index f86efd854b5..c7a08f24fd8 100644 --- a/internal/service/pipes/service_endpoints_gen_test.go +++ b/internal/service/pipes/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/polly/service_endpoints_gen_test.go b/internal/service/polly/service_endpoints_gen_test.go index 9530d3f7cec..0b0315e8f51 100644 --- a/internal/service/polly/service_endpoints_gen_test.go +++ b/internal/service/polly/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/pricing/service_endpoints_gen_test.go b/internal/service/pricing/service_endpoints_gen_test.go index 961af20d0c5..7b1f6eff603 100644 --- a/internal/service/pricing/service_endpoints_gen_test.go +++ b/internal/service/pricing/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/qbusiness/service_endpoints_gen_test.go b/internal/service/qbusiness/service_endpoints_gen_test.go index f676e02d47f..1d5142f2883 100644 --- a/internal/service/qbusiness/service_endpoints_gen_test.go +++ b/internal/service/qbusiness/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/qldb/service_endpoints_gen_test.go b/internal/service/qldb/service_endpoints_gen_test.go index 80e72aca36f..be4bc24d33e 100644 --- a/internal/service/qldb/service_endpoints_gen_test.go +++ b/internal/service/qldb/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/quicksight/service_endpoints_gen_test.go b/internal/service/quicksight/service_endpoints_gen_test.go index b4f929fee6c..163879b1285 100644 --- a/internal/service/quicksight/service_endpoints_gen_test.go +++ b/internal/service/quicksight/service_endpoints_gen_test.go @@ -449,14 +449,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/ram/service_endpoints_gen_test.go b/internal/service/ram/service_endpoints_gen_test.go index 8aedd0ec185..41d38bec2c0 100644 --- a/internal/service/ram/service_endpoints_gen_test.go +++ b/internal/service/ram/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/rbin/service_endpoints_gen_test.go b/internal/service/rbin/service_endpoints_gen_test.go index 1c933ec17b3..b65e7801dc8 100644 --- a/internal/service/rbin/service_endpoints_gen_test.go +++ b/internal/service/rbin/service_endpoints_gen_test.go @@ -529,14 +529,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/rds/cluster_test.go b/internal/service/rds/cluster_test.go index 897d4684125..b7d937c83f7 100644 --- a/internal/service/rds/cluster_test.go +++ b/internal/service/rds/cluster_test.go @@ -563,6 +563,37 @@ func TestAccRDSCluster_storageTypeIo2(t *testing.T) { }) } +func TestAccRDSCluster_storageTypeGeneralPurposeToProvisionedIOPS(t *testing.T) { + ctx := acctest.Context(t) + if testing.Short() { + t.Skip("skipping long-running test in short mode") + } + + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + resourceName := "aws_db_instance.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.RDSServiceID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckClusterDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccClusterConfig_storageChange(rName, "gp3"), + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttr(resourceName, names.AttrStorageType, "gp3"), + ), + }, + { + Config: testAccClusterConfig_storageChange(rName, "io2"), + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttr(resourceName, names.AttrStorageType, "io2"), + ), + }, + }, + }) +} + // For backwards compatibility, the control plane should always return a blank string even if sending "aurora" as the storage type func TestAccRDSCluster_storageTypeAuroraReturnsBlank(t *testing.T) { if testing.Short() { @@ -3393,6 +3424,35 @@ resource "aws_rds_cluster" "test" { `, tfrds.ClusterEngineMySQL, mainInstanceClasses, rName, sType)) } +func testAccClusterConfig_storageChange(rName string, sType string) string { + return acctest.ConfigCompose( + testAccConfig_ClusterSubnetGroup(rName), + fmt.Sprintf(` +data "aws_rds_orderable_db_instance" "test" { + engine = %[1]q + engine_latest_version = true + preferred_instance_classes = [%[2]s] + storage_type = %[4]q + supports_iops = true + supports_clusters = true +} + +resource "aws_db_instance" "test" { + apply_immediately = true + instance_class = data.aws_rds_orderable_db_instance.test.instance_class + db_subnet_group_name = aws_db_subnet_group.test.name + engine = data.aws_rds_orderable_db_instance.test.engine + engine_version = data.aws_rds_orderable_db_instance.test.engine_version + storage_type = data.aws_rds_orderable_db_instance.test.storage_type + allocated_storage = 400 + iops = 12000 + password = "mustbeeightcharaters" + username = "test" + skip_final_snapshot = true +} +`, tfrds.ClusterEnginePostgres, mainInstanceClasses, rName, sType)) +} + func testAccClusterConfig_allocatedStorage(rName string) string { return acctest.ConfigCompose( testAccConfig_ClusterSubnetGroup(rName), diff --git a/internal/service/rds/instance.go b/internal/service/rds/instance.go index 88bee073689..d220057be80 100644 --- a/internal/service/rds/instance.go +++ b/internal/service/rds/instance.go @@ -2587,7 +2587,14 @@ func dbInstancePopulateModify(input *rds.ModifyDBInstanceInput, d *schema.Resour needsModify = true input.StorageType = aws.String(d.Get(names.AttrStorageType).(string)) + // Need to send the iops and allocated_size if migrating to a gp3 volume that's larger than the threshold. + if aws.ToString(input.StorageType) == storageTypeGP3 && !isStorageTypeGP3BelowAllocatedStorageThreshold(d) { + input.AllocatedStorage = aws.Int32(int32(d.Get(names.AttrAllocatedStorage).(int))) + input.Iops = aws.Int32(int32(d.Get(names.AttrIOPS).(int))) + } + if slices.Contains([]string{storageTypeIO1, storageTypeIO2}, aws.ToString(input.StorageType)) { + input.AllocatedStorage = aws.Int32(int32(d.Get(names.AttrAllocatedStorage).(int))) input.Iops = aws.Int32(int32(d.Get(names.AttrIOPS).(int))) } } diff --git a/internal/service/rds/instance_test.go b/internal/service/rds/instance_test.go index e5c19c2ab75..61ad5a62631 100644 --- a/internal/service/rds/instance_test.go +++ b/internal/service/rds/instance_test.go @@ -3727,79 +3727,6 @@ func TestAccRDSInstance_MonitoringRoleARN_removedToEnabled(t *testing.T) { }) } -// Regression test for https://github.com/hashicorp/terraform/issues/3760 . -// We apply a plan, then change just the iops. If the apply succeeds, we -// consider this a pass, as before in 3760 the request would fail -func TestAccRDSInstance_Storage_separateIOPSUpdate_Io1(t *testing.T) { - ctx := acctest.Context(t) - if testing.Short() { - t.Skip("skipping long-running test in short mode") - } - - var v types.DBInstance - resourceName := "aws_db_instance.test" - rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) - - resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, names.RDSServiceID), - ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, - CheckDestroy: testAccCheckDBInstanceDestroy(ctx), - Steps: []resource.TestStep{ - { - Config: testAccInstanceConfig_iopsUpdate(rName, "io1", 1000), - Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckDBInstanceExists(ctx, resourceName, &v), - testAccCheckInstanceAttributes(&v), - ), - }, - - { - Config: testAccInstanceConfig_iopsUpdate(rName, "io1", 2000), - Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckDBInstanceExists(ctx, resourceName, &v), - testAccCheckInstanceAttributes(&v), - ), - }, - }, - }) -} - -func TestAccRDSInstance_Storage_separateIOPSUpdate_Io2(t *testing.T) { - ctx := acctest.Context(t) - if testing.Short() { - t.Skip("skipping long-running test in short mode") - } - - var v types.DBInstance - resourceName := "aws_db_instance.test" - rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) - - resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, names.RDSServiceID), - ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, - CheckDestroy: testAccCheckDBInstanceDestroy(ctx), - Steps: []resource.TestStep{ - { - Config: testAccInstanceConfig_iopsUpdate(rName, "io2", 1000), - Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckDBInstanceExists(ctx, resourceName, &v), - testAccCheckInstanceAttributes(&v), - ), - }, - - { - Config: testAccInstanceConfig_iopsUpdate(rName, "io2", 2000), - Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckDBInstanceExists(ctx, resourceName, &v), - testAccCheckInstanceAttributes(&v), - ), - }, - }, - }) -} - func TestAccRDSInstance_portUpdate(t *testing.T) { ctx := acctest.Context(t) if testing.Short() { @@ -4785,7 +4712,7 @@ func TestAccRDSInstance_SnapshotIdentifier_performanceInsightsEnabled(t *testing }) } -func TestAccRDSInstance_caCertificateIdentifier(t *testing.T) { +func TestAccRDSInstance_CACertificate_latest(t *testing.T) { ctx := acctest.Context(t) if testing.Short() { t.Skip("skipping long-running test in short mode") @@ -4803,7 +4730,7 @@ func TestAccRDSInstance_caCertificateIdentifier(t *testing.T) { CheckDestroy: testAccCheckDBInstanceDestroy(ctx), Steps: []resource.TestStep{ { - Config: testAccInstanceConfig_caCertificateID(rName), + Config: testAccInstanceConfig_CACertificate_latest(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckDBInstanceExists(ctx, resourceName, &v), resource.TestCheckResourceAttrPair(resourceName, "ca_cert_identifier", dataSourceName, names.AttrID), @@ -4813,6 +4740,40 @@ func TestAccRDSInstance_caCertificateIdentifier(t *testing.T) { }) } +func TestAccRDSInstance_CACertificate_update(t *testing.T) { + ctx := acctest.Context(t) + if testing.Short() { + t.Skip("skipping long-running test in short mode") + } + + var v types.DBInstance + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + resourceName := "aws_db_instance.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.RDSServiceID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckDBInstanceDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccInstanceConfig_CACertificate_update(rName, "rds-ca-ecc384-g1"), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckDBInstanceExists(ctx, resourceName, &v), + resource.TestCheckResourceAttr(resourceName, "ca_cert_identifier", "rds-ca-ecc384-g1"), + ), + }, + { + Config: testAccInstanceConfig_CACertificate_update(rName, "rds-ca-rsa2048-g1"), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckDBInstanceExists(ctx, resourceName, &v), + resource.TestCheckResourceAttr(resourceName, "ca_cert_identifier", "rds-ca-rsa2048-g1"), + ), + }, + }, + }) +} + func TestAccRDSInstance_RestoreToPointInTime_sourceIdentifier(t *testing.T) { ctx := acctest.Context(t) if testing.Short() { @@ -6126,7 +6087,7 @@ func TestAccRDSInstance_Storage_changeThroughput(t *testing.T) { CheckDestroy: testAccCheckDBInstanceDestroy(ctx), Steps: []resource.TestStep{ { - Config: testAccInstanceConfig_Storage_throughput(rName, 12000, 500), + Config: testAccInstanceConfig_Storage_iopsThroughputMySQLGP3(rName, 12000, 500), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckDBInstanceExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, names.AttrIOPS, "12000"), @@ -6135,7 +6096,7 @@ func TestAccRDSInstance_Storage_changeThroughput(t *testing.T) { ), }, { - Config: testAccInstanceConfig_Storage_throughput(rName, 12000, 600), + Config: testAccInstanceConfig_Storage_iopsThroughputMySQLGP3(rName, 12000, 600), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckDBInstanceExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, names.AttrIOPS, "12000"), @@ -6165,7 +6126,7 @@ func TestAccRDSInstance_Storage_changeIOPSThroughput(t *testing.T) { CheckDestroy: testAccCheckDBInstanceDestroy(ctx), Steps: []resource.TestStep{ { - Config: testAccInstanceConfig_Storage_throughput(rName, 12000, 500), + Config: testAccInstanceConfig_Storage_iopsThroughputMySQLGP3(rName, 12000, 500), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckDBInstanceExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, names.AttrIOPS, "12000"), @@ -6174,7 +6135,7 @@ func TestAccRDSInstance_Storage_changeIOPSThroughput(t *testing.T) { ), }, { - Config: testAccInstanceConfig_Storage_throughput(rName, 13000, 600), + Config: testAccInstanceConfig_Storage_iopsThroughputMySQLGP3(rName, 13000, 600), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckDBInstanceExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, names.AttrIOPS, "13000"), @@ -6187,7 +6148,7 @@ func TestAccRDSInstance_Storage_changeIOPSThroughput(t *testing.T) { } // https://github.com/hashicorp/terraform-provider-aws/issues/33512 -func TestAccRDSInstance_Storage_changeIOPS(t *testing.T) { +func TestAccRDSInstance_Storage_changeIOPSGP3(t *testing.T) { ctx := acctest.Context(t) if testing.Short() { t.Skip("skipping long-running test in short mode") @@ -6204,7 +6165,7 @@ func TestAccRDSInstance_Storage_changeIOPS(t *testing.T) { CheckDestroy: testAccCheckDBInstanceDestroy(ctx), Steps: []resource.TestStep{ { - Config: testAccInstanceConfig_Storage_throughput(rName, 12000, 500), + Config: testAccInstanceConfig_Storage_iopsThroughputMySQLGP3(rName, 12000, 500), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckDBInstanceExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, names.AttrIOPS, "12000"), @@ -6213,10 +6174,10 @@ func TestAccRDSInstance_Storage_changeIOPS(t *testing.T) { ), }, { - Config: testAccInstanceConfig_Storage_throughput(rName, 13000, 500), + Config: testAccInstanceConfig_Storage_iopsThroughputMySQLGP3(rName, 14000, 500), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckDBInstanceExists(ctx, resourceName, &v), - resource.TestCheckResourceAttr(resourceName, names.AttrIOPS, "13000"), + resource.TestCheckResourceAttr(resourceName, names.AttrIOPS, "14000"), resource.TestCheckResourceAttr(resourceName, "storage_throughput", "500"), resource.TestCheckResourceAttr(resourceName, names.AttrStorageType, "gp3"), ), @@ -6264,7 +6225,7 @@ func TestAccRDSInstance_Storage_throughputSSE(t *testing.T) { }) } -func TestAccRDSInstance_Storage_typePostgres(t *testing.T) { +func TestAccRDSInstance_Storage_postgres(t *testing.T) { ctx := acctest.Context(t) if testing.Short() { t.Skip("skipping long-running test in short mode") @@ -6281,7 +6242,7 @@ func TestAccRDSInstance_Storage_typePostgres(t *testing.T) { CheckDestroy: testAccCheckDBInstanceDestroy(ctx), Steps: []resource.TestStep{ { - Config: testAccInstanceConfig_Storage_typePostgres(rName, "gp2", 200), + Config: testAccInstanceConfig_Storage_postgres(rName, "gp2", 200), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckDBInstanceExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, names.AttrAllocatedStorage, "200"), @@ -6304,7 +6265,7 @@ func TestAccRDSInstance_Storage_typePostgres(t *testing.T) { }, }, { - Config: testAccInstanceConfig_Storage_typePostgres(rName, "gp3", 300), + Config: testAccInstanceConfig_Storage_postgres(rName, "gp3", 300), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckDBInstanceExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, names.AttrAllocatedStorage, "300"), @@ -6317,7 +6278,80 @@ func TestAccRDSInstance_Storage_typePostgres(t *testing.T) { }) } -func TestAccRDSInstance_newIdentifier_Pending(t *testing.T) { +// Regression test for https://github.com/hashicorp/terraform/issues/3760 . +// We apply a plan, then change just the iops. If the apply succeeds, we +// consider this a pass, as before in 3760 the request would fail +func TestAccRDSInstance_Storage_changeIOPSio1(t *testing.T) { + ctx := acctest.Context(t) + if testing.Short() { + t.Skip("skipping long-running test in short mode") + } + + var v types.DBInstance + resourceName := "aws_db_instance.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.RDSServiceID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckDBInstanceDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccInstanceConfig_iopsUpdate(rName, "io1", 1000), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckDBInstanceExists(ctx, resourceName, &v), + testAccCheckInstanceAttributes(&v), + ), + }, + + { + Config: testAccInstanceConfig_iopsUpdate(rName, "io1", 2000), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckDBInstanceExists(ctx, resourceName, &v), + testAccCheckInstanceAttributes(&v), + ), + }, + }, + }) +} + +func TestAccRDSInstance_Storage_changeIOPSio2(t *testing.T) { + ctx := acctest.Context(t) + if testing.Short() { + t.Skip("skipping long-running test in short mode") + } + + var v types.DBInstance + resourceName := "aws_db_instance.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.RDSServiceID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckDBInstanceDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccInstanceConfig_iopsUpdate(rName, "io2", 1000), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckDBInstanceExists(ctx, resourceName, &v), + testAccCheckInstanceAttributes(&v), + ), + }, + + { + Config: testAccInstanceConfig_iopsUpdate(rName, "io2", 2000), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckDBInstanceExists(ctx, resourceName, &v), + testAccCheckInstanceAttributes(&v), + ), + }, + }, + }) +} + +func TestAccRDSInstance_NewIdentifier_pending(t *testing.T) { ctx := acctest.Context(t) if testing.Short() { t.Skip("skipping long-running test in short mode") @@ -6363,7 +6397,7 @@ func TestAccRDSInstance_newIdentifier_Pending(t *testing.T) { }) } -func TestAccRDSInstance_newIdentifier_Immediately(t *testing.T) { +func TestAccRDSInstance_NewIdentifier_immediately(t *testing.T) { ctx := acctest.Context(t) if testing.Short() { t.Skip("skipping long-running test in short mode") @@ -7135,7 +7169,7 @@ resource "aws_db_instance" "test" { `, rName)) } -func testAccInstanceConfig_caCertificateID(rName string) string { +func testAccInstanceConfig_CACertificate_latest(rName string) string { return acctest.ConfigCompose(testAccInstanceConfig_orderableClassMySQL(), fmt.Sprintf(` data "aws_rds_certificate" "latest" { latest_valid_till = true @@ -7156,6 +7190,23 @@ resource "aws_db_instance" "test" { `, rName)) } +func testAccInstanceConfig_CACertificate_update(rName, cert string) string { + return acctest.ConfigCompose(testAccInstanceConfig_orderableClassMySQL(), fmt.Sprintf(` +resource "aws_db_instance" "test" { + identifier = %[1]q + allocated_storage = 10 + apply_immediately = true + ca_cert_identifier = %[2]q + engine = data.aws_rds_orderable_db_instance.test.engine + instance_class = data.aws_rds_orderable_db_instance.test.instance_class + db_name = "test" + skip_final_snapshot = true + password = "avoid-plaintext-passwords" + username = "tfacctest" +} +`, rName, cert)) +} + func testAccInstanceConfig_iamAuth(rName string) string { return fmt.Sprintf(` data "aws_rds_engine_version" "default" { @@ -10187,6 +10238,10 @@ data "aws_rds_orderable_db_instance" "test" { preferred_instance_classes = [%[2]s] } +data "aws_rds_certificate" "latest" { + latest_valid_till = true +} + resource "aws_db_instance" "source" { identifier = "%[3]s-source" allocated_storage = 20 @@ -10206,7 +10261,7 @@ resource "aws_db_instance" "source" { timeouts { update = "120m" } - ca_cert_identifier = "rds-ca-2019" + ca_cert_identifier = data.aws_rds_certificate.latest.id } `, tfrds.InstanceEngineOracleEnterprise, strings.Replace(mainInstanceClasses, "db.t3.small", "frodo", 1), rName) } @@ -10224,7 +10279,7 @@ resource "aws_db_instance" "test" { apply_immediately = true parameter_group_name = aws_db_parameter_group.test.name - ca_cert_identifier = "rds-ca-2019" + ca_cert_identifier = data.aws_rds_certificate.latest.id timeouts { update = "120m" @@ -12480,7 +12535,7 @@ resource "aws_db_instance" "test" { `, rName, tfrds.InstanceEngineSQLServerExpress, allocatedStorage)) } -func testAccInstanceConfig_Storage_throughput(rName string, iops, throughput int) string { +func testAccInstanceConfig_Storage_iopsThroughputMySQLGP3(rName string, iops, throughput int) string { return acctest.ConfigCompose( testAccInstanceConfig_orderableClassMySQLGP3(), fmt.Sprintf(` @@ -12540,7 +12595,7 @@ resource "aws_db_instance" "test" { `, tfrds.InstanceEngineSQLServerStandard, mainInstanceClasses, rName, iops, throughput) } -func testAccInstanceConfig_Storage_typePostgres(rName string, storageType string, allocatedStorage int) string { +func testAccInstanceConfig_Storage_postgres(rName string, storageType string, allocatedStorage int) string { return fmt.Sprintf(` data "aws_rds_engine_version" "default" { engine = %[1]q diff --git a/internal/service/rds/reserved_instance_offering_data_source.go b/internal/service/rds/reserved_instance_offering_data_source.go index c973eaccf06..a9a0cd606d4 100644 --- a/internal/service/rds/reserved_instance_offering_data_source.go +++ b/internal/service/rds/reserved_instance_offering_data_source.go @@ -81,8 +81,12 @@ func dataSourceReservedOfferingRead(ctx context.Context, d *schema.ResourceData, ProductDescription: aws.String(d.Get("product_description").(string)), } - offering, err := findReservedDBInstancesOffering(ctx, conn, input, tfslices.PredicateTrue[*types.ReservedDBInstancesOffering]()) - + // A filter is necessary because the API returns all products where the product description contains + // the input product description. Sending "mysql" will return "mysql" *and* "aurora-mysql" offerings, + // causing an error: multiple RDS Reserved Instance Offerings matched + offering, err := findReservedDBInstancesOffering(ctx, conn, input, func(v *types.ReservedDBInstancesOffering) bool { + return aws.ToString(v.ProductDescription) == d.Get("product_description").(string) && aws.ToString(v.DBInstanceClass) == d.Get("db_instance_class").(string) + }) if err != nil { return sdkdiag.AppendFromErr(diags, tfresource.SingularDataSourceFindError("RDS Reserved Instance Offering", err)) } @@ -103,7 +107,6 @@ func dataSourceReservedOfferingRead(ctx context.Context, d *schema.ResourceData, func findReservedDBInstancesOffering(ctx context.Context, conn *rds.Client, input *rds.DescribeReservedDBInstancesOfferingsInput, filter tfslices.Predicate[*types.ReservedDBInstancesOffering]) (*types.ReservedDBInstancesOffering, error) { output, err := findReservedDBInstancesOfferings(ctx, conn, input, filter) - if err != nil { return nil, err } diff --git a/internal/service/rds/reserved_instance_offering_data_source_test.go b/internal/service/rds/reserved_instance_offering_data_source_test.go index 2eb343f8f9a..ad1e80cc278 100644 --- a/internal/service/rds/reserved_instance_offering_data_source_test.go +++ b/internal/service/rds/reserved_instance_offering_data_source_test.go @@ -4,6 +4,7 @@ package rds_test import ( + "fmt" "testing" "github.com/hashicorp/terraform-plugin-testing/helper/resource" @@ -11,7 +12,50 @@ import ( "github.com/hashicorp/terraform-provider-aws/names" ) -func TestAccRDSInstanceOffering_basic(t *testing.T) { +const ( + testInstanceClass = "db.r5.large" +) + +func TestAccRDSReservedInstanceOffering_basic(t *testing.T) { + ctx := acctest.Context(t) + dataSourceName := "data.aws_rds_reserved_instance_offering.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ErrorCheck: acctest.ErrorCheck(t, names.RDSServiceID), + Steps: []resource.TestStep{ + { + Config: testAccReservedInstanceOfferingConfig_basic(testInstanceClass, "postgresql"), + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttrSet(dataSourceName, "currency_code"), + resource.TestCheckResourceAttr(dataSourceName, "db_instance_class", testInstanceClass), + resource.TestCheckResourceAttr(dataSourceName, names.AttrDuration, "31536000"), + resource.TestCheckResourceAttrSet(dataSourceName, "fixed_price"), + resource.TestCheckResourceAttr(dataSourceName, "multi_az", acctest.CtFalse), + resource.TestCheckResourceAttrSet(dataSourceName, "offering_id"), + resource.TestCheckResourceAttr(dataSourceName, "offering_type", "All Upfront"), + resource.TestCheckResourceAttr(dataSourceName, "product_description", "postgresql"), + ), + }, + { + Config: testAccReservedInstanceOfferingConfig_basic(testInstanceClass, "aurora-postgresql"), + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttrSet(dataSourceName, "currency_code"), + resource.TestCheckResourceAttr(dataSourceName, "db_instance_class", testInstanceClass), + resource.TestCheckResourceAttr(dataSourceName, names.AttrDuration, "31536000"), + resource.TestCheckResourceAttrSet(dataSourceName, "fixed_price"), + resource.TestCheckResourceAttr(dataSourceName, "multi_az", acctest.CtFalse), + resource.TestCheckResourceAttrSet(dataSourceName, "offering_id"), + resource.TestCheckResourceAttr(dataSourceName, "offering_type", "All Upfront"), + resource.TestCheckResourceAttr(dataSourceName, "product_description", "aurora-postgresql"), + ), + }, + }, + }) +} + +func TestAccRDSReservedInstanceOffering_mysql(t *testing.T) { ctx := acctest.Context(t) dataSourceName := "data.aws_rds_reserved_instance_offering.test" @@ -21,10 +65,10 @@ func TestAccRDSInstanceOffering_basic(t *testing.T) { ErrorCheck: acctest.ErrorCheck(t, names.RDSServiceID), Steps: []resource.TestStep{ { - Config: testAccInstanceOfferingConfig_basic(), + Config: testAccReservedInstanceOfferingConfig_basic(testInstanceClass, "mysql"), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrSet(dataSourceName, "currency_code"), - resource.TestCheckResourceAttr(dataSourceName, "db_instance_class", "db.t2.micro"), + resource.TestCheckResourceAttr(dataSourceName, "db_instance_class", testInstanceClass), resource.TestCheckResourceAttr(dataSourceName, names.AttrDuration, "31536000"), resource.TestCheckResourceAttrSet(dataSourceName, "fixed_price"), resource.TestCheckResourceAttr(dataSourceName, "multi_az", acctest.CtFalse), @@ -33,18 +77,31 @@ func TestAccRDSInstanceOffering_basic(t *testing.T) { resource.TestCheckResourceAttr(dataSourceName, "product_description", "mysql"), ), }, + { + Config: testAccReservedInstanceOfferingConfig_basic(testInstanceClass, "aurora-mysql"), + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttrSet(dataSourceName, "currency_code"), + resource.TestCheckResourceAttr(dataSourceName, "db_instance_class", testInstanceClass), + resource.TestCheckResourceAttr(dataSourceName, names.AttrDuration, "31536000"), + resource.TestCheckResourceAttrSet(dataSourceName, "fixed_price"), + resource.TestCheckResourceAttr(dataSourceName, "multi_az", acctest.CtFalse), + resource.TestCheckResourceAttrSet(dataSourceName, "offering_id"), + resource.TestCheckResourceAttr(dataSourceName, "offering_type", "All Upfront"), + resource.TestCheckResourceAttr(dataSourceName, "product_description", "aurora-mysql"), + ), + }, }, }) } -func testAccInstanceOfferingConfig_basic() string { - return ` +func testAccReservedInstanceOfferingConfig_basic(class, desc string) string { + return fmt.Sprintf(` data "aws_rds_reserved_instance_offering" "test" { - db_instance_class = "db.t2.micro" + db_instance_class = %[1]q duration = 31536000 multi_az = false offering_type = "All Upfront" - product_description = "mysql" + product_description = %[2]q } -` +`, class, desc) } diff --git a/internal/service/rds/service_endpoints_gen_test.go b/internal/service/rds/service_endpoints_gen_test.go index 8a6dadf2367..9618c378606 100644 --- a/internal/service/rds/service_endpoints_gen_test.go +++ b/internal/service/rds/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/redshift/service_endpoints_gen_test.go b/internal/service/redshift/service_endpoints_gen_test.go index 65b75cbc57e..3e8b72a82ce 100644 --- a/internal/service/redshift/service_endpoints_gen_test.go +++ b/internal/service/redshift/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/redshiftdata/service_endpoints_gen_test.go b/internal/service/redshiftdata/service_endpoints_gen_test.go index b367764e86e..fc86a37801e 100644 --- a/internal/service/redshiftdata/service_endpoints_gen_test.go +++ b/internal/service/redshiftdata/service_endpoints_gen_test.go @@ -528,14 +528,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/redshiftserverless/service_endpoints_gen_test.go b/internal/service/redshiftserverless/service_endpoints_gen_test.go index 16c8901dcdd..da620ff9712 100644 --- a/internal/service/redshiftserverless/service_endpoints_gen_test.go +++ b/internal/service/redshiftserverless/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/rekognition/service_endpoints_gen_test.go b/internal/service/rekognition/service_endpoints_gen_test.go index 49e2d4acd86..c0fa50dd7f4 100644 --- a/internal/service/rekognition/service_endpoints_gen_test.go +++ b/internal/service/rekognition/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/resiliencehub/service_endpoints_gen_test.go b/internal/service/resiliencehub/service_endpoints_gen_test.go index baf29d605d0..b31ccfd5e02 100644 --- a/internal/service/resiliencehub/service_endpoints_gen_test.go +++ b/internal/service/resiliencehub/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/resourceexplorer2/service_endpoints_gen_test.go b/internal/service/resourceexplorer2/service_endpoints_gen_test.go index 211f81a37ec..59d4d24f8a2 100644 --- a/internal/service/resourceexplorer2/service_endpoints_gen_test.go +++ b/internal/service/resourceexplorer2/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/resourcegroups/service_endpoints_gen_test.go b/internal/service/resourcegroups/service_endpoints_gen_test.go index bf6d24625aa..f6223e4741f 100644 --- a/internal/service/resourcegroups/service_endpoints_gen_test.go +++ b/internal/service/resourcegroups/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/resourcegroupstaggingapi/service_endpoints_gen_test.go b/internal/service/resourcegroupstaggingapi/service_endpoints_gen_test.go index bfdcc6909f1..575bd2b1d70 100644 --- a/internal/service/resourcegroupstaggingapi/service_endpoints_gen_test.go +++ b/internal/service/resourcegroupstaggingapi/service_endpoints_gen_test.go @@ -526,14 +526,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/rolesanywhere/service_endpoints_gen_test.go b/internal/service/rolesanywhere/service_endpoints_gen_test.go index aa2984b5af4..3757d6725d2 100644 --- a/internal/service/rolesanywhere/service_endpoints_gen_test.go +++ b/internal/service/rolesanywhere/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/route53/service_endpoints_gen_test.go b/internal/service/route53/service_endpoints_gen_test.go index c99e9a86c2b..938634472c6 100644 --- a/internal/service/route53/service_endpoints_gen_test.go +++ b/internal/service/route53/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/route53domains/service_endpoints_gen_test.go b/internal/service/route53domains/service_endpoints_gen_test.go index eef4df7704a..27fbd43060d 100644 --- a/internal/service/route53domains/service_endpoints_gen_test.go +++ b/internal/service/route53domains/service_endpoints_gen_test.go @@ -448,14 +448,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/route53recoverycontrolconfig/service_endpoints_gen_test.go b/internal/service/route53recoverycontrolconfig/service_endpoints_gen_test.go index c3f0a6d57fa..e705a328409 100644 --- a/internal/service/route53recoverycontrolconfig/service_endpoints_gen_test.go +++ b/internal/service/route53recoverycontrolconfig/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/route53recoveryreadiness/service_endpoints_gen_test.go b/internal/service/route53recoveryreadiness/service_endpoints_gen_test.go index 854b1c2350b..ad42a20c5b7 100644 --- a/internal/service/route53recoveryreadiness/service_endpoints_gen_test.go +++ b/internal/service/route53recoveryreadiness/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/route53resolver/service_endpoints_gen_test.go b/internal/service/route53resolver/service_endpoints_gen_test.go index 7da8273ca84..ee0c9573211 100644 --- a/internal/service/route53resolver/service_endpoints_gen_test.go +++ b/internal/service/route53resolver/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/rum/service_endpoints_gen_test.go b/internal/service/rum/service_endpoints_gen_test.go index 34f4c585da7..85928df9970 100644 --- a/internal/service/rum/service_endpoints_gen_test.go +++ b/internal/service/rum/service_endpoints_gen_test.go @@ -526,14 +526,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/s3/bucket_lifecycle_configuration_test.go b/internal/service/s3/bucket_lifecycle_configuration_test.go index e6aac6b1cfc..1064fe4ca50 100644 --- a/internal/service/s3/bucket_lifecycle_configuration_test.go +++ b/internal/service/s3/bucket_lifecycle_configuration_test.go @@ -9,7 +9,6 @@ import ( "testing" "time" - "github.com/YakDriver/regexache" "github.com/aws/aws-sdk-go-v2/service/s3/types" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" @@ -1053,6 +1052,7 @@ func TestAccS3BucketLifecycleConfiguration_Update_filterWithAndToFilterWithPrefi func TestAccS3BucketLifecycleConfiguration_directoryBucket(t *testing.T) { ctx := acctest.Context(t) rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + resourceName := "aws_s3_bucket_lifecycle_configuration.test" resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) }, @@ -1061,8 +1061,20 @@ func TestAccS3BucketLifecycleConfiguration_directoryBucket(t *testing.T) { CheckDestroy: testAccCheckBucketLifecycleConfigurationDestroy(ctx), Steps: []resource.TestStep{ { - Config: testAccBucketLifecycleConfigurationConfig_directoryBucket(rName), - ExpectError: regexache.MustCompile(`MethodNotAllowed: The specified method is not allowed against this resource`), + Config: testAccBucketLifecycleConfigurationConfig_directoryBucket(rName), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckBucketLifecycleConfigurationExists(ctx, resourceName), + resource.TestCheckResourceAttrPair(resourceName, names.AttrBucket, "aws_s3_directory_bucket.test", names.AttrBucket), + resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), + resource.TestCheckResourceAttr(resourceName, "rule.0.status", "Enabled"), + resource.TestCheckResourceAttr(resourceName, "rule.0.expiration.#", "1"), + resource.TestCheckResourceAttr(resourceName, "rule.0.expiration.0.days", "365"), + ), + }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, }, }, }) diff --git a/internal/service/s3/service_endpoints_gen_test.go b/internal/service/s3/service_endpoints_gen_test.go index 4b9d357b354..069757a06ac 100644 --- a/internal/service/s3/service_endpoints_gen_test.go +++ b/internal/service/s3/service_endpoints_gen_test.go @@ -678,14 +678,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/s3outposts/service_endpoints_gen_test.go b/internal/service/s3outposts/service_endpoints_gen_test.go index 39714787d68..801a9e7b9a0 100644 --- a/internal/service/s3outposts/service_endpoints_gen_test.go +++ b/internal/service/s3outposts/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/sagemaker/service_endpoints_gen_test.go b/internal/service/sagemaker/service_endpoints_gen_test.go index 9aed3fb2303..a6a89855b33 100644 --- a/internal/service/sagemaker/service_endpoints_gen_test.go +++ b/internal/service/sagemaker/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/scheduler/service_endpoints_gen_test.go b/internal/service/scheduler/service_endpoints_gen_test.go index a6b5ed0cd10..832f4768991 100644 --- a/internal/service/scheduler/service_endpoints_gen_test.go +++ b/internal/service/scheduler/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/schemas/service_endpoints_gen_test.go b/internal/service/schemas/service_endpoints_gen_test.go index 7d72eb7e8df..1ef015fab9c 100644 --- a/internal/service/schemas/service_endpoints_gen_test.go +++ b/internal/service/schemas/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/secretsmanager/service_endpoints_gen_test.go b/internal/service/secretsmanager/service_endpoints_gen_test.go index 5381fd42941..a678e411d31 100644 --- a/internal/service/secretsmanager/service_endpoints_gen_test.go +++ b/internal/service/secretsmanager/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/securityhub/service_endpoints_gen_test.go b/internal/service/securityhub/service_endpoints_gen_test.go index 5048484f751..a5016a78224 100644 --- a/internal/service/securityhub/service_endpoints_gen_test.go +++ b/internal/service/securityhub/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/securitylake/service_endpoints_gen_test.go b/internal/service/securitylake/service_endpoints_gen_test.go index 47e5b8fa904..a025c31ebfa 100644 --- a/internal/service/securitylake/service_endpoints_gen_test.go +++ b/internal/service/securitylake/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/serverlessrepo/service_endpoints_gen_test.go b/internal/service/serverlessrepo/service_endpoints_gen_test.go index 0221d9496a6..13a395f0a39 100644 --- a/internal/service/serverlessrepo/service_endpoints_gen_test.go +++ b/internal/service/serverlessrepo/service_endpoints_gen_test.go @@ -603,14 +603,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/servicecatalog/service_endpoints_gen_test.go b/internal/service/servicecatalog/service_endpoints_gen_test.go index bf5ffc3d0fa..e0eabae2324 100644 --- a/internal/service/servicecatalog/service_endpoints_gen_test.go +++ b/internal/service/servicecatalog/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/servicecatalogappregistry/service_endpoints_gen_test.go b/internal/service/servicecatalogappregistry/service_endpoints_gen_test.go index fcf3b29af89..b09df78fb4b 100644 --- a/internal/service/servicecatalogappregistry/service_endpoints_gen_test.go +++ b/internal/service/servicecatalogappregistry/service_endpoints_gen_test.go @@ -526,14 +526,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/servicediscovery/service_endpoints_gen_test.go b/internal/service/servicediscovery/service_endpoints_gen_test.go index 286d5b863a1..49dd5a4ca8b 100644 --- a/internal/service/servicediscovery/service_endpoints_gen_test.go +++ b/internal/service/servicediscovery/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/servicequotas/service_endpoints_gen_test.go b/internal/service/servicequotas/service_endpoints_gen_test.go index e7ce9f9441c..afe671df671 100644 --- a/internal/service/servicequotas/service_endpoints_gen_test.go +++ b/internal/service/servicequotas/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/ses/service_endpoints_gen_test.go b/internal/service/ses/service_endpoints_gen_test.go index 0e5de43ae24..2003c94a17d 100644 --- a/internal/service/ses/service_endpoints_gen_test.go +++ b/internal/service/ses/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/sesv2/service_endpoints_gen_test.go b/internal/service/sesv2/service_endpoints_gen_test.go index 32c34eadf7d..c5c901c9b4b 100644 --- a/internal/service/sesv2/service_endpoints_gen_test.go +++ b/internal/service/sesv2/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/sfn/service_endpoints_gen_test.go b/internal/service/sfn/service_endpoints_gen_test.go index b597f73a0f4..8929acbae15 100644 --- a/internal/service/sfn/service_endpoints_gen_test.go +++ b/internal/service/sfn/service_endpoints_gen_test.go @@ -526,14 +526,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/shield/service_endpoints_gen_test.go b/internal/service/shield/service_endpoints_gen_test.go index e253983b2b3..fb38f536e3d 100644 --- a/internal/service/shield/service_endpoints_gen_test.go +++ b/internal/service/shield/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/signer/service_endpoints_gen_test.go b/internal/service/signer/service_endpoints_gen_test.go index 1417f066054..b05fdec7081 100644 --- a/internal/service/signer/service_endpoints_gen_test.go +++ b/internal/service/signer/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/sns/service_endpoints_gen_test.go b/internal/service/sns/service_endpoints_gen_test.go index 029dbe90783..307754c9c25 100644 --- a/internal/service/sns/service_endpoints_gen_test.go +++ b/internal/service/sns/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/sqs/service_endpoints_gen_test.go b/internal/service/sqs/service_endpoints_gen_test.go index 0ff8978e191..c177070ccd3 100644 --- a/internal/service/sqs/service_endpoints_gen_test.go +++ b/internal/service/sqs/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/ssm/service_endpoints_gen_test.go b/internal/service/ssm/service_endpoints_gen_test.go index 146052a71c5..f9d303ea2f8 100644 --- a/internal/service/ssm/service_endpoints_gen_test.go +++ b/internal/service/ssm/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/ssmcontacts/service_endpoints_gen_test.go b/internal/service/ssmcontacts/service_endpoints_gen_test.go index 4c86b377747..a2eac6f33c5 100644 --- a/internal/service/ssmcontacts/service_endpoints_gen_test.go +++ b/internal/service/ssmcontacts/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/ssmincidents/service_endpoints_gen_test.go b/internal/service/ssmincidents/service_endpoints_gen_test.go index 0c1b1781e5d..a3386dac68a 100644 --- a/internal/service/ssmincidents/service_endpoints_gen_test.go +++ b/internal/service/ssmincidents/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/ssmquicksetup/service_endpoints_gen_test.go b/internal/service/ssmquicksetup/service_endpoints_gen_test.go index 4f351792957..d96cab74acf 100644 --- a/internal/service/ssmquicksetup/service_endpoints_gen_test.go +++ b/internal/service/ssmquicksetup/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/ssmsap/service_endpoints_gen_test.go b/internal/service/ssmsap/service_endpoints_gen_test.go index be0cfe0fa7e..92641d00724 100644 --- a/internal/service/ssmsap/service_endpoints_gen_test.go +++ b/internal/service/ssmsap/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/sso/service_endpoints_gen_test.go b/internal/service/sso/service_endpoints_gen_test.go index d5d40e5c62d..721a424de6c 100644 --- a/internal/service/sso/service_endpoints_gen_test.go +++ b/internal/service/sso/service_endpoints_gen_test.go @@ -448,14 +448,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/ssoadmin/service_endpoints_gen_test.go b/internal/service/ssoadmin/service_endpoints_gen_test.go index 0cd8bcb969a..457846bff5e 100644 --- a/internal/service/ssoadmin/service_endpoints_gen_test.go +++ b/internal/service/ssoadmin/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/storagegateway/service_endpoints_gen_test.go b/internal/service/storagegateway/service_endpoints_gen_test.go index 14833be2cba..258bf851026 100644 --- a/internal/service/storagegateway/service_endpoints_gen_test.go +++ b/internal/service/storagegateway/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/sts/service_endpoints_gen_test.go b/internal/service/sts/service_endpoints_gen_test.go index d7a759d0ff7..575629852b2 100644 --- a/internal/service/sts/service_endpoints_gen_test.go +++ b/internal/service/sts/service_endpoints_gen_test.go @@ -584,14 +584,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/swf/service_endpoints_gen_test.go b/internal/service/swf/service_endpoints_gen_test.go index 3770ef7dce3..b875e94201f 100644 --- a/internal/service/swf/service_endpoints_gen_test.go +++ b/internal/service/swf/service_endpoints_gen_test.go @@ -448,14 +448,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/synthetics/service_endpoints_gen_test.go b/internal/service/synthetics/service_endpoints_gen_test.go index 197e0e958c1..ca753d947fb 100644 --- a/internal/service/synthetics/service_endpoints_gen_test.go +++ b/internal/service/synthetics/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/taxsettings/service_endpoints_gen_test.go b/internal/service/taxsettings/service_endpoints_gen_test.go index 4c737598da7..c5aea02bcbb 100644 --- a/internal/service/taxsettings/service_endpoints_gen_test.go +++ b/internal/service/taxsettings/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/timestreaminfluxdb/service_endpoints_gen_test.go b/internal/service/timestreaminfluxdb/service_endpoints_gen_test.go index e09334e09a8..343dd9f8e2f 100644 --- a/internal/service/timestreaminfluxdb/service_endpoints_gen_test.go +++ b/internal/service/timestreaminfluxdb/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/transcribe/service_endpoints_gen_test.go b/internal/service/transcribe/service_endpoints_gen_test.go index 20ce4111b72..7264758710e 100644 --- a/internal/service/transcribe/service_endpoints_gen_test.go +++ b/internal/service/transcribe/service_endpoints_gen_test.go @@ -526,14 +526,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/transfer/service_endpoints_gen_test.go b/internal/service/transfer/service_endpoints_gen_test.go index 703702f3ed4..b06fbada878 100644 --- a/internal/service/transfer/service_endpoints_gen_test.go +++ b/internal/service/transfer/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/verifiedpermissions/service_endpoints_gen_test.go b/internal/service/verifiedpermissions/service_endpoints_gen_test.go index fb87621a74e..e7d767882d2 100644 --- a/internal/service/verifiedpermissions/service_endpoints_gen_test.go +++ b/internal/service/verifiedpermissions/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/vpclattice/service_endpoints_gen_test.go b/internal/service/vpclattice/service_endpoints_gen_test.go index d3eca383193..5ddc2605126 100644 --- a/internal/service/vpclattice/service_endpoints_gen_test.go +++ b/internal/service/vpclattice/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/waf/service_endpoints_gen_test.go b/internal/service/waf/service_endpoints_gen_test.go index 9d3d5d968b2..d240a73737f 100644 --- a/internal/service/waf/service_endpoints_gen_test.go +++ b/internal/service/waf/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/wafregional/service_endpoints_gen_test.go b/internal/service/wafregional/service_endpoints_gen_test.go index 91cdb80f679..d2ce9e1fc8d 100644 --- a/internal/service/wafregional/service_endpoints_gen_test.go +++ b/internal/service/wafregional/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/wafv2/service_endpoints_gen_test.go b/internal/service/wafv2/service_endpoints_gen_test.go index 2946c9e85ef..fac47ef508a 100644 --- a/internal/service/wafv2/service_endpoints_gen_test.go +++ b/internal/service/wafv2/service_endpoints_gen_test.go @@ -449,14 +449,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/wellarchitected/service_endpoints_gen_test.go b/internal/service/wellarchitected/service_endpoints_gen_test.go index b87b57105cb..3c67298f49d 100644 --- a/internal/service/wellarchitected/service_endpoints_gen_test.go +++ b/internal/service/wellarchitected/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/worklink/service_endpoints_gen_test.go b/internal/service/worklink/service_endpoints_gen_test.go index aa464604a7d..ec7330b8ece 100644 --- a/internal/service/worklink/service_endpoints_gen_test.go +++ b/internal/service/worklink/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/workspaces/service_endpoints_gen_test.go b/internal/service/workspaces/service_endpoints_gen_test.go index 08f5e550afe..affd4f253cf 100644 --- a/internal/service/workspaces/service_endpoints_gen_test.go +++ b/internal/service/workspaces/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/workspacesweb/service_endpoints_gen_test.go b/internal/service/workspacesweb/service_endpoints_gen_test.go index f07d70b956c..a4f6f0e89f8 100644 --- a/internal/service/workspacesweb/service_endpoints_gen_test.go +++ b/internal/service/workspacesweb/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/xray/service_endpoints_gen_test.go b/internal/service/xray/service_endpoints_gen_test.go index 7d153eedbc3..476a77a92df 100644 --- a/internal/service/xray/service_endpoints_gen_test.go +++ b/internal/service/xray/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/sweep/awsv2/skip.go b/internal/sweep/awsv2/skip.go index 670bb617dff..bc2569aaf0f 100644 --- a/internal/sweep/awsv2/skip.go +++ b/internal/sweep/awsv2/skip.go @@ -41,6 +41,10 @@ func SkipSweepError(err error) bool { if tfawserr.ErrCodeEquals(err, "ForbiddenException") { return true } + // Example (GovCloud): InvalidAction: DescribeDBProxies is not available in this region + if tfawserr.ErrMessageContains(err, "InvalidAction", "is not available") { + return true + } // Example: InvalidAction: InvalidAction: Operation (ListPlatformApplications) is not supported in this region if tfawserr.ErrMessageContains(err, "InvalidAction", "is not supported") { return true diff --git a/names/data/names_data.hcl b/names/data/names_data.hcl index b46f324edbd..b63a4a7c0ad 100644 --- a/names/data/names_data.hcl +++ b/names/data/names_data.hcl @@ -5693,7 +5693,7 @@ service "memorydb" { names { provider_name_upper = "MemoryDB" - human_friendly = "MemoryDB for Redis" + human_friendly = "MemoryDB" } client { @@ -5710,7 +5710,7 @@ service "memorydb" { provider_package_correct = "memorydb" doc_prefix = ["memorydb_"] - brand = "AWS" + brand = "Amazon" } service "meta" { diff --git a/skaff/go.mod b/skaff/go.mod index 666d09cb44d..3235aabbc27 100644 --- a/skaff/go.mod +++ b/skaff/go.mod @@ -1,6 +1,6 @@ module github.com/hashicorp/terraform-provider-aws/skaff -go 1.23.2 +go 1.23.3 require ( github.com/YakDriver/regexache v0.24.0 diff --git a/tools/literally/go.mod b/tools/literally/go.mod index 103fd526b7a..ed1642207de 100644 --- a/tools/literally/go.mod +++ b/tools/literally/go.mod @@ -1,3 +1,3 @@ module github.com/hashicorp/terraform-provider-aws/tools/literally -go 1.23.2 +go 1.23.3 diff --git a/tools/tfsdk2fw/go.mod b/tools/tfsdk2fw/go.mod index 3f16ccdd91f..79ec68aefb2 100644 --- a/tools/tfsdk2fw/go.mod +++ b/tools/tfsdk2fw/go.mod @@ -1,6 +1,6 @@ module github.com/hashicorp/terraform-provider-aws/tools/tfsdk2fw -go 1.23.2 +go 1.23.3 require ( github.com/hashicorp/terraform-plugin-sdk/v2 v2.35.0 @@ -25,7 +25,7 @@ require ( github.com/aws/aws-sdk-go-v2/config v1.28.5 // indirect github.com/aws/aws-sdk-go-v2/credentials v1.17.46 // indirect github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.20 // indirect - github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.39 // indirect + github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.40 // indirect github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.24 // indirect github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.24 // indirect github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 // indirect @@ -36,22 +36,22 @@ require ( github.com/aws/aws-sdk-go-v2/service/acmpca v1.37.7 // indirect github.com/aws/aws-sdk-go-v2/service/amp v1.30.3 // indirect github.com/aws/aws-sdk-go-v2/service/amplify v1.27.4 // indirect - github.com/aws/aws-sdk-go-v2/service/apigateway v1.27.6 // indirect + github.com/aws/aws-sdk-go-v2/service/apigateway v1.28.0 // indirect github.com/aws/aws-sdk-go-v2/service/apigatewayv2 v1.24.6 // indirect github.com/aws/aws-sdk-go-v2/service/appconfig v1.36.0 // indirect github.com/aws/aws-sdk-go-v2/service/appfabric v1.11.6 // indirect github.com/aws/aws-sdk-go-v2/service/appflow v1.45.7 // indirect github.com/aws/aws-sdk-go-v2/service/appintegrations v1.30.6 // indirect - github.com/aws/aws-sdk-go-v2/service/applicationautoscaling v1.33.6 // indirect + github.com/aws/aws-sdk-go-v2/service/applicationautoscaling v1.34.0 // indirect github.com/aws/aws-sdk-go-v2/service/applicationinsights v1.29.4 // indirect github.com/aws/aws-sdk-go-v2/service/applicationsignals v1.7.1 // indirect github.com/aws/aws-sdk-go-v2/service/appmesh v1.29.6 // indirect github.com/aws/aws-sdk-go-v2/service/apprunner v1.32.6 // indirect github.com/aws/aws-sdk-go-v2/service/appstream v1.41.6 // indirect - github.com/aws/aws-sdk-go-v2/service/appsync v1.39.3 // indirect + github.com/aws/aws-sdk-go-v2/service/appsync v1.40.0 // indirect github.com/aws/aws-sdk-go-v2/service/athena v1.48.4 // indirect github.com/aws/aws-sdk-go-v2/service/auditmanager v1.37.6 // indirect - github.com/aws/aws-sdk-go-v2/service/autoscaling v1.50.0 // indirect + github.com/aws/aws-sdk-go-v2/service/autoscaling v1.51.0 // indirect github.com/aws/aws-sdk-go-v2/service/autoscalingplans v1.24.6 // indirect github.com/aws/aws-sdk-go-v2/service/backup v1.39.7 // indirect github.com/aws/aws-sdk-go-v2/service/batch v1.48.1 // indirect @@ -59,7 +59,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/bedrock v1.22.4 // indirect github.com/aws/aws-sdk-go-v2/service/bedrockagent v1.27.1 // indirect github.com/aws/aws-sdk-go-v2/service/budgets v1.28.6 // indirect - github.com/aws/aws-sdk-go-v2/service/chatbot v1.8.6 // indirect + github.com/aws/aws-sdk-go-v2/service/chatbot v1.9.0 // indirect github.com/aws/aws-sdk-go-v2/service/chime v1.34.6 // indirect github.com/aws/aws-sdk-go-v2/service/chimesdkmediapipelines v1.21.1 // indirect github.com/aws/aws-sdk-go-v2/service/chimesdkvoice v1.19.6 // indirect @@ -67,13 +67,13 @@ require ( github.com/aws/aws-sdk-go-v2/service/cloud9 v1.28.6 // indirect github.com/aws/aws-sdk-go-v2/service/cloudcontrol v1.23.1 // indirect github.com/aws/aws-sdk-go-v2/service/cloudformation v1.56.0 // indirect - github.com/aws/aws-sdk-go-v2/service/cloudfront v1.42.0 // indirect + github.com/aws/aws-sdk-go-v2/service/cloudfront v1.43.0 // indirect github.com/aws/aws-sdk-go-v2/service/cloudfrontkeyvaluestore v1.8.6 // indirect github.com/aws/aws-sdk-go-v2/service/cloudhsmv2 v1.27.7 // indirect github.com/aws/aws-sdk-go-v2/service/cloudsearch v1.26.5 // indirect - github.com/aws/aws-sdk-go-v2/service/cloudtrail v1.45.1 // indirect + github.com/aws/aws-sdk-go-v2/service/cloudtrail v1.46.1 // indirect github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.43.1 // indirect - github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.43.3 // indirect + github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.44.0 // indirect github.com/aws/aws-sdk-go-v2/service/codeartifact v1.33.6 // indirect github.com/aws/aws-sdk-go-v2/service/codebuild v1.49.1 // indirect github.com/aws/aws-sdk-go-v2/service/codecatalyst v1.17.6 // indirect @@ -82,19 +82,19 @@ require ( github.com/aws/aws-sdk-go-v2/service/codedeploy v1.29.6 // indirect github.com/aws/aws-sdk-go-v2/service/codeguruprofiler v1.24.6 // indirect github.com/aws/aws-sdk-go-v2/service/codegurureviewer v1.29.6 // indirect - github.com/aws/aws-sdk-go-v2/service/codepipeline v1.36.4 // indirect + github.com/aws/aws-sdk-go-v2/service/codepipeline v1.37.0 // indirect github.com/aws/aws-sdk-go-v2/service/codestarconnections v1.29.6 // indirect github.com/aws/aws-sdk-go-v2/service/codestarnotifications v1.26.6 // indirect github.com/aws/aws-sdk-go-v2/service/cognitoidentity v1.27.6 // indirect - github.com/aws/aws-sdk-go-v2/service/cognitoidentityprovider v1.46.6 // indirect + github.com/aws/aws-sdk-go-v2/service/cognitoidentityprovider v1.47.0 // indirect github.com/aws/aws-sdk-go-v2/service/comprehend v1.35.6 // indirect github.com/aws/aws-sdk-go-v2/service/computeoptimizer v1.40.0 // indirect github.com/aws/aws-sdk-go-v2/service/configservice v1.50.6 // indirect - github.com/aws/aws-sdk-go-v2/service/connect v1.116.0 // indirect + github.com/aws/aws-sdk-go-v2/service/connect v1.117.0 // indirect github.com/aws/aws-sdk-go-v2/service/connectcases v1.21.6 // indirect github.com/aws/aws-sdk-go-v2/service/controltower v1.20.0 // indirect github.com/aws/aws-sdk-go-v2/service/costandusagereportservice v1.28.6 // indirect - github.com/aws/aws-sdk-go-v2/service/costexplorer v1.43.6 // indirect + github.com/aws/aws-sdk-go-v2/service/costexplorer v1.45.0 // indirect github.com/aws/aws-sdk-go-v2/service/costoptimizationhub v1.11.0 // indirect github.com/aws/aws-sdk-go-v2/service/customerprofiles v1.43.0 // indirect github.com/aws/aws-sdk-go-v2/service/databasemigrationservice v1.44.4 // indirect @@ -109,24 +109,24 @@ require ( github.com/aws/aws-sdk-go-v2/service/devopsguru v1.34.6 // indirect github.com/aws/aws-sdk-go-v2/service/directconnect v1.29.6 // indirect github.com/aws/aws-sdk-go-v2/service/directoryservice v1.30.7 // indirect - github.com/aws/aws-sdk-go-v2/service/dlm v1.28.6 // indirect + github.com/aws/aws-sdk-go-v2/service/dlm v1.28.7 // indirect github.com/aws/aws-sdk-go-v2/service/docdb v1.39.5 // indirect github.com/aws/aws-sdk-go-v2/service/docdbelastic v1.14.3 // indirect github.com/aws/aws-sdk-go-v2/service/drs v1.30.6 // indirect github.com/aws/aws-sdk-go-v2/service/dynamodb v1.37.1 // indirect - github.com/aws/aws-sdk-go-v2/service/ec2 v1.192.0 // indirect + github.com/aws/aws-sdk-go-v2/service/ec2 v1.193.0 // indirect github.com/aws/aws-sdk-go-v2/service/ecr v1.36.6 // indirect github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.27.6 // indirect github.com/aws/aws-sdk-go-v2/service/ecs v1.52.0 // indirect github.com/aws/aws-sdk-go-v2/service/efs v1.34.0 // indirect github.com/aws/aws-sdk-go-v2/service/eks v1.52.1 // indirect - github.com/aws/aws-sdk-go-v2/service/elasticache v1.43.3 // indirect + github.com/aws/aws-sdk-go-v2/service/elasticache v1.44.0 // indirect github.com/aws/aws-sdk-go-v2/service/elasticbeanstalk v1.28.5 // indirect github.com/aws/aws-sdk-go-v2/service/elasticloadbalancing v1.28.5 // indirect - github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.42.0 // indirect + github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.43.0 // indirect github.com/aws/aws-sdk-go-v2/service/elasticsearchservice v1.32.6 // indirect github.com/aws/aws-sdk-go-v2/service/elastictranscoder v1.27.6 // indirect - github.com/aws/aws-sdk-go-v2/service/emr v1.46.4 // indirect + github.com/aws/aws-sdk-go-v2/service/emr v1.47.0 // indirect github.com/aws/aws-sdk-go-v2/service/emrcontainers v1.33.7 // indirect github.com/aws/aws-sdk-go-v2/service/emrserverless v1.26.6 // indirect github.com/aws/aws-sdk-go-v2/service/eventbridge v1.35.6 // indirect @@ -149,14 +149,14 @@ require ( github.com/aws/aws-sdk-go-v2/service/identitystore v1.27.6 // indirect github.com/aws/aws-sdk-go-v2/service/imagebuilder v1.38.4 // indirect github.com/aws/aws-sdk-go-v2/service/inspector v1.25.6 // indirect - github.com/aws/aws-sdk-go-v2/service/inspector2 v1.33.1 // indirect + github.com/aws/aws-sdk-go-v2/service/inspector2 v1.34.0 // indirect github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.1 // indirect github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.4.5 // indirect github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.10.5 // indirect github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.5 // indirect github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.5 // indirect github.com/aws/aws-sdk-go-v2/service/internetmonitor v1.20.1 // indirect - github.com/aws/aws-sdk-go-v2/service/iot v1.60.1 // indirect + github.com/aws/aws-sdk-go-v2/service/iot v1.61.0 // indirect github.com/aws/aws-sdk-go-v2/service/iotanalytics v1.26.6 // indirect github.com/aws/aws-sdk-go-v2/service/iotevents v1.27.6 // indirect github.com/aws/aws-sdk-go-v2/service/ivs v1.42.1 // indirect @@ -171,7 +171,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/kinesisvideo v1.27.6 // indirect github.com/aws/aws-sdk-go-v2/service/kms v1.37.6 // indirect github.com/aws/aws-sdk-go-v2/service/lakeformation v1.38.3 // indirect - github.com/aws/aws-sdk-go-v2/service/lambda v1.67.0 // indirect + github.com/aws/aws-sdk-go-v2/service/lambda v1.69.0 // indirect github.com/aws/aws-sdk-go-v2/service/launchwizard v1.8.6 // indirect github.com/aws/aws-sdk-go-v2/service/lexmodelbuildingservice v1.28.6 // indirect github.com/aws/aws-sdk-go-v2/service/lexmodelsv2 v1.49.6 // indirect @@ -191,7 +191,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/mq v1.27.7 // indirect github.com/aws/aws-sdk-go-v2/service/mwaa v1.33.0 // indirect github.com/aws/aws-sdk-go-v2/service/neptune v1.35.5 // indirect - github.com/aws/aws-sdk-go-v2/service/neptunegraph v1.14.4 // indirect + github.com/aws/aws-sdk-go-v2/service/neptunegraph v1.15.0 // indirect github.com/aws/aws-sdk-go-v2/service/networkfirewall v1.44.3 // indirect github.com/aws/aws-sdk-go-v2/service/networkmanager v1.31.6 // indirect github.com/aws/aws-sdk-go-v2/service/networkmonitor v1.7.6 // indirect @@ -208,11 +208,11 @@ require ( github.com/aws/aws-sdk-go-v2/service/pinpoint v1.34.6 // indirect github.com/aws/aws-sdk-go-v2/service/pinpointsmsvoicev2 v1.18.1 // indirect github.com/aws/aws-sdk-go-v2/service/pipes v1.18.4 // indirect - github.com/aws/aws-sdk-go-v2/service/polly v1.45.6 // indirect + github.com/aws/aws-sdk-go-v2/service/polly v1.45.7 // indirect github.com/aws/aws-sdk-go-v2/service/pricing v1.32.6 // indirect github.com/aws/aws-sdk-go-v2/service/qbusiness v1.16.1 // indirect github.com/aws/aws-sdk-go-v2/service/qldb v1.25.6 // indirect - github.com/aws/aws-sdk-go-v2/service/quicksight v1.79.1 // indirect + github.com/aws/aws-sdk-go-v2/service/quicksight v1.80.0 // indirect github.com/aws/aws-sdk-go-v2/service/ram v1.29.6 // indirect github.com/aws/aws-sdk-go-v2/service/rbin v1.21.0 // indirect github.com/aws/aws-sdk-go-v2/service/rds v1.91.0 // indirect @@ -220,7 +220,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/redshiftdata v1.31.3 // indirect github.com/aws/aws-sdk-go-v2/service/redshiftserverless v1.24.3 // indirect github.com/aws/aws-sdk-go-v2/service/rekognition v1.45.7 // indirect - github.com/aws/aws-sdk-go-v2/service/resiliencehub v1.27.4 // indirect + github.com/aws/aws-sdk-go-v2/service/resiliencehub v1.28.0 // indirect github.com/aws/aws-sdk-go-v2/service/resourceexplorer2 v1.16.1 // indirect github.com/aws/aws-sdk-go-v2/service/resourcegroups v1.27.6 // indirect github.com/aws/aws-sdk-go-v2/service/resourcegroupstaggingapi v1.25.6 // indirect @@ -232,10 +232,10 @@ require ( github.com/aws/aws-sdk-go-v2/service/route53recoveryreadiness v1.21.6 // indirect github.com/aws/aws-sdk-go-v2/service/route53resolver v1.34.1 // indirect github.com/aws/aws-sdk-go-v2/service/rum v1.21.6 // indirect - github.com/aws/aws-sdk-go-v2/service/s3 v1.67.1 // indirect + github.com/aws/aws-sdk-go-v2/service/s3 v1.68.0 // indirect github.com/aws/aws-sdk-go-v2/service/s3control v1.50.1 // indirect github.com/aws/aws-sdk-go-v2/service/s3outposts v1.28.6 // indirect - github.com/aws/aws-sdk-go-v2/service/sagemaker v1.167.1 // indirect + github.com/aws/aws-sdk-go-v2/service/sagemaker v1.168.0 // indirect github.com/aws/aws-sdk-go-v2/service/scheduler v1.12.6 // indirect github.com/aws/aws-sdk-go-v2/service/schemas v1.28.7 // indirect github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.34.6 // indirect @@ -246,17 +246,17 @@ require ( github.com/aws/aws-sdk-go-v2/service/servicecatalogappregistry v1.30.6 // indirect github.com/aws/aws-sdk-go-v2/service/servicediscovery v1.33.6 // indirect github.com/aws/aws-sdk-go-v2/service/servicequotas v1.25.6 // indirect - github.com/aws/aws-sdk-go-v2/service/ses v1.28.5 // indirect + github.com/aws/aws-sdk-go-v2/service/ses v1.29.0 // indirect github.com/aws/aws-sdk-go-v2/service/sesv2 v1.38.3 // indirect - github.com/aws/aws-sdk-go-v2/service/sfn v1.33.6 // indirect + github.com/aws/aws-sdk-go-v2/service/sfn v1.34.0 // indirect github.com/aws/aws-sdk-go-v2/service/shield v1.29.6 // indirect github.com/aws/aws-sdk-go-v2/service/signer v1.26.6 // indirect - github.com/aws/aws-sdk-go-v2/service/sns v1.33.5 // indirect + github.com/aws/aws-sdk-go-v2/service/sns v1.33.6 // indirect github.com/aws/aws-sdk-go-v2/service/sqs v1.37.1 // indirect - github.com/aws/aws-sdk-go-v2/service/ssm v1.55.6 // indirect + github.com/aws/aws-sdk-go-v2/service/ssm v1.56.0 // indirect github.com/aws/aws-sdk-go-v2/service/ssmcontacts v1.26.6 // indirect github.com/aws/aws-sdk-go-v2/service/ssmincidents v1.34.6 // indirect - github.com/aws/aws-sdk-go-v2/service/ssmquicksetup v1.2.7 // indirect + github.com/aws/aws-sdk-go-v2/service/ssmquicksetup v1.3.0 // indirect github.com/aws/aws-sdk-go-v2/service/ssmsap v1.18.6 // indirect github.com/aws/aws-sdk-go-v2/service/sso v1.24.6 // indirect github.com/aws/aws-sdk-go-v2/service/ssoadmin v1.29.6 // indirect @@ -267,19 +267,19 @@ require ( github.com/aws/aws-sdk-go-v2/service/synthetics v1.30.1 // indirect github.com/aws/aws-sdk-go-v2/service/taxsettings v1.7.0 // indirect github.com/aws/aws-sdk-go-v2/service/timestreaminfluxdb v1.6.6 // indirect - github.com/aws/aws-sdk-go-v2/service/timestreamwrite v1.29.6 // indirect + github.com/aws/aws-sdk-go-v2/service/timestreamwrite v1.29.7 // indirect github.com/aws/aws-sdk-go-v2/service/transcribe v1.41.6 // indirect github.com/aws/aws-sdk-go-v2/service/transfer v1.53.5 // indirect github.com/aws/aws-sdk-go-v2/service/verifiedpermissions v1.20.2 // indirect - github.com/aws/aws-sdk-go-v2/service/vpclattice v1.12.8 // indirect + github.com/aws/aws-sdk-go-v2/service/vpclattice v1.12.9 // indirect github.com/aws/aws-sdk-go-v2/service/waf v1.25.6 // indirect github.com/aws/aws-sdk-go-v2/service/wafregional v1.25.6 // indirect github.com/aws/aws-sdk-go-v2/service/wafv2 v1.55.5 // indirect github.com/aws/aws-sdk-go-v2/service/wellarchitected v1.34.6 // indirect github.com/aws/aws-sdk-go-v2/service/worklink v1.23.2 // indirect - github.com/aws/aws-sdk-go-v2/service/workspaces v1.50.0 // indirect + github.com/aws/aws-sdk-go-v2/service/workspaces v1.50.1 // indirect github.com/aws/aws-sdk-go-v2/service/workspacesweb v1.25.0 // indirect - github.com/aws/aws-sdk-go-v2/service/xray v1.29.6 // indirect + github.com/aws/aws-sdk-go-v2/service/xray v1.30.0 // indirect github.com/aws/smithy-go v1.22.1 // indirect github.com/beevik/etree v1.4.1 // indirect github.com/bgentry/speakeasy v0.2.0 // indirect diff --git a/tools/tfsdk2fw/go.sum b/tools/tfsdk2fw/go.sum index 0627d66c08b..830a2b3e1db 100644 --- a/tools/tfsdk2fw/go.sum +++ b/tools/tfsdk2fw/go.sum @@ -33,8 +33,8 @@ github.com/aws/aws-sdk-go-v2/credentials v1.17.46 h1:AU7RcriIo2lXjUfHFnFKYsLCwgb github.com/aws/aws-sdk-go-v2/credentials v1.17.46/go.mod h1:1FmYyLGL08KQXQ6mcTlifyFXfJVCNJTVGuQP4m0d/UA= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.20 h1:sDSXIrlsFSFJtWKLQS4PUWRvrT580rrnuLydJrCQ/yA= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.20/go.mod h1:WZ/c+w0ofps+/OUqMwWgnfrgzZH1DZO1RIkktICsqnY= -github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.39 h1:Bdepdtm7SAUxPIZj6x4qg5al04R6tZa965T/j597XxM= -github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.39/go.mod h1:AudGmEyVwvi3k5MVpEZP2NEVF1HqtZoMze42Uq1RTiE= +github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.40 h1:CbalQNEYQljzAJ+3beY8FQBShdLNLpJzHL4h/5LSFMc= +github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.40/go.mod h1:1iYVr/urNWuZ7WZ1829FSE7RRTaXvzFdwrEQV8Z40cE= github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.24 h1:4usbeaes3yJnCFC7kfeyhkdkPtoRYPa/hTmCqMpKpLI= github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.24/go.mod h1:5CI1JemjVwde8m2WG3cz23qHKPOxbpkq0HaoreEgLIY= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.24 h1:N1zsICrQglfzaBnrfM0Ys00860C+QFwu6u/5+LomP+o= @@ -55,8 +55,8 @@ github.com/aws/aws-sdk-go-v2/service/amp v1.30.3 h1:28FOQuvHpWMdEYK9x89FszjBmwGf github.com/aws/aws-sdk-go-v2/service/amp v1.30.3/go.mod h1:QbCuQItcTOX7oQR9Nn9nGveBCqSad391I5ReOyQmtag= github.com/aws/aws-sdk-go-v2/service/amplify v1.27.4 h1:wnfodLD2dlJXX4CgYQh18nvo18dPjqZEWrtYZ6DWGh0= github.com/aws/aws-sdk-go-v2/service/amplify v1.27.4/go.mod h1:hmHZYJI1CZlr2V/qTBE8r+/U353Gn/7pOoxNpfFmZuI= -github.com/aws/aws-sdk-go-v2/service/apigateway v1.27.6 h1:CmWQaz97Uy830BdSSVw/D+K4rGQUN/u9D1Zjh/HLJ/w= -github.com/aws/aws-sdk-go-v2/service/apigateway v1.27.6/go.mod h1:WP+ceHdK5RAijZxABi1mH1kCZmQKRJNKwV+cj0iVr44= +github.com/aws/aws-sdk-go-v2/service/apigateway v1.28.0 h1:BkESaUndLOn3ZFTq4Eho347yvtiJxEQf1HWxgVu2RVI= +github.com/aws/aws-sdk-go-v2/service/apigateway v1.28.0/go.mod h1:WP+ceHdK5RAijZxABi1mH1kCZmQKRJNKwV+cj0iVr44= github.com/aws/aws-sdk-go-v2/service/apigatewayv2 v1.24.6 h1:wNUMxMjviF0fbO1pWKVFT1xDRa+BY2qwW6+YJkgIRvI= github.com/aws/aws-sdk-go-v2/service/apigatewayv2 v1.24.6/go.mod h1:pCq9ErKoUWYFfmpENhlWuhBF+NNNwVOXNrZA5C480eM= github.com/aws/aws-sdk-go-v2/service/appconfig v1.36.0 h1:6IlrKbN6rVw2wdVxm4WQ5nI/Np0eTydc5Lsa1Vq+cBs= @@ -67,8 +67,8 @@ github.com/aws/aws-sdk-go-v2/service/appflow v1.45.7 h1:UfxkfxuI4Ksq33InChPPDFg/ github.com/aws/aws-sdk-go-v2/service/appflow v1.45.7/go.mod h1:kJIzLElxd30701jCUv8leaH4GGrCCfoxpNUULd7+rK8= github.com/aws/aws-sdk-go-v2/service/appintegrations v1.30.6 h1:wUhwc2GcAZ4m00sVu2gQ9ugn5Jxk3EjZPf9KxIM+aZo= github.com/aws/aws-sdk-go-v2/service/appintegrations v1.30.6/go.mod h1:ivsyQDuUvZ2HIjoACH4KiSkaP3/rQVjPpb4yUurgPCU= -github.com/aws/aws-sdk-go-v2/service/applicationautoscaling v1.33.6 h1:tA9FFJKQEPZ1YXuO+ZIMXBYy7Jrsz5SJ4feg/zb82Ig= -github.com/aws/aws-sdk-go-v2/service/applicationautoscaling v1.33.6/go.mod h1:XBKTLJ2N61HegfI0sroliDC1MNX0L3ApqCfNoZ9POAA= +github.com/aws/aws-sdk-go-v2/service/applicationautoscaling v1.34.0 h1:GepjPOtTMErWuKclEcfUtibA2gP8kLlL6gglC2YJEMU= +github.com/aws/aws-sdk-go-v2/service/applicationautoscaling v1.34.0/go.mod h1:XBKTLJ2N61HegfI0sroliDC1MNX0L3ApqCfNoZ9POAA= github.com/aws/aws-sdk-go-v2/service/applicationinsights v1.29.4 h1:NiytCBlDQWHo7GWomxI7sBayGgYikFLRWGx67mab42o= github.com/aws/aws-sdk-go-v2/service/applicationinsights v1.29.4/go.mod h1:S/E1rruraVCEM0H11AAlulupi00RyhGmARep6mgJgec= github.com/aws/aws-sdk-go-v2/service/applicationsignals v1.7.1 h1:UU84hkab8PQfrTM8jJjEQvfYns1meYkXWcCQs7uuiSo= @@ -79,14 +79,14 @@ github.com/aws/aws-sdk-go-v2/service/apprunner v1.32.6 h1:Wqlx6m821gv7qXMJQ3f7Ju github.com/aws/aws-sdk-go-v2/service/apprunner v1.32.6/go.mod h1:liN6AXsZpCSw888Vdsc1OSeKuEVvWek31jv41mn4KCA= github.com/aws/aws-sdk-go-v2/service/appstream v1.41.6 h1:Y/npDc6JZ9rxarIqZOWZllxgtZLLjFXvwTjuhpoSqW8= github.com/aws/aws-sdk-go-v2/service/appstream v1.41.6/go.mod h1:Ex0sRVuADGJBCsP8Yvsuu+RTeAydhj5OrXxu99OlE+w= -github.com/aws/aws-sdk-go-v2/service/appsync v1.39.3 h1:2NOsVvQv5mMor0EuI8EunbuhxQHjSWUhaCqhADKCsBU= -github.com/aws/aws-sdk-go-v2/service/appsync v1.39.3/go.mod h1:d+xpwZCcffeV4l4bM1xjQgINiNPUlmwKQSkoaAnMjVE= +github.com/aws/aws-sdk-go-v2/service/appsync v1.40.0 h1:FgT5r1MEc4ZAxmYGw4VcobadiEno6CggVP+GTm2SK5I= +github.com/aws/aws-sdk-go-v2/service/appsync v1.40.0/go.mod h1:d+xpwZCcffeV4l4bM1xjQgINiNPUlmwKQSkoaAnMjVE= github.com/aws/aws-sdk-go-v2/service/athena v1.48.4 h1:FbHOJ4JekyaFLE5SG0yuHryYRuaHXd9rO4QMYK4NH5A= github.com/aws/aws-sdk-go-v2/service/athena v1.48.4/go.mod h1:sAM9gz5RsYx3nBYISXE9CRnQVk7WtCs6SjCZvygmtzQ= github.com/aws/aws-sdk-go-v2/service/auditmanager v1.37.6 h1:TLXugBC1lQUGMcVhUTdRiUnX4ulOs13hGvBlw4bBkSE= github.com/aws/aws-sdk-go-v2/service/auditmanager v1.37.6/go.mod h1:TnalEymbabDCozLHd0UxERDVwDsiUNQ8Cy7Wd6I+nUE= -github.com/aws/aws-sdk-go-v2/service/autoscaling v1.50.0 h1:5tF6T8pAKna0TZ2g77jKdTCKoIRDsaYlYxz9OC1BraI= -github.com/aws/aws-sdk-go-v2/service/autoscaling v1.50.0/go.mod h1:I1+/2m+IhnK5qEbhS3CrzjeiVloo9sItE/2K+so0fkU= +github.com/aws/aws-sdk-go-v2/service/autoscaling v1.51.0 h1:1KzQVZi7OTixxaVJ8fWaJAUBjme+iQ3zBOCZhE4RgxQ= +github.com/aws/aws-sdk-go-v2/service/autoscaling v1.51.0/go.mod h1:I1+/2m+IhnK5qEbhS3CrzjeiVloo9sItE/2K+so0fkU= github.com/aws/aws-sdk-go-v2/service/autoscalingplans v1.24.6 h1:zkRcAyCAf1sO51+tr7cdzARkojrgaqQEMNJa6SSxszw= github.com/aws/aws-sdk-go-v2/service/autoscalingplans v1.24.6/go.mod h1:Fk9vMo1pF5oomcRNwVuu/oAZWgnErNzdr1dpYlLFnjg= github.com/aws/aws-sdk-go-v2/service/backup v1.39.7 h1:YeU78WW19lWGew7OBP2lImtLvn2d5Zlktjwh268d07I= @@ -101,8 +101,8 @@ github.com/aws/aws-sdk-go-v2/service/bedrockagent v1.27.1 h1:Uq364zd0sw4Sa5DovhB github.com/aws/aws-sdk-go-v2/service/bedrockagent v1.27.1/go.mod h1:+QNM3upOuzc6CrYFdtDnNApChkfbC6lIAI2nqct4/u8= github.com/aws/aws-sdk-go-v2/service/budgets v1.28.6 h1:RVzQr0yvPN3OGZ2ipFVe1SBIwvomwjCvGg9S2q1QQbM= github.com/aws/aws-sdk-go-v2/service/budgets v1.28.6/go.mod h1:v5aGgmg7e0sS9wbdIK1CwgSIGCBmKbwnnI3F0vj3Fb0= -github.com/aws/aws-sdk-go-v2/service/chatbot v1.8.6 h1:39X0+9tooDnPfHCsH1NClflvHY0HRncKKY4OiS/nxxg= -github.com/aws/aws-sdk-go-v2/service/chatbot v1.8.6/go.mod h1:AnpVkIhMiOul0lelxDuySlmnNMW4AqEXz4VyRC5mCvo= +github.com/aws/aws-sdk-go-v2/service/chatbot v1.9.0 h1:9MsvMH/fdhu4NhtaYrAvyOGrewZTkh6W5bwxIbKAQGk= +github.com/aws/aws-sdk-go-v2/service/chatbot v1.9.0/go.mod h1:AnpVkIhMiOul0lelxDuySlmnNMW4AqEXz4VyRC5mCvo= github.com/aws/aws-sdk-go-v2/service/chime v1.34.6 h1:Jl5fsX028RPDzuKInYkCU6p+cWnvWLpBJEXPlnzdkOQ= github.com/aws/aws-sdk-go-v2/service/chime v1.34.6/go.mod h1:pqo7AjgtB9xL2KfkCFXO8wKNAFCTcfM4Yiw6nUYt7O0= github.com/aws/aws-sdk-go-v2/service/chimesdkmediapipelines v1.21.1 h1:wasRSxlF1Ye9ilVut1GngPCTwyMPc13XJyRTJPM0nO4= @@ -117,20 +117,20 @@ github.com/aws/aws-sdk-go-v2/service/cloudcontrol v1.23.1 h1:x4XUX/gadOFFsX5ndid github.com/aws/aws-sdk-go-v2/service/cloudcontrol v1.23.1/go.mod h1:8vDrlyLzxWUybo1E4Rh2UVUPM9cyu+GgTYkwFCRV6h4= github.com/aws/aws-sdk-go-v2/service/cloudformation v1.56.0 h1:zmXJiEm/fQYtFDLIUsZrcPIjTrL3R/noFICGlYBj3Ww= github.com/aws/aws-sdk-go-v2/service/cloudformation v1.56.0/go.mod h1:9nOjXCDKE+QMK4JaCrLl36PU+VEfJmI7WVehYmojO8s= -github.com/aws/aws-sdk-go-v2/service/cloudfront v1.42.0 h1:HALzRSv9rQiViTmTngO7mHQ2hZVHN1xArAofDtLCkuE= -github.com/aws/aws-sdk-go-v2/service/cloudfront v1.42.0/go.mod h1:KC7JSdRScZQpZJDJp4ze9elsg8QIWIoABjmCzDS4rtg= +github.com/aws/aws-sdk-go-v2/service/cloudfront v1.43.0 h1:Ny0HHch5IyjWd3Hh/csFvAZFPDHvu7eeePFh7+BnbZ8= +github.com/aws/aws-sdk-go-v2/service/cloudfront v1.43.0/go.mod h1:KC7JSdRScZQpZJDJp4ze9elsg8QIWIoABjmCzDS4rtg= github.com/aws/aws-sdk-go-v2/service/cloudfrontkeyvaluestore v1.8.6 h1:dke8UJCJrHoscyZ1dIPgy3cxoLdets5LnoXO9jlW2bM= github.com/aws/aws-sdk-go-v2/service/cloudfrontkeyvaluestore v1.8.6/go.mod h1:A42W0NdVTnuXFemvBZY/nNVnVKgTVJBv06fQTtVvLuo= github.com/aws/aws-sdk-go-v2/service/cloudhsmv2 v1.27.7 h1:Ymxy7Hrq/Gax/w++W0t1E2ptd9W4/nFAGl3Ls50npDI= github.com/aws/aws-sdk-go-v2/service/cloudhsmv2 v1.27.7/go.mod h1:W4rh804hNs3jvIUVrZU7W6ZzufPUTn2fvjFwDLg75Vk= github.com/aws/aws-sdk-go-v2/service/cloudsearch v1.26.5 h1:qv4Vmbrmq556QW1geLfnVU04FKotI85HgCVup2CHC0I= github.com/aws/aws-sdk-go-v2/service/cloudsearch v1.26.5/go.mod h1:bLUwLj8J6hdXNYgrlrBmYaC6k+WRiWVuuj82l4cE+dE= -github.com/aws/aws-sdk-go-v2/service/cloudtrail v1.45.1 h1:AosFx25ZlkWnNggOUuhBcG2Yx+SDRNBcV6W2+PctH+Q= -github.com/aws/aws-sdk-go-v2/service/cloudtrail v1.45.1/go.mod h1:1UmWM2dmPjAP9GndptgNB5ZO1GnVRHFUX5JK0RB+ozY= +github.com/aws/aws-sdk-go-v2/service/cloudtrail v1.46.1 h1:2ak2eGvO11EG8dbF2rduX0LFYqkSmLTaFiAXbrYeBik= +github.com/aws/aws-sdk-go-v2/service/cloudtrail v1.46.1/go.mod h1:1UmWM2dmPjAP9GndptgNB5ZO1GnVRHFUX5JK0RB+ozY= github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.43.1 h1:FbjhJTRoTujDYDwTnnE46Km5Qh1mMSH+BwTL4ODFifg= github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.43.1/go.mod h1:OwyCzHw6CH8pkLqT8uoCkOgUsgm11LTfexLZyRy6fBg= -github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.43.3 h1:hKIu7ziYNid9JAuPX5TMgfEKiGyJiPO7Icdc920uLMI= -github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.43.3/go.mod h1:Qbr4yfpNqVNl69l/GEDK+8wxLf/vHi0ChoiSDzD7thU= +github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.44.0 h1:OREVd94+oXW5a+3SSUAo4K0L5ci8cucCLu+PSiek8OU= +github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.44.0/go.mod h1:Qbr4yfpNqVNl69l/GEDK+8wxLf/vHi0ChoiSDzD7thU= github.com/aws/aws-sdk-go-v2/service/codeartifact v1.33.6 h1:Uu7boDJDhHI3P9AjMPu9/bdSfOoTlhowBTUPswP5avM= github.com/aws/aws-sdk-go-v2/service/codeartifact v1.33.6/go.mod h1:MledsPnJ3IBEYa7pWbYIitZDbSOftxNjRCxrEm5W9L0= github.com/aws/aws-sdk-go-v2/service/codebuild v1.49.1 h1:rVfkJ2IsXFUB2dRyjoCcED1LQPeTwiOGSxB2tzItrL8= @@ -147,32 +147,32 @@ github.com/aws/aws-sdk-go-v2/service/codeguruprofiler v1.24.6 h1:NHA1oFgnYErN/m1 github.com/aws/aws-sdk-go-v2/service/codeguruprofiler v1.24.6/go.mod h1:f7Z7f8TJ+jPCG3a7iw5G3Og6ZNlVV/h4Vssa2z5Ctvg= github.com/aws/aws-sdk-go-v2/service/codegurureviewer v1.29.6 h1:ZCwOHI5qLoZOKXRroD7zFC9DsJOwr7/2trzCqGmTJXk= github.com/aws/aws-sdk-go-v2/service/codegurureviewer v1.29.6/go.mod h1:LwkwNbB3ftbrnzeolIatXt5WPCpkRbVZcEnDJ4B33yE= -github.com/aws/aws-sdk-go-v2/service/codepipeline v1.36.4 h1:3gc3QzXPPIpeSPntAtUy2CR9A3pj09O5IVrirwnvjCc= -github.com/aws/aws-sdk-go-v2/service/codepipeline v1.36.4/go.mod h1:VNGtFdYLnh+4bhmz/t1grmciVHt1aPeFWu3YAUOzJeM= +github.com/aws/aws-sdk-go-v2/service/codepipeline v1.37.0 h1:NADCf4LSkrl1ADbJT1q3VxGhJ4gre77MJ40aqupZczg= +github.com/aws/aws-sdk-go-v2/service/codepipeline v1.37.0/go.mod h1:VNGtFdYLnh+4bhmz/t1grmciVHt1aPeFWu3YAUOzJeM= github.com/aws/aws-sdk-go-v2/service/codestarconnections v1.29.6 h1:OqC1rs2Rt4hOl07IcVQ3ZjXDPPCQJ20k2Xp59ZMNfmY= github.com/aws/aws-sdk-go-v2/service/codestarconnections v1.29.6/go.mod h1:NSqFyJ68sZwNuQOBCZ1c+G10d9nd03AqdkLwkRPIHPo= github.com/aws/aws-sdk-go-v2/service/codestarnotifications v1.26.6 h1:IeMC7DWOojfoApk0lSrmFO9lWdbd2EFskmYNrgegwuY= github.com/aws/aws-sdk-go-v2/service/codestarnotifications v1.26.6/go.mod h1:ZAEhVVAHdollHwVtzGSoh7gH8SGbFaOvYeHAE7lv1Uk= github.com/aws/aws-sdk-go-v2/service/cognitoidentity v1.27.6 h1:qrxndl72akI2mK6nhN5TLe+JiAklKl+vtaiAvbQ71lM= github.com/aws/aws-sdk-go-v2/service/cognitoidentity v1.27.6/go.mod h1:v4nSWzO8c2OSdtprw0PQ7UtspocKCJhH1uBd6NxL8FM= -github.com/aws/aws-sdk-go-v2/service/cognitoidentityprovider v1.46.6 h1:tj/rbVJP94sNvvq3hM5EURTgMpQ0+mGKkfvqsZ5gwrA= -github.com/aws/aws-sdk-go-v2/service/cognitoidentityprovider v1.46.6/go.mod h1:TxsMf+uRm3AHGUs2BSmnxz99BqUd6f9EiuDEhRppTY8= +github.com/aws/aws-sdk-go-v2/service/cognitoidentityprovider v1.47.0 h1:9WEhV3JmFhSMnKaY2SqcPb0bM5XIoMmAy62Fj5TNMwk= +github.com/aws/aws-sdk-go-v2/service/cognitoidentityprovider v1.47.0/go.mod h1:TxsMf+uRm3AHGUs2BSmnxz99BqUd6f9EiuDEhRppTY8= github.com/aws/aws-sdk-go-v2/service/comprehend v1.35.6 h1:cnZDmrpdVewJ22Y9Su1XpmsPIQ5oS3TujNPS04cH+7s= github.com/aws/aws-sdk-go-v2/service/comprehend v1.35.6/go.mod h1:LGMQ+uNG/xTjB8nx6Jb2SrsQqvWc7ip0vqNiiKu9EiA= github.com/aws/aws-sdk-go-v2/service/computeoptimizer v1.40.0 h1:rNj0NoMlMlV9B3rEnxv84CG5RfEqwyfjHL6P/YtX224= github.com/aws/aws-sdk-go-v2/service/computeoptimizer v1.40.0/go.mod h1:MH4YodNw/6ZHhRwow3baZ7RQP6z8GKSMsO94X5OZ3Y0= github.com/aws/aws-sdk-go-v2/service/configservice v1.50.6 h1:GsIoN6f+LLTX/Sa70WO77Cy1GTrSF9xi7e8OwwOiGcs= github.com/aws/aws-sdk-go-v2/service/configservice v1.50.6/go.mod h1:5vbQi0lIP9T7RLGyjmQZhqf5Xv9WxHXk7qlHnhEqWKc= -github.com/aws/aws-sdk-go-v2/service/connect v1.116.0 h1:ewriAQDNn5BFwyMj2atkAbk5wqcrIBMPqg2jyhuAFoY= -github.com/aws/aws-sdk-go-v2/service/connect v1.116.0/go.mod h1:oGrMxGM/Ww+glDJ7cfMU1X22kJ6XBBHXsfxIhKD6E3k= +github.com/aws/aws-sdk-go-v2/service/connect v1.117.0 h1:ELPEshWAPZzprvgJfY0vZcyuPx9eSsXpkdNyQ6kl198= +github.com/aws/aws-sdk-go-v2/service/connect v1.117.0/go.mod h1:oGrMxGM/Ww+glDJ7cfMU1X22kJ6XBBHXsfxIhKD6E3k= github.com/aws/aws-sdk-go-v2/service/connectcases v1.21.6 h1:w475oN5DyGiDt58pLYm1Gq7wKzH4FuZM1tNj+Agd1j4= github.com/aws/aws-sdk-go-v2/service/connectcases v1.21.6/go.mod h1:gCKtUjvhDcgZCLqqdc5AI9cxEFx4VCvvgKy8FL2UeXY= github.com/aws/aws-sdk-go-v2/service/controltower v1.20.0 h1:4YuCMtKeY+TwG277Rh/4zC6ijMjJ5XeMj9djxZ0luXI= github.com/aws/aws-sdk-go-v2/service/controltower v1.20.0/go.mod h1:Wwtsq9vGGX+s+z2CAU6nNVQnQUp6tP12FmGK8Gauy7M= github.com/aws/aws-sdk-go-v2/service/costandusagereportservice v1.28.6 h1:osGnDbG5/5BHoExuVOK1EN0a9cLfZ8NdqB7luLInxOA= github.com/aws/aws-sdk-go-v2/service/costandusagereportservice v1.28.6/go.mod h1:Rkaugb0V6ZcPs8GzhnEjbq+EB9K+GASbOMdxiDzTZX4= -github.com/aws/aws-sdk-go-v2/service/costexplorer v1.43.6 h1:tGvfq+De4uRTaLA1qAbCnbGrJRkQutB2yxQ9sattbyw= -github.com/aws/aws-sdk-go-v2/service/costexplorer v1.43.6/go.mod h1:rwuImPfFVkoKeuAkGrlDSFm9pT9veoRNoH25IG9Jco0= +github.com/aws/aws-sdk-go-v2/service/costexplorer v1.45.0 h1:78q3WvpWmDAg6Ssd9c9bgGLLtFuwRMhNRdSNSX8lXto= +github.com/aws/aws-sdk-go-v2/service/costexplorer v1.45.0/go.mod h1:rwuImPfFVkoKeuAkGrlDSFm9pT9veoRNoH25IG9Jco0= github.com/aws/aws-sdk-go-v2/service/costoptimizationhub v1.11.0 h1:nV8WhW54iNT4XYZphMG5zfxhpe8POhi67Dp5uHCVk80= github.com/aws/aws-sdk-go-v2/service/costoptimizationhub v1.11.0/go.mod h1:CPai3cHY5BMDEFDcUW4JrkN0vo+L3IyJgF/+Ddlm3wc= github.com/aws/aws-sdk-go-v2/service/customerprofiles v1.43.0 h1:LnSDxvx4MoC59r50lHfyDmKFtT4DVeicBn6ci+gvQ/E= @@ -201,8 +201,8 @@ github.com/aws/aws-sdk-go-v2/service/directconnect v1.29.6 h1:sXYEoFEo7GLwRwqY2R github.com/aws/aws-sdk-go-v2/service/directconnect v1.29.6/go.mod h1:E2hAfYPWIpsei0SCp8ykbHcXFON8Knf1oBVdlwUMuVE= github.com/aws/aws-sdk-go-v2/service/directoryservice v1.30.7 h1:ZwecDiXujdrRm5C8UGwdcF9YpV83lgXfzBgUEF5KeME= github.com/aws/aws-sdk-go-v2/service/directoryservice v1.30.7/go.mod h1:ndWayMkDqmOHWM2OcX8Uno6i6gSNm2O8UBNkQjQHpFg= -github.com/aws/aws-sdk-go-v2/service/dlm v1.28.6 h1:dkGszLw6/TazWioiI8i6u3uuDCdVw/ur+voFtNVEUYw= -github.com/aws/aws-sdk-go-v2/service/dlm v1.28.6/go.mod h1:r1kmK6s90DSs6cxF3UvQAGI5LMVEySns/AWL7Rc6fH4= +github.com/aws/aws-sdk-go-v2/service/dlm v1.28.7 h1:gcQxVPVOqGaltkiGow3KxZN4srjmJeVXt4xzY21VqdU= +github.com/aws/aws-sdk-go-v2/service/dlm v1.28.7/go.mod h1:r1kmK6s90DSs6cxF3UvQAGI5LMVEySns/AWL7Rc6fH4= github.com/aws/aws-sdk-go-v2/service/docdb v1.39.5 h1:gWPt2urz9yNjcNcPQ097utT1VGdoeB47yMz2strJrZo= github.com/aws/aws-sdk-go-v2/service/docdb v1.39.5/go.mod h1:3MWrxWaAZsyjlR7sPSnps1uaVQZs8zIdS4lWDCUVD3g= github.com/aws/aws-sdk-go-v2/service/docdbelastic v1.14.3 h1:CqabKk/auDP8y6gjxpHNQ9pavQA1mKe4YopiC10U1co= @@ -211,8 +211,8 @@ github.com/aws/aws-sdk-go-v2/service/drs v1.30.6 h1:gRx0PWMok7r3zmoiwdFzYRyJwp2R github.com/aws/aws-sdk-go-v2/service/drs v1.30.6/go.mod h1:k4mtLg6LgO18IaHeQX9bCms31VSXidi44A1oqMiJ6CA= github.com/aws/aws-sdk-go-v2/service/dynamodb v1.37.1 h1:vucMirlM6D+RDU8ncKaSZ/5dGrXNajozVwpmWNPn2gQ= github.com/aws/aws-sdk-go-v2/service/dynamodb v1.37.1/go.mod h1:fceORfs010mNxZbQhfqUjUeHlTwANmIT4mvHamuUaUg= -github.com/aws/aws-sdk-go-v2/service/ec2 v1.192.0 h1:mNTVdPohLShrsPSyuOCyugLx1DQGCludmuiIsminhUk= -github.com/aws/aws-sdk-go-v2/service/ec2 v1.192.0/go.mod h1:mzj8EEjIHSN2oZRXiw1Dd+uB4HZTl7hC8nBzX9IZMWw= +github.com/aws/aws-sdk-go-v2/service/ec2 v1.193.0 h1:RhSoBFT5/8tTmIseJUXM6INTXTQDF8+0oyxWBnozIms= +github.com/aws/aws-sdk-go-v2/service/ec2 v1.193.0/go.mod h1:mzj8EEjIHSN2oZRXiw1Dd+uB4HZTl7hC8nBzX9IZMWw= github.com/aws/aws-sdk-go-v2/service/ecr v1.36.6 h1:zg+3FGHA0PBs0KM25qE/rOf2o5zsjNa1g/Qq83+SDI0= github.com/aws/aws-sdk-go-v2/service/ecr v1.36.6/go.mod h1:ZSq54Z9SIsOTf1Efwgw1msilSs4XVEfVQiP9nYVnKpM= github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.27.6 h1:9DXEMWmABYPz/NXSFmp9Y14yI5FQ5jmPPvllS9hXXfY= @@ -223,20 +223,20 @@ github.com/aws/aws-sdk-go-v2/service/efs v1.34.0 h1:0VpBMWwpq5UuhneIWO19+/Mp5DmF github.com/aws/aws-sdk-go-v2/service/efs v1.34.0/go.mod h1:WBUkzX6kKt36+zyeTQYxySd0TPuvNQhNWG6vRrNBzJw= github.com/aws/aws-sdk-go-v2/service/eks v1.52.1 h1:XqyUdJbXQxY48CbBtN9a51HoTQy/kTIwrWiruRDsydk= github.com/aws/aws-sdk-go-v2/service/eks v1.52.1/go.mod h1:WTfZ/+I7aSMEna6iYm1Kjne9A8f1MyxXNfp6hCa1+Bk= -github.com/aws/aws-sdk-go-v2/service/elasticache v1.43.3 h1:rMitMatUyTL02GTh5ITa2mon+Xp6iWrISgwWmAmzGFY= -github.com/aws/aws-sdk-go-v2/service/elasticache v1.43.3/go.mod h1:yx9zxw7KuLQoIdf0ajFjNhsIve273fJDMmF/BprT8Vc= +github.com/aws/aws-sdk-go-v2/service/elasticache v1.44.0 h1:Fyzf7cqohTLamP8kht9xvkMJT3HXmz0IQGdRMk1tdJk= +github.com/aws/aws-sdk-go-v2/service/elasticache v1.44.0/go.mod h1:yx9zxw7KuLQoIdf0ajFjNhsIve273fJDMmF/BprT8Vc= github.com/aws/aws-sdk-go-v2/service/elasticbeanstalk v1.28.5 h1:bCj+S/v35iLUnHp8DiIC92sdWYweLUjBDSLFbw7vHQ0= github.com/aws/aws-sdk-go-v2/service/elasticbeanstalk v1.28.5/go.mod h1:gOJmxmxThaTRM7r8WZ6BeOCl14UE48lSgMca7U4/oMM= github.com/aws/aws-sdk-go-v2/service/elasticloadbalancing v1.28.5 h1:12Fm4tTwFk2Url99X56hdKXKVK7suzZKjtdXAILne4g= github.com/aws/aws-sdk-go-v2/service/elasticloadbalancing v1.28.5/go.mod h1:qnlecrYsTCjPhGuF+3SZaz7WGuNz/T3L/Q8a3Yc7uww= -github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.42.0 h1:C4/D90/j3EF/SokpC4HO1aPMkZV1dgqUbmejdpxQiAE= -github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.42.0/go.mod h1:pZP3I+Ts+XuhJJtZE49+ABVjfxm7u9/hxcNUYSpY3OE= +github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.43.0 h1:fIAJ5VM/ANpYV81C1Jbf4ePbElMSzuWFljezD6weU9k= +github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.43.0/go.mod h1:pZP3I+Ts+XuhJJtZE49+ABVjfxm7u9/hxcNUYSpY3OE= github.com/aws/aws-sdk-go-v2/service/elasticsearchservice v1.32.6 h1:j19Nazjj1qrrm7DufPO53F9FFzrUDlphsqpNn0HU3fg= github.com/aws/aws-sdk-go-v2/service/elasticsearchservice v1.32.6/go.mod h1:6QH9UwlCk7m5PoCPH+/UZtStdP8dLg7CzJJ/52o2pAU= github.com/aws/aws-sdk-go-v2/service/elastictranscoder v1.27.6 h1:oV6JszCETDPPHkqZahjVUaP8IlWDSUm2B5lRISvsL2g= github.com/aws/aws-sdk-go-v2/service/elastictranscoder v1.27.6/go.mod h1:JsyDIVlHAYBxZHya8YzO7RzLq24uVUs01aG9BiKOYlo= -github.com/aws/aws-sdk-go-v2/service/emr v1.46.4 h1:+Y/EZ3kCmAORSH2Q1NWxtys3+Uy/+hn/t/XbKm3jwa4= -github.com/aws/aws-sdk-go-v2/service/emr v1.46.4/go.mod h1:1Rl0CmeP2He+Oiz7PtsVJxFIt1h2m1rt0vahJtIldE8= +github.com/aws/aws-sdk-go-v2/service/emr v1.47.0 h1:S3soqtUBuxbG1FcLFiP2uGInncnM0eei+hsmCou2aBs= +github.com/aws/aws-sdk-go-v2/service/emr v1.47.0/go.mod h1:1Rl0CmeP2He+Oiz7PtsVJxFIt1h2m1rt0vahJtIldE8= github.com/aws/aws-sdk-go-v2/service/emrcontainers v1.33.7 h1:OzrMVLJ97pCg2BCER5Tk0/Fg/604Ravd4VR3rRQeKJU= github.com/aws/aws-sdk-go-v2/service/emrcontainers v1.33.7/go.mod h1:JYC8r7iUXCR02VKACPxpcOeLtYnHeKNrMzLv0U6uKVs= github.com/aws/aws-sdk-go-v2/service/emrserverless v1.26.6 h1:0SqOqOHxwzy+2i/DvV/a5Lc+UrfDFRDiCQhVT9jTFFU= @@ -281,8 +281,8 @@ github.com/aws/aws-sdk-go-v2/service/imagebuilder v1.38.4 h1:aiUxEicGm5tUeTfhsay github.com/aws/aws-sdk-go-v2/service/imagebuilder v1.38.4/go.mod h1:6tZhu4I5K6paE401s53iw4F8fskiW6Z+HfOis/MyVwg= github.com/aws/aws-sdk-go-v2/service/inspector v1.25.6 h1:7tGA6lqnXk+KU9ZAYuExBkcw9pLw/mv/bXYxO5Sgsc0= github.com/aws/aws-sdk-go-v2/service/inspector v1.25.6/go.mod h1:UJfA0/mna6xg+45rmRqxX0+72UdlLnW7r99ke5MX4JU= -github.com/aws/aws-sdk-go-v2/service/inspector2 v1.33.1 h1:kRcDnjvUTrcHnN0faXj3t+O3/wRFvPo6dkJFoe41EjE= -github.com/aws/aws-sdk-go-v2/service/inspector2 v1.33.1/go.mod h1:WDIty+W4K+zTro9oNy51ct4odnoZSEQl9VdnRyJI4pE= +github.com/aws/aws-sdk-go-v2/service/inspector2 v1.34.0 h1:qEaZRkBG/RrgakiBGSU4j2gvYiJ4R29T65YLqynr92U= +github.com/aws/aws-sdk-go-v2/service/inspector2 v1.34.0/go.mod h1:WDIty+W4K+zTro9oNy51ct4odnoZSEQl9VdnRyJI4pE= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.1 h1:iXtILhvDxB6kPvEXgsDhGaZCSC6LQET5ZHSdJozeI0Y= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.1/go.mod h1:9nu0fVANtYiAePIBh2/pFUSwtJ402hLnp854CNoDOeE= github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.4.5 h1:gvZOjQKPxFXy1ft3QnEyXmT+IqneM9QAUWlM3r0mfqw= @@ -295,8 +295,8 @@ github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.5 h1:P1doBzv5VEg1ON github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.5/go.mod h1:NOP+euMW7W3Ukt28tAxPuoWao4rhhqJD3QEBk7oCg7w= github.com/aws/aws-sdk-go-v2/service/internetmonitor v1.20.1 h1:bMINUQ0Vx+W0F55LdM/QNmCyy4EpGNFRZxtEY9YY9Y4= github.com/aws/aws-sdk-go-v2/service/internetmonitor v1.20.1/go.mod h1:FwrxOAc2QpAXWHy6pPDHqQpQy/2NuZcdvj1x+lfQEek= -github.com/aws/aws-sdk-go-v2/service/iot v1.60.1 h1:od5vzNqjcpoJQ+QjfcysAvVIdTL41b4m7uVqHBtnSYk= -github.com/aws/aws-sdk-go-v2/service/iot v1.60.1/go.mod h1:S3rkM2vxkYQdO+eEfv7EKzL11An45GCt2/lcnI5LbU0= +github.com/aws/aws-sdk-go-v2/service/iot v1.61.0 h1:VsaQ+YkTqF7R/GbzWGdT9NVhKoxhw67eSC4JIA1QH2k= +github.com/aws/aws-sdk-go-v2/service/iot v1.61.0/go.mod h1:S3rkM2vxkYQdO+eEfv7EKzL11An45GCt2/lcnI5LbU0= github.com/aws/aws-sdk-go-v2/service/iotanalytics v1.26.6 h1:HCNKm01tmleHcWYZQ9xHreJx0+2mWetldsfHK5G2LZs= github.com/aws/aws-sdk-go-v2/service/iotanalytics v1.26.6/go.mod h1:YBeFAvdZ9sTyody+TwjI++jM7+A+gGMdNxUrssNDnlI= github.com/aws/aws-sdk-go-v2/service/iotevents v1.27.6 h1:6jqw638zUZ+hCrb40uzIXL/4b6o75Yykrt5gJVtorUU= @@ -325,8 +325,8 @@ github.com/aws/aws-sdk-go-v2/service/kms v1.37.6 h1:CZImQdb1QbU9sGgJ9IswhVkxAcjk github.com/aws/aws-sdk-go-v2/service/kms v1.37.6/go.mod h1:YJDdlK0zsyxVBxGU48AR/Mi8DMrGdc1E3Yij4fNrONA= github.com/aws/aws-sdk-go-v2/service/lakeformation v1.38.3 h1:vbc9pblnCXXwSGnUW6abjBH2nN66nifZzPfh0fapXl0= github.com/aws/aws-sdk-go-v2/service/lakeformation v1.38.3/go.mod h1:GSrO+Jr1SM/Jfdd52DIN48EY2tbhgk02nogvzpLkFks= -github.com/aws/aws-sdk-go-v2/service/lambda v1.67.0 h1:3BbFvl2FPtIIS6NEE/nnytkES85Kl93/VDAFICtGzfM= -github.com/aws/aws-sdk-go-v2/service/lambda v1.67.0/go.mod h1:guz2K3x4FKSdDaoeB+TPVgJNU9oj2gftbp5cR8ela1A= +github.com/aws/aws-sdk-go-v2/service/lambda v1.69.0 h1:BXt75frE/FYtAmEDBJRBa2HexOw+oAZWZl6QknZEFgg= +github.com/aws/aws-sdk-go-v2/service/lambda v1.69.0/go.mod h1:guz2K3x4FKSdDaoeB+TPVgJNU9oj2gftbp5cR8ela1A= github.com/aws/aws-sdk-go-v2/service/launchwizard v1.8.6 h1:+GPVOamTqDV7sSYzvziM4WbEv4u5jw/2bVYDl5NnmNU= github.com/aws/aws-sdk-go-v2/service/launchwizard v1.8.6/go.mod h1:2KF56C6mZldwDGFF/vyv83VGXqDVpAaH3NwBE2+OTtw= github.com/aws/aws-sdk-go-v2/service/lexmodelbuildingservice v1.28.6 h1:G6qKJwPyBMvFyWjAWW7lbZoN6VsYBCPxzjrQRKCexFg= @@ -365,8 +365,8 @@ github.com/aws/aws-sdk-go-v2/service/mwaa v1.33.0 h1:2MD49J99Lxb43LfLItaZEPVVgXH github.com/aws/aws-sdk-go-v2/service/mwaa v1.33.0/go.mod h1:xBgoacMucYu8C1qm8Z9kcI8ZbnbPgHR2EynpoPt4RZw= github.com/aws/aws-sdk-go-v2/service/neptune v1.35.5 h1:HDoA1Z3r2TuF6CJfYSoLV5Wr70ll+GtJM4vL4n7SAv0= github.com/aws/aws-sdk-go-v2/service/neptune v1.35.5/go.mod h1:vZbGimpx06Ar8EnMRoJLNYsJ6YeYFdvozTz8Kx279lU= -github.com/aws/aws-sdk-go-v2/service/neptunegraph v1.14.4 h1:bicyAt8d5ozkA1dYNWLG2DdA3tH1biSdvC/+2qsWH5E= -github.com/aws/aws-sdk-go-v2/service/neptunegraph v1.14.4/go.mod h1:Uade5ii2gNtKGSUZ2rXZBTSow50uCWh8mNLxsBeSppM= +github.com/aws/aws-sdk-go-v2/service/neptunegraph v1.15.0 h1:BhMpfPFW0vgobYTzfrMFijjXxHCqpyB906ToYuswnpQ= +github.com/aws/aws-sdk-go-v2/service/neptunegraph v1.15.0/go.mod h1:Uade5ii2gNtKGSUZ2rXZBTSow50uCWh8mNLxsBeSppM= github.com/aws/aws-sdk-go-v2/service/networkfirewall v1.44.3 h1:5gs6lyhGYupTMTE+sFsbh35W+XPCdCt4Pgg8qEUleGw= github.com/aws/aws-sdk-go-v2/service/networkfirewall v1.44.3/go.mod h1:RrSc7fUe1EX71WfWClFvg55tAdQJ0UdG1uCOBzAgFFo= github.com/aws/aws-sdk-go-v2/service/networkmanager v1.31.6 h1:j1DzkC+I+mSVkgLXmXadU0bU1NKqLhtJC0VAnmvTvWE= @@ -399,16 +399,16 @@ github.com/aws/aws-sdk-go-v2/service/pinpointsmsvoicev2 v1.18.1 h1:Rq87gPsr+seXV github.com/aws/aws-sdk-go-v2/service/pinpointsmsvoicev2 v1.18.1/go.mod h1:7ouFIQqHwpK5rnzhCkDfF3LioqoOiQs5UD7ANRhxCsg= github.com/aws/aws-sdk-go-v2/service/pipes v1.18.4 h1:hkcI3Is0nBoo0RwMCTY3N9jd3kLbF3eELkmb5xeWDWA= github.com/aws/aws-sdk-go-v2/service/pipes v1.18.4/go.mod h1:ubOlYYLTKhB0FNA85qTHyJGsTTR20T406ywZBXZdcNs= -github.com/aws/aws-sdk-go-v2/service/polly v1.45.6 h1:BB7f5DkU0M86skyEWjCCu2WaiLLPlZzl97np014XQJ8= -github.com/aws/aws-sdk-go-v2/service/polly v1.45.6/go.mod h1:Rp9B8Z/0JVupwGQZavo5YmYjI8mF6wNIv5+Dv4IQb3M= +github.com/aws/aws-sdk-go-v2/service/polly v1.45.7 h1:vjSRnb6eE/VeWy5sicCbp1uG3yn9idstyJ9fiwydFv4= +github.com/aws/aws-sdk-go-v2/service/polly v1.45.7/go.mod h1:Rp9B8Z/0JVupwGQZavo5YmYjI8mF6wNIv5+Dv4IQb3M= github.com/aws/aws-sdk-go-v2/service/pricing v1.32.6 h1:ZzoCQskTXjZBqKW9ZpUFUBCcK22TQZWbO+6PbX8Gu2U= github.com/aws/aws-sdk-go-v2/service/pricing v1.32.6/go.mod h1:9U+el9JTtl0llHl7GimPXMmqNHkjgMeV9vMVvznTqfs= github.com/aws/aws-sdk-go-v2/service/qbusiness v1.16.1 h1:h0NRI0sp2vSW3pocytiirHXzUzqz7sAKtECLucRjLo8= github.com/aws/aws-sdk-go-v2/service/qbusiness v1.16.1/go.mod h1:npob1eKe0EiDBkePh5Y9vnTsI8N507o/XIyZLEYfiYg= github.com/aws/aws-sdk-go-v2/service/qldb v1.25.6 h1:0x4VnCqVcYDsiQs7+VTz3qtaeyTCyB9FtZNAMkb2TCo= github.com/aws/aws-sdk-go-v2/service/qldb v1.25.6/go.mod h1:E7qOKK1pXhE9b1M+52KfCoPr8rIhFUimRgy7bxtLN1U= -github.com/aws/aws-sdk-go-v2/service/quicksight v1.79.1 h1:TjlMHaIWnSa7qV+bdfPRYYG71y2G1oK2OcwZArwCHrU= -github.com/aws/aws-sdk-go-v2/service/quicksight v1.79.1/go.mod h1:vFpU88RJn13XpH88/x7cu+onAag/9cGpjpre8t/0srE= +github.com/aws/aws-sdk-go-v2/service/quicksight v1.80.0 h1:bVG1RvmyEsy5XJNgTGKFox/PUaenvRI6kv6Svb3ifac= +github.com/aws/aws-sdk-go-v2/service/quicksight v1.80.0/go.mod h1:vFpU88RJn13XpH88/x7cu+onAag/9cGpjpre8t/0srE= github.com/aws/aws-sdk-go-v2/service/ram v1.29.6 h1:84mPZMJZHAZBFtff+UbZjAck7ZSiRY+nxmElxTEKa1c= github.com/aws/aws-sdk-go-v2/service/ram v1.29.6/go.mod h1:I6romstEDoLQy+FCQxBmCkoKB3TkpFqiYKrc56nQEFI= github.com/aws/aws-sdk-go-v2/service/rbin v1.21.0 h1:Tx49bha+JoGKWeph1Z5zcyDr4u2e5CrTunWxlI0dsoU= @@ -423,8 +423,8 @@ github.com/aws/aws-sdk-go-v2/service/redshiftserverless v1.24.3 h1:kK6hgb+NPtKbV github.com/aws/aws-sdk-go-v2/service/redshiftserverless v1.24.3/go.mod h1:rM2oYKRheMpuxjJ7fkIqoegIVdG4GkdOqRx1PSx9xYs= github.com/aws/aws-sdk-go-v2/service/rekognition v1.45.7 h1:kC6qaN1AVzhBzDo/0sUCdkJVcamuMslppfys4oGtxR4= github.com/aws/aws-sdk-go-v2/service/rekognition v1.45.7/go.mod h1:/OYd+ham4lcrARFxWjW+TzBZ0u1gprKqbOUAnX4e0D4= -github.com/aws/aws-sdk-go-v2/service/resiliencehub v1.27.4 h1:DDV5IgFQaDoPiPK04iZfoDhW17z8jSWzbeOP+Voh474= -github.com/aws/aws-sdk-go-v2/service/resiliencehub v1.27.4/go.mod h1:qjJmrIFydKnYY0o/pzlSRiVW3MlfexrcfLGprTB9RGU= +github.com/aws/aws-sdk-go-v2/service/resiliencehub v1.28.0 h1:j4tpuJDBBOrjO0nu0/OYF+npDe0zUKDh87Bvu6xMm5M= +github.com/aws/aws-sdk-go-v2/service/resiliencehub v1.28.0/go.mod h1:qjJmrIFydKnYY0o/pzlSRiVW3MlfexrcfLGprTB9RGU= github.com/aws/aws-sdk-go-v2/service/resourceexplorer2 v1.16.1 h1:4sLI1tQYWtjUKbGcqi24jrK9yCRj9dzDlpoHI0nPBBM= github.com/aws/aws-sdk-go-v2/service/resourceexplorer2 v1.16.1/go.mod h1:/BvZpktD03eMkAyP9EJgIZ/0KpfCKAokOo+rFAPWNQo= github.com/aws/aws-sdk-go-v2/service/resourcegroups v1.27.6 h1:1Xt2iiHMw+5WwGLaKZ7KhB+NabAHdPo2pPmSQJO9RAY= @@ -447,14 +447,14 @@ github.com/aws/aws-sdk-go-v2/service/route53resolver v1.34.1 h1:FlKzCc4JH3i87BpF github.com/aws/aws-sdk-go-v2/service/route53resolver v1.34.1/go.mod h1:Srhr/nWE3+IKKhOqUBc/hYmdgCgxt2Z91GMFFtJyOeE= github.com/aws/aws-sdk-go-v2/service/rum v1.21.6 h1:4U/ss6VTGPGvnSzDyojk/atrOWhJ9OPh4RHwYEm86aA= github.com/aws/aws-sdk-go-v2/service/rum v1.21.6/go.mod h1:kAUyICwBeSM4d/WWS2ZcRz9RLtd0ZuDEQbTf4YCmcbA= -github.com/aws/aws-sdk-go-v2/service/s3 v1.67.1 h1:LXLnDfjT/P6SPIaCE86xCOjJROPn4FNB2EdN68vMK5c= -github.com/aws/aws-sdk-go-v2/service/s3 v1.67.1/go.mod h1:ralv4XawHjEMaHOWnTFushl0WRqim/gQWesAMF6hTow= +github.com/aws/aws-sdk-go-v2/service/s3 v1.68.0 h1:bFpcqdwtAEsgpZXvkTxIThFQx/EM0oV6kXmfFIGjxME= +github.com/aws/aws-sdk-go-v2/service/s3 v1.68.0/go.mod h1:ralv4XawHjEMaHOWnTFushl0WRqim/gQWesAMF6hTow= github.com/aws/aws-sdk-go-v2/service/s3control v1.50.1 h1:WjVnnNd++hjjmuODULNfZaW2zEKZVrDGZvdQUK2dF8M= github.com/aws/aws-sdk-go-v2/service/s3control v1.50.1/go.mod h1:ymXHnBHIxM/iqrgGphFuoUfuczoy4inIr2LH8PRj8NQ= github.com/aws/aws-sdk-go-v2/service/s3outposts v1.28.6 h1:zzoRIW5fgL23XkMtW4eDNMvWreQLOJNeFCK2tmjfz1w= github.com/aws/aws-sdk-go-v2/service/s3outposts v1.28.6/go.mod h1:eWYAk3ydR9kivn2OqgXUAgZTvmeSQeoYKiEFIQFVm1M= -github.com/aws/aws-sdk-go-v2/service/sagemaker v1.167.1 h1:ZuWM7eVEdaG73ltv7eUXeKGFSDkpSX0Ub5E6YHdsBy0= -github.com/aws/aws-sdk-go-v2/service/sagemaker v1.167.1/go.mod h1:F2Dsgm3rYCwBQ3kceuZwwdx6N/7jpcRIREp3CGMBwV8= +github.com/aws/aws-sdk-go-v2/service/sagemaker v1.168.0 h1:t3gEqynGngUIZ3dqg9LsrGgK/4Qemqy/LQJtpI7waow= +github.com/aws/aws-sdk-go-v2/service/sagemaker v1.168.0/go.mod h1:F2Dsgm3rYCwBQ3kceuZwwdx6N/7jpcRIREp3CGMBwV8= github.com/aws/aws-sdk-go-v2/service/scheduler v1.12.6 h1:68IWlYXT4lWbn1EmL8NBouGTyi9W/IXkXSJbTiasjXY= github.com/aws/aws-sdk-go-v2/service/scheduler v1.12.6/go.mod h1:p6YS4Jv8IRTR8g77fl7iAYa72RfFV5t7ek8TP8/fKVM= github.com/aws/aws-sdk-go-v2/service/schemas v1.28.7 h1:2Wt+RX/lsLb/+np1UV9naIpl0gg03bs7rkt76Gr6W8s= @@ -475,28 +475,28 @@ github.com/aws/aws-sdk-go-v2/service/servicediscovery v1.33.6 h1:SNpBx1RGzJRBdiU github.com/aws/aws-sdk-go-v2/service/servicediscovery v1.33.6/go.mod h1:wUxQDWQLkWd7A7ROXBwiOhjKFOvHAoKHbrykS9xq9D0= github.com/aws/aws-sdk-go-v2/service/servicequotas v1.25.6 h1:GiXCmQ0LWJxMqxeRK8Oc1w2Ufyn9ADxc0MXZMzFTYyI= github.com/aws/aws-sdk-go-v2/service/servicequotas v1.25.6/go.mod h1:j97IqfLFihFonWq16KSfpMENWQ1PvLjNhjoJfpwYTv8= -github.com/aws/aws-sdk-go-v2/service/ses v1.28.5 h1:fct7t4dGDFoJRk+8EIYBXLNsjd0PdvlRRTtfVwkMwSc= -github.com/aws/aws-sdk-go-v2/service/ses v1.28.5/go.mod h1:JRCjHrdiLrSoHRbbOd0lTQOS5U9Yxe72wB3Rk+e2tcQ= +github.com/aws/aws-sdk-go-v2/service/ses v1.29.0 h1:b6Je/QdCfxf6xupis7Eu8fH6SPFE3tG/Xd6MDOpOGJo= +github.com/aws/aws-sdk-go-v2/service/ses v1.29.0/go.mod h1:JRCjHrdiLrSoHRbbOd0lTQOS5U9Yxe72wB3Rk+e2tcQ= github.com/aws/aws-sdk-go-v2/service/sesv2 v1.38.3 h1:el5Rx1kxCrz4rb/lCPl+Hq33ZAdKohbOTlcks7nR7L0= github.com/aws/aws-sdk-go-v2/service/sesv2 v1.38.3/go.mod h1:Lw3+PgymmO/wdBXubwIAn+RiG7T/cD9gE5kicRmN54A= -github.com/aws/aws-sdk-go-v2/service/sfn v1.33.6 h1:nS79DBMlscyO8OYSJXgv/MlVAevIia3jIrupV6Cj57Q= -github.com/aws/aws-sdk-go-v2/service/sfn v1.33.6/go.mod h1:3dMtLKPPdu8n0VakTR9ncAjFGvnRyLMD1Ib5USqCLG4= +github.com/aws/aws-sdk-go-v2/service/sfn v1.34.0 h1:fWI2n4gv/RHaPaRbceJsQxlvVwBdH2a1v/qjFx1xI58= +github.com/aws/aws-sdk-go-v2/service/sfn v1.34.0/go.mod h1:3dMtLKPPdu8n0VakTR9ncAjFGvnRyLMD1Ib5USqCLG4= github.com/aws/aws-sdk-go-v2/service/shield v1.29.6 h1:6Gyhego+FPrK45FxaQ0wRm4EpovxHc51M4WFaQdGJz0= github.com/aws/aws-sdk-go-v2/service/shield v1.29.6/go.mod h1:KYGAHKJFsHD+QVZ08NHHjAtA0FBrfm5YVSGe7eV4AH0= github.com/aws/aws-sdk-go-v2/service/signer v1.26.6 h1:inoZy/MBkjYLTsvOlU+b3ifeBiWbtQlSp5CKAoFb/6k= github.com/aws/aws-sdk-go-v2/service/signer v1.26.6/go.mod h1:PlARViFxCTRAUavXGcQObbvAneCEeln0hvpQCsHJATU= -github.com/aws/aws-sdk-go-v2/service/sns v1.33.5 h1:nJDOsZumqKsejsiGKgpezFzI2oatHmQi/kKKC4wS8v4= -github.com/aws/aws-sdk-go-v2/service/sns v1.33.5/go.mod h1:SODr0Lu3lFdT0SGsGX1TzFTapwveBrT5wztVoYtppm8= +github.com/aws/aws-sdk-go-v2/service/sns v1.33.6 h1:lEUtRHICiXsd7VRwRjXaY7MApT2X4Ue0Mrwe6XbyBro= +github.com/aws/aws-sdk-go-v2/service/sns v1.33.6/go.mod h1:SODr0Lu3lFdT0SGsGX1TzFTapwveBrT5wztVoYtppm8= github.com/aws/aws-sdk-go-v2/service/sqs v1.37.1 h1:39WvSrVq9DD6UHkD+fx5x19P5KpRQfNdtgReDVNbelc= github.com/aws/aws-sdk-go-v2/service/sqs v1.37.1/go.mod h1:3gwPzC9LER/BTQdQZ3r6dUktb1rSjABF1D3Sr6nS7VU= -github.com/aws/aws-sdk-go-v2/service/ssm v1.55.6 h1:mh6Osa3cjwaaVSzJ92a8x1dBh8XQ7ekKLHyhjtx5RRw= -github.com/aws/aws-sdk-go-v2/service/ssm v1.55.6/go.mod h1:l9qF25TzH95FhcIak6e4vt79KE4I7M2Nf59eMUVjj6c= +github.com/aws/aws-sdk-go-v2/service/ssm v1.56.0 h1:mADKqoZaodipGgiZfuAjtlcr4IVBtXPZKVjkzUZCCYM= +github.com/aws/aws-sdk-go-v2/service/ssm v1.56.0/go.mod h1:l9qF25TzH95FhcIak6e4vt79KE4I7M2Nf59eMUVjj6c= github.com/aws/aws-sdk-go-v2/service/ssmcontacts v1.26.6 h1:mYRRsmR2P2tGRzoAWOc0dhh6/wm5xF9MRkMJ/OJdkNk= github.com/aws/aws-sdk-go-v2/service/ssmcontacts v1.26.6/go.mod h1:aTtebl9x8vxZTTUamDzvujt1OICEpcZED1oCi80yyJw= github.com/aws/aws-sdk-go-v2/service/ssmincidents v1.34.6 h1:dqJenl1BmS8fQWI8Ol/h3WdME5lRiYdmggoHv1fihVY= github.com/aws/aws-sdk-go-v2/service/ssmincidents v1.34.6/go.mod h1:NU/CID+MNfIEoHY+XOQ4xvtF8vPm0eco0thWTY2EM9o= -github.com/aws/aws-sdk-go-v2/service/ssmquicksetup v1.2.7 h1:d26uTPkNtnu91NP0+OUAiJL8HoBqzexaElP+8e97zRM= -github.com/aws/aws-sdk-go-v2/service/ssmquicksetup v1.2.7/go.mod h1:MtHMOMSvnNeeu3F5WP30eZwSp1qRbxjkT2xor1mb/H4= +github.com/aws/aws-sdk-go-v2/service/ssmquicksetup v1.3.0 h1:SYNFn4FRwdrh0tWdRBcrVN1T3/QgisV/E68/y+0cda8= +github.com/aws/aws-sdk-go-v2/service/ssmquicksetup v1.3.0/go.mod h1:MtHMOMSvnNeeu3F5WP30eZwSp1qRbxjkT2xor1mb/H4= github.com/aws/aws-sdk-go-v2/service/ssmsap v1.18.6 h1:uJACk0uiWe+s5Y7CWo15ojwRS4uwxBsfjrcG/QxztKo= github.com/aws/aws-sdk-go-v2/service/ssmsap v1.18.6/go.mod h1:v676cxw/KjLk2vM97EL/nrpiX160mY97QErDa2ArdUs= github.com/aws/aws-sdk-go-v2/service/sso v1.24.6 h1:3zu537oLmsPfDMyjnUS2g+F2vITgy5pB74tHI+JBNoM= @@ -517,16 +517,16 @@ github.com/aws/aws-sdk-go-v2/service/taxsettings v1.7.0 h1:NWEjSezAbU7klTwlWJFLh github.com/aws/aws-sdk-go-v2/service/taxsettings v1.7.0/go.mod h1:jHBnwkzXiAFmiNEKEuyBxE+eEqfa1qm7wggL7RTgqHM= github.com/aws/aws-sdk-go-v2/service/timestreaminfluxdb v1.6.6 h1:Ouja3w2uigjuZ5wa7aR0CaHZTe+niXSzUvJS/4E1Wa0= github.com/aws/aws-sdk-go-v2/service/timestreaminfluxdb v1.6.6/go.mod h1:OVSgcDB+hYKLrNiho0Y19pQiOMnth63hprCxzpblayA= -github.com/aws/aws-sdk-go-v2/service/timestreamwrite v1.29.6 h1:AOlSnlkT0ZgJxuMcH8Fes1NBg4xNtKTB3+LF4bzHMII= -github.com/aws/aws-sdk-go-v2/service/timestreamwrite v1.29.6/go.mod h1:UyyUbIDdMO1cGXWA37B/KylPyLrq5kNU1m2E+ojF610= +github.com/aws/aws-sdk-go-v2/service/timestreamwrite v1.29.7 h1:i3Uuh/LLP1Qh3x0qh8i2OnaU+nZ5u3oMwffIrtH7yjc= +github.com/aws/aws-sdk-go-v2/service/timestreamwrite v1.29.7/go.mod h1:UyyUbIDdMO1cGXWA37B/KylPyLrq5kNU1m2E+ojF610= github.com/aws/aws-sdk-go-v2/service/transcribe v1.41.6 h1:0uM86aXF1xuNNP94lvMua36AS4/urnnV0JIoZs1hgdM= github.com/aws/aws-sdk-go-v2/service/transcribe v1.41.6/go.mod h1:VdynE2CDkpp9p96Nsy+eFE5PJferzNnjuB1kMcjl0Uk= github.com/aws/aws-sdk-go-v2/service/transfer v1.53.5 h1:xyvVof+cdQogIXJDKJdhJ2dVF/svxrjv4zEP1T9fIV0= github.com/aws/aws-sdk-go-v2/service/transfer v1.53.5/go.mod h1:tjYLu1usUNMh2mMGrahX1ZQd7WSIwqe0O7wGd5Gq4aU= github.com/aws/aws-sdk-go-v2/service/verifiedpermissions v1.20.2 h1:ERPfTAJIbZxwDJKCPvsZacGqodEx4dj9K2OC4sDnrCk= github.com/aws/aws-sdk-go-v2/service/verifiedpermissions v1.20.2/go.mod h1:f4UivZUJxaK4N/UIJXQgpirh3yWsNxMzWsrk0sUvZrk= -github.com/aws/aws-sdk-go-v2/service/vpclattice v1.12.8 h1:a7UROHRTNSQrJ2h4BETtfACcPjWuZPoPpeMBmxS7K00= -github.com/aws/aws-sdk-go-v2/service/vpclattice v1.12.8/go.mod h1:X0X0qZ4S3qpAm8NfTdW4lacTf2VusIV3sbwF+CN3d4k= +github.com/aws/aws-sdk-go-v2/service/vpclattice v1.12.9 h1:GRU6B7siT+PRSIS9JmOFLugE90//aCQ9jOfk09wxI+g= +github.com/aws/aws-sdk-go-v2/service/vpclattice v1.12.9/go.mod h1:X0X0qZ4S3qpAm8NfTdW4lacTf2VusIV3sbwF+CN3d4k= github.com/aws/aws-sdk-go-v2/service/waf v1.25.6 h1:FgT+D2lZj5PP1enlTMg4i7yHPCDjk7css+GEQbkwHiI= github.com/aws/aws-sdk-go-v2/service/waf v1.25.6/go.mod h1:CdOaduoCFkcCa1F3V0FfKsRflqwjuuctnt0eyDQlt0Y= github.com/aws/aws-sdk-go-v2/service/wafregional v1.25.6 h1:ZAVHrgxHso3D6ZrWYNW8ZYpWei5YRdMNu4teYal/B4c= @@ -537,12 +537,12 @@ github.com/aws/aws-sdk-go-v2/service/wellarchitected v1.34.6 h1:gRlAqT37MBjotuhc github.com/aws/aws-sdk-go-v2/service/wellarchitected v1.34.6/go.mod h1:5/10vqAzXC/biuHdbkYAULETemq0j+7fafDQyqUjKRA= github.com/aws/aws-sdk-go-v2/service/worklink v1.23.2 h1:VN3Qydtdl3UlJRHVxQxSP1d8I5gtvT5zdaCCAfZST7Y= github.com/aws/aws-sdk-go-v2/service/worklink v1.23.2/go.mod h1:Z3RLpIq4q49syd921XdsKeD584kPu89iKTEjluh7908= -github.com/aws/aws-sdk-go-v2/service/workspaces v1.50.0 h1:7rGPAEvw9t7crYz4C4n80GHLe9O8XxbmeBywWp7iCVw= -github.com/aws/aws-sdk-go-v2/service/workspaces v1.50.0/go.mod h1:ZKS7KNf+/ecd+vfEVnfee4ZKg09jrB6/14Qnf79Y+so= +github.com/aws/aws-sdk-go-v2/service/workspaces v1.50.1 h1:c974+tQIdxp/CoNWQfG6JWc90dgZDnup8/k8M0aR4+U= +github.com/aws/aws-sdk-go-v2/service/workspaces v1.50.1/go.mod h1:ZKS7KNf+/ecd+vfEVnfee4ZKg09jrB6/14Qnf79Y+so= github.com/aws/aws-sdk-go-v2/service/workspacesweb v1.25.0 h1:H5JtZI/cuMrzvzl44q542vCr3w3EHlYl5+0ac9MdAik= github.com/aws/aws-sdk-go-v2/service/workspacesweb v1.25.0/go.mod h1:NgEGK1Ex63erNYNTWMenNczoi8/nguJvIvobKYp1LQ8= -github.com/aws/aws-sdk-go-v2/service/xray v1.29.6 h1:petUl/lqCEs41/fs28skMHZZsBah5oQk6uHKZSBqApk= -github.com/aws/aws-sdk-go-v2/service/xray v1.29.6/go.mod h1:+wep8ElVmvR0bCsQ1SQWMKhAlA3+Ks0+uitEfYQ8zO8= +github.com/aws/aws-sdk-go-v2/service/xray v1.30.0 h1:3kGcueLqlC3x5LqVWgckz38Kd5pHqpzhVC95beoZVyI= +github.com/aws/aws-sdk-go-v2/service/xray v1.30.0/go.mod h1:+wep8ElVmvR0bCsQ1SQWMKhAlA3+Ks0+uitEfYQ8zO8= github.com/aws/smithy-go v1.22.1 h1:/HPHZQ0g7f4eUeK6HKglFz8uwVfZKgoI25rb/J+dnro= github.com/aws/smithy-go v1.22.1/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg= github.com/beevik/etree v1.4.1 h1:PmQJDDYahBGNKDcpdX8uPy1xRCwoCGVUiW669MEirVI= diff --git a/website/allowed-subcategories.txt b/website/allowed-subcategories.txt index d4fff79113c..6a9803a3080 100644 --- a/website/allowed-subcategories.txt +++ b/website/allowed-subcategories.txt @@ -161,7 +161,7 @@ Mainframe Modernization Managed Grafana Managed Streaming for Kafka Managed Streaming for Kafka Connect -MemoryDB for Redis +MemoryDB Meta Data Sources Neptune Neptune Analytics diff --git a/website/docs/cdktf/python/d/memorydb_acl.html.markdown b/website/docs/cdktf/python/d/memorydb_acl.html.markdown index 8059f4a49bb..2df8b0a96c2 100644 --- a/website/docs/cdktf/python/d/memorydb_acl.html.markdown +++ b/website/docs/cdktf/python/d/memorydb_acl.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_acl" description: |- diff --git a/website/docs/cdktf/python/d/memorydb_cluster.html.markdown b/website/docs/cdktf/python/d/memorydb_cluster.html.markdown index 462a1c3a211..6a151a4a5f4 100644 --- a/website/docs/cdktf/python/d/memorydb_cluster.html.markdown +++ b/website/docs/cdktf/python/d/memorydb_cluster.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_cluster" description: |- diff --git a/website/docs/cdktf/python/d/memorydb_parameter_group.html.markdown b/website/docs/cdktf/python/d/memorydb_parameter_group.html.markdown index 563659f7095..83e501c8b0c 100644 --- a/website/docs/cdktf/python/d/memorydb_parameter_group.html.markdown +++ b/website/docs/cdktf/python/d/memorydb_parameter_group.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_parameter_group" description: |- diff --git a/website/docs/cdktf/python/d/memorydb_snapshot.html.markdown b/website/docs/cdktf/python/d/memorydb_snapshot.html.markdown index 0973826f709..f5cc69b2d54 100644 --- a/website/docs/cdktf/python/d/memorydb_snapshot.html.markdown +++ b/website/docs/cdktf/python/d/memorydb_snapshot.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_snapshot" description: |- diff --git a/website/docs/cdktf/python/d/memorydb_subnet_group.html.markdown b/website/docs/cdktf/python/d/memorydb_subnet_group.html.markdown index e564b6e0a34..a846abbd6ef 100644 --- a/website/docs/cdktf/python/d/memorydb_subnet_group.html.markdown +++ b/website/docs/cdktf/python/d/memorydb_subnet_group.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_subnet_group" description: |- diff --git a/website/docs/cdktf/python/d/memorydb_user.html.markdown b/website/docs/cdktf/python/d/memorydb_user.html.markdown index ab2343293f2..25f33a18759 100644 --- a/website/docs/cdktf/python/d/memorydb_user.html.markdown +++ b/website/docs/cdktf/python/d/memorydb_user.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_user" description: |- diff --git a/website/docs/cdktf/python/d/organizations_policies.html.markdown b/website/docs/cdktf/python/d/organizations_policies.html.markdown index 86af4a62a2b..3123b283124 100644 --- a/website/docs/cdktf/python/d/organizations_policies.html.markdown +++ b/website/docs/cdktf/python/d/organizations_policies.html.markdown @@ -50,7 +50,7 @@ class MyConvertedCode(TerraformStack): The following arguments are required: -* `filter` - (Required) The type of policies to be returned in the response. Valid values are `SERVICE_CONTROL_POLICY | TAG_POLICY | BACKUP_POLICY | AISERVICES_OPT_OUT_POLICY` +* `filter` - (Required) The type of policies to be returned in the response. Valid values are `AISERVICES_OPT_OUT_POLICY | BACKUP_POLICY | RESOURCE_CONTROL_POLICY | SERVICE_CONTROL_POLICY | TAG_POLICY` ## Attribute Reference @@ -58,4 +58,4 @@ This data source exports the following attributes in addition to the arguments a * `ids` - List of all the policy ids found. - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/d/organizations_policies_for_target.html.markdown b/website/docs/cdktf/python/d/organizations_policies_for_target.html.markdown index 20c5434a544..3f2743cf13a 100644 --- a/website/docs/cdktf/python/d/organizations_policies_for_target.html.markdown +++ b/website/docs/cdktf/python/d/organizations_policies_for_target.html.markdown @@ -57,7 +57,7 @@ class MyConvertedCode(TerraformStack): The following arguments are required: * `target_id` - (Required) The root (string that begins with "r-" followed by 4-32 lowercase letters or digits), account (12 digit string), or Organizational Unit (string starting with "ou-" followed by 4-32 lowercase letters or digits. This string is followed by a second "-" dash and from 8-32 additional lowercase letters or digits.) -* `filter` - (Required) Must supply one of the 4 different policy filters for a target (SERVICE_CONTROL_POLICY | TAG_POLICY | BACKUP_POLICY | AISERVICES_OPT_OUT_POLICY) +* `filter` - (Required) Must supply one of the 5 different policy filters for a target (AISERVICES_OPT_OUT_POLICY | BACKUP_POLICY | RESOURCE_CONTROL_POLICY | SERVICE_CONTROL_POLICY | TAG_POLICY) ## Attribute Reference @@ -65,4 +65,4 @@ This data source exports the following attributes in addition to the arguments a * `ids` - List of all the policy ids found. - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/d/organizations_policy.html.markdown b/website/docs/cdktf/python/d/organizations_policy.html.markdown index dea30d05311..4bce0e6b1c5 100644 --- a/website/docs/cdktf/python/d/organizations_policy.html.markdown +++ b/website/docs/cdktf/python/d/organizations_policy.html.markdown @@ -60,6 +60,6 @@ This data source exports the following attributes in addition to the arguments a * `content` - The text content of the policy. * `description` - The description of the policy. * `name` - The friendly name of the policy. -* `type` - The type of policy values can be `SERVICE_CONTROL_POLICY | TAG_POLICY | BACKUP_POLICY | AISERVICES_OPT_OUT_POLICY` +* `type` - The type of policy values can be `AISERVICES_OPT_OUT_POLICY | BACKUP_POLICY | RESOURCE_CONTROL_POLICY | SERVICE_CONTROL_POLICY | TAG_POLICY` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/ephemeral-resources/kms_secrets.html.markdown b/website/docs/cdktf/python/ephemeral-resources/kms_secrets.html.markdown new file mode 100644 index 00000000000..10762623698 --- /dev/null +++ b/website/docs/cdktf/python/ephemeral-resources/kms_secrets.html.markdown @@ -0,0 +1,75 @@ +--- +subcategory: "KMS (Key Management)" +layout: "aws" +page_title: "AWS: aws_kms_secrets" +description: |- + Decrypt multiple secrets from data encrypted with the AWS KMS service +--- + + + +# Ephemeral: aws_kms_secrets + +Decrypt multiple secrets from data encrypted with the AWS KMS service. + +~> **NOTE:** Ephemeral resources are a new feature and may evolve as we continue to explore their most effective uses. [Learn more](https://developer.hashicorp.com/terraform/language/v1.10.x/resources/ephemeral). + +## Example Usage + +If you do not already have a `CiphertextBlob` from encrypting a KMS secret, you can use the below commands to obtain one using the [AWS CLI kms encrypt](https://docs.aws.amazon.com/cli/latest/reference/kms/encrypt.html) command. This requires you to have your AWS CLI setup correctly and replace the `--key-id` with your own. Alternatively you can use `--plaintext 'master-password'` (CLIv1) or `--plaintext fileb://<(echo -n 'master-password')` (CLIv2) instead of reading from a file. + +-> If you have a newline character at the end of your file, it will be decrypted with this newline character intact. For most use cases this is undesirable and leads to incorrect passwords or invalid values, as well as possible changes in the plan. Be sure to use `echo -n` if necessary. +-> If you are using asymmetric keys ensure you are using the right encryption algorithm when you encrypt and decrypt else you will get IncorrectKeyException during the decrypt phase. + +That encrypted output can now be inserted into Terraform configurations without exposing the plaintext secret directly. + +```python +# DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug +from constructs import Construct +from cdktf import Fn, Token, TerraformStack +# +# Provider bindings are generated by running `cdktf get`. +# See https://cdk.tf/provider-generation for more details. +# +from imports.aws.rds_cluster import RdsCluster +class MyConvertedCode(TerraformStack): + def __init__(self, scope, name, *, engine): + super().__init__(scope, name) + RdsCluster(self, "example", + master_password=Token.as_string( + Fn.lookup_nested(data_aws_kms_secrets_example.plaintext, ["\"master_password\"" + ])), + master_username=Token.as_string( + Fn.lookup_nested(data_aws_kms_secrets_example.plaintext, ["\"master_username\"" + ])), + engine=engine + ) +``` + +## Argument Reference + +This resource supports the following arguments: + +* `secret` - (Required) One or more encrypted payload definitions from the KMS service. See the Secret Definitions below. + +### Secret Definitions + +Each `secret` supports the following arguments: + +* `name` - (Required) Name to export this secret under in the attributes. +* `payload` - (Required) Base64 encoded payload, as returned from a KMS encrypt operation. +* `context` - (Optional) An optional mapping that makes up the Encryption Context for the secret. +* `grant_tokens` (Optional) An optional list of Grant Tokens for the secret. +* `encryption_algorithm` - (Optional) The encryption algorithm that will be used to decrypt the ciphertext. This parameter is required only when the ciphertext was encrypted under an asymmetric KMS key. Valid Values: SYMMETRIC_DEFAULT | RSAES_OAEP_SHA_1 | RSAES_OAEP_SHA_256 | SM2PKE +* `key_id` (Optional) Specifies the KMS key that AWS KMS uses to decrypt the ciphertext. This parameter is required only when the ciphertext was encrypted under an asymmetric KMS key. + +For more information on `context` and `grant_tokens` see the [KMS +Concepts](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html) + +## Attribute Reference + +This resource exports the following attributes in addition to the arguments above: + +* `plaintext` - Map containing each `secret` `name` as the key with its decrypted plaintext value + + \ No newline at end of file diff --git a/website/docs/cdktf/python/ephemeral-resources/lambda_invocation.html.markdown b/website/docs/cdktf/python/ephemeral-resources/lambda_invocation.html.markdown new file mode 100644 index 00000000000..85ea3d8b3ba --- /dev/null +++ b/website/docs/cdktf/python/ephemeral-resources/lambda_invocation.html.markdown @@ -0,0 +1,60 @@ +--- +subcategory: "Lambda" +layout: "aws" +page_title: "AWS: aws_lambda_invocation" +description: |- + Invoke AWS Lambda Function +--- + + + +# Ephemeral: aws_lambda_invocation + +Use this ephemeral resource to invoke a Lambda function. The lambda function is invoked with the [RequestResponse](https://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html#API_Invoke_RequestSyntax) invocation type. + +~> **NOTE:** Ephemeral resources are a new feature and may evolve as we continue to explore their most effective uses. [Learn more](https://developer.hashicorp.com/terraform/language/v1.10.x/resources/ephemeral). + +~> **NOTE:** The `aws_lambda_invocation` ephemeral resource invokes the function during every `plan` and `apply` when the function is known. A common use case for this functionality is when invoking a lightweight function—where repeated invocations are acceptable—that produces sensitive information you do not want to store in the state. + +~> **NOTE:** If you get a `KMSAccessDeniedException: Lambda was unable to decrypt the environment variables because KMS access was denied` error when invoking an [`aws_lambda_function`](/docs/providers/aws/r/lambda_function.html) with environment variables, the IAM role associated with the function may have been deleted and recreated _after_ the function was created. You can fix the problem two ways: 1) updating the function's role to another role and then updating it back again to the recreated role, or 2) by using Terraform to `taint` the function and `apply` your configuration again to recreate the function. (When you create a function, Lambda grants permissions on the KMS key to the function's IAM role. If the IAM role is recreated, the grant is no longer valid. Changing the function's role or recreating the function causes Lambda to update the grant.) + +## Example Usage + +### Basic Example + +```python +# DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug +from constructs import Construct +from cdktf import TerraformOutput, Fn, TerraformStack +class MyConvertedCode(TerraformStack): + def __init__(self, scope, name): + super().__init__(scope, name) + TerraformOutput(self, "result_entry", + value=Fn.lookup_nested(Fn.jsondecode(example.result), ["\"key1\""]) + ) +``` + +## Argument Reference + +The following arguments are required: + +* `function_name` - (Required) Name or ARN of the Lambda function, version, or alias. You can append a version number or alias. If you specify only the function name, it is limited to 64 characters in length. +* `payload` - (Required) JSON that you want to provide to your Lambda function as input. + +The following arguments are optional: + +* `client_context` - (Optional) Up to 3583 bytes of base64-encoded data about the invoking client to pass to the function in the context object. +* `log_type` - (Optional) Set to `Tail` to include the execution log in the response. Valid values are `None` and `Tail`. +* `qualifier` - (Optional) Version or alias to invoke a published version of the function. Defaults to `$LATEST`. + +## Attribute Reference + +This resource exports the following attributes in addition to the arguments above: + +* `executed_version` - Version of the function that executed. When you invoke a function with an alias, the version the alias resolved to. +* `function_error` - If present, indicates that an error occurred during function execution. Details about the error are included in `result`. +* `log_result` - Last 4 KB of the execution log, which is base64-encoded. +* `result` - String result of the lambda function invocation. +* `status_code` - HTTP status code is in the 200 range for a successful request. + + \ No newline at end of file diff --git a/website/docs/cdktf/python/ephemeral-resources/secretsmanager_secret_version.html.markdown b/website/docs/cdktf/python/ephemeral-resources/secretsmanager_secret_version.html.markdown new file mode 100644 index 00000000000..31f131206b7 --- /dev/null +++ b/website/docs/cdktf/python/ephemeral-resources/secretsmanager_secret_version.html.markdown @@ -0,0 +1,76 @@ +--- +subcategory: "Secrets Manager" +layout: "aws" +page_title: "AWS: aws_secretsmanager_secret_version" +description: |- + Retrieve information about a Secrets Manager secret version including its secret value +--- + + + +# Ephemeral: aws_secretsmanager_secret_version + +Retrieve information about a Secrets Manager secret version, including its secret value. To retrieve secret metadata, see the [`aws_secretsmanager_secret` data source](/docs/providers/aws/d/secretsmanager_secret.html). + +~> **NOTE:** Ephemeral resources are a new feature and may evolve as we continue to explore their most effective uses. [Learn more](https://developer.hashicorp.com/terraform/language/v1.10.x/resources/ephemeral). + +## Example Usage + +### Retrieve Current Secret Version + +By default, this ephemeral resource retrieves information based on the `AWSCURRENT` staging label. + +```python +# DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug +from constructs import Construct +from cdktf import TerraformStack +class MyConvertedCode(TerraformStack): + def __init__(self, scope, name): + super().__init__(scope, name) +``` + +### Retrieve Specific Secret Version + +```python +# DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug +from constructs import Construct +from cdktf import TerraformStack +class MyConvertedCode(TerraformStack): + def __init__(self, scope, name): + super().__init__(scope, name) +``` + +### Handling Key-Value Secret Strings in JSON + +Reading key-value pairs from JSON back into a native Terraform map can be accomplished in Terraform 0.12 and later with the [`jsondecode()` function](https://www.terraform.io/docs/configuration/functions/jsondecode.html): + +```python +# DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug +from constructs import Construct +from cdktf import TerraformOutput, Fn, TerraformStack +class MyConvertedCode(TerraformStack): + def __init__(self, scope, name): + super().__init__(scope, name) + TerraformOutput(self, "example", + value=Fn.lookup_nested(aws_secretsmanager_secret_version.example.secret_string, ["\"key1\""]) + ) +``` + +## Argument Reference + +* `secret_id` - (Required) Specifies the secret containing the version that you want to retrieve. You can specify either the ARN or the friendly name of the secret. +* `version_id` - (Optional) Specifies the unique identifier of the version of the secret that you want to retrieve. Overrides `version_stage`. +* `version_stage` - (Optional) Specifies the secret version that you want to retrieve by the staging label attached to the version. Defaults to `AWSCURRENT`. + +## Attribute Reference + +This resource exports the following attributes in addition to the arguments above: + +* `arn` - ARN of the secret. +* `created_date` - Created date of the secret in UTC. +* `id` - Unique identifier of this version of the secret. +* `secret_string` - Decrypted part of the protected secret information that was originally provided as a string. +* `secret_binary` - Decrypted part of the protected secret information that was originally provided as a binary. +* `version_id` - Unique identifier of this version of the secret. + + \ No newline at end of file diff --git a/website/docs/cdktf/python/index.html.markdown b/website/docs/cdktf/python/index.html.markdown index 6468c7cde49..52217566e23 100644 --- a/website/docs/cdktf/python/index.html.markdown +++ b/website/docs/cdktf/python/index.html.markdown @@ -13,7 +13,7 @@ Use the Amazon Web Services (AWS) provider to interact with the many resources supported by AWS. You must configure the provider with the proper credentials before you can use it. -Use the navigation to the left to read about the available resources. There are currently 1447 resources and 591 data sources available in the provider. +Use the navigation to the left to read about the available resources. There are currently 1448 resources and 591 data sources available in the provider. To learn the basics of Terraform using this provider, follow the hands-on [get started tutorials](https://learn.hashicorp.com/tutorials/terraform/infrastructure-as-code?in=terraform/aws-get-started&utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS). Interact with AWS services, @@ -898,4 +898,4 @@ Approaches differ per authentication providers: There used to be no better way to get account ID out of the API when using the federated account until `sts:GetCallerIdentity` was introduced. - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/bedrockagent_data_source.html.markdown b/website/docs/cdktf/python/r/bedrockagent_data_source.html.markdown index 1dbcd46afa1..79e750a99fb 100644 --- a/website/docs/cdktf/python/r/bedrockagent_data_source.html.markdown +++ b/website/docs/cdktf/python/r/bedrockagent_data_source.html.markdown @@ -128,7 +128,7 @@ The `semantic_chunking_configuration` block supports the following arguments: The `custom_transformation_configuration` block supports the following arguments: * `intermediate_storage` - (Required, Forces new resource) The intermediate storage for custom transformation. -* `transformation_function` - (Required) The configuration of transformation function. +* `transformation` - (Required) A custom processing step for documents moving through the data source ingestion pipeline. ### `intermediate_storage` block @@ -142,12 +142,18 @@ The `s3_location` block supports the following arguments: * `uri` - (Required, Forces new resource) S3 URI for intermediate storage. +### `transformation` block + +The `transformation` block supports the following arguments: + +* `step_to_apply` - (Required, Forces new resource) When the service applies the transformation. Currently only `POST_CHUNKING` is supported. +* `transformation_function` - (Required) The lambda function that processes documents. + ### `transformation_function` block The `transformation_function` block supports the following arguments: -* `step_to_apply` - (Required, Forces new resource) Currently only `POST_CHUNKING` is supported. -* `transformation_lambda_configuration` - (Required, Forces new resource) The lambda configuration for custom transformation. +* `transformation_lambda_configuration` - (Required, Forces new resource) The configuration of the lambda function. ### `transformation_lambda_configuration` block @@ -214,4 +220,4 @@ Using `terraform import`, import Agents for Amazon Bedrock Data Source using the % terraform import aws_bedrockagent_data_source.example GWCMFMQF6T,EMDPPAYPZI ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/ecs_service.html.markdown b/website/docs/cdktf/python/r/ecs_service.html.markdown index 8740252c5c1..580eda97742 100644 --- a/website/docs/cdktf/python/r/ecs_service.html.markdown +++ b/website/docs/cdktf/python/r/ecs_service.html.markdown @@ -186,6 +186,7 @@ The following arguments are required: The following arguments are optional: * `alarms` - (Optional) Information about the CloudWatch alarms. [See below](#alarms). +* `availability_zone_rebalancing` - (Optional) ECS automatically redistributes tasks within a service across Availability Zones (AZs) to mitigate the risk of impaired application availability due to underlying infrastructure failures and task lifecycle activities. The valid values are `ENABLED` and `DISABLED`. Defaults to `DISABLED`. * `capacity_provider_strategy` - (Optional) Capacity provider strategies to use for the service. Can be one or more. These can be updated without destroying and recreating the service only if `force_new_deployment = true` and not changing from 0 `capacity_provider_strategy` blocks to greater than 0, or vice versa. See below. Conflicts with `launch_type`. * `cluster` - (Optional) ARN of an ECS cluster. * `deployment_circuit_breaker` - (Optional) Configuration block for deployment circuit breaker. See below. @@ -213,6 +214,7 @@ The following arguments are optional: * `task_definition` - (Optional) Family and revision (`family:revision`) or full ARN of the task definition that you want to run in your service. Required unless using the `EXTERNAL` deployment controller. If a revision is not specified, the latest `ACTIVE` revision is used. * `triggers` - (Optional) Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `plantimestamp()`. See example above. * `volume_configuration` - (Optional) Configuration for a volume specified in the task definition as a volume that is configured at launch time. Currently, the only supported volume type is an Amazon EBS volume. [See below](#volume_configuration). +* `vpc_lattice_configurations` - (Optional) The VPC Lattice configuration for your service that allows Lattice to connect, secure, and monitor your service across multiple accounts and VPCs. [See below](#vpc_lattice_configurations). * `wait_for_steady_state` - (Optional) If `true`, Terraform will wait for the service to reach a steady state (like [`aws ecs wait services-stable`](https://docs.aws.amazon.com/cli/latest/reference/ecs/wait/services-stable.html)) before continuing. Default `false`. ### alarms @@ -230,6 +232,14 @@ The `volume_configuration` configuration block supports the following: * `name` - (Required) Name of the volume. * `managed_ebs_volume` - (Required) Configuration for the Amazon EBS volume that Amazon ECS creates and manages on your behalf. [See below](#managed_ebs_volume). +### vpc_lattice_configurations + +`vpc_lattice_configurations` supports the following: + +* `role_arn` - (Required) The ARN of the IAM role to associate with this volume. This is the Amazon ECS infrastructure IAM role that is used to manage your AWS infrastructure. +* `target_group_arn` - (Required) The full ARN of the target group or groups associated with the VPC Lattice configuration. +* `port_name` - (Required) The name of the port for a target group associated with the VPC Lattice configuration. + ### managed_ebs_volume The `managed_ebs_volume` configuration block supports the following: @@ -426,4 +436,4 @@ Using `terraform import`, import ECS services using the `name` together with ecs % terraform import aws_ecs_service.imported cluster-name/service-name ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/eip.html.markdown b/website/docs/cdktf/python/r/eip.html.markdown index 07dd8f28e53..9c346ded412 100644 --- a/website/docs/cdktf/python/r/eip.html.markdown +++ b/website/docs/cdktf/python/r/eip.html.markdown @@ -161,7 +161,7 @@ This resource supports the following arguments: * `address` - (Optional) IP address from an EC2 BYOIP pool. This option is only available for VPC EIPs. * `associate_with_private_ip` - (Optional) User-specified primary or secondary private IP address to associate with the Elastic IP address. If no private IP address is specified, the Elastic IP address is associated with the primary private IP address. * `customer_owned_ipv4_pool` - (Optional) ID of a customer-owned address pool. For more on customer owned IP addressed check out [Customer-owned IP addresses guide](https://docs.aws.amazon.com/outposts/latest/userguide/outposts-networking-components.html#ip-addressing). -* `domain` - Indicates if this EIP is for use in VPC (`vpc`). +* `domain` - (Optional) Indicates if this EIP is for use in VPC (`vpc`). * `instance` - (Optional) EC2 instance ID. * `ipam_pool_id`- (Optional) The ID of an IPAM pool which has an Amazon-provided or BYOIP public IPv4 CIDR provisioned to it. * `network_border_group` - (Optional) Location from which the IP address is advertised. Use this parameter to limit the address to this location. @@ -230,4 +230,4 @@ Using `terraform import`, import EIPs in a VPC using their Allocation ID. For ex [1]: https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_AssociateAddress.html - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/fsx_openzfs_file_system.html.markdown b/website/docs/cdktf/python/r/fsx_openzfs_file_system.html.markdown index aaad49ee40b..3c15e2b10d4 100644 --- a/website/docs/cdktf/python/r/fsx_openzfs_file_system.html.markdown +++ b/website/docs/cdktf/python/r/fsx_openzfs_file_system.html.markdown @@ -39,7 +39,7 @@ class MyConvertedCode(TerraformStack): The following arguments are required: -* `deployment_type` - (Required) The filesystem deployment type. Valid values: `SINGLE_AZ_1`, `SINGLE_AZ_2` and `MULTI_AZ_1`. +* `deployment_type` - (Required) Filesystem deployment type. See the [AWS API documentation](https://docs.aws.amazon.com/fsx/latest/APIReference/API_CreateFileSystemOpenZFSConfiguration.html#FSx-Type-CreateFileSystemOpenZFSConfiguration-DeploymentType) for a list of valid values. * `storage_capacity` - (Required) The storage capacity (GiB) of the file system. Valid values between `64` and `524288`. * `subnet_ids` - (Required) A list of IDs for the subnets that the file system will be accessible from. * `throughput_capacity` - (Required) Throughput (MB/s) of the file system. Valid values depend on `deployment_type`. Must be one of `64`, `128`, `256`, `512`, `1024`, `2048`, `3072`, `4096` for `SINGLE_AZ_1`. Must be one of `160`, `320`, `640`, `1280`, `2560`, `3840`, `5120`, `7680`, `10240` for `SINGLE_AZ_2`. @@ -177,4 +177,4 @@ class MyConvertedCode(TerraformStack): ) ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/iam_group_policy_attachments_exclusive.html.markdown b/website/docs/cdktf/python/r/iam_group_policy_attachments_exclusive.html.markdown index 9011155831b..6bb7dac36a6 100644 --- a/website/docs/cdktf/python/r/iam_group_policy_attachments_exclusive.html.markdown +++ b/website/docs/cdktf/python/r/iam_group_policy_attachments_exclusive.html.markdown @@ -3,17 +3,18 @@ subcategory: "IAM (Identity & Access Management)" layout: "aws" page_title: "AWS: aws_iam_group_policy_attachments_exclusive" description: |- - Terraform resource for maintaining exclusive management of customer managed policies assigned to an AWS IAM (Identity & Access Management) group. + Terraform resource for maintaining exclusive management of managed IAM policies assigned to an AWS IAM (Identity & Access Management) group. --- + # Resource: aws_iam_group_policy_attachments_exclusive -Terraform resource for maintaining exclusive management of customer managed policies assigned to an AWS IAM (Identity & Access Management) group. +Terraform resource for maintaining exclusive management of managed IAM policies assigned to an AWS IAM (Identity & Access Management) group. -!> This resource takes exclusive ownership over customer managed policies attached to a group. This includes removal of customer managed policies which are not explicitly configured. To prevent persistent drift, ensure any `aws_iam_group_policy_attachment` resources managed alongside this resource are included in the `policy_arns` argument. +!> This resource takes exclusive ownership over managed IAM policies attached to a group. This includes removal of managed IAM policies which are not explicitly configured. To prevent persistent drift, ensure any `aws_iam_group_policy_attachment` resources managed alongside this resource are included in the `policy_arns` argument. -~> Destruction of this resource means Terraform will no longer manage reconciliation of the configured policy attachments. It __will not__ detach the configured policies from the group. +~> Destruction of this resource means Terraform will no longer manage reconciliation of the configured policy attachments. It **will not** detach the configured policies from the group. ## Example Usage @@ -37,11 +38,11 @@ class MyConvertedCode(TerraformStack): ) ``` -### Disallow Customer Managed Policies +### Disallow Managed IAM Policies -To automatically remove any configured customer managed policies, set the `policy_arns` argument to an empty list. +To automatically remove any configured managed IAM policies, set the `policy_arns` argument to an empty list. -~> This will not __prevent__ customer managed policies from being assigned to a group via Terraform (or any other interface). This resource enables bringing customer managed policy assignments into a configured state, however, this reconciliation happens only when `apply` is proactively run. +~> This will not **prevent** managed IAM policies from being assigned to a group via Terraform (or any other interface). This resource enables bringing managed IAM policy assignments into a configured state, however, this reconciliation happens only when `apply` is proactively run. ```python # DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug @@ -66,7 +67,7 @@ class MyConvertedCode(TerraformStack): The following arguments are required: * `group_name` - (Required) IAM group name. -* `policy_arns` - (Required) A list of customer managed policy ARNs to be attached to the group. Policies attached to this group but not configured in this argument will be removed. +* `policy_arns` - (Required) A list of managed IAM policy ARNs to be attached to the group. Policies attached to this group but not configured in this argument will be removed. ## Attribute Reference @@ -74,7 +75,7 @@ This resource exports no additional attributes. ## Import -In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to exclusively manage customer managed policy assignments using the `group_name`. For example: +In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to exclusively manage managed IAM policy assignments using the `group_name`. For example: ```python # DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug @@ -91,10 +92,10 @@ class MyConvertedCode(TerraformStack): IamGroupPolicyAttachmentsExclusive.generate_config_for_import(self, "example", "MyGroup") ``` -Using `terraform import`, import exclusive management of customer managed policy assignments using the `group_name`. For example: +Using `terraform import`, import exclusive management of managed IAM policy assignments using the `group_name`. For example: ```console % terraform import aws_iam_group_policy_attachments_exclusive.example MyGroup ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/iam_role_policy_attachments_exclusive.html.markdown b/website/docs/cdktf/python/r/iam_role_policy_attachments_exclusive.html.markdown index 62cd4f89bf3..ffb31125a09 100644 --- a/website/docs/cdktf/python/r/iam_role_policy_attachments_exclusive.html.markdown +++ b/website/docs/cdktf/python/r/iam_role_policy_attachments_exclusive.html.markdown @@ -3,17 +3,18 @@ subcategory: "IAM (Identity & Access Management)" layout: "aws" page_title: "AWS: aws_iam_role_policy_attachments_exclusive" description: |- - Terraform resource for maintaining exclusive management of customer managed policies assigned to an AWS IAM (Identity & Access Management) role. + Terraform resource for maintaining exclusive management of managed IAM policies assigned to an AWS IAM (Identity & Access Management) role. --- + # Resource: aws_iam_role_policy_attachments_exclusive -Terraform resource for maintaining exclusive management of customer managed policies assigned to an AWS IAM (Identity & Access Management) role. +Terraform resource for maintaining exclusive management of managed IAM policies assigned to an AWS IAM (Identity & Access Management) role. -!> This resource takes exclusive ownership over customer managed policies attached to a role. This includes removal of customer managed policies which are not explicitly configured. To prevent persistent drift, ensure any `aws_iam_role_policy_attachment` resources managed alongside this resource are included in the `policy_arns` argument. +!> This resource takes exclusive ownership over managed IAM policies attached to a role. This includes removal of managed IAM policies which are not explicitly configured. To prevent persistent drift, ensure any `aws_iam_role_policy_attachment` resources managed alongside this resource are included in the `policy_arns` argument. -~> Destruction of this resource means Terraform will no longer manage reconciliation of the configured policy attachments. It __will not__ detach the configured policies from the role. +~> Destruction of this resource means Terraform will no longer manage reconciliation of the configured policy attachments. It **will not** detach the configured policies from the role. ## Example Usage @@ -37,11 +38,11 @@ class MyConvertedCode(TerraformStack): ) ``` -### Disallow Customer Managed Policies +### Disallow Managed IAM Policies -To automatically remove any configured customer managed policies, set the `policy_arns` argument to an empty list. +To automatically remove any configured managed IAM policies, set the `policy_arns` argument to an empty list. -~> This will not __prevent__ customer managed policies from being assigned to a role via Terraform (or any other interface). This resource enables bringing customer managed policy assignments into a configured state, however, this reconciliation happens only when `apply` is proactively run. +~> This will not **prevent** managed IAM policies from being assigned to a role via Terraform (or any other interface). This resource enables bringing managed IAM policy assignments into a configured state, however, this reconciliation happens only when `apply` is proactively run. ```python # DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug @@ -66,7 +67,7 @@ class MyConvertedCode(TerraformStack): The following arguments are required: * `role_name` - (Required) IAM role name. -* `policy_arns` - (Required) A list of customer managed policy ARNs to be attached to the role. Policies attached to this role but not configured in this argument will be removed. +* `policy_arns` - (Required) A list of managed IAM policy ARNs to be attached to the role. Policies attached to this role but not configured in this argument will be removed. ## Attribute Reference @@ -74,7 +75,7 @@ This resource exports no additional attributes. ## Import -In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to exclusively manage customer managed policy assignments using the `role_name`. For example: +In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to exclusively manage managed IAM policy assignments using the `role_name`. For example: ```python # DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug @@ -91,10 +92,10 @@ class MyConvertedCode(TerraformStack): IamRolePolicyAttachmentsExclusive.generate_config_for_import(self, "example", "MyRole") ``` -Using `terraform import`, import exclusive management of customer managed policy assignments using the `role_name`. For example: +Using `terraform import`, import exclusive management of managed IAM policy assignments using the `role_name`. For example: ```console % terraform import aws_iam_role_policy_attachments_exclusive.example MyRole ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/iam_user_policy_attachments_exclusive.html.markdown b/website/docs/cdktf/python/r/iam_user_policy_attachments_exclusive.html.markdown index 2d12bcabb03..8b6f448cfd3 100644 --- a/website/docs/cdktf/python/r/iam_user_policy_attachments_exclusive.html.markdown +++ b/website/docs/cdktf/python/r/iam_user_policy_attachments_exclusive.html.markdown @@ -3,17 +3,18 @@ subcategory: "IAM (Identity & Access Management)" layout: "aws" page_title: "AWS: aws_iam_user_policy_attachments_exclusive" description: |- - Terraform resource for maintaining exclusive management of customer managed policies assigned to an AWS IAM (Identity & Access Management) user. + Terraform resource for maintaining exclusive management of managed IAM policies assigned to an AWS IAM (Identity & Access Management) user. --- + # Resource: aws_iam_user_policy_attachments_exclusive -Terraform resource for maintaining exclusive management of customer managed policies assigned to an AWS IAM (Identity & Access Management) user. +Terraform resource for maintaining exclusive management of managed IAM policies assigned to an AWS IAM (Identity & Access Management) user. -!> This resource takes exclusive ownership over customer managed policies attached to a user. This includes removal of customer managed policies which are not explicitly configured. To prevent persistent drift, ensure any `aws_iam_user_policy_attachment` resources managed alongside this resource are included in the `policy_arns` argument. +!> This resource takes exclusive ownership over managed IAM policies attached to a user. This includes removal of managed IAM policies which are not explicitly configured. To prevent persistent drift, ensure any `aws_iam_user_policy_attachment` resources managed alongside this resource are included in the `policy_arns` argument. -~> Destruction of this resource means Terraform will no longer manage reconciliation of the configured policy attachments. It __will not__ detach the configured policies from the user. +~> Destruction of this resource means Terraform will no longer manage reconciliation of the configured policy attachments. It **will not** detach the configured policies from the user. ## Example Usage @@ -37,11 +38,11 @@ class MyConvertedCode(TerraformStack): ) ``` -### Disallow Customer Managed Policies +### Disallow Managed IAM Policies -To automatically remove any configured customer managed policies, set the `policy_arns` argument to an empty list. +To automatically remove any configured managed IAM policies, set the `policy_arns` argument to an empty list. -~> This will not __prevent__ customer managed policies from being assigned to a user via Terraform (or any other interface). This resource enables bringing customer managed policy assignments into a configured state, however, this reconciliation happens only when `apply` is proactively run. +~> This will not **prevent** managed IAM policies from being assigned to a user via Terraform (or any other interface). This resource enables bringing managed IAM policy assignments into a configured state, however, this reconciliation happens only when `apply` is proactively run. ```python # DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug @@ -66,7 +67,7 @@ class MyConvertedCode(TerraformStack): The following arguments are required: * `user_name` - (Required) IAM user name. -* `policy_arns` - (Required) A list of customer managed policy ARNs to be attached to the user. Policies attached to this user but not configured in this argument will be removed. +* `policy_arns` - (Required) A list of managed IAM policy ARNs to be attached to the user. Policies attached to this user but not configured in this argument will be removed. ## Attribute Reference @@ -74,7 +75,7 @@ This resource exports no additional attributes. ## Import -In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to exclusively manage customer managed policy assignments using the `user_name`. For example: +In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to exclusively manage managed IAM policy assignments using the `user_name`. For example: ```python # DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug @@ -91,10 +92,10 @@ class MyConvertedCode(TerraformStack): IamUserPolicyAttachmentsExclusive.generate_config_for_import(self, "example", "MyUser") ``` -Using `terraform import`, import exclusive management of customer managed policy assignments using the `user_name`. For example: +Using `terraform import`, import exclusive management of managed IAM policy assignments using the `user_name`. For example: ```console % terraform import aws_iam_user_policy_attachments_exclusive.example MyUser ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/imagebuilder_image_pipeline.html.markdown b/website/docs/cdktf/python/r/imagebuilder_image_pipeline.html.markdown index 3c1b7408414..67e5f392005 100644 --- a/website/docs/cdktf/python/r/imagebuilder_image_pipeline.html.markdown +++ b/website/docs/cdktf/python/r/imagebuilder_image_pipeline.html.markdown @@ -12,10 +12,13 @@ description: |- Manages an Image Builder Image Pipeline. +~> **NOTE:** Starting with version `5.74.0`, lifecycle meta-argument [`replace_triggered_by`](https://developer.hashicorp.com/terraform/language/meta-arguments/lifecycle#replace_triggered_by) must be used in order to prevent a dependency error on destroy. + ## Example Usage ```python # DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug +from cdktf import TerraformResourceLifecycle from constructs import Construct from cdktf import Token, TerraformStack # @@ -23,17 +26,49 @@ from cdktf import Token, TerraformStack # See https://cdk.tf/provider-generation for more details. # from imports.aws.imagebuilder_image_pipeline import ImagebuilderImagePipeline +from imports.aws.imagebuilder_image_recipe import ImagebuilderImageRecipe class MyConvertedCode(TerraformStack): def __init__(self, scope, name): super().__init__(scope, name) - ImagebuilderImagePipeline(self, "example", - image_recipe_arn=Token.as_string(aws_imagebuilder_image_recipe_example.arn), + example = ImagebuilderImageRecipe(self, "example", + block_device_mapping=[ImagebuilderImageRecipeBlockDeviceMapping( + device_name="/dev/xvdb", + ebs=ImagebuilderImageRecipeBlockDeviceMappingEbs( + delete_on_termination=Token.as_string(True), + volume_size=100, + volume_type="gp2" + ) + ) + ], + component=[ImagebuilderImageRecipeComponent( + component_arn=Token.as_string(aws_imagebuilder_component_example.arn), + parameter=[ImagebuilderImageRecipeComponentParameter( + name="Parameter1", + value="Value1" + ), ImagebuilderImageRecipeComponentParameter( + name="Parameter2", + value="Value2" + ) + ] + ) + ], + name="example", + parent_image="arn:${" + current.partition + "}:imagebuilder:${" + data_aws_region_current.name + "}:aws:image/amazon-linux-2-x86/x.x.x", + version="1.0.0" + ) + aws_imagebuilder_image_pipeline_example = ImagebuilderImagePipeline(self, "example_1", + image_recipe_arn=example.arn, infrastructure_configuration_arn=Token.as_string(aws_imagebuilder_infrastructure_configuration_example.arn), + lifecycle=TerraformResourceLifecycle( + replace_triggered_by=[example] + ), name="example", schedule=ImagebuilderImagePipelineSchedule( schedule_expression="cron(0 0 * * ? *)" ) ) + # This allows the Terraform resource name to match the original name. You can remove the call if you don't need them to match. + aws_imagebuilder_image_pipeline_example.override_logical_id("example") ``` ## Argument Reference @@ -147,4 +182,4 @@ Using `terraform import`, import `aws_imagebuilder_image_pipeline` resources usi % terraform import aws_imagebuilder_image_pipeline.example arn:aws:imagebuilder:us-east-1:123456789012:image-pipeline/example ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/lambda_function.html.markdown b/website/docs/cdktf/python/r/lambda_function.html.markdown index 038b87da46d..2dcc120b043 100644 --- a/website/docs/cdktf/python/r/lambda_function.html.markdown +++ b/website/docs/cdktf/python/r/lambda_function.html.markdown @@ -370,7 +370,8 @@ Advanced logging settings. See [Configuring advanced logging controls for your L ### snap_start -Snap start settings for low-latency startups. This feature is currently only supported for `java11`, `java17` and `java21` runtimes. Remove this block to delete the associated settings (rather than setting `apply_on = "None"`). +Snap start settings for low-latency startups. This feature is currently only supported for specific runtimes, see [Supported features and limitations][14]. +Remove this block to delete the associated settings (rather than setting `apply_on = "None"`). * `apply_on` - (Required) Conditions where snap start is enabled. Valid values are `PublishedVersions`. @@ -418,6 +419,7 @@ This resource exports the following attributes in addition to the arguments abov [11]: https://learn.hashicorp.com/terraform/aws/lambda-api-gateway [12]: https://docs.aws.amazon.com/lambda/latest/dg/services-efs.html [13]: https://docs.aws.amazon.com/lambda/latest/dg/monitoring-cloudwatchlogs.html#monitoring-cloudwatchlogs-advanced +[14]: https://docs.aws.amazon.com/lambda/latest/dg/snapstart.html#snapstart-runtimes ## Timeouts @@ -452,4 +454,4 @@ Using `terraform import`, import Lambda Functions using the `function_name`. For % terraform import aws_lambda_function.test_lambda my_test_lambda_function ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/lb_target_group.html.markdown b/website/docs/cdktf/python/r/lb_target_group.html.markdown index c98c603d14e..573aa0e3492 100644 --- a/website/docs/cdktf/python/r/lb_target_group.html.markdown +++ b/website/docs/cdktf/python/r/lb_target_group.html.markdown @@ -227,7 +227,7 @@ This resource supports the following arguments: * When the `target_type` is `lambda`, values can be between `200` and `499`. The default is `200`. * `path` - (May be required) Destination for the health check request. Required for HTTP/HTTPS ALB and HTTP NLB. Only applies to HTTP/HTTPS. * For HTTP and HTTPS health checks, the default is `/`. - * For gRPC health checks, the default is `/Amazon Web Services.ALB/healthcheck`. + * For gRPC health checks, the default is `/AWS.ALB/healthcheck`. * `port` - (Optional) The port the load balancer uses when performing health checks on targets. Valid values are either `traffic-port`, to use the same port as the target group, or a valid port number between `1` and `65536`. Default is `traffic-port`. @@ -321,4 +321,4 @@ Using `terraform import`, import Target Groups using their ARN. For example: % terraform import aws_lb_target_group.app_front_end arn:aws:elasticloadbalancing:us-west-2:187416307283:targetgroup/app-front-end/20cfe21448b66314 ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/memorydb_acl.html.markdown b/website/docs/cdktf/python/r/memorydb_acl.html.markdown index 18dc7014090..d38813e1f7a 100644 --- a/website/docs/cdktf/python/r/memorydb_acl.html.markdown +++ b/website/docs/cdktf/python/r/memorydb_acl.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_acl" description: |- diff --git a/website/docs/cdktf/python/r/memorydb_cluster.html.markdown b/website/docs/cdktf/python/r/memorydb_cluster.html.markdown index 632f1cf8727..faa0d6ffad3 100644 --- a/website/docs/cdktf/python/r/memorydb_cluster.html.markdown +++ b/website/docs/cdktf/python/r/memorydb_cluster.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_cluster" description: |- diff --git a/website/docs/cdktf/python/r/memorydb_parameter_group.html.markdown b/website/docs/cdktf/python/r/memorydb_parameter_group.html.markdown index 851db30a96b..9ef0935b19f 100644 --- a/website/docs/cdktf/python/r/memorydb_parameter_group.html.markdown +++ b/website/docs/cdktf/python/r/memorydb_parameter_group.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_parameter_group" description: |- diff --git a/website/docs/cdktf/python/r/memorydb_snapshot.html.markdown b/website/docs/cdktf/python/r/memorydb_snapshot.html.markdown index 4394a68773a..78b138f4e10 100644 --- a/website/docs/cdktf/python/r/memorydb_snapshot.html.markdown +++ b/website/docs/cdktf/python/r/memorydb_snapshot.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_snapshot" description: |- diff --git a/website/docs/cdktf/python/r/memorydb_subnet_group.html.markdown b/website/docs/cdktf/python/r/memorydb_subnet_group.html.markdown index b7272bf1345..b485edc3908 100644 --- a/website/docs/cdktf/python/r/memorydb_subnet_group.html.markdown +++ b/website/docs/cdktf/python/r/memorydb_subnet_group.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_subnet_group" description: |- diff --git a/website/docs/cdktf/python/r/memorydb_user.html.markdown b/website/docs/cdktf/python/r/memorydb_user.html.markdown index 14803be73eb..305eee4aace 100644 --- a/website/docs/cdktf/python/r/memorydb_user.html.markdown +++ b/website/docs/cdktf/python/r/memorydb_user.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_user" description: |- diff --git a/website/docs/cdktf/python/r/organizations_organization.html.markdown b/website/docs/cdktf/python/r/organizations_organization.html.markdown index 4d3eeabbce5..6aa2a149bb9 100644 --- a/website/docs/cdktf/python/r/organizations_organization.html.markdown +++ b/website/docs/cdktf/python/r/organizations_organization.html.markdown @@ -42,7 +42,7 @@ class MyConvertedCode(TerraformStack): This resource supports the following arguments: * `aws_service_access_principals` - (Optional) List of AWS service principal names for which you want to enable integration with your organization. This is typically in the form of a URL, such as service-abbreviation.amazonaws.com. Organization must have `feature_set` set to `ALL`. Some services do not support enablement via this endpoint, see [warning in aws docs](https://docs.aws.amazon.com/organizations/latest/APIReference/API_EnableAWSServiceAccess.html). -* `enabled_policy_types` - (Optional) List of Organizations policy types to enable in the Organization Root. Organization must have `feature_set` set to `ALL`. For additional information about valid policy types (e.g., `AISERVICES_OPT_OUT_POLICY`, `BACKUP_POLICY`, `SERVICE_CONTROL_POLICY`, and `TAG_POLICY`), see the [AWS Organizations API Reference](https://docs.aws.amazon.com/organizations/latest/APIReference/API_EnablePolicyType.html). +* `enabled_policy_types` - (Optional) List of Organizations policy types to enable in the Organization Root. Organization must have `feature_set` set to `ALL`. For additional information about valid policy types (e.g., `AISERVICES_OPT_OUT_POLICY`, `BACKUP_POLICY`, `RESOURCE_CONTROL_POLICY`, `SERVICE_CONTROL_POLICY`, and `TAG_POLICY`), see the [AWS Organizations API Reference](https://docs.aws.amazon.com/organizations/latest/APIReference/API_EnablePolicyType.html). * `feature_set` - (Optional) Specify "ALL" (default) or "CONSOLIDATED_BILLING". ## Attribute Reference @@ -100,4 +100,4 @@ Using `terraform import`, import the AWS organization using the `id`. For exampl % terraform import aws_organizations_organization.my_org o-1234567 ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/rds_instance_state.html.markdown b/website/docs/cdktf/python/r/rds_instance_state.html.markdown new file mode 100644 index 00000000000..1cb55266e45 --- /dev/null +++ b/website/docs/cdktf/python/r/rds_instance_state.html.markdown @@ -0,0 +1,84 @@ +--- +subcategory: "RDS (Relational Database)" +layout: "aws" +page_title: "AWS: aws_rds_instance_state" +description: |- + Terraform resource for managing an AWS RDS (Relational Database) RDS Instance State. +--- + + + +# Resource: aws_rds_instance_state + +Terraform resource for managing an AWS RDS (Relational Database) RDS Instance State. + +~> Destruction of this resource is a no-op and **will not** modify the instance state + +## Example Usage + +### Basic Usage + +```python +# DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug +from constructs import Construct +from cdktf import Token, TerraformStack +# +# Provider bindings are generated by running `cdktf get`. +# See https://cdk.tf/provider-generation for more details. +# +from imports.aws.rds_instance_state import RdsInstanceState +class MyConvertedCode(TerraformStack): + def __init__(self, scope, name): + super().__init__(scope, name) + RdsInstanceState(self, "test", + identifier=Token.as_string(aws_db_instance_test.identifier), + state="available" + ) +``` + +## Argument Reference + +The following arguments are required: + +* `identifier` - (Required) DB Instance Identifier +* `state` - (Required) Configured state of the DB Instance. Valid values are `available` and `stopped`. + +## Attribute Reference + +This resource exports the following attributes in addition to the arguments above: + +* `identifier` - DB Instance Identifier + +## Timeouts + +[Configuration options](https://developer.hashicorp.com/terraform/language/resources/syntax#operation-timeouts): + +* `create` - (Default `30m`) +* `update` - (Default `30m`) + +## Import + +In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import RDS (Relational Database) RDS Instance State using the `example_id_arg`. For example: + +```python +# DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug +from constructs import Construct +from cdktf import TerraformStack +# +# Provider bindings are generated by running `cdktf get`. +# See https://cdk.tf/provider-generation for more details. +# +from imports.aws.rds_instance_state import RdsInstanceState +class MyConvertedCode(TerraformStack): + def __init__(self, scope, name): + super().__init__(scope, name) + RdsInstanceState.generate_config_for_import(self, "example", "db-L72FUFBZX2RRXT3HOJSIUQVOKE") +``` + +Using `terraform import`, import RDS (Relational Database) RDS Instance State using the `example_id_arg`. For example: + +```console +% terraform import aws_rds_instance_state.example rds_instance_state-id-12345678 +``` + + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/s3_bucket_acl.html.markdown b/website/docs/cdktf/python/r/s3_bucket_acl.html.markdown index 4e0a56d6da9..f121968f4f6 100644 --- a/website/docs/cdktf/python/r/s3_bucket_acl.html.markdown +++ b/website/docs/cdktf/python/r/s3_bucket_acl.html.markdown @@ -164,8 +164,8 @@ class MyConvertedCode(TerraformStack): This resource supports the following arguments: -* `acl` - (Optional, One of `acl` or `access_control_policy` is required) Canned ACL to apply to the bucket. -* `access_control_policy` - (Optional, One of `access_control_policy` or `acl` is required) Configuration block that sets the ACL permissions for an object per grantee. [See below](#access_control_policy). +* `acl` - (Optional, either `access_control_policy` or `acl` is required) Specifies the Canned ACL to apply to the bucket. Valid values: `private`, `public-read`, `public-read-write`, `aws-exec-read`, `authenticated-read`, `bucket-owner-read`, `bucket-owner-full-control`, `log-delivery-write`. Full details are available on the [AWS documentation](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html#canned-acl). +* `access_control_policy` - (Optional, either `access_control_policy` or `acl` is required) Configuration block that sets the ACL permissions for an object per grantee. [See below](#access_control_policy). * `bucket` - (Required, Forces new resource) Bucket to which to apply the ACL. * `expected_bucket_owner` - (Optional, Forces new resource) Account ID of the expected bucket owner. @@ -309,4 +309,4 @@ If the owner (account ID) of the source bucket _differs_ from the account used t [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html#canned-acl - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/s3_bucket_lifecycle_configuration.html.markdown b/website/docs/cdktf/python/r/s3_bucket_lifecycle_configuration.html.markdown index d94ee9c055f..9b1586a5196 100644 --- a/website/docs/cdktf/python/r/s3_bucket_lifecycle_configuration.html.markdown +++ b/website/docs/cdktf/python/r/s3_bucket_lifecycle_configuration.html.markdown @@ -20,14 +20,12 @@ An S3 Lifecycle configuration consists of one or more Lifecycle rules. Each rule For more information see the Amazon S3 User Guide on [`Lifecycle Configuration Elements`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/intro-lifecycle-rules.html). -~> **NOTE:** S3 Buckets only support a single lifecycle configuration. Declaring multiple `aws_s3_bucket_lifecycle_configuration` resources to the same S3 Bucket will cause a perpetual difference in configuration. +~> S3 Buckets only support a single lifecycle configuration. Declaring multiple `aws_s3_bucket_lifecycle_configuration` resources to the same S3 Bucket will cause a perpetual difference in configuration. -~> **NOTE:** Lifecycle configurations may take some time to fully propagate to all AWS S3 systems. +~> Lifecycle configurations may take some time to fully propagate to all AWS S3 systems. Running Terraform operations shortly after creating a lifecycle configuration may result in changes that affect configuration idempotence. See the Amazon S3 User Guide on [setting lifecycle configuration on a bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/how-to-set-lifecycle-configuration-intro.html). --> This resource cannot be used with S3 directory buckets. - ## Example Usage ### With neither a filter nor prefix specified @@ -426,12 +424,12 @@ This resource supports the following arguments: ### rule -~> **NOTE:** The `filter` argument, while Optional, is required if the `rule` configuration block does not contain a `prefix` **and** you intend to override the default behavior of setting the rule to filter objects with the empty string prefix (`""`). +~> The `filter` argument, while Optional, is required if the `rule` configuration block does not contain a `prefix` **and** you intend to override the default behavior of setting the rule to filter objects with the empty string prefix (`""`). Since `prefix` is deprecated by Amazon S3 and will be removed in the next major version of the Terraform AWS Provider, we recommend users either specify `filter` or leave both `filter` and `prefix` unspecified. -~> **NOTE:** A rule cannot be updated from having a filter (via either the `rule.filter` parameter or when neither `rule.filter` and `rule.prefix` are specified) to only having a prefix via the `rule.prefix` parameter. +~> A rule cannot be updated from having a filter (via either the `rule.filter` parameter or when neither `rule.filter` and `rule.prefix` are specified) to only having a prefix via the `rule.prefix` parameter. -~> **NOTE** Terraform cannot distinguish a difference between configurations that use `rule.filter {}` and configurations that neither use `rule.filter` nor `rule.prefix`, so a rule cannot be updated from applying to all objects in the bucket via `rule.filter {}` to applying to a subset of objects based on the key prefix `""` and vice versa. +~> Terraform cannot distinguish a difference between configurations that use `rule.filter {}` and configurations that neither use `rule.filter` nor `rule.prefix`, so a rule cannot be updated from applying to all objects in the bucket via `rule.filter {}` to applying to a subset of objects based on the key prefix `""` and vice versa. The `rule` configuration block supports the following arguments: @@ -461,7 +459,7 @@ The `expiration` configuration block supports the following arguments: ### filter -~> **NOTE:** The `filter` configuration block must either be specified as the empty configuration block (`filter {}`) or with exactly one of `prefix`, `tag`, `and`, `object_size_greater_than` or `object_size_less_than` specified. +~> The `filter` configuration block must either be specified as the empty configuration block (`filter {}`) or with exactly one of `prefix`, `tag`, `and`, `object_size_greater_than` or `object_size_less_than` specified. The `filter` configuration block supports the following arguments: @@ -490,7 +488,7 @@ The `noncurrent_version_transition` configuration block supports the following a The `transition` configuration block supports the following arguments: -~> **Note:** Only one of `date` or `days` should be specified. If neither are specified, the `transition` will default to 0 `days`. +~> Only one of `date` or `days` should be specified. If neither are specified, the `transition` will default to 0 `days`. * `date` - (Optional, Conflicts with `days`) Date objects are transitioned to the specified storage class. The date value must be in [RFC3339 full-date format](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6) e.g. `2023-08-22`. * `days` - (Optional, Conflicts with `date`) Number of days after creation when objects are transitioned to the specified storage class. The value must be a positive integer. If both `days` and `date` are not specified, defaults to `0`. Valid values depend on `storage_class`, see [Transition objects using Amazon S3 Lifecycle](https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-transition-general-considerations.html) for more details. @@ -520,7 +518,7 @@ This resource exports the following attributes in addition to the arguments abov ## Import -In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import S3 bucket lifecycle configuration using the `bucket` or using the `bucket` and `expected_bucket_owner` separated by a comma (`,`). For example: +In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import an S3 bucket lifecycle configuration using the `bucket` or the `bucket` and `expected_bucket_owner` separated by a comma (`,`). For example: If the owner (account ID) of the source bucket is the same account used to configure the Terraform AWS Provider, import using the `bucket`: @@ -556,7 +554,7 @@ class MyConvertedCode(TerraformStack): S3BucketLifecycleConfiguration.generate_config_for_import(self, "example", "bucket-name,123456789012") ``` -**Using `terraform import` to import** S3 bucket lifecycle configuration using the `bucket` or using the `bucket` and `expected_bucket_owner` separated by a comma (`,`). For example: +Using `terraform import`, import an S3 bucket lifecycle configuration using the `bucket` or the `bucket` and `expected_bucket_owner` separated by a comma (`,`). For example: If the owner (account ID) of the source bucket is the same account used to configure the Terraform AWS Provider, import using the `bucket`: @@ -570,4 +568,4 @@ If the owner (account ID) of the source bucket differs from the account used to % terraform import aws_s3_bucket_lifecycle_configuration.example bucket-name,123456789012 ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/d/memorydb_acl.html.markdown b/website/docs/cdktf/typescript/d/memorydb_acl.html.markdown index 66bf039e3d6..3578ddc564f 100644 --- a/website/docs/cdktf/typescript/d/memorydb_acl.html.markdown +++ b/website/docs/cdktf/typescript/d/memorydb_acl.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_acl" description: |- diff --git a/website/docs/cdktf/typescript/d/memorydb_cluster.html.markdown b/website/docs/cdktf/typescript/d/memorydb_cluster.html.markdown index 4f392d86846..36d07a60bf8 100644 --- a/website/docs/cdktf/typescript/d/memorydb_cluster.html.markdown +++ b/website/docs/cdktf/typescript/d/memorydb_cluster.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_cluster" description: |- diff --git a/website/docs/cdktf/typescript/d/memorydb_parameter_group.html.markdown b/website/docs/cdktf/typescript/d/memorydb_parameter_group.html.markdown index 30b075c724a..3ccc5f018b7 100644 --- a/website/docs/cdktf/typescript/d/memorydb_parameter_group.html.markdown +++ b/website/docs/cdktf/typescript/d/memorydb_parameter_group.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_parameter_group" description: |- diff --git a/website/docs/cdktf/typescript/d/memorydb_snapshot.html.markdown b/website/docs/cdktf/typescript/d/memorydb_snapshot.html.markdown index a801a761556..a4357ed2ea5 100644 --- a/website/docs/cdktf/typescript/d/memorydb_snapshot.html.markdown +++ b/website/docs/cdktf/typescript/d/memorydb_snapshot.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_snapshot" description: |- diff --git a/website/docs/cdktf/typescript/d/memorydb_subnet_group.html.markdown b/website/docs/cdktf/typescript/d/memorydb_subnet_group.html.markdown index 672234f3cfc..e177858a7ac 100644 --- a/website/docs/cdktf/typescript/d/memorydb_subnet_group.html.markdown +++ b/website/docs/cdktf/typescript/d/memorydb_subnet_group.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_subnet_group" description: |- diff --git a/website/docs/cdktf/typescript/d/memorydb_user.html.markdown b/website/docs/cdktf/typescript/d/memorydb_user.html.markdown index 6685762605f..ba9bf5c2ac3 100644 --- a/website/docs/cdktf/typescript/d/memorydb_user.html.markdown +++ b/website/docs/cdktf/typescript/d/memorydb_user.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_user" description: |- diff --git a/website/docs/cdktf/typescript/d/organizations_policies.html.markdown b/website/docs/cdktf/typescript/d/organizations_policies.html.markdown index 99cfcdcca3a..f2a1c03e45b 100644 --- a/website/docs/cdktf/typescript/d/organizations_policies.html.markdown +++ b/website/docs/cdktf/typescript/d/organizations_policies.html.markdown @@ -58,7 +58,7 @@ class MyConvertedCode extends TerraformStack { The following arguments are required: -* `filter` - (Required) The type of policies to be returned in the response. Valid values are `SERVICE_CONTROL_POLICY | TAG_POLICY | BACKUP_POLICY | AISERVICES_OPT_OUT_POLICY` +* `filter` - (Required) The type of policies to be returned in the response. Valid values are `AISERVICES_OPT_OUT_POLICY | BACKUP_POLICY | RESOURCE_CONTROL_POLICY | SERVICE_CONTROL_POLICY | TAG_POLICY` ## Attribute Reference @@ -66,4 +66,4 @@ This data source exports the following attributes in addition to the arguments a * `ids` - List of all the policy ids found. - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/d/organizations_policies_for_target.html.markdown b/website/docs/cdktf/typescript/d/organizations_policies_for_target.html.markdown index e234e4b314d..de5f8111086 100644 --- a/website/docs/cdktf/typescript/d/organizations_policies_for_target.html.markdown +++ b/website/docs/cdktf/typescript/d/organizations_policies_for_target.html.markdown @@ -65,7 +65,7 @@ class MyConvertedCode extends TerraformStack { The following arguments are required: * `targetId` - (Required) The root (string that begins with "r-" followed by 4-32 lowercase letters or digits), account (12 digit string), or Organizational Unit (string starting with "ou-" followed by 4-32 lowercase letters or digits. This string is followed by a second "-" dash and from 8-32 additional lowercase letters or digits.) -* `filter` - (Required) Must supply one of the 4 different policy filters for a target (SERVICE_CONTROL_POLICY | TAG_POLICY | BACKUP_POLICY | AISERVICES_OPT_OUT_POLICY) +* `filter` - (Required) Must supply one of the 5 different policy filters for a target (AISERVICES_OPT_OUT_POLICY | BACKUP_POLICY | RESOURCE_CONTROL_POLICY | SERVICE_CONTROL_POLICY | TAG_POLICY) ## Attribute Reference @@ -73,4 +73,4 @@ This data source exports the following attributes in addition to the arguments a * `ids` - List of all the policy ids found. - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/d/organizations_policy.html.markdown b/website/docs/cdktf/typescript/d/organizations_policy.html.markdown index 09875fe5caf..097f9970650 100644 --- a/website/docs/cdktf/typescript/d/organizations_policy.html.markdown +++ b/website/docs/cdktf/typescript/d/organizations_policy.html.markdown @@ -66,6 +66,6 @@ This data source exports the following attributes in addition to the arguments a * `content` - The text content of the policy. * `description` - The description of the policy. * `name` - The friendly name of the policy. -* `type` - The type of policy values can be `SERVICE_CONTROL_POLICY | TAG_POLICY | BACKUP_POLICY | AISERVICES_OPT_OUT_POLICY` +* `type` - The type of policy values can be `AISERVICES_OPT_OUT_POLICY | BACKUP_POLICY | RESOURCE_CONTROL_POLICY | SERVICE_CONTROL_POLICY | TAG_POLICY` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/ephemeral-resources/kms_secrets.html.markdown b/website/docs/cdktf/typescript/ephemeral-resources/kms_secrets.html.markdown new file mode 100644 index 00000000000..a306c211896 --- /dev/null +++ b/website/docs/cdktf/typescript/ephemeral-resources/kms_secrets.html.markdown @@ -0,0 +1,85 @@ +--- +subcategory: "KMS (Key Management)" +layout: "aws" +page_title: "AWS: aws_kms_secrets" +description: |- + Decrypt multiple secrets from data encrypted with the AWS KMS service +--- + + + +# Ephemeral: aws_kms_secrets + +Decrypt multiple secrets from data encrypted with the AWS KMS service. + +~> **NOTE:** Ephemeral resources are a new feature and may evolve as we continue to explore their most effective uses. [Learn more](https://developer.hashicorp.com/terraform/language/v1.10.x/resources/ephemeral). + +## Example Usage + +If you do not already have a `CiphertextBlob` from encrypting a KMS secret, you can use the below commands to obtain one using the [AWS CLI kms encrypt](https://docs.aws.amazon.com/cli/latest/reference/kms/encrypt.html) command. This requires you to have your AWS CLI setup correctly and replace the `--key-id` with your own. Alternatively you can use `--plaintext 'master-password'` (CLIv1) or `--plaintext fileb://<(echo -n 'master-password')` (CLIv2) instead of reading from a file. + +-> If you have a newline character at the end of your file, it will be decrypted with this newline character intact. For most use cases this is undesirable and leads to incorrect passwords or invalid values, as well as possible changes in the plan. Be sure to use `echo -n` if necessary. +-> If you are using asymmetric keys ensure you are using the right encryption algorithm when you encrypt and decrypt else you will get IncorrectKeyException during the decrypt phase. + +That encrypted output can now be inserted into Terraform configurations without exposing the plaintext secret directly. + +```typescript +// DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug +import { Construct } from "constructs"; +import { Fn, Token, TerraformStack } from "cdktf"; +/* + * Provider bindings are generated by running `cdktf get`. + * See https://cdk.tf/provider-generation for more details. + */ +import { RdsCluster } from "./.gen/providers/aws/rds-cluster"; +interface MyConfig { + engine: any; +} +class MyConvertedCode extends TerraformStack { + constructor(scope: Construct, name: string, config: MyConfig) { + super(scope, name); + new RdsCluster(this, "example", { + masterPassword: Token.asString( + Fn.lookupNested(dataAwsKmsSecretsExample.plaintext, [ + '"master_password"', + ]) + ), + masterUsername: Token.asString( + Fn.lookupNested(dataAwsKmsSecretsExample.plaintext, [ + '"master_username"', + ]) + ), + engine: config.engine, + }); + } +} + +``` + +## Argument Reference + +This resource supports the following arguments: + +* `secret` - (Required) One or more encrypted payload definitions from the KMS service. See the Secret Definitions below. + +### Secret Definitions + +Each `secret` supports the following arguments: + +* `name` - (Required) Name to export this secret under in the attributes. +* `payload` - (Required) Base64 encoded payload, as returned from a KMS encrypt operation. +* `context` - (Optional) An optional mapping that makes up the Encryption Context for the secret. +* `grantTokens` (Optional) An optional list of Grant Tokens for the secret. +* `encryptionAlgorithm` - (Optional) The encryption algorithm that will be used to decrypt the ciphertext. This parameter is required only when the ciphertext was encrypted under an asymmetric KMS key. Valid Values: SYMMETRIC_DEFAULT | RSAES_OAEP_SHA_1 | RSAES_OAEP_SHA_256 | SM2PKE +* `keyId` (Optional) Specifies the KMS key that AWS KMS uses to decrypt the ciphertext. This parameter is required only when the ciphertext was encrypted under an asymmetric KMS key. + +For more information on `context` and `grantTokens` see the [KMS +Concepts](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html) + +## Attribute Reference + +This resource exports the following attributes in addition to the arguments above: + +* `plaintext` - Map containing each `secret` `name` as the key with its decrypted plaintext value + + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/ephemeral-resources/lambda_invocation.html.markdown b/website/docs/cdktf/typescript/ephemeral-resources/lambda_invocation.html.markdown new file mode 100644 index 00000000000..a0a5b46801d --- /dev/null +++ b/website/docs/cdktf/typescript/ephemeral-resources/lambda_invocation.html.markdown @@ -0,0 +1,63 @@ +--- +subcategory: "Lambda" +layout: "aws" +page_title: "AWS: aws_lambda_invocation" +description: |- + Invoke AWS Lambda Function +--- + + + +# Ephemeral: aws_lambda_invocation + +Use this ephemeral resource to invoke a Lambda function. The lambda function is invoked with the [RequestResponse](https://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html#API_Invoke_RequestSyntax) invocation type. + +~> **NOTE:** Ephemeral resources are a new feature and may evolve as we continue to explore their most effective uses. [Learn more](https://developer.hashicorp.com/terraform/language/v1.10.x/resources/ephemeral). + +~> **NOTE:** The `aws_lambda_invocation` ephemeral resource invokes the function during every `plan` and `apply` when the function is known. A common use case for this functionality is when invoking a lightweight function—where repeated invocations are acceptable—that produces sensitive information you do not want to store in the state. + +~> **NOTE:** If you get a `KMSAccessDeniedException: Lambda was unable to decrypt the environment variables because KMS access was denied` error when invoking an [`aws_lambda_function`](/docs/providers/aws/r/lambda_function.html) with environment variables, the IAM role associated with the function may have been deleted and recreated _after_ the function was created. You can fix the problem two ways: 1) updating the function's role to another role and then updating it back again to the recreated role, or 2) by using Terraform to `taint` the function and `apply` your configuration again to recreate the function. (When you create a function, Lambda grants permissions on the KMS key to the function's IAM role. If the IAM role is recreated, the grant is no longer valid. Changing the function's role or recreating the function causes Lambda to update the grant.) + +## Example Usage + +### Basic Example + +```typescript +// DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug +import { Construct } from "constructs"; +import { TerraformOutput, Fn, TerraformStack } from "cdktf"; +class MyConvertedCode extends TerraformStack { + constructor(scope: Construct, name: string) { + super(scope, name); + new TerraformOutput(this, "result_entry", { + value: Fn.lookupNested(Fn.jsondecode(example.result), ['"key1"']), + }); + } +} + +``` + +## Argument Reference + +The following arguments are required: + +* `functionName` - (Required) Name or ARN of the Lambda function, version, or alias. You can append a version number or alias. If you specify only the function name, it is limited to 64 characters in length. +* `payload` - (Required) JSON that you want to provide to your Lambda function as input. + +The following arguments are optional: + +* `clientContext` - (Optional) Up to 3583 bytes of base64-encoded data about the invoking client to pass to the function in the context object. +* `logType` - (Optional) Set to `Tail` to include the execution log in the response. Valid values are `None` and `Tail`. +* `qualifier` - (Optional) Version or alias to invoke a published version of the function. Defaults to `$LATEST`. + +## Attribute Reference + +This resource exports the following attributes in addition to the arguments above: + +* `executed_version` - Version of the function that executed. When you invoke a function with an alias, the version the alias resolved to. +* `function_error` - If present, indicates that an error occurred during function execution. Details about the error are included in `result`. +* `log_result` - Last 4 KB of the execution log, which is base64-encoded. +* `result` - String result of the lambda function invocation. +* `statusCode` - HTTP status code is in the 200 range for a successful request. + + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/ephemeral-resources/secretsmanager_secret_version.html.markdown b/website/docs/cdktf/typescript/ephemeral-resources/secretsmanager_secret_version.html.markdown new file mode 100644 index 00000000000..a06ae8a867a --- /dev/null +++ b/website/docs/cdktf/typescript/ephemeral-resources/secretsmanager_secret_version.html.markdown @@ -0,0 +1,88 @@ +--- +subcategory: "Secrets Manager" +layout: "aws" +page_title: "AWS: aws_secretsmanager_secret_version" +description: |- + Retrieve information about a Secrets Manager secret version including its secret value +--- + + + +# Ephemeral: aws_secretsmanager_secret_version + +Retrieve information about a Secrets Manager secret version, including its secret value. To retrieve secret metadata, see the [`aws_secretsmanager_secret` data source](/docs/providers/aws/d/secretsmanager_secret.html). + +~> **NOTE:** Ephemeral resources are a new feature and may evolve as we continue to explore their most effective uses. [Learn more](https://developer.hashicorp.com/terraform/language/v1.10.x/resources/ephemeral). + +## Example Usage + +### Retrieve Current Secret Version + +By default, this ephemeral resource retrieves information based on the `AWSCURRENT` staging label. + +```typescript +// DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug +import { Construct } from "constructs"; +import { TerraformStack } from "cdktf"; +class MyConvertedCode extends TerraformStack { + constructor(scope: Construct, name: string) { + super(scope, name); + } +} + +``` + +### Retrieve Specific Secret Version + +```typescript +// DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug +import { Construct } from "constructs"; +import { TerraformStack } from "cdktf"; +class MyConvertedCode extends TerraformStack { + constructor(scope: Construct, name: string) { + super(scope, name); + } +} + +``` + +### Handling Key-Value Secret Strings in JSON + +Reading key-value pairs from JSON back into a native Terraform map can be accomplished in Terraform 0.12 and later with the [`jsondecode()` function](https://www.terraform.io/docs/configuration/functions/jsondecode.html): + +```typescript +// DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug +import { Construct } from "constructs"; +import { TerraformOutput, Fn, TerraformStack } from "cdktf"; +class MyConvertedCode extends TerraformStack { + constructor(scope: Construct, name: string) { + super(scope, name); + new TerraformOutput(this, "example", { + value: Fn.lookupNested( + awsSecretsmanagerSecretVersion.example.secretString, + ['"key1"'] + ), + }); + } +} + +``` + +## Argument Reference + +* `secretId` - (Required) Specifies the secret containing the version that you want to retrieve. You can specify either the ARN or the friendly name of the secret. +* `versionId` - (Optional) Specifies the unique identifier of the version of the secret that you want to retrieve. Overrides `versionStage`. +* `versionStage` - (Optional) Specifies the secret version that you want to retrieve by the staging label attached to the version. Defaults to `AWSCURRENT`. + +## Attribute Reference + +This resource exports the following attributes in addition to the arguments above: + +* `arn` - ARN of the secret. +* `createdDate` - Created date of the secret in UTC. +* `id` - Unique identifier of this version of the secret. +* `secretString` - Decrypted part of the protected secret information that was originally provided as a string. +* `secretBinary` - Decrypted part of the protected secret information that was originally provided as a binary. +* `versionId` - Unique identifier of this version of the secret. + + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/index.html.markdown b/website/docs/cdktf/typescript/index.html.markdown index 19ae8a5d5c0..ea84319b8ef 100644 --- a/website/docs/cdktf/typescript/index.html.markdown +++ b/website/docs/cdktf/typescript/index.html.markdown @@ -13,7 +13,7 @@ Use the Amazon Web Services (AWS) provider to interact with the many resources supported by AWS. You must configure the provider with the proper credentials before you can use it. -Use the navigation to the left to read about the available resources. There are currently 1447 resources and 591 data sources available in the provider. +Use the navigation to the left to read about the available resources. There are currently 1448 resources and 591 data sources available in the provider. To learn the basics of Terraform using this provider, follow the hands-on [get started tutorials](https://learn.hashicorp.com/tutorials/terraform/infrastructure-as-code?in=terraform/aws-get-started&utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS). Interact with AWS services, @@ -949,4 +949,4 @@ Approaches differ per authentication providers: There used to be no better way to get account ID out of the API when using the federated account until `sts:GetCallerIdentity` was introduced. - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/bedrockagent_data_source.html.markdown b/website/docs/cdktf/typescript/r/bedrockagent_data_source.html.markdown index ee6438d27c7..71681b80016 100644 --- a/website/docs/cdktf/typescript/r/bedrockagent_data_source.html.markdown +++ b/website/docs/cdktf/typescript/r/bedrockagent_data_source.html.markdown @@ -133,7 +133,7 @@ The `semanticChunkingConfiguration` block supports the following arguments: The `customTransformationConfiguration` block supports the following arguments: * `intermediateStorage` - (Required, Forces new resource) The intermediate storage for custom transformation. -* `transformationFunction` - (Required) The configuration of transformation function. +* `transformation` - (Required) A custom processing step for documents moving through the data source ingestion pipeline. ### `intermediateStorage` block @@ -147,12 +147,18 @@ The `s3Location` block supports the following arguments: * `uri` - (Required, Forces new resource) S3 URI for intermediate storage. +### `transformation` block + +The `transformation` block supports the following arguments: + +* `stepToApply` - (Required, Forces new resource) When the service applies the transformation. Currently only `POST_CHUNKING` is supported. +* `transformationFunction` - (Required) The lambda function that processes documents. + ### `transformationFunction` block The `transformationFunction` block supports the following arguments: -* `stepToApply` - (Required, Forces new resource) Currently only `POST_CHUNKING` is supported. -* `transformationLambdaConfiguration` - (Required, Forces new resource) The lambda configuration for custom transformation. +* `transformationLambdaConfiguration` - (Required, Forces new resource) The configuration of the lambda function. ### `transformationLambdaConfiguration` block @@ -226,4 +232,4 @@ Using `terraform import`, import Agents for Amazon Bedrock Data Source using the % terraform import aws_bedrockagent_data_source.example GWCMFMQF6T,EMDPPAYPZI ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/ecs_service.html.markdown b/website/docs/cdktf/typescript/r/ecs_service.html.markdown index 6e40f9291d4..403d13746ff 100644 --- a/website/docs/cdktf/typescript/r/ecs_service.html.markdown +++ b/website/docs/cdktf/typescript/r/ecs_service.html.markdown @@ -213,6 +213,7 @@ The following arguments are required: The following arguments are optional: * `alarms` - (Optional) Information about the CloudWatch alarms. [See below](#alarms). +* `availabilityZoneRebalancing` - (Optional) ECS automatically redistributes tasks within a service across Availability Zones (AZs) to mitigate the risk of impaired application availability due to underlying infrastructure failures and task lifecycle activities. The valid values are `ENABLED` and `DISABLED`. Defaults to `DISABLED`. * `capacityProviderStrategy` - (Optional) Capacity provider strategies to use for the service. Can be one or more. These can be updated without destroying and recreating the service only if `force_new_deployment = true` and not changing from 0 `capacityProviderStrategy` blocks to greater than 0, or vice versa. See below. Conflicts with `launchType`. * `cluster` - (Optional) ARN of an ECS cluster. * `deploymentCircuitBreaker` - (Optional) Configuration block for deployment circuit breaker. See below. @@ -240,6 +241,7 @@ The following arguments are optional: * `taskDefinition` - (Optional) Family and revision (`family:revision`) or full ARN of the task definition that you want to run in your service. Required unless using the `EXTERNAL` deployment controller. If a revision is not specified, the latest `ACTIVE` revision is used. * `triggers` - (Optional) Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `plantimestamp()`. See example above. * `volumeConfiguration` - (Optional) Configuration for a volume specified in the task definition as a volume that is configured at launch time. Currently, the only supported volume type is an Amazon EBS volume. [See below](#volume_configuration). +* `vpcLatticeConfigurations` - (Optional) The VPC Lattice configuration for your service that allows Lattice to connect, secure, and monitor your service across multiple accounts and VPCs. [See below](#vpc_lattice_configurations). * `waitForSteadyState` - (Optional) If `true`, Terraform will wait for the service to reach a steady state (like [`aws ecs wait services-stable`](https://docs.aws.amazon.com/cli/latest/reference/ecs/wait/services-stable.html)) before continuing. Default `false`. ### alarms @@ -257,6 +259,14 @@ The `volumeConfiguration` configuration block supports the following: * `name` - (Required) Name of the volume. * `managedEbsVolume` - (Required) Configuration for the Amazon EBS volume that Amazon ECS creates and manages on your behalf. [See below](#managed_ebs_volume). +### vpc_lattice_configurations + +`vpcLatticeConfigurations` supports the following: + +* `roleArn` - (Required) The ARN of the IAM role to associate with this volume. This is the Amazon ECS infrastructure IAM role that is used to manage your AWS infrastructure. +* `targetGroupArn` - (Required) The full ARN of the target group or groups associated with the VPC Lattice configuration. +* `portName` - (Required) The name of the port for a target group associated with the VPC Lattice configuration. + ### managed_ebs_volume The `managedEbsVolume` configuration block supports the following: @@ -460,4 +470,4 @@ Using `terraform import`, import ECS services using the `name` together with ecs % terraform import aws_ecs_service.imported cluster-name/service-name ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/eip.html.markdown b/website/docs/cdktf/typescript/r/eip.html.markdown index 1cc962856dc..0fc5ca3b242 100644 --- a/website/docs/cdktf/typescript/r/eip.html.markdown +++ b/website/docs/cdktf/typescript/r/eip.html.markdown @@ -176,7 +176,7 @@ This resource supports the following arguments: * `address` - (Optional) IP address from an EC2 BYOIP pool. This option is only available for VPC EIPs. * `associateWithPrivateIp` - (Optional) User-specified primary or secondary private IP address to associate with the Elastic IP address. If no private IP address is specified, the Elastic IP address is associated with the primary private IP address. * `customerOwnedIpv4Pool` - (Optional) ID of a customer-owned address pool. For more on customer owned IP addressed check out [Customer-owned IP addresses guide](https://docs.aws.amazon.com/outposts/latest/userguide/outposts-networking-components.html#ip-addressing). -* `domain` - Indicates if this EIP is for use in VPC (`vpc`). +* `domain` - (Optional) Indicates if this EIP is for use in VPC (`vpc`). * `instance` - (Optional) EC2 instance ID. * `ipamPoolId`- (Optional) The ID of an IPAM pool which has an Amazon-provided or BYOIP public IPv4 CIDR provisioned to it. * `networkBorderGroup` - (Optional) Location from which the IP address is advertised. Use this parameter to limit the address to this location. @@ -248,4 +248,4 @@ Using `terraform import`, import EIPs in a VPC using their Allocation ID. For ex [1]: https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_AssociateAddress.html - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/fsx_openzfs_file_system.html.markdown b/website/docs/cdktf/typescript/r/fsx_openzfs_file_system.html.markdown index e7159fdfc96..340e24f520d 100644 --- a/website/docs/cdktf/typescript/r/fsx_openzfs_file_system.html.markdown +++ b/website/docs/cdktf/typescript/r/fsx_openzfs_file_system.html.markdown @@ -42,7 +42,7 @@ class MyConvertedCode extends TerraformStack { The following arguments are required: -* `deploymentType` - (Required) The filesystem deployment type. Valid values: `SINGLE_AZ_1`, `SINGLE_AZ_2` and `MULTI_AZ_1`. +* `deploymentType` - (Required) Filesystem deployment type. See the [AWS API documentation](https://docs.aws.amazon.com/fsx/latest/APIReference/API_CreateFileSystemOpenZFSConfiguration.html#FSx-Type-CreateFileSystemOpenZFSConfiguration-DeploymentType) for a list of valid values. * `storageCapacity` - (Required) The storage capacity (GiB) of the file system. Valid values between `64` and `524288`. * `subnetIds` - (Required) A list of IDs for the subnets that the file system will be accessible from. * `throughputCapacity` - (Required) Throughput (MB/s) of the file system. Valid values depend on `deploymentType`. Must be one of `64`, `128`, `256`, `512`, `1024`, `2048`, `3072`, `4096` for `SINGLE_AZ_1`. Must be one of `160`, `320`, `640`, `1280`, `2560`, `3840`, `5120`, `7680`, `10240` for `SINGLE_AZ_2`. @@ -194,4 +194,4 @@ class MyConvertedCode extends TerraformStack { ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/iam_group_policy_attachments_exclusive.html.markdown b/website/docs/cdktf/typescript/r/iam_group_policy_attachments_exclusive.html.markdown index 874b7027383..0d5b1b1d700 100644 --- a/website/docs/cdktf/typescript/r/iam_group_policy_attachments_exclusive.html.markdown +++ b/website/docs/cdktf/typescript/r/iam_group_policy_attachments_exclusive.html.markdown @@ -3,17 +3,18 @@ subcategory: "IAM (Identity & Access Management)" layout: "aws" page_title: "AWS: aws_iam_group_policy_attachments_exclusive" description: |- - Terraform resource for maintaining exclusive management of customer managed policies assigned to an AWS IAM (Identity & Access Management) group. + Terraform resource for maintaining exclusive management of managed IAM policies assigned to an AWS IAM (Identity & Access Management) group. --- + # Resource: aws_iam_group_policy_attachments_exclusive -Terraform resource for maintaining exclusive management of customer managed policies assigned to an AWS IAM (Identity & Access Management) group. +Terraform resource for maintaining exclusive management of managed IAM policies assigned to an AWS IAM (Identity & Access Management) group. -!> This resource takes exclusive ownership over customer managed policies attached to a group. This includes removal of customer managed policies which are not explicitly configured. To prevent persistent drift, ensure any `aws_iam_group_policy_attachment` resources managed alongside this resource are included in the `policyArns` argument. +!> This resource takes exclusive ownership over managed IAM policies attached to a group. This includes removal of managed IAM policies which are not explicitly configured. To prevent persistent drift, ensure any `aws_iam_group_policy_attachment` resources managed alongside this resource are included in the `policyArns` argument. -~> Destruction of this resource means Terraform will no longer manage reconciliation of the configured policy attachments. It __will not__ detach the configured policies from the group. +~> Destruction of this resource means Terraform will no longer manage reconciliation of the configured policy attachments. It **will not** detach the configured policies from the group. ## Example Usage @@ -40,11 +41,11 @@ class MyConvertedCode extends TerraformStack { ``` -### Disallow Customer Managed Policies +### Disallow Managed IAM Policies -To automatically remove any configured customer managed policies, set the `policyArns` argument to an empty list. +To automatically remove any configured managed IAM policies, set the `policyArns` argument to an empty list. -~> This will not __prevent__ customer managed policies from being assigned to a group via Terraform (or any other interface). This resource enables bringing customer managed policy assignments into a configured state, however, this reconciliation happens only when `apply` is proactively run. +~> This will not **prevent** managed IAM policies from being assigned to a group via Terraform (or any other interface). This resource enables bringing managed IAM policy assignments into a configured state, however, this reconciliation happens only when `apply` is proactively run. ```typescript // DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug @@ -75,7 +76,7 @@ class MyConvertedCode extends TerraformStack { The following arguments are required: * `groupName` - (Required) IAM group name. -* `policyArns` - (Required) A list of customer managed policy ARNs to be attached to the group. Policies attached to this group but not configured in this argument will be removed. +* `policyArns` - (Required) A list of managed IAM policy ARNs to be attached to the group. Policies attached to this group but not configured in this argument will be removed. ## Attribute Reference @@ -83,7 +84,7 @@ This resource exports no additional attributes. ## Import -In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to exclusively manage customer managed policy assignments using the `groupName`. For example: +In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to exclusively manage managed IAM policy assignments using the `groupName`. For example: ```typescript // DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug @@ -107,10 +108,10 @@ class MyConvertedCode extends TerraformStack { ``` -Using `terraform import`, import exclusive management of customer managed policy assignments using the `groupName`. For example: +Using `terraform import`, import exclusive management of managed IAM policy assignments using the `groupName`. For example: ```console % terraform import aws_iam_group_policy_attachments_exclusive.example MyGroup ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/iam_role_policy_attachments_exclusive.html.markdown b/website/docs/cdktf/typescript/r/iam_role_policy_attachments_exclusive.html.markdown index b0583730fa7..d07a1b9b39d 100644 --- a/website/docs/cdktf/typescript/r/iam_role_policy_attachments_exclusive.html.markdown +++ b/website/docs/cdktf/typescript/r/iam_role_policy_attachments_exclusive.html.markdown @@ -3,17 +3,18 @@ subcategory: "IAM (Identity & Access Management)" layout: "aws" page_title: "AWS: aws_iam_role_policy_attachments_exclusive" description: |- - Terraform resource for maintaining exclusive management of customer managed policies assigned to an AWS IAM (Identity & Access Management) role. + Terraform resource for maintaining exclusive management of managed IAM policies assigned to an AWS IAM (Identity & Access Management) role. --- + # Resource: aws_iam_role_policy_attachments_exclusive -Terraform resource for maintaining exclusive management of customer managed policies assigned to an AWS IAM (Identity & Access Management) role. +Terraform resource for maintaining exclusive management of managed IAM policies assigned to an AWS IAM (Identity & Access Management) role. -!> This resource takes exclusive ownership over customer managed policies attached to a role. This includes removal of customer managed policies which are not explicitly configured. To prevent persistent drift, ensure any `aws_iam_role_policy_attachment` resources managed alongside this resource are included in the `policyArns` argument. +!> This resource takes exclusive ownership over managed IAM policies attached to a role. This includes removal of managed IAM policies which are not explicitly configured. To prevent persistent drift, ensure any `aws_iam_role_policy_attachment` resources managed alongside this resource are included in the `policyArns` argument. -~> Destruction of this resource means Terraform will no longer manage reconciliation of the configured policy attachments. It __will not__ detach the configured policies from the role. +~> Destruction of this resource means Terraform will no longer manage reconciliation of the configured policy attachments. It **will not** detach the configured policies from the role. ## Example Usage @@ -40,11 +41,11 @@ class MyConvertedCode extends TerraformStack { ``` -### Disallow Customer Managed Policies +### Disallow Managed IAM Policies -To automatically remove any configured customer managed policies, set the `policyArns` argument to an empty list. +To automatically remove any configured managed IAM policies, set the `policyArns` argument to an empty list. -~> This will not __prevent__ customer managed policies from being assigned to a role via Terraform (or any other interface). This resource enables bringing customer managed policy assignments into a configured state, however, this reconciliation happens only when `apply` is proactively run. +~> This will not **prevent** managed IAM policies from being assigned to a role via Terraform (or any other interface). This resource enables bringing managed IAM policy assignments into a configured state, however, this reconciliation happens only when `apply` is proactively run. ```typescript // DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug @@ -75,7 +76,7 @@ class MyConvertedCode extends TerraformStack { The following arguments are required: * `roleName` - (Required) IAM role name. -* `policyArns` - (Required) A list of customer managed policy ARNs to be attached to the role. Policies attached to this role but not configured in this argument will be removed. +* `policyArns` - (Required) A list of managed IAM policy ARNs to be attached to the role. Policies attached to this role but not configured in this argument will be removed. ## Attribute Reference @@ -83,7 +84,7 @@ This resource exports no additional attributes. ## Import -In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to exclusively manage customer managed policy assignments using the `roleName`. For example: +In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to exclusively manage managed IAM policy assignments using the `roleName`. For example: ```typescript // DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug @@ -107,10 +108,10 @@ class MyConvertedCode extends TerraformStack { ``` -Using `terraform import`, import exclusive management of customer managed policy assignments using the `roleName`. For example: +Using `terraform import`, import exclusive management of managed IAM policy assignments using the `roleName`. For example: ```console % terraform import aws_iam_role_policy_attachments_exclusive.example MyRole ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/iam_user_policy_attachments_exclusive.html.markdown b/website/docs/cdktf/typescript/r/iam_user_policy_attachments_exclusive.html.markdown index 1b843050fba..952bdb5c834 100644 --- a/website/docs/cdktf/typescript/r/iam_user_policy_attachments_exclusive.html.markdown +++ b/website/docs/cdktf/typescript/r/iam_user_policy_attachments_exclusive.html.markdown @@ -3,17 +3,18 @@ subcategory: "IAM (Identity & Access Management)" layout: "aws" page_title: "AWS: aws_iam_user_policy_attachments_exclusive" description: |- - Terraform resource for maintaining exclusive management of customer managed policies assigned to an AWS IAM (Identity & Access Management) user. + Terraform resource for maintaining exclusive management of managed IAM policies assigned to an AWS IAM (Identity & Access Management) user. --- + # Resource: aws_iam_user_policy_attachments_exclusive -Terraform resource for maintaining exclusive management of customer managed policies assigned to an AWS IAM (Identity & Access Management) user. +Terraform resource for maintaining exclusive management of managed IAM policies assigned to an AWS IAM (Identity & Access Management) user. -!> This resource takes exclusive ownership over customer managed policies attached to a user. This includes removal of customer managed policies which are not explicitly configured. To prevent persistent drift, ensure any `aws_iam_user_policy_attachment` resources managed alongside this resource are included in the `policyArns` argument. +!> This resource takes exclusive ownership over managed IAM policies attached to a user. This includes removal of managed IAM policies which are not explicitly configured. To prevent persistent drift, ensure any `aws_iam_user_policy_attachment` resources managed alongside this resource are included in the `policyArns` argument. -~> Destruction of this resource means Terraform will no longer manage reconciliation of the configured policy attachments. It __will not__ detach the configured policies from the user. +~> Destruction of this resource means Terraform will no longer manage reconciliation of the configured policy attachments. It **will not** detach the configured policies from the user. ## Example Usage @@ -40,11 +41,11 @@ class MyConvertedCode extends TerraformStack { ``` -### Disallow Customer Managed Policies +### Disallow Managed IAM Policies -To automatically remove any configured customer managed policies, set the `policyArns` argument to an empty list. +To automatically remove any configured managed IAM policies, set the `policyArns` argument to an empty list. -~> This will not __prevent__ customer managed policies from being assigned to a user via Terraform (or any other interface). This resource enables bringing customer managed policy assignments into a configured state, however, this reconciliation happens only when `apply` is proactively run. +~> This will not **prevent** managed IAM policies from being assigned to a user via Terraform (or any other interface). This resource enables bringing managed IAM policy assignments into a configured state, however, this reconciliation happens only when `apply` is proactively run. ```typescript // DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug @@ -75,7 +76,7 @@ class MyConvertedCode extends TerraformStack { The following arguments are required: * `userName` - (Required) IAM user name. -* `policyArns` - (Required) A list of customer managed policy ARNs to be attached to the user. Policies attached to this user but not configured in this argument will be removed. +* `policyArns` - (Required) A list of managed IAM policy ARNs to be attached to the user. Policies attached to this user but not configured in this argument will be removed. ## Attribute Reference @@ -83,7 +84,7 @@ This resource exports no additional attributes. ## Import -In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to exclusively manage customer managed policy assignments using the `userName`. For example: +In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to exclusively manage managed IAM policy assignments using the `userName`. For example: ```typescript // DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug @@ -107,10 +108,10 @@ class MyConvertedCode extends TerraformStack { ``` -Using `terraform import`, import exclusive management of customer managed policy assignments using the `userName`. For example: +Using `terraform import`, import exclusive management of managed IAM policy assignments using the `userName`. For example: ```console % terraform import aws_iam_user_policy_attachments_exclusive.example MyUser ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/imagebuilder_image_pipeline.html.markdown b/website/docs/cdktf/typescript/r/imagebuilder_image_pipeline.html.markdown index fd210b0ff69..262c51cbf3d 100644 --- a/website/docs/cdktf/typescript/r/imagebuilder_image_pipeline.html.markdown +++ b/website/docs/cdktf/typescript/r/imagebuilder_image_pipeline.html.markdown @@ -12,6 +12,8 @@ description: |- Manages an Image Builder Image Pipeline. +~> **NOTE:** Starting with version `5.74.0`, lifecycle meta-argument [`replace_triggered_by`](https://developer.hashicorp.com/terraform/language/meta-arguments/lifecycle#replace_triggered_by) must be used in order to prevent a dependency error on destroy. + ## Example Usage ```typescript @@ -23,19 +25,64 @@ import { Token, TerraformStack } from "cdktf"; * See https://cdk.tf/provider-generation for more details. */ import { ImagebuilderImagePipeline } from "./.gen/providers/aws/imagebuilder-image-pipeline"; +import { ImagebuilderImageRecipe } from "./.gen/providers/aws/imagebuilder-image-recipe"; class MyConvertedCode extends TerraformStack { constructor(scope: Construct, name: string) { super(scope, name); - new ImagebuilderImagePipeline(this, "example", { - imageRecipeArn: Token.asString(awsImagebuilderImageRecipeExample.arn), - infrastructureConfigurationArn: Token.asString( - awsImagebuilderInfrastructureConfigurationExample.arn - ), + const example = new ImagebuilderImageRecipe(this, "example", { + blockDeviceMapping: [ + { + deviceName: "/dev/xvdb", + ebs: { + deleteOnTermination: Token.asString(true), + volumeSize: 100, + volumeType: "gp2", + }, + }, + ], + component: [ + { + componentArn: Token.asString(awsImagebuilderComponentExample.arn), + parameter: [ + { + name: "Parameter1", + value: "Value1", + }, + { + name: "Parameter2", + value: "Value2", + }, + ], + }, + ], name: "example", - schedule: { - scheduleExpression: "cron(0 0 * * ? *)", - }, + parentImage: + "arn:${" + + current.partition + + "}:imagebuilder:${" + + dataAwsRegionCurrent.name + + "}:aws:image/amazon-linux-2-x86/x.x.x", + version: "1.0.0", }); + const awsImagebuilderImagePipelineExample = new ImagebuilderImagePipeline( + this, + "example_1", + { + imageRecipeArn: example.arn, + infrastructureConfigurationArn: Token.asString( + awsImagebuilderInfrastructureConfigurationExample.arn + ), + lifecycle: { + replaceTriggeredBy: [example], + }, + name: "example", + schedule: { + scheduleExpression: "cron(0 0 * * ? *)", + }, + } + ); + /*This allows the Terraform resource name to match the original name. You can remove the call if you don't need them to match.*/ + awsImagebuilderImagePipelineExample.overrideLogicalId("example"); } } @@ -159,4 +206,4 @@ Using `terraform import`, import `aws_imagebuilder_image_pipeline` resources usi % terraform import aws_imagebuilder_image_pipeline.example arn:aws:imagebuilder:us-east-1:123456789012:image-pipeline/example ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/lambda_function.html.markdown b/website/docs/cdktf/typescript/r/lambda_function.html.markdown index 76da2bf12b2..4047b890c49 100644 --- a/website/docs/cdktf/typescript/r/lambda_function.html.markdown +++ b/website/docs/cdktf/typescript/r/lambda_function.html.markdown @@ -413,7 +413,8 @@ Advanced logging settings. See [Configuring advanced logging controls for your L ### snap_start -Snap start settings for low-latency startups. This feature is currently only supported for `java11`, `java17` and `java21` runtimes. Remove this block to delete the associated settings (rather than setting `apply_on = "None"`). +Snap start settings for low-latency startups. This feature is currently only supported for specific runtimes, see [Supported features and limitations][14]. +Remove this block to delete the associated settings (rather than setting `apply_on = "None"`). * `applyOn` - (Required) Conditions where snap start is enabled. Valid values are `PublishedVersions`. @@ -461,6 +462,7 @@ This resource exports the following attributes in addition to the arguments abov [11]: https://learn.hashicorp.com/terraform/aws/lambda-api-gateway [12]: https://docs.aws.amazon.com/lambda/latest/dg/services-efs.html [13]: https://docs.aws.amazon.com/lambda/latest/dg/monitoring-cloudwatchlogs.html#monitoring-cloudwatchlogs-advanced +[14]: https://docs.aws.amazon.com/lambda/latest/dg/snapstart.html#snapstart-runtimes ## Timeouts @@ -502,4 +504,4 @@ Using `terraform import`, import Lambda Functions using the `functionName`. For % terraform import aws_lambda_function.test_lambda my_test_lambda_function ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/lb_target_group.html.markdown b/website/docs/cdktf/typescript/r/lb_target_group.html.markdown index 13caaa69afd..bb6c226b8c7 100644 --- a/website/docs/cdktf/typescript/r/lb_target_group.html.markdown +++ b/website/docs/cdktf/typescript/r/lb_target_group.html.markdown @@ -246,7 +246,7 @@ This resource supports the following arguments: * When the `targetType` is `lambda`, values can be between `200` and `499`. The default is `200`. * `path` - (May be required) Destination for the health check request. Required for HTTP/HTTPS ALB and HTTP NLB. Only applies to HTTP/HTTPS. * For HTTP and HTTPS health checks, the default is `/`. - * For gRPC health checks, the default is `/Amazon Web Services.ALB/healthcheck`. + * For gRPC health checks, the default is `/AWS.ALB/healthcheck`. * `port` - (Optional) The port the load balancer uses when performing health checks on targets. Valid values are either `traffic-port`, to use the same port as the target group, or a valid port number between `1` and `65536`. Default is `traffic-port`. @@ -347,4 +347,4 @@ Using `terraform import`, import Target Groups using their ARN. For example: % terraform import aws_lb_target_group.app_front_end arn:aws:elasticloadbalancing:us-west-2:187416307283:targetgroup/app-front-end/20cfe21448b66314 ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/memorydb_acl.html.markdown b/website/docs/cdktf/typescript/r/memorydb_acl.html.markdown index 9048af183da..5f2a47d6b81 100644 --- a/website/docs/cdktf/typescript/r/memorydb_acl.html.markdown +++ b/website/docs/cdktf/typescript/r/memorydb_acl.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_acl" description: |- diff --git a/website/docs/cdktf/typescript/r/memorydb_cluster.html.markdown b/website/docs/cdktf/typescript/r/memorydb_cluster.html.markdown index bc0ff04e3d0..f8bbc650953 100644 --- a/website/docs/cdktf/typescript/r/memorydb_cluster.html.markdown +++ b/website/docs/cdktf/typescript/r/memorydb_cluster.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_cluster" description: |- diff --git a/website/docs/cdktf/typescript/r/memorydb_parameter_group.html.markdown b/website/docs/cdktf/typescript/r/memorydb_parameter_group.html.markdown index a505b1e3c06..e0131d96a65 100644 --- a/website/docs/cdktf/typescript/r/memorydb_parameter_group.html.markdown +++ b/website/docs/cdktf/typescript/r/memorydb_parameter_group.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_parameter_group" description: |- diff --git a/website/docs/cdktf/typescript/r/memorydb_snapshot.html.markdown b/website/docs/cdktf/typescript/r/memorydb_snapshot.html.markdown index fbdbf2de5b2..b37f0f406bf 100644 --- a/website/docs/cdktf/typescript/r/memorydb_snapshot.html.markdown +++ b/website/docs/cdktf/typescript/r/memorydb_snapshot.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_snapshot" description: |- diff --git a/website/docs/cdktf/typescript/r/memorydb_subnet_group.html.markdown b/website/docs/cdktf/typescript/r/memorydb_subnet_group.html.markdown index 5e7bbc98a00..68b390fe791 100644 --- a/website/docs/cdktf/typescript/r/memorydb_subnet_group.html.markdown +++ b/website/docs/cdktf/typescript/r/memorydb_subnet_group.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_subnet_group" description: |- diff --git a/website/docs/cdktf/typescript/r/memorydb_user.html.markdown b/website/docs/cdktf/typescript/r/memorydb_user.html.markdown index a27e6d8d615..4ea9d2ac35d 100644 --- a/website/docs/cdktf/typescript/r/memorydb_user.html.markdown +++ b/website/docs/cdktf/typescript/r/memorydb_user.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_user" description: |- diff --git a/website/docs/cdktf/typescript/r/organizations_organization.html.markdown b/website/docs/cdktf/typescript/r/organizations_organization.html.markdown index 2fde6e886bb..1edf8eca598 100644 --- a/website/docs/cdktf/typescript/r/organizations_organization.html.markdown +++ b/website/docs/cdktf/typescript/r/organizations_organization.html.markdown @@ -47,7 +47,7 @@ class MyConvertedCode extends TerraformStack { This resource supports the following arguments: * `awsServiceAccessPrincipals` - (Optional) List of AWS service principal names for which you want to enable integration with your organization. This is typically in the form of a URL, such as service-abbreviation.amazonaws.com. Organization must have `featureSet` set to `ALL`. Some services do not support enablement via this endpoint, see [warning in aws docs](https://docs.aws.amazon.com/organizations/latest/APIReference/API_EnableAWSServiceAccess.html). -* `enabledPolicyTypes` - (Optional) List of Organizations policy types to enable in the Organization Root. Organization must have `featureSet` set to `ALL`. For additional information about valid policy types (e.g., `AISERVICES_OPT_OUT_POLICY`, `BACKUP_POLICY`, `SERVICE_CONTROL_POLICY`, and `TAG_POLICY`), see the [AWS Organizations API Reference](https://docs.aws.amazon.com/organizations/latest/APIReference/API_EnablePolicyType.html). +* `enabledPolicyTypes` - (Optional) List of Organizations policy types to enable in the Organization Root. Organization must have `featureSet` set to `ALL`. For additional information about valid policy types (e.g., `AISERVICES_OPT_OUT_POLICY`, `BACKUP_POLICY`, `RESOURCE_CONTROL_POLICY`, `SERVICE_CONTROL_POLICY`, and `TAG_POLICY`), see the [AWS Organizations API Reference](https://docs.aws.amazon.com/organizations/latest/APIReference/API_EnablePolicyType.html). * `featureSet` - (Optional) Specify "ALL" (default) or "CONSOLIDATED_BILLING". ## Attribute Reference @@ -112,4 +112,4 @@ Using `terraform import`, import the AWS organization using the `id`. For exampl % terraform import aws_organizations_organization.my_org o-1234567 ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/rds_instance_state.html.markdown b/website/docs/cdktf/typescript/r/rds_instance_state.html.markdown new file mode 100644 index 00000000000..cc68f4f2b47 --- /dev/null +++ b/website/docs/cdktf/typescript/r/rds_instance_state.html.markdown @@ -0,0 +1,94 @@ +--- +subcategory: "RDS (Relational Database)" +layout: "aws" +page_title: "AWS: aws_rds_instance_state" +description: |- + Terraform resource for managing an AWS RDS (Relational Database) RDS Instance State. +--- + + + +# Resource: aws_rds_instance_state + +Terraform resource for managing an AWS RDS (Relational Database) RDS Instance State. + +~> Destruction of this resource is a no-op and **will not** modify the instance state + +## Example Usage + +### Basic Usage + +```typescript +// DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug +import { Construct } from "constructs"; +import { Token, TerraformStack } from "cdktf"; +/* + * Provider bindings are generated by running `cdktf get`. + * See https://cdk.tf/provider-generation for more details. + */ +import { RdsInstanceState } from "./.gen/providers/aws/rds-instance-state"; +class MyConvertedCode extends TerraformStack { + constructor(scope: Construct, name: string) { + super(scope, name); + new RdsInstanceState(this, "test", { + identifier: Token.asString(awsDbInstanceTest.identifier), + state: "available", + }); + } +} + +``` + +## Argument Reference + +The following arguments are required: + +* `identifier` - (Required) DB Instance Identifier +* `state` - (Required) Configured state of the DB Instance. Valid values are `available` and `stopped`. + +## Attribute Reference + +This resource exports the following attributes in addition to the arguments above: + +* `identifier` - DB Instance Identifier + +## Timeouts + +[Configuration options](https://developer.hashicorp.com/terraform/language/resources/syntax#operation-timeouts): + +* `create` - (Default `30m`) +* `update` - (Default `30m`) + +## Import + +In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import RDS (Relational Database) RDS Instance State using the `example_id_arg`. For example: + +```typescript +// DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug +import { Construct } from "constructs"; +import { TerraformStack } from "cdktf"; +/* + * Provider bindings are generated by running `cdktf get`. + * See https://cdk.tf/provider-generation for more details. + */ +import { RdsInstanceState } from "./.gen/providers/aws/rds-instance-state"; +class MyConvertedCode extends TerraformStack { + constructor(scope: Construct, name: string) { + super(scope, name); + RdsInstanceState.generateConfigForImport( + this, + "example", + "db-L72FUFBZX2RRXT3HOJSIUQVOKE" + ); + } +} + +``` + +Using `terraform import`, import RDS (Relational Database) RDS Instance State using the `example_id_arg`. For example: + +```console +% terraform import aws_rds_instance_state.example rds_instance_state-id-12345678 +``` + + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/s3_bucket_acl.html.markdown b/website/docs/cdktf/typescript/r/s3_bucket_acl.html.markdown index 6d4ef967714..97966f4bc7c 100644 --- a/website/docs/cdktf/typescript/r/s3_bucket_acl.html.markdown +++ b/website/docs/cdktf/typescript/r/s3_bucket_acl.html.markdown @@ -193,8 +193,8 @@ class MyConvertedCode extends TerraformStack { This resource supports the following arguments: -* `acl` - (Optional, One of `acl` or `accessControlPolicy` is required) Canned ACL to apply to the bucket. -* `accessControlPolicy` - (Optional, One of `accessControlPolicy` or `acl` is required) Configuration block that sets the ACL permissions for an object per grantee. [See below](#access_control_policy). +* `acl` - (Optional, either `accessControlPolicy` or `acl` is required) Specifies the Canned ACL to apply to the bucket. Valid values: `private`, `public-read`, `public-read-write`, `aws-exec-read`, `authenticated-read`, `bucket-owner-read`, `bucket-owner-full-control`, `log-delivery-write`. Full details are available on the [AWS documentation](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html#canned-acl). +* `accessControlPolicy` - (Optional, either `accessControlPolicy` or `acl` is required) Configuration block that sets the ACL permissions for an object per grantee. [See below](#access_control_policy). * `bucket` - (Required, Forces new resource) Bucket to which to apply the ACL. * `expectedBucketOwner` - (Optional, Forces new resource) Account ID of the expected bucket owner. @@ -358,4 +358,4 @@ If the owner (account ID) of the source bucket _differs_ from the account used t [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html#canned-acl - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/s3_bucket_lifecycle_configuration.html.markdown b/website/docs/cdktf/typescript/r/s3_bucket_lifecycle_configuration.html.markdown index 26c63006913..db24d309e08 100644 --- a/website/docs/cdktf/typescript/r/s3_bucket_lifecycle_configuration.html.markdown +++ b/website/docs/cdktf/typescript/r/s3_bucket_lifecycle_configuration.html.markdown @@ -20,14 +20,12 @@ An S3 Lifecycle configuration consists of one or more Lifecycle rules. Each rule For more information see the Amazon S3 User Guide on [`Lifecycle Configuration Elements`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/intro-lifecycle-rules.html). -~> **NOTE:** S3 Buckets only support a single lifecycle configuration. Declaring multiple `aws_s3_bucket_lifecycle_configuration` resources to the same S3 Bucket will cause a perpetual difference in configuration. +~> S3 Buckets only support a single lifecycle configuration. Declaring multiple `aws_s3_bucket_lifecycle_configuration` resources to the same S3 Bucket will cause a perpetual difference in configuration. -~> **NOTE:** Lifecycle configurations may take some time to fully propagate to all AWS S3 systems. +~> Lifecycle configurations may take some time to fully propagate to all AWS S3 systems. Running Terraform operations shortly after creating a lifecycle configuration may result in changes that affect configuration idempotence. See the Amazon S3 User Guide on [setting lifecycle configuration on a bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/how-to-set-lifecycle-configuration-intro.html). --> This resource cannot be used with S3 directory buckets. - ## Example Usage ### With neither a filter nor prefix specified @@ -474,12 +472,12 @@ This resource supports the following arguments: ### rule -~> **NOTE:** The `filter` argument, while Optional, is required if the `rule` configuration block does not contain a `prefix` **and** you intend to override the default behavior of setting the rule to filter objects with the empty string prefix (`""`). +~> The `filter` argument, while Optional, is required if the `rule` configuration block does not contain a `prefix` **and** you intend to override the default behavior of setting the rule to filter objects with the empty string prefix (`""`). Since `prefix` is deprecated by Amazon S3 and will be removed in the next major version of the Terraform AWS Provider, we recommend users either specify `filter` or leave both `filter` and `prefix` unspecified. -~> **NOTE:** A rule cannot be updated from having a filter (via either the `rule.filter` parameter or when neither `rule.filter` and `rule.prefix` are specified) to only having a prefix via the `rule.prefix` parameter. +~> A rule cannot be updated from having a filter (via either the `rule.filter` parameter or when neither `rule.filter` and `rule.prefix` are specified) to only having a prefix via the `rule.prefix` parameter. -~> **NOTE** Terraform cannot distinguish a difference between configurations that use `rule.filter {}` and configurations that neither use `rule.filter` nor `rule.prefix`, so a rule cannot be updated from applying to all objects in the bucket via `rule.filter {}` to applying to a subset of objects based on the key prefix `""` and vice versa. +~> Terraform cannot distinguish a difference between configurations that use `rule.filter {}` and configurations that neither use `rule.filter` nor `rule.prefix`, so a rule cannot be updated from applying to all objects in the bucket via `rule.filter {}` to applying to a subset of objects based on the key prefix `""` and vice versa. The `rule` configuration block supports the following arguments: @@ -509,7 +507,7 @@ The `expiration` configuration block supports the following arguments: ### filter -~> **NOTE:** The `filter` configuration block must either be specified as the empty configuration block (`filter {}`) or with exactly one of `prefix`, `tag`, `and`, `objectSizeGreaterThan` or `objectSizeLessThan` specified. +~> The `filter` configuration block must either be specified as the empty configuration block (`filter {}`) or with exactly one of `prefix`, `tag`, `and`, `objectSizeGreaterThan` or `objectSizeLessThan` specified. The `filter` configuration block supports the following arguments: @@ -538,7 +536,7 @@ The `noncurrentVersionTransition` configuration block supports the following arg The `transition` configuration block supports the following arguments: -~> **Note:** Only one of `date` or `days` should be specified. If neither are specified, the `transition` will default to 0 `days`. +~> Only one of `date` or `days` should be specified. If neither are specified, the `transition` will default to 0 `days`. * `date` - (Optional, Conflicts with `days`) Date objects are transitioned to the specified storage class. The date value must be in [RFC3339 full-date format](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6) e.g. `2023-08-22`. * `days` - (Optional, Conflicts with `date`) Number of days after creation when objects are transitioned to the specified storage class. The value must be a positive integer. If both `days` and `date` are not specified, defaults to `0`. Valid values depend on `storageClass`, see [Transition objects using Amazon S3 Lifecycle](https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-transition-general-considerations.html) for more details. @@ -568,7 +566,7 @@ This resource exports the following attributes in addition to the arguments abov ## Import -In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import S3 bucket lifecycle configuration using the `bucket` or using the `bucket` and `expectedBucketOwner` separated by a comma (`,`). For example: +In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import an S3 bucket lifecycle configuration using the `bucket` or the `bucket` and `expectedBucketOwner` separated by a comma (`,`). For example: If the owner (account ID) of the source bucket is the same account used to configure the Terraform AWS Provider, import using the `bucket`: @@ -618,7 +616,7 @@ class MyConvertedCode extends TerraformStack { ``` -**Using `terraform import` to import** S3 bucket lifecycle configuration using the `bucket` or using the `bucket` and `expectedBucketOwner` separated by a comma (`,`). For example: +Using `terraform import`, import an S3 bucket lifecycle configuration using the `bucket` or the `bucket` and `expectedBucketOwner` separated by a comma (`,`). For example: If the owner (account ID) of the source bucket is the same account used to configure the Terraform AWS Provider, import using the `bucket`: @@ -632,4 +630,4 @@ If the owner (account ID) of the source bucket differs from the account used to % terraform import aws_s3_bucket_lifecycle_configuration.example bucket-name,123456789012 ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/d/memorydb_acl.html.markdown b/website/docs/d/memorydb_acl.html.markdown index 56c0e4def26..ca5d591f856 100644 --- a/website/docs/d/memorydb_acl.html.markdown +++ b/website/docs/d/memorydb_acl.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_acl" description: |- diff --git a/website/docs/d/memorydb_cluster.html.markdown b/website/docs/d/memorydb_cluster.html.markdown index f9294037af4..442d6cb9ee7 100644 --- a/website/docs/d/memorydb_cluster.html.markdown +++ b/website/docs/d/memorydb_cluster.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_cluster" description: |- @@ -37,8 +37,9 @@ This data source exports the following attributes in addition to the arguments a * `port` - Port number that the cluster configuration endpoint is listening on. * `data_tiering` - True when data tiering is enabled. * `description` - Description for the cluster. -* `engine_patch_version` - Patch version number of the Redis engine used by the cluster. -* `engine_version` - Version number of the Redis engine used by the cluster. +* `engine_patch_version` - Patch version number of the engine used by the cluster. +* `engine` - Engine that will run on cluster nodes. +* `engine_version` - Version number of the engine used by the cluster. * `final_snapshot_name` - Name of the final cluster snapshot to be created when this resource is deleted. If omitted, no final snapshot will be made. * `kms_key_arn` - ARN of the KMS key used to encrypt the cluster at rest. * `maintenance_window` - Weekly time range during which maintenance on the cluster is performed. Specify as a range in the format `ddd:hh24:mi-ddd:hh24:mi` (24H Clock UTC). Example: `sun:23:00-mon:01:30`. diff --git a/website/docs/d/memorydb_parameter_group.html.markdown b/website/docs/d/memorydb_parameter_group.html.markdown index c073c18a12b..e1f9241e68d 100644 --- a/website/docs/d/memorydb_parameter_group.html.markdown +++ b/website/docs/d/memorydb_parameter_group.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_parameter_group" description: |- diff --git a/website/docs/d/memorydb_snapshot.html.markdown b/website/docs/d/memorydb_snapshot.html.markdown index 2c2a63e73c3..76db1d5b56d 100644 --- a/website/docs/d/memorydb_snapshot.html.markdown +++ b/website/docs/d/memorydb_snapshot.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_snapshot" description: |- @@ -32,7 +32,8 @@ This data source exports the following attributes in addition to the arguments a * `arn` - ARN of the snapshot. * `cluster_configuration` - The configuration of the cluster from which the snapshot was taken. * `description` - Description for the cluster. - * `engine_version` - Version number of the Redis engine used by the cluster. + * `engine` - The engine that will run on cluster nodes. + * `engine_version` - Version number of the engine used by the cluster. * `maintenance_window` - The weekly time range during which maintenance on the cluster is performed. * `name` - Name of the cluster. * `node_type` - Compute and memory capacity of the nodes in the cluster. diff --git a/website/docs/d/memorydb_subnet_group.html.markdown b/website/docs/d/memorydb_subnet_group.html.markdown index e0f7fec956d..7d2974aae06 100644 --- a/website/docs/d/memorydb_subnet_group.html.markdown +++ b/website/docs/d/memorydb_subnet_group.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_subnet_group" description: |- diff --git a/website/docs/d/memorydb_user.html.markdown b/website/docs/d/memorydb_user.html.markdown index 0656d5023b8..06651746b48 100644 --- a/website/docs/d/memorydb_user.html.markdown +++ b/website/docs/d/memorydb_user.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_user" description: |- diff --git a/website/docs/guides/custom-service-endpoints.html.markdown b/website/docs/guides/custom-service-endpoints.html.markdown index 6ddd1209d10..3e0ca3b8c5e 100644 --- a/website/docs/guides/custom-service-endpoints.html.markdown +++ b/website/docs/guides/custom-service-endpoints.html.markdown @@ -235,7 +235,7 @@ provider "aws" { |Elemental MediaPackage|`mediapackage`|`AWS_ENDPOINT_URL_MEDIAPACKAGE`|`mediapackage`| |Elemental MediaPackage Version 2|`mediapackagev2`|`AWS_ENDPOINT_URL_MEDIAPACKAGEV2`|`mediapackagev2`| |Elemental MediaStore|`mediastore`|`AWS_ENDPOINT_URL_MEDIASTORE`|`mediastore`| -|MemoryDB for Redis|`memorydb`|`AWS_ENDPOINT_URL_MEMORYDB`|`memorydb`| +|MemoryDB|`memorydb`|`AWS_ENDPOINT_URL_MEMORYDB`|`memorydb`| |MQ|`mq`|`AWS_ENDPOINT_URL_MQ`|`mq`| |MWAA (Managed Workflows for Apache Airflow)|`mwaa`|`AWS_ENDPOINT_URL_MWAA`|`mwaa`| |Neptune|`neptune`|`AWS_ENDPOINT_URL_NEPTUNE`|`neptune`| diff --git a/website/docs/r/bedrock_guardrail.html.markdown b/website/docs/r/bedrock_guardrail.html.markdown index 8aeefbfccf7..158d7f5ab89 100644 --- a/website/docs/r/bedrock_guardrail.html.markdown +++ b/website/docs/r/bedrock_guardrail.html.markdown @@ -86,7 +86,8 @@ The following arguments are optional: The `content_policy_config` configuration block supports the following arguments: -* `filters_config` - (Optional) List of content filter configs in content policy. See [Filters Config](#content-filters-config) for more information. +* `filters_config` - (Optional) Set of content filter configs in content policy. + See [Filters Config](#content-filters-config) for more information. #### Content Filters Config diff --git a/website/docs/r/bedrockagent_data_source.html.markdown b/website/docs/r/bedrockagent_data_source.html.markdown index d0feadf9a70..013fa1ac70b 100644 --- a/website/docs/r/bedrockagent_data_source.html.markdown +++ b/website/docs/r/bedrockagent_data_source.html.markdown @@ -113,7 +113,7 @@ The `semantic_chunking_configuration` block supports the following arguments: The `custom_transformation_configuration` block supports the following arguments: * `intermediate_storage` - (Required, Forces new resource) The intermediate storage for custom transformation. -* `transformation_function` - (Required) The configuration of transformation function. +* `transformation` - (Required) A custom processing step for documents moving through the data source ingestion pipeline. ### `intermediate_storage` block @@ -127,12 +127,18 @@ The `s3_location` block supports the following arguments: * `uri` - (Required, Forces new resource) S3 URI for intermediate storage. +### `transformation` block + +The `transformation` block supports the following arguments: + +* `step_to_apply` - (Required, Forces new resource) When the service applies the transformation. Currently only `POST_CHUNKING` is supported. +* `transformation_function` - (Required) The lambda function that processes documents. + ### `transformation_function` block The `transformation_function` block supports the following arguments: -* `step_to_apply` - (Required, Forces new resource) Currently only `POST_CHUNKING` is supported. -* `transformation_lambda_configuration` - (Required, Forces new resource) The lambda configuration for custom transformation. +* `transformation_lambda_configuration` - (Required, Forces new resource) The configuration of the lambda function. ### `transformation_lambda_configuration` block diff --git a/website/docs/r/iam_organizations_features.html.markdown b/website/docs/r/iam_organizations_features.html.markdown new file mode 100644 index 00000000000..d3995528a76 --- /dev/null +++ b/website/docs/r/iam_organizations_features.html.markdown @@ -0,0 +1,58 @@ +--- +subcategory: "IAM (Identity & Access Management)" +layout: "aws" +page_title: "AWS: aws_iam_organizations_features" +description: |- + Manages centralized root access features. +--- + +# Resource: aws_iam_organizations_features + +Manages centralized root access features across AWS member accounts managed using AWS Organizations. More information about managing root access in IAM can be found in the [Centralize root access for member accounts](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-enable-root-access.html). + +~> **NOTE:** The AWS account utilizing this resource must be an Organizations management account. Also, you must enable trusted access for AWS Identity and Access Management in AWS Organizations. + +## Example Usage + +```terraform +resource "aws_organizations_organization" "example" { + aws_service_access_principals = ["iam.amazonaws.com"] + feature_set = "ALL" +} + +resource "aws_iam_organizations_features" "example" { + enabled_features = [ + "RootCredentialsManagement", + "RootSessions" + ] +} +``` + +## Argument Reference + +The following arguments are required: + +* `enabled_features` - (Required) List of IAM features to enable. Valid values are `RootCredentialsManagement` and `RootSessions`. + +## Attribute Reference + +This resource exports the following attributes in addition to the arguments above: + +* `id` - AWS Organization identifier. + +## Import + +In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import root access features using the `id`. For example: + +```terraform +import { + to = aws_iam_organizations_features.example + id = "o-1234567" +} +``` + +Using `terraform import`, import root access features using the `id`. For example: + +```console +% terraform import aws_iam_organizations_features.example o-1234567 +``` diff --git a/website/docs/r/lb_target_group.html.markdown b/website/docs/r/lb_target_group.html.markdown index d39b53984b7..2d352d3ddd4 100644 --- a/website/docs/r/lb_target_group.html.markdown +++ b/website/docs/r/lb_target_group.html.markdown @@ -161,7 +161,7 @@ This resource supports the following arguments: * When the `target_type` is `lambda`, values can be between `200` and `499`. The default is `200`. * `path` - (May be required) Destination for the health check request. Required for HTTP/HTTPS ALB and HTTP NLB. Only applies to HTTP/HTTPS. * For HTTP and HTTPS health checks, the default is `/`. - * For gRPC health checks, the default is `/Amazon Web Services.ALB/healthcheck`. + * For gRPC health checks, the default is `/AWS.ALB/healthcheck`. * `port` - (Optional) The port the load balancer uses when performing health checks on targets. Valid values are either `traffic-port`, to use the same port as the target group, or a valid port number between `1` and `65536`. Default is `traffic-port`. diff --git a/website/docs/r/memorydb_acl.html.markdown b/website/docs/r/memorydb_acl.html.markdown index 4907b332497..34eee0ae208 100644 --- a/website/docs/r/memorydb_acl.html.markdown +++ b/website/docs/r/memorydb_acl.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_acl" description: |- diff --git a/website/docs/r/memorydb_cluster.html.markdown b/website/docs/r/memorydb_cluster.html.markdown index f7a3900a994..ee5e2186084 100644 --- a/website/docs/r/memorydb_cluster.html.markdown +++ b/website/docs/r/memorydb_cluster.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_cluster" description: |- @@ -19,6 +19,8 @@ resource "aws_memorydb_cluster" "example" { acl_name = "open-access" name = "my-cluster" node_type = "db.t4g.small" + engine = "redis" + engine_version = "7.1" num_shards = 2 security_group_ids = [aws_security_group.example.id] snapshot_retention_limit = 7 @@ -31,6 +33,8 @@ resource "aws_memorydb_cluster" "example" { The following arguments are required: * `acl_name` - (Required) The name of the Access Control List to associate with the cluster. +* `engine` - (Optional) The engine that will run on your nodes. Supported values are `redis` and `valkey`. +* `engine_version` - (Optional) Version number of the engine to be used for the cluster. Downgrades are not supported. * `node_type` - (Required) The compute and memory capacity of the nodes in the cluster. See AWS documentation on [supported node types](https://docs.aws.amazon.com/memorydb/latest/devguide/nodes.supportedtypes.html) as well as [vertical scaling](https://docs.aws.amazon.com/memorydb/latest/devguide/cluster-vertical-scaling.html). The following arguments are optional: @@ -38,7 +42,6 @@ The following arguments are optional: * `auto_minor_version_upgrade` - (Optional, Forces new resource) When set to `true`, the cluster will automatically receive minor engine version upgrades after launch. Defaults to `true`. * `data_tiering` - (Optional, Forces new resource) Enables data tiering. This option is not supported by all instance types. For more information, see [Data tiering](https://docs.aws.amazon.com/memorydb/latest/devguide/data-tiering.html). * `description` - (Optional) Description for the cluster. Defaults to `"Managed by Terraform"`. -* `engine_version` - (Optional) Version number of the Redis engine to be used for the cluster. Downgrades are not supported. * `final_snapshot_name` - (Optional) Name of the final cluster snapshot to be created when this resource is deleted. If omitted, no final snapshot will be made. * `kms_key_arn` - (Optional, Forces new resource) ARN of the KMS key used to encrypt the cluster at rest. * `maintenance_window` - (Optional) Specifies the weekly time range during which maintenance on the cluster is performed. Specify as a range in the format `ddd:hh24:mi-ddd:hh24:mi` (24H Clock UTC). The minimum maintenance window is a 60 minute period. Example: `sun:23:00-mon:01:30`. @@ -67,7 +70,7 @@ This resource exports the following attributes in addition to the arguments abov * `cluster_endpoint` * `address` - DNS hostname of the cluster configuration endpoint. * `port` - Port number that the cluster configuration endpoint is listening on. -* `engine_patch_version` - Patch version number of the Redis engine used by the cluster. +* `engine_patch_version` - Patch version number of the engine used by the cluster. * `shards` - Set of shards in this cluster. * `name` - Name of this shard. * `num_nodes` - Number of individual nodes in this shard. diff --git a/website/docs/r/memorydb_parameter_group.html.markdown b/website/docs/r/memorydb_parameter_group.html.markdown index 54bcfd3c0e1..fdb82be1ca5 100644 --- a/website/docs/r/memorydb_parameter_group.html.markdown +++ b/website/docs/r/memorydb_parameter_group.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_parameter_group" description: |- diff --git a/website/docs/r/memorydb_snapshot.html.markdown b/website/docs/r/memorydb_snapshot.html.markdown index f251f483ea3..6783b199d81 100644 --- a/website/docs/r/memorydb_snapshot.html.markdown +++ b/website/docs/r/memorydb_snapshot.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_snapshot" description: |- @@ -39,7 +39,8 @@ This resource exports the following attributes in addition to the arguments abov * `arn` - The ARN of the snapshot. * `cluster_configuration` - The configuration of the cluster from which the snapshot was taken. * `description` - Description for the cluster. - * `engine_version` - Version number of the Redis engine used by the cluster. + * `engine` - The engine that will run on cluster nodes. + * `engine_version` - Version number of the engine used by the cluster. * `maintenance_window` - The weekly time range during which maintenance on the cluster is performed. * `name` - Name of the cluster. * `node_type` - Compute and memory capacity of the nodes in the cluster. diff --git a/website/docs/r/memorydb_subnet_group.html.markdown b/website/docs/r/memorydb_subnet_group.html.markdown index 79e88377a58..10c35572237 100644 --- a/website/docs/r/memorydb_subnet_group.html.markdown +++ b/website/docs/r/memorydb_subnet_group.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_subnet_group" description: |- diff --git a/website/docs/r/memorydb_user.html.markdown b/website/docs/r/memorydb_user.html.markdown index d3af6428b26..5e579fc7ccc 100644 --- a/website/docs/r/memorydb_user.html.markdown +++ b/website/docs/r/memorydb_user.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_user" description: |- diff --git a/website/docs/r/s3_bucket_lifecycle_configuration.html.markdown b/website/docs/r/s3_bucket_lifecycle_configuration.html.markdown index 16c0ad7de9f..f7c434ba7f9 100644 --- a/website/docs/r/s3_bucket_lifecycle_configuration.html.markdown +++ b/website/docs/r/s3_bucket_lifecycle_configuration.html.markdown @@ -18,14 +18,12 @@ An S3 Lifecycle configuration consists of one or more Lifecycle rules. Each rule For more information see the Amazon S3 User Guide on [`Lifecycle Configuration Elements`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/intro-lifecycle-rules.html). -~> **NOTE:** S3 Buckets only support a single lifecycle configuration. Declaring multiple `aws_s3_bucket_lifecycle_configuration` resources to the same S3 Bucket will cause a perpetual difference in configuration. +~> S3 Buckets only support a single lifecycle configuration. Declaring multiple `aws_s3_bucket_lifecycle_configuration` resources to the same S3 Bucket will cause a perpetual difference in configuration. -~> **NOTE:** Lifecycle configurations may take some time to fully propagate to all AWS S3 systems. +~> Lifecycle configurations may take some time to fully propagate to all AWS S3 systems. Running Terraform operations shortly after creating a lifecycle configuration may result in changes that affect configuration idempotence. See the Amazon S3 User Guide on [setting lifecycle configuration on a bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/how-to-set-lifecycle-configuration-intro.html). --> This resource cannot be used with S3 directory buckets. - ## Example Usage ### With neither a filter nor prefix specified @@ -374,12 +372,12 @@ This resource supports the following arguments: ### rule -~> **NOTE:** The `filter` argument, while Optional, is required if the `rule` configuration block does not contain a `prefix` **and** you intend to override the default behavior of setting the rule to filter objects with the empty string prefix (`""`). +~> The `filter` argument, while Optional, is required if the `rule` configuration block does not contain a `prefix` **and** you intend to override the default behavior of setting the rule to filter objects with the empty string prefix (`""`). Since `prefix` is deprecated by Amazon S3 and will be removed in the next major version of the Terraform AWS Provider, we recommend users either specify `filter` or leave both `filter` and `prefix` unspecified. -~> **NOTE:** A rule cannot be updated from having a filter (via either the `rule.filter` parameter or when neither `rule.filter` and `rule.prefix` are specified) to only having a prefix via the `rule.prefix` parameter. +~> A rule cannot be updated from having a filter (via either the `rule.filter` parameter or when neither `rule.filter` and `rule.prefix` are specified) to only having a prefix via the `rule.prefix` parameter. -~> **NOTE** Terraform cannot distinguish a difference between configurations that use `rule.filter {}` and configurations that neither use `rule.filter` nor `rule.prefix`, so a rule cannot be updated from applying to all objects in the bucket via `rule.filter {}` to applying to a subset of objects based on the key prefix `""` and vice versa. +~> Terraform cannot distinguish a difference between configurations that use `rule.filter {}` and configurations that neither use `rule.filter` nor `rule.prefix`, so a rule cannot be updated from applying to all objects in the bucket via `rule.filter {}` to applying to a subset of objects based on the key prefix `""` and vice versa. The `rule` configuration block supports the following arguments: @@ -409,7 +407,7 @@ The `expiration` configuration block supports the following arguments: ### filter -~> **NOTE:** The `filter` configuration block must either be specified as the empty configuration block (`filter {}`) or with exactly one of `prefix`, `tag`, `and`, `object_size_greater_than` or `object_size_less_than` specified. +~> The `filter` configuration block must either be specified as the empty configuration block (`filter {}`) or with exactly one of `prefix`, `tag`, `and`, `object_size_greater_than` or `object_size_less_than` specified. The `filter` configuration block supports the following arguments: @@ -438,7 +436,7 @@ The `noncurrent_version_transition` configuration block supports the following a The `transition` configuration block supports the following arguments: -~> **Note:** Only one of `date` or `days` should be specified. If neither are specified, the `transition` will default to 0 `days`. +~> Only one of `date` or `days` should be specified. If neither are specified, the `transition` will default to 0 `days`. * `date` - (Optional, Conflicts with `days`) Date objects are transitioned to the specified storage class. The date value must be in [RFC3339 full-date format](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6) e.g. `2023-08-22`. * `days` - (Optional, Conflicts with `date`) Number of days after creation when objects are transitioned to the specified storage class. The value must be a positive integer. If both `days` and `date` are not specified, defaults to `0`. Valid values depend on `storage_class`, see [Transition objects using Amazon S3 Lifecycle](https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-transition-general-considerations.html) for more details. @@ -468,7 +466,7 @@ This resource exports the following attributes in addition to the arguments abov ## Import -In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import S3 bucket lifecycle configuration using the `bucket` or using the `bucket` and `expected_bucket_owner` separated by a comma (`,`). For example: +In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import an S3 bucket lifecycle configuration using the `bucket` or the `bucket` and `expected_bucket_owner` separated by a comma (`,`). For example: If the owner (account ID) of the source bucket is the same account used to configure the Terraform AWS Provider, import using the `bucket`: @@ -488,7 +486,7 @@ import { } ``` -**Using `terraform import` to import** S3 bucket lifecycle configuration using the `bucket` or using the `bucket` and `expected_bucket_owner` separated by a comma (`,`). For example: +Using `terraform import`, import an S3 bucket lifecycle configuration using the `bucket` or the `bucket` and `expected_bucket_owner` separated by a comma (`,`). For example: If the owner (account ID) of the source bucket is the same account used to configure the Terraform AWS Provider, import using the `bucket`: