diff --git a/.changelog/28847.txt b/.changelog/28847.txt new file mode 100644 index 000000000000..ca7421227681 --- /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/35359.txt b/.changelog/35359.txt new file mode 100644 index 000000000000..1df954cfba33 --- /dev/null +++ b/.changelog/35359.txt @@ -0,0 +1,3 @@ +```release-note:enhancement +resource/aws_dynamodb_table_replica: Add `deletion_protection_enabled` argument +``` diff --git a/.changelog/37257.txt b/.changelog/37257.txt new file mode 100644 index 000000000000..c93dc45e3274 --- /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 000000000000..34a1c10947fb --- /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 000000000000..6041c94835cd --- /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/40177.txt b/.changelog/40177.txt new file mode 100644 index 000000000000..206bf0fe88ef --- /dev/null +++ b/.changelog/40177.txt @@ -0,0 +1,3 @@ +```release-note:enhancement +resource/aws_ecs_service: Add vpc_lattice_configurations argument +``` diff --git a/.changelog/40211.txt b/.changelog/40211.txt new file mode 100644 index 000000000000..d8410938b30e --- /dev/null +++ b/.changelog/40211.txt @@ -0,0 +1,3 @@ +```release-note:enhancement +data-source/aws_ami: Add warning diagnostic when `most_recent` is true and certain filter criteria are missing +``` diff --git a/.changelog/40224.txt b/.changelog/40224.txt new file mode 100644 index 000000000000..782ad2139e24 --- /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/40225.txt b/.changelog/40225.txt new file mode 100644 index 000000000000..d73833fa0aea --- /dev/null +++ b/.changelog/40225.txt @@ -0,0 +1,7 @@ +```release-note:enhancement +resource/aws_ecs_service: Add `availability_zone_rebalancing` attribute +``` + +```release-note:enhancement +data-source/aws_ecs_service: Add `availability_zone_rebalancing` attribute +``` \ No newline at end of file diff --git a/.changelog/40233.txt b/.changelog/40233.txt new file mode 100644 index 000000000000..3c2a76c2a681 --- /dev/null +++ b/.changelog/40233.txt @@ -0,0 +1,3 @@ +```release-note:new-resource +aws_vpc_block_public_access_options +``` \ No newline at end of file diff --git a/.changelog/40235.txt b/.changelog/40235.txt new file mode 100644 index 000000000000..cba9c0a3ed3a --- /dev/null +++ b/.changelog/40235.txt @@ -0,0 +1,3 @@ +```release-note:new-resource +aws_vpc_block_public_access_exclusion +``` \ No newline at end of file diff --git a/.changelog/40253.txt b/.changelog/40253.txt new file mode 100644 index 000000000000..2e0a205feb8a --- /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 000000000000..e77c525a67fd --- /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 000000000000..a32f43f014fa --- /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 000000000000..05356583127d --- /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 000000000000..97e2b1ae6b5a --- /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/40300.txt b/.changelog/40300.txt new file mode 100644 index 000000000000..0263cd4ed03d --- /dev/null +++ b/.changelog/40300.txt @@ -0,0 +1,7 @@ +```release-note:new-resource +aws_codeconnections_connection +``` + +```release-note:new-resource +aws_codeconnections_host +``` \ No newline at end of file diff --git a/.changelog/40303.txt b/.changelog/40303.txt new file mode 100644 index 000000000000..3490cc62ef50 --- /dev/null +++ b/.changelog/40303.txt @@ -0,0 +1,3 @@ +```release-note:enhancement +resource/aws_lambda_event_source_mapping: Add `provisioned_poller_config` argument +``` \ No newline at end of file diff --git a/.changelog/40304.txt b/.changelog/40304.txt new file mode 100644 index 000000000000..955eb174739e --- /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/.changelog/40305.txt b/.changelog/40305.txt new file mode 100644 index 000000000000..0fd20cc25197 --- /dev/null +++ b/.changelog/40305.txt @@ -0,0 +1,3 @@ +```release-note:bug +resource/aws_bedrock_provisioned_model_throughput: Properly manages `tags_all` when planning. +``` diff --git a/.changelog/40322.txt b/.changelog/40322.txt new file mode 100644 index 000000000000..ed2d3ca3006d --- /dev/null +++ b/.changelog/40322.txt @@ -0,0 +1,3 @@ +```release-note:enhancement +resource/aws_lambda_event_source_mapping: Add `metrics_config` argument +``` diff --git a/.changelog/40337.txt b/.changelog/40337.txt new file mode 100644 index 000000000000..428a70971451 --- /dev/null +++ b/.changelog/40337.txt @@ -0,0 +1,3 @@ +```release-note:enhancement +resource/aws_rds_cluster: Add ability to promote read replica cluster to standalone +``` \ No newline at end of file diff --git a/.changelog/40339.txt b/.changelog/40339.txt new file mode 100644 index 000000000000..76e0d0adfc8b --- /dev/null +++ b/.changelog/40339.txt @@ -0,0 +1,3 @@ +```release-note:enhancement +resource/aws_s3_directory_bucket: Support `LocalZone` as a valid value for `location.type`, enabling support for [Amazon S3 Express One Zone in AWS Dedicated Local Zones](https://docs.aws.amazon.com/AmazonS3/latest/userguide/directory-bucket-data-residency.html) +``` \ No newline at end of file diff --git a/.changelog/40346.txt b/.changelog/40346.txt new file mode 100644 index 000000000000..ac509866a102 --- /dev/null +++ b/.changelog/40346.txt @@ -0,0 +1,3 @@ +```release-note:enhancement +resource/aws_vpc_endpoint_service: Add `supported_regions` argument +``` diff --git a/.changelog/40359.txt b/.changelog/40359.txt new file mode 100644 index 000000000000..5943ea00c124 --- /dev/null +++ b/.changelog/40359.txt @@ -0,0 +1,3 @@ +```release-note:bug +resource/aws_fsx_openzfs_file_system: Increase maximum value of `disk_iops_configuration.iops` from `350000` to `400000` for `deployment_type = "SINGLE_AZ_2"` +``` diff --git a/.changelog/40370.txt b/.changelog/40370.txt new file mode 100644 index 000000000000..643c98d44b6b --- /dev/null +++ b/.changelog/40370.txt @@ -0,0 +1,3 @@ +```release-note:enhancement +resource/aws_eks_cluster: Add `compute_config`, `storage_config`, and `kubernetes_network_config.elastic_load_balancing` arguments for EKS Auto Mode +``` diff --git a/.changelog/40371.txt b/.changelog/40371.txt new file mode 100644 index 000000000000..1bda41510d44 --- /dev/null +++ b/.changelog/40371.txt @@ -0,0 +1,3 @@ +```release-note:enhancement +resource/aws_eks_cluster: Add `remote_network_config` argument for EKS Auto Mode +``` diff --git a/.changelog/40419.txt b/.changelog/40419.txt new file mode 100644 index 000000000000..2a28456d85e1 --- /dev/null +++ b/.changelog/40419.txt @@ -0,0 +1,3 @@ +```release-note:bug +resource/aws_connect_contact_flow: Fix `deserialization failed, failed to decode response body with invalid JSON` errors on Read +``` diff --git a/.changelog/40420.txt b/.changelog/40420.txt new file mode 100644 index 000000000000..aa4caaeb3ade --- /dev/null +++ b/.changelog/40420.txt @@ -0,0 +1,19 @@ +```release-note:new-resource +aws_s3tables_namespace +``` + +```release-note:new-resource +aws_s3tables_table_bucket +``` + +```release-note:new-resource +aws_s3tables_table_bucket_policy +``` + +```release-note:new-resource +aws_s3tables_table +``` + +```release-note:new-resource +aws_s3tables_table_policy +``` diff --git a/.ci/.semgrep-service-name0.yml b/.ci/.semgrep-service-name0.yml index 754ea6c3eb91..1c424d5c199e 100644 --- a/.ci/.semgrep-service-name0.yml +++ b/.ci/.semgrep-service-name0.yml @@ -4315,3 +4315,18 @@ rules: - focus-metavariable: $NAME - pattern-not: func $NAME($T *testing.T) severity: WARNING + - id: connect-in-test-name + languages: + - go + message: Include "Connect" in test name + paths: + include: + - internal/service/connect/*_test.go + patterns: + - pattern: func $NAME( ... ) + - metavariable-pattern: + metavariable: $NAME + patterns: + - pattern-not-regex: "^TestAccConnect" + - pattern-regex: ^TestAcc.* + severity: WARNING diff --git a/.ci/.semgrep-service-name1.yml b/.ci/.semgrep-service-name1.yml index bd6eba723acc..ba39d86cc217 100644 --- a/.ci/.semgrep-service-name1.yml +++ b/.ci/.semgrep-service-name1.yml @@ -1,20 +1,5 @@ # Generated by internal/generate/servicesemgrep/main.go; DO NOT EDIT. rules: - - id: connect-in-test-name - languages: - - go - message: Include "Connect" in test name - paths: - include: - - internal/service/connect/*_test.go - patterns: - - pattern: func $NAME( ... ) - - metavariable-pattern: - metavariable: $NAME - patterns: - - pattern-not-regex: "^TestAccConnect" - - pattern-regex: ^TestAcc.* - severity: WARNING - id: connect-in-const-name languages: - go @@ -4305,3 +4290,35 @@ rules: patterns: - pattern-regex: "(?i)IoTAnalytics" severity: WARNING + - id: iotanalytics-in-var-name + languages: + - go + message: Do not use "IoTAnalytics" in var name inside iotanalytics package + paths: + include: + - internal/service/iotanalytics + patterns: + - pattern: var $NAME = ... + - metavariable-pattern: + metavariable: $NAME + patterns: + - pattern-regex: "(?i)IoTAnalytics" + severity: WARNING + - id: iotevents-in-func-name + languages: + - go + message: Do not use "IoTEvents" in func name inside iotevents package + paths: + include: + - internal/service/iotevents + exclude: + - internal/service/iotevents/list_pages_gen.go + patterns: + - pattern: func $NAME( ... ) + - metavariable-pattern: + metavariable: $NAME + patterns: + - pattern-regex: "(?i)IoTEvents" + - focus-metavariable: $NAME + - pattern-not: func $NAME($T *testing.T) + severity: WARNING diff --git a/.ci/.semgrep-service-name2.yml b/.ci/.semgrep-service-name2.yml index 566413e357f0..86a2dba99660 100644 --- a/.ci/.semgrep-service-name2.yml +++ b/.ci/.semgrep-service-name2.yml @@ -1,37 +1,5 @@ # Generated by internal/generate/servicesemgrep/main.go; DO NOT EDIT. rules: - - id: iotanalytics-in-var-name - languages: - - go - message: Do not use "IoTAnalytics" in var name inside iotanalytics package - paths: - include: - - internal/service/iotanalytics - patterns: - - pattern: var $NAME = ... - - metavariable-pattern: - metavariable: $NAME - patterns: - - pattern-regex: "(?i)IoTAnalytics" - severity: WARNING - - id: iotevents-in-func-name - languages: - - go - message: Do not use "IoTEvents" in func name inside iotevents package - paths: - include: - - internal/service/iotevents - exclude: - - internal/service/iotevents/list_pages_gen.go - patterns: - - pattern: func $NAME( ... ) - - metavariable-pattern: - metavariable: $NAME - patterns: - - pattern-regex: "(?i)IoTEvents" - - focus-metavariable: $NAME - - pattern-not: func $NAME($T *testing.T) - severity: WARNING - id: iotevents-in-test-name languages: - go @@ -4308,3 +4276,50 @@ rules: patterns: - pattern-regex: "(?i)Redshift" severity: WARNING + - id: redshiftdata-in-func-name + languages: + - go + message: Do not use "RedshiftData" in func name inside redshiftdata package + paths: + include: + - internal/service/redshiftdata + exclude: + - internal/service/redshiftdata/list_pages_gen.go + patterns: + - pattern: func $NAME( ... ) + - metavariable-pattern: + metavariable: $NAME + patterns: + - pattern-regex: "(?i)RedshiftData" + - focus-metavariable: $NAME + - pattern-not: func $NAME($T *testing.T) + severity: WARNING + - id: redshiftdata-in-test-name + languages: + - go + message: Include "RedshiftData" in test name + paths: + include: + - internal/service/redshiftdata/*_test.go + patterns: + - pattern: func $NAME( ... ) + - metavariable-pattern: + metavariable: $NAME + patterns: + - pattern-not-regex: "^TestAccRedshiftData" + - pattern-regex: ^TestAcc.* + severity: WARNING + - id: redshiftdata-in-const-name + languages: + - go + message: Do not use "RedshiftData" in const name inside redshiftdata package + paths: + include: + - internal/service/redshiftdata + patterns: + - pattern: const $NAME = ... + - metavariable-pattern: + metavariable: $NAME + patterns: + - pattern-regex: "(?i)RedshiftData" + severity: WARNING diff --git a/.ci/.semgrep-service-name3.yml b/.ci/.semgrep-service-name3.yml index a8b2be25f36b..36bfe8140900 100644 --- a/.ci/.semgrep-service-name3.yml +++ b/.ci/.semgrep-service-name3.yml @@ -1,52 +1,5 @@ # Generated by internal/generate/servicesemgrep/main.go; DO NOT EDIT. rules: - - id: redshiftdata-in-func-name - languages: - - go - message: Do not use "RedshiftData" in func name inside redshiftdata package - paths: - include: - - internal/service/redshiftdata - exclude: - - internal/service/redshiftdata/list_pages_gen.go - patterns: - - pattern: func $NAME( ... ) - - metavariable-pattern: - metavariable: $NAME - patterns: - - pattern-regex: "(?i)RedshiftData" - - focus-metavariable: $NAME - - pattern-not: func $NAME($T *testing.T) - severity: WARNING - - id: redshiftdata-in-test-name - languages: - - go - message: Include "RedshiftData" in test name - paths: - include: - - internal/service/redshiftdata/*_test.go - patterns: - - pattern: func $NAME( ... ) - - metavariable-pattern: - metavariable: $NAME - patterns: - - pattern-not-regex: "^TestAccRedshiftData" - - pattern-regex: ^TestAcc.* - severity: WARNING - - id: redshiftdata-in-const-name - languages: - - go - message: Do not use "RedshiftData" in const name inside redshiftdata package - paths: - include: - - internal/service/redshiftdata - patterns: - - pattern: const $NAME = ... - - metavariable-pattern: - metavariable: $NAME - patterns: - - pattern-regex: "(?i)RedshiftData" - severity: WARNING - id: redshiftdata-in-var-name languages: - go @@ -1236,6 +1189,67 @@ rules: patterns: - pattern-regex: "(?i)S3Outposts" severity: WARNING + - id: s3tables-in-func-name + languages: + - go + message: Do not use "S3Tables" in func name inside s3tables package + paths: + include: + - internal/service/s3tables + exclude: + - internal/service/s3tables/list_pages_gen.go + patterns: + - pattern: func $NAME( ... ) + - metavariable-pattern: + metavariable: $NAME + patterns: + - pattern-regex: "(?i)S3Tables" + - focus-metavariable: $NAME + - pattern-not: func $NAME($T *testing.T) + severity: WARNING + - id: s3tables-in-test-name + languages: + - go + message: Include "S3Tables" in test name + paths: + include: + - internal/service/s3tables/*_test.go + patterns: + - pattern: func $NAME( ... ) + - metavariable-pattern: + metavariable: $NAME + patterns: + - pattern-not-regex: "^TestAccS3Tables" + - pattern-regex: ^TestAcc.* + severity: WARNING + - id: s3tables-in-const-name + languages: + - go + message: Do not use "S3Tables" in const name inside s3tables package + paths: + include: + - internal/service/s3tables + patterns: + - pattern: const $NAME = ... + - metavariable-pattern: + metavariable: $NAME + patterns: + - pattern-regex: "(?i)S3Tables" + severity: WARNING + - id: s3tables-in-var-name + languages: + - go + message: Do not use "S3Tables" in var name inside s3tables package + paths: + include: + - internal/service/s3tables + patterns: + - pattern: var $NAME = ... + - metavariable-pattern: + metavariable: $NAME + patterns: + - pattern-regex: "(?i)S3Tables" + severity: WARNING - id: sagemaker-in-func-name languages: - go diff --git a/.ci/providerlint/go.mod b/.ci/providerlint/go.mod index f448fe3e4447..968fda4c5e69 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 7606dc37bb50..4045f453ef20 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 3c3a182398ea..8bcf61bd2a21 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 @@ -10,7 +10,7 @@ require ( ) require ( - github.com/ProtonMail/go-crypto v1.1.2 // indirect + github.com/ProtonMail/go-crypto v1.1.3 // indirect github.com/agext/levenshtein v1.2.3 // indirect github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect github.com/cloudflare/circl v1.5.0 // indirect @@ -49,7 +49,7 @@ require ( github.com/vmihailenco/msgpack v4.0.4+incompatible // indirect github.com/vmihailenco/msgpack/v5 v5.4.1 // indirect github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect - github.com/zclconf/go-cty v1.15.0 // indirect + github.com/zclconf/go-cty v1.15.1 // indirect golang.org/x/crypto v0.29.0 // indirect golang.org/x/mod v0.22.0 // indirect golang.org/x/net v0.31.0 // indirect @@ -58,7 +58,7 @@ require ( golang.org/x/text v0.20.0 // indirect golang.org/x/tools v0.27.0 // indirect google.golang.org/appengine v1.6.8 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241118233622-e639e219e697 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a // indirect google.golang.org/grpc v1.68.0 // indirect google.golang.org/protobuf v1.35.2 // indirect ) diff --git a/.ci/providerlint/passes/AWSAT001/testdata/go.sum b/.ci/providerlint/passes/AWSAT001/testdata/go.sum index 64d62e01aaee..5f5e5f94d841 100644 --- a/.ci/providerlint/passes/AWSAT001/testdata/go.sum +++ b/.ci/providerlint/passes/AWSAT001/testdata/go.sum @@ -2,8 +2,8 @@ dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= 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/regexache v0.24.0 h1:zUKaixelkswzdqsqPc2sveiV//Mi/msJn0teG8zBDiA= github.com/YakDriver/regexache v0.24.0/go.mod h1:awcd8uBj614F3ScW06JqlfSGqq2/7vdJHy+RiKzVC+g= github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo= @@ -145,8 +145,8 @@ github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -github.com/zclconf/go-cty v1.15.0 h1:tTCRWxsexYUmtt/wVxgDClUe+uQusuI443uL6e+5sXQ= -github.com/zclconf/go-cty v1.15.0/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= +github.com/zclconf/go-cty v1.15.1 h1:RgQYm4j2EvoBRXOPxhUvxPzRrGDo1eCOhHXuGfrj5S0= +github.com/zclconf/go-cty v1.15.1/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940 h1:4r45xpDWB6ZMSMNJFMOjqrGHynW3DIBuR2H9j0ug+Mo= github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940/go.mod h1:CmBdvvj3nqzfzJ6nTCIwDTPZ56aVGvDrmztiO5g3qrM= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= @@ -200,8 +200,8 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241118233622-e639e219e697 h1:LWZqQOEjDyONlF1H6afSWpAL/znlREo2tHfLoe+8LMA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241118233622-e639e219e697/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a h1:hgh8P4EuoxpsuKMXX/To36nOFD7vixReXgn8lPGnt+o= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= google.golang.org/grpc v1.68.0 h1:aHQeeJbo8zAkAa3pRzrVjZlbz6uSfeOXlJNQM0RAbz0= google.golang.org/grpc v1.68.0/go.mod h1:fmSPC5AsjSBCK54MyHRx48kpOti1/jRfOlwEWywNjWA= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= diff --git a/.ci/providerlint/passes/AWSAT002/testdata/go.mod b/.ci/providerlint/passes/AWSAT002/testdata/go.mod index c7bf50521c14..728aa1de299a 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 c7bf50521c14..728aa1de299a 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 f27ef2c65e7d..16c73bafa9f9 100644 --- a/.ci/providerlint/passes/AWSAT004/testdata/go.mod +++ b/.ci/providerlint/passes/AWSAT004/testdata/go.mod @@ -2,12 +2,12 @@ module testdata go 1.23 -toolchain go1.23.2 +toolchain go1.23.3 require github.com/hashicorp/terraform-plugin-sdk/v2 v2.35.0 require ( - github.com/ProtonMail/go-crypto v1.1.2 // indirect + github.com/ProtonMail/go-crypto v1.1.3 // indirect github.com/agext/levenshtein v1.2.3 // indirect github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect github.com/cloudflare/circl v1.5.0 // indirect @@ -45,7 +45,7 @@ require ( github.com/vmihailenco/msgpack v4.0.4+incompatible // indirect github.com/vmihailenco/msgpack/v5 v5.4.1 // indirect github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect - github.com/zclconf/go-cty v1.15.0 // indirect + github.com/zclconf/go-cty v1.15.1 // indirect golang.org/x/crypto v0.29.0 // indirect golang.org/x/mod v0.22.0 // indirect golang.org/x/net v0.31.0 // indirect @@ -54,7 +54,7 @@ require ( golang.org/x/text v0.20.0 // indirect golang.org/x/tools v0.27.0 // indirect google.golang.org/appengine v1.6.8 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241118233622-e639e219e697 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a // indirect google.golang.org/grpc v1.68.0 // indirect google.golang.org/protobuf v1.35.2 // indirect ) diff --git a/.ci/providerlint/passes/AWSAT004/testdata/go.sum b/.ci/providerlint/passes/AWSAT004/testdata/go.sum index 22df2ba7890c..163b5cb42ab6 100644 --- a/.ci/providerlint/passes/AWSAT004/testdata/go.sum +++ b/.ci/providerlint/passes/AWSAT004/testdata/go.sum @@ -2,8 +2,8 @@ dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= 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/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo= github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= github.com/apparentlymart/go-textseg/v12 v12.0.0/go.mod h1:S/4uRK2UtaQttw1GenVJEynmyUenKwP++x/+DdGV/Ec= @@ -141,8 +141,8 @@ github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -github.com/zclconf/go-cty v1.15.0 h1:tTCRWxsexYUmtt/wVxgDClUe+uQusuI443uL6e+5sXQ= -github.com/zclconf/go-cty v1.15.0/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= +github.com/zclconf/go-cty v1.15.1 h1:RgQYm4j2EvoBRXOPxhUvxPzRrGDo1eCOhHXuGfrj5S0= +github.com/zclconf/go-cty v1.15.1/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940 h1:4r45xpDWB6ZMSMNJFMOjqrGHynW3DIBuR2H9j0ug+Mo= github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940/go.mod h1:CmBdvvj3nqzfzJ6nTCIwDTPZ56aVGvDrmztiO5g3qrM= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= @@ -196,8 +196,8 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241118233622-e639e219e697 h1:LWZqQOEjDyONlF1H6afSWpAL/znlREo2tHfLoe+8LMA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241118233622-e639e219e697/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a h1:hgh8P4EuoxpsuKMXX/To36nOFD7vixReXgn8lPGnt+o= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= google.golang.org/grpc v1.68.0 h1:aHQeeJbo8zAkAa3pRzrVjZlbz6uSfeOXlJNQM0RAbz0= google.golang.org/grpc v1.68.0/go.mod h1:fmSPC5AsjSBCK54MyHRx48kpOti1/jRfOlwEWywNjWA= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= diff --git a/.ci/providerlint/passes/AWSAT005/testdata/go.mod b/.ci/providerlint/passes/AWSAT005/testdata/go.mod index c7bf50521c14..728aa1de299a 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 c7bf50521c14..728aa1de299a 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 c7bf50521c14..728aa1de299a 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 e331314fde30..f14d9c3524de 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 @@ -30,7 +30,7 @@ require ( github.com/vmihailenco/msgpack v4.0.4+incompatible // indirect github.com/vmihailenco/msgpack/v5 v5.4.1 // indirect github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect - github.com/zclconf/go-cty v1.15.0 // indirect + github.com/zclconf/go-cty v1.15.1 // indirect golang.org/x/mod v0.22.0 // indirect golang.org/x/sync v0.9.0 // indirect golang.org/x/sys v0.27.0 // indirect diff --git a/.ci/providerlint/passes/AWSV001/testdata/go.sum b/.ci/providerlint/passes/AWSV001/testdata/go.sum index de99f28d5fdf..2d844b6dc9c8 100644 --- a/.ci/providerlint/passes/AWSV001/testdata/go.sum +++ b/.ci/providerlint/passes/AWSV001/testdata/go.sum @@ -75,8 +75,8 @@ github.com/vmihailenco/msgpack/v5 v5.4.1/go.mod h1:GaZTsDaehaPpQVyxrf5mtQlH+pc21 github.com/vmihailenco/tagparser/v2 v2.0.0 h1:y09buUbR+b5aycVFQs/g70pqKVZNBmxwAhO7/IwNM9g= github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -github.com/zclconf/go-cty v1.15.0 h1:tTCRWxsexYUmtt/wVxgDClUe+uQusuI443uL6e+5sXQ= -github.com/zclconf/go-cty v1.15.0/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= +github.com/zclconf/go-cty v1.15.1 h1:RgQYm4j2EvoBRXOPxhUvxPzRrGDo1eCOhHXuGfrj5S0= +github.com/zclconf/go-cty v1.15.1/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940 h1:4r45xpDWB6ZMSMNJFMOjqrGHynW3DIBuR2H9j0ug+Mo= github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940/go.mod h1:CmBdvvj3nqzfzJ6nTCIwDTPZ56aVGvDrmztiO5g3qrM= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= diff --git a/.ci/scripts/update-aws-sdk-go-dependencies.sh b/.ci/scripts/update-aws-sdk-go-dependencies.sh old mode 100644 new mode 100755 diff --git a/.ci/semgrep/aws/go-sdk-v1.yml b/.ci/semgrep/aws/go-sdk-v1.yml index 211ff4e9ba0d..fd96c53d2331 100644 --- a/.ci/semgrep/aws/go-sdk-v1.yml +++ b/.ci/semgrep/aws/go-sdk-v1.yml @@ -14,6 +14,7 @@ rules: - metavariable-regex: metavariable: "$X" regex: '^github.com/aws/aws-sdk-go/.+$' + - focus-metavariable: $X severity: WARNING - id: aws-sdk-go-base-awsv1shim-imports diff --git a/.ci/tools/go.mod b/.ci/tools/go.mod index 5db4f37e882f..fb4e11b705b0 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 @@ -46,7 +46,7 @@ require ( github.com/Masterminds/sprig/v3 v3.3.0 // indirect github.com/Microsoft/go-winio v0.6.2 // indirect github.com/OpenPeeDeeP/depguard/v2 v2.2.0 // indirect - github.com/ProtonMail/go-crypto v1.1.2 // indirect + github.com/ProtonMail/go-crypto v1.1.3 // indirect github.com/agext/levenshtein v1.2.3 // indirect github.com/alecthomas/go-check-sumtype v0.2.0 // indirect github.com/alexkohler/nakedret/v2 v2.0.5 // indirect @@ -57,7 +57,7 @@ require ( github.com/armon/go-radix v1.0.0 // indirect github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect github.com/ashanbrown/forbidigo v1.6.0 // indirect - github.com/ashanbrown/makezero v1.1.1 // indirect + github.com/ashanbrown/makezero v1.2.0 // indirect github.com/aws/aws-sdk-go v1.55.5 // indirect github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect github.com/beorn7/perks v1.0.1 // indirect @@ -71,8 +71,8 @@ require ( github.com/bradleyfalzon/ghinstallation/v2 v2.12.0 // indirect github.com/breml/bidichk v0.3.2 // indirect github.com/breml/errchkjson v0.4.0 // indirect - github.com/butuzov/ireturn v0.3.0 // indirect - github.com/butuzov/mirror v1.2.0 // indirect + github.com/butuzov/ireturn v0.3.1 // indirect + github.com/butuzov/mirror v1.3.0 // indirect github.com/catenacyber/perfsprint v0.7.1 // indirect github.com/ccojocar/zxcvbn-go v1.0.2 // indirect github.com/census-instrumentation/opencensus-proto v0.4.1 // indirect @@ -85,7 +85,7 @@ require ( github.com/cli/shurcooL-graphql v0.0.4 // indirect github.com/cloudflare/circl v1.5.0 // indirect github.com/cncf/xds/go v0.0.0-20240905190251-b4127c9b8d78 // indirect - github.com/curioswitch/go-reassign v0.2.0 // indirect + github.com/curioswitch/go-reassign v0.3.0 // indirect github.com/cyphar/filepath-securejoin v0.3.4 // indirect github.com/daixiang0/gci v0.13.5 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect @@ -117,11 +117,11 @@ require ( github.com/go-toolsmith/strparse v1.1.0 // indirect github.com/go-toolsmith/typep v1.1.0 // indirect github.com/go-viper/mapstructure/v2 v2.2.1 // indirect - github.com/go-xmlfmt/xmlfmt v1.1.2 // indirect + github.com/go-xmlfmt/xmlfmt v1.1.3 // indirect github.com/gobwas/glob v0.2.3 // indirect github.com/gofrs/flock v0.12.1 // indirect github.com/golang-jwt/jwt/v4 v4.5.1 // indirect - github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect + github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a // indirect github.com/golangci/go-printf-func-name v0.1.0 // indirect @@ -151,12 +151,14 @@ require ( github.com/hashicorp/go-cleanhttp v0.5.2 // indirect github.com/hashicorp/go-getter v1.7.6 // indirect github.com/hashicorp/go-hclog v1.6.3 // indirect + github.com/hashicorp/go-immutable-radix/v2 v2.1.0 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/go-plugin v1.6.2 // indirect github.com/hashicorp/go-retryablehttp v0.7.7 // indirect github.com/hashicorp/go-safetemp v1.0.0 // indirect github.com/hashicorp/go-uuid v1.0.3 // indirect github.com/hashicorp/go-version v1.7.0 // indirect + github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/hashicorp/hc-install v0.9.0 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/hashicorp/hcl/v2 v2.23.0 // indirect @@ -172,11 +174,11 @@ require ( github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect github.com/jedib0t/go-pretty v4.3.0+incompatible // indirect - github.com/jedib0t/go-pretty/v6 v6.6.2 // indirect + github.com/jedib0t/go-pretty/v6 v6.6.3 // indirect github.com/jessevdk/go-flags v1.6.1 // indirect github.com/jgautheron/goconst v1.7.1 // indirect github.com/jingyugao/rowserrcheck v1.1.1 // indirect - github.com/jjti/go-spancheck v0.6.2 // indirect + github.com/jjti/go-spancheck v0.6.4 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/joho/godotenv v1.5.1 // indirect github.com/jstemmer/go-junit-report v1.0.0 // indirect @@ -195,15 +197,16 @@ require ( github.com/kunwardeep/paralleltest v1.0.10 // indirect github.com/kyoh86/exportloopref v0.1.11 // indirect github.com/lasiar/canonicalheader v1.1.2 // indirect - github.com/ldez/gomoddirectives v0.2.4 // indirect - github.com/ldez/tagliatelle v0.5.0 // indirect + github.com/ldez/gomoddirectives v0.5.0 // indirect + github.com/ldez/grignotin v0.6.0 // indirect + github.com/ldez/tagliatelle v0.6.0 // indirect github.com/leonklingele/grouper v1.1.2 // indirect github.com/lucasb-eyer/go-colorful v1.2.0 // indirect github.com/macabu/inamedparam v0.1.3 // indirect github.com/magiconair/properties v1.8.7 // indirect github.com/maratori/testableexamples v1.0.0 // indirect github.com/maratori/testpackage v1.1.1 // indirect - github.com/matoous/godox v0.0.0-20240105082147-c5b5e0e7c0c0 // indirect + github.com/matoous/godox v0.0.0-20241202171805-94d1edd68ebb // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-runewidth v0.0.16 // indirect @@ -253,7 +256,7 @@ require ( github.com/sagikazarmark/locafero v0.6.0 // indirect github.com/sagikazarmark/slog-shim v0.1.0 // indirect github.com/samber/lo v1.47.0 // indirect - github.com/sanposhiho/wastedassign/v2 v2.0.7 // indirect + github.com/sanposhiho/wastedassign/v2 v2.1.0 // indirect github.com/santhosh-tekuri/jsonschema/v5 v5.3.1 // indirect github.com/sashamelentyev/interfacebloat v1.1.0 // indirect github.com/sashamelentyev/usestdlibvars v1.27.0 // indirect @@ -276,11 +279,11 @@ require ( github.com/spf13/pflag v1.0.5 // indirect github.com/spf13/viper v1.19.0 // indirect github.com/ssgreg/nlreturn/v2 v2.2.1 // indirect - github.com/stbenjam/no-sprintf-host-port v0.1.1 // indirect + github.com/stbenjam/no-sprintf-host-port v0.2.0 // indirect github.com/stretchr/objx v0.5.2 // indirect - github.com/stretchr/testify v1.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/tdakkota/asciicheck v0.3.0 // indirect github.com/terraform-linters/tflint-plugin-sdk v0.21.0 // indirect github.com/terraform-linters/tflint-ruleset-terraform v0.10.0 // indirect github.com/tetafro/godot v1.4.18 // indirect @@ -294,7 +297,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.3.0 // 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 @@ -305,7 +308,7 @@ require ( github.com/ykadowak/zerologlint v0.1.5 // indirect github.com/yuin/goldmark v1.7.8 // indirect github.com/yuin/goldmark-meta v1.1.0 // indirect - github.com/zclconf/go-cty v1.15.0 // indirect + github.com/zclconf/go-cty v1.15.1 // indirect github.com/zclconf/go-cty-yaml v1.1.0 // indirect gitlab.com/bosi/decorder v0.4.2 // indirect go-simpler.org/musttag v0.13.0 // indirect @@ -335,10 +338,10 @@ 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/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 + google.golang.org/api v0.209.0 // indirect + google.golang.org/genproto v0.0.0-20241202173237-19429a94021a // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20241202173237-19429a94021a // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a // indirect google.golang.org/grpc v1.68.0 // indirect google.golang.org/grpc/stats/opentelemetry v0.0.0-20241028142157-ada6787961b3 // indirect google.golang.org/protobuf v1.35.2 // indirect diff --git a/.ci/tools/go.sum b/.ci/tools/go.sum index 3e9289816ccf..5be457a822dc 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= @@ -125,8 +125,8 @@ cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaML cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08= cloud.google.com/go/logging v1.12.0 h1:ex1igYcGFd4S/RZWOCU51StlIEuey5bjqwH9ZYjHibk= cloud.google.com/go/logging v1.12.0/go.mod h1:wwYBt5HlYP1InnrtYI0wtwttpVU1rifnMT7RejksUAM= -cloud.google.com/go/longrunning v0.6.2 h1:xjDfh1pQcWPEvnfjZmwjKQEcHnpz6lHjfy7Fo0MK+hc= -cloud.google.com/go/longrunning v0.6.2/go.mod h1:k/vIs83RN4bE3YCswdXC5PFfWVILjm3hpEUlSko4PiI= +cloud.google.com/go/longrunning v0.6.3 h1:A2q2vuyXysRcwzqDpMMLSI6mb6o39miS52UEG/Rd2ng= +cloud.google.com/go/longrunning v0.6.3/go.mod h1:k/vIs83RN4bE3YCswdXC5PFfWVILjm3hpEUlSko4PiI= cloud.google.com/go/mediatranslation v0.5.0/go.mod h1:jGPUhGTybqsPQn91pNXw0xVHfuJ3leR1wj37oU3y1f4= cloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w= cloud.google.com/go/memcache v1.4.0/go.mod h1:rTOfiGZtJX1AaFUrOgsMHX5kAzaTQ8azHiuDoTPzNsE= @@ -251,8 +251,8 @@ github.com/Netflix/go-expect v0.0.0-20220104043353-73e0943537d2/go.mod h1:HBCaDe github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/OpenPeeDeeP/depguard/v2 v2.2.0 h1:vDfG60vDtIuf0MEOhmLlLLSzqaRM8EMcgJPdp74zmpA= github.com/OpenPeeDeeP/depguard/v2 v2.2.0/go.mod h1:CIzddKRvLBC4Au5aYP/i3nyaWQ+ClszLIuVocRiCYFQ= -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/tfproviderdocs v0.16.6 h1:EhQadmELeYVkzWKjZEUIjKnIuSpsKZltiBqjfztIW7Q= github.com/YakDriver/tfproviderdocs v0.16.6/go.mod h1:ekcDgisoo/IsupI4M5rueUj9mZBNbuh87rcccfKKf+8= github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo= @@ -295,8 +295,8 @@ github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3d github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= github.com/ashanbrown/forbidigo v1.6.0 h1:D3aewfM37Yb3pxHujIPSpTf6oQk9sc9WZi8gerOIVIY= github.com/ashanbrown/forbidigo v1.6.0/go.mod h1:Y8j9jy9ZYAEHXdu723cUlraTqbzjKF1MUyfOKL+AjcU= -github.com/ashanbrown/makezero v1.1.1 h1:iCQ87C0V0vSyO+M9E/FZYbu65auqH0lnsOkf5FcB28s= -github.com/ashanbrown/makezero v1.1.1/go.mod h1:i1bJLCRSCHOcOa9Y6MyF2FTfMZMFdHvxKHxgO5Z1axI= +github.com/ashanbrown/makezero v1.2.0 h1:/2Lp1bypdmK9wDIq7uWBlDF1iMUpIIS4A+pF6C9IEUU= +github.com/ashanbrown/makezero v1.2.0/go.mod h1:dxlPhHbDMC6N6xICzFBSK+4njQDdK8euNO0qjQMtGY4= github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= github.com/aws/aws-sdk-go v1.55.5 h1:KKUZBfBoyqy5d3swXyiC7Q76ic40rYcbqH7qjh59kzU= github.com/aws/aws-sdk-go v1.55.5/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU= @@ -341,10 +341,10 @@ github.com/breml/errchkjson v0.4.0 h1:gftf6uWZMtIa/Is3XJgibewBm2ksAQSY/kABDNFTAd github.com/breml/errchkjson v0.4.0/go.mod h1:AuBOSTHyLSaaAFlWsRSuRBIroCh3eh7ZHh5YeelDIk8= github.com/bufbuild/protocompile v0.4.0 h1:LbFKd2XowZvQ/kajzguUp2DC9UEIQhIq77fZZlaQsNA= github.com/bufbuild/protocompile v0.4.0/go.mod h1:3v93+mbWn/v3xzN+31nwkJfrEpAUwp+BagBSZWx+TP8= -github.com/butuzov/ireturn v0.3.0 h1:hTjMqWw3y5JC3kpnC5vXmFJAWI/m31jaCYQqzkS6PL0= -github.com/butuzov/ireturn v0.3.0/go.mod h1:A09nIiwiqzN/IoVo9ogpa0Hzi9fex1kd9PSD6edP5ZA= -github.com/butuzov/mirror v1.2.0 h1:9YVK1qIjNspaqWutSv8gsge2e/Xpq1eqEkslEUHy5cs= -github.com/butuzov/mirror v1.2.0/go.mod h1:DqZZDtzm42wIAIyHXeN8W/qb1EPlb9Qn/if9icBOpdQ= +github.com/butuzov/ireturn v0.3.1 h1:mFgbEI6m+9W8oP/oDdfA34dLisRFCj2G6o/yiI1yZrY= +github.com/butuzov/ireturn v0.3.1/go.mod h1:ZfRp+E7eJLC0NQmk1Nrm1LOrn/gQlOykv+cVPdiXH5M= +github.com/butuzov/mirror v1.3.0 h1:HdWCXzmwlQHdVhwvsfBb2Au0r3HyINry3bDWLYXiKoc= +github.com/butuzov/mirror v1.3.0/go.mod h1:AEij0Z8YMALaq4yQj9CPPVYOyJQyiexpQEQgihajRfI= github.com/catenacyber/perfsprint v0.7.1 h1:PGW5G/Kxn+YrN04cRAZKC+ZuvlVwolYMrIyyTJ/rMmc= github.com/catenacyber/perfsprint v0.7.1/go.mod h1:/wclWYompEyjUD2FuIIDVKNkqz7IgBIWXIH3V0Zol50= github.com/ccojocar/zxcvbn-go v1.0.2 h1:na/czXU8RrhXO4EZme6eQJLR4PzcGsahsBOAwU6I3Vg= @@ -393,8 +393,8 @@ github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46t github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/creack/pty v1.1.17 h1:QeVUsEDNrLBW4tMgZHvxy18sKtr6VI492kBhUfhDJNI= github.com/creack/pty v1.1.17/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= -github.com/curioswitch/go-reassign v0.2.0 h1:G9UZyOcpk/d7Gd6mqYgd8XYWFMw/znxwGDUstnC9DIo= -github.com/curioswitch/go-reassign v0.2.0/go.mod h1:x6OpXuWvgfQaMGks2BZybTngWjT84hqJfKoO8Tt/Roc= +github.com/curioswitch/go-reassign v0.3.0 h1:dh3kpQHuADL3cobV/sSGETA8DOv457dwl+fbBAhrQPs= +github.com/curioswitch/go-reassign v0.3.0/go.mod h1:nApPCCTtqLJN/s8HfItCcKV0jIPwluBOvZP+dsJGA88= github.com/cyphar/filepath-securejoin v0.3.4 h1:VBWugsJh2ZxJmLFSM06/0qzQyiQX2Qs0ViKrUAcqdZ8= github.com/cyphar/filepath-securejoin v0.3.4/go.mod h1:8s/MCNJREmFK0H02MF6Ihv1nakJe4L/w3WZLHNkvlYM= github.com/daixiang0/gci v0.13.5 h1:kThgmH1yBmZSBCh1EJVxQ7JsHpm5Oms0AMed/0LaH4c= @@ -515,8 +515,8 @@ github.com/go-toolsmith/typep v1.1.0 h1:fIRYDyF+JywLfqzyhdiHzRop/GQDxxNhLGQ6gFUN github.com/go-toolsmith/typep v1.1.0/go.mod h1:fVIw+7zjdsMxDA3ITWnH1yOiw1rnTQKCsF/sk2H/qig= github.com/go-viper/mapstructure/v2 v2.2.1 h1:ZAaOCxANMuZx5RCeg0mBdEZk7DZasvvZIxtHqx8aGss= github.com/go-viper/mapstructure/v2 v2.2.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= -github.com/go-xmlfmt/xmlfmt v1.1.2 h1:Nea7b4icn8s57fTx1M5AI4qQT5HEM3rVUO8MuE6g80U= -github.com/go-xmlfmt/xmlfmt v1.1.2/go.mod h1:aUCEOzzezBEjDBbFBoSiya/gduyIiWYRP6CnSFIV8AM= +github.com/go-xmlfmt/xmlfmt v1.1.3 h1:t8Ey3Uy7jDSEisW2K3somuMKIpzktkWptA0iFCnRUWY= +github.com/go-xmlfmt/xmlfmt v1.1.3/go.mod h1:aUCEOzzezBEjDBbFBoSiya/gduyIiWYRP6CnSFIV8AM= github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= @@ -530,8 +530,9 @@ github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfU github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 h1:f+oWsMOmNPc8JmEHVZIycC7hBoQxHH9pNKQORJNozsQ= +github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8/go.mod h1:wcDNUvekVysuuOpQKo3191zZyTpiI6se1N1ULghS0sw= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= @@ -568,8 +569,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= @@ -702,6 +703,8 @@ github.com/hashicorp/go-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39 github.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k= github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-immutable-radix/v2 v2.1.0 h1:CUW5RYIcysz+D3B+l1mDeXrQ7fUvGGCwJfdASSzbrfo= +github.com/hashicorp/go-immutable-radix/v2 v2.1.0/go.mod h1:hgdqLXA4f6NIjRVisM1TJ9aOJVNRqKZj+xDGF6m7PBw= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= @@ -731,6 +734,8 @@ github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKe github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= +github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= github.com/hashicorp/hc-install v0.9.0 h1:2dIk8LcvANwtv3QZLckxcjyF5w8KVtiMxu6G6eLhghE= github.com/hashicorp/hc-install v0.9.0/go.mod h1:+6vOP+mf3tuGgMApVYtmsnDoKWMDcFXeTxCACYZ8SFg= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= @@ -778,8 +783,8 @@ github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOl github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= github.com/jedib0t/go-pretty v4.3.0+incompatible h1:CGs8AVhEKg/n9YbUenWmNStRW2PHJzaeDodcfvRAbIo= github.com/jedib0t/go-pretty v4.3.0+incompatible/go.mod h1:XemHduiw8R651AF9Pt4FwCTKeG3oo7hrHJAoznj9nag= -github.com/jedib0t/go-pretty/v6 v6.6.2 h1:27bLj3nRODzaiA7tPIxy9UVWHoPspFfME9XxgwiiNsM= -github.com/jedib0t/go-pretty/v6 v6.6.2/go.mod h1:zbn98qrYlh95FIhwwsbIip0LYpwSG8SUOScs+v9/t0E= +github.com/jedib0t/go-pretty/v6 v6.6.3 h1:nGqgS0tgIO1Hto47HSaaK4ac/I/Bu7usmdD3qvs0WvM= +github.com/jedib0t/go-pretty/v6 v6.6.3/go.mod h1:zbn98qrYlh95FIhwwsbIip0LYpwSG8SUOScs+v9/t0E= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jessevdk/go-flags v1.6.1 h1:Cvu5U8UGrLay1rZfv/zP7iLpSHGUZ/Ou68T0iX1bBK4= github.com/jessevdk/go-flags v1.6.1/go.mod h1:Mk8T1hIAWpOiJiHa9rJASDK2UGWji0EuPGBnNLMooyc= @@ -789,8 +794,8 @@ github.com/jhump/protoreflect v1.15.1 h1:HUMERORf3I3ZdX05WaQ6MIpd/NJ434hTp5YiKgf github.com/jhump/protoreflect v1.15.1/go.mod h1:jD/2GMKKE6OqX8qTjhADU1e6DShO+gavG9e0Q693nKo= github.com/jingyugao/rowserrcheck v1.1.1 h1:zibz55j/MJtLsjP1OF4bSdgXxwL1b+Vn7Tjzq7gFzUs= github.com/jingyugao/rowserrcheck v1.1.1/go.mod h1:4yvlZSDb3IyDTUZJUmpZfm2Hwok+Dtp+nu2qOq+er9c= -github.com/jjti/go-spancheck v0.6.2 h1:iYtoxqPMzHUPp7St+5yA8+cONdyXD3ug6KK15n7Pklk= -github.com/jjti/go-spancheck v0.6.2/go.mod h1:+X7lvIrR5ZdUTkxFYqzJ0abr8Sb5LOo80uOhWNqIrYA= +github.com/jjti/go-spancheck v0.6.4 h1:Tl7gQpYf4/TMU7AT84MN83/6PutY21Nb9fuQjFTpRRc= +github.com/jjti/go-spancheck v0.6.4/go.mod h1:yAEYdKJ2lRkDA8g7X+oKUHXOWVAXSBJRv04OhF+QUjk= github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= @@ -856,10 +861,12 @@ github.com/kyoh86/exportloopref v0.1.11 h1:1Z0bcmTypkL3Q4k+IDHMWTcnCliEZcaPiIe0/ github.com/kyoh86/exportloopref v0.1.11/go.mod h1:qkV4UF1zGl6EkF1ox8L5t9SwyeBAZ3qLMd6up458uqA= github.com/lasiar/canonicalheader v1.1.2 h1:vZ5uqwvDbyJCnMhmFYimgMZnJMjwljN5VGY0VKbMXb4= github.com/lasiar/canonicalheader v1.1.2/go.mod h1:qJCeLFS0G/QlLQ506T+Fk/fWMa2VmBUiEI2cuMK4djI= -github.com/ldez/gomoddirectives v0.2.4 h1:j3YjBIjEBbqZ0NKtBNzr8rtMHTOrLPeiwTkfUJZ3alg= -github.com/ldez/gomoddirectives v0.2.4/go.mod h1:oWu9i62VcQDYp9EQ0ONTfqLNh+mDLWWDO+SO0qSQw5g= -github.com/ldez/tagliatelle v0.5.0 h1:epgfuYt9v0CG3fms0pEgIMNPuFf/LpPIfjk4kyqSioo= -github.com/ldez/tagliatelle v0.5.0/go.mod h1:rj1HmWiL1MiKQuOONhd09iySTEkUuE/8+5jtPYz9xa4= +github.com/ldez/gomoddirectives v0.5.0 h1:x16F2o7rXblmwVP2AW/OwYP3VUid6wqWlyERwNP5FqA= +github.com/ldez/gomoddirectives v0.5.0/go.mod h1:TuwOGYoPAoENDWQpe8DMqEm5nIfjrxZXmxX/CExWyZ4= +github.com/ldez/grignotin v0.6.0 h1:i++3002hxD5TpVto0iLjLrfz1V+yEJ+BBk4glb3aqC8= +github.com/ldez/grignotin v0.6.0/go.mod h1:uaVTr0SoZ1KBii33c47O1M8Jp3OP3YDwhZCmzT9GHEk= +github.com/ldez/tagliatelle v0.6.0 h1:1Muumft/shmQ0x96vA6a/OUgTjamRt8jUlZPLm1ruwA= +github.com/ldez/tagliatelle v0.6.0/go.mod h1:WeZ7TgEqq7fw/0Zj8BuQhh4+4KX1/+g0O11eygvClRA= github.com/leonklingele/grouper v1.1.2 h1:o1ARBDLOmmasUaNDesWqWCIFH3u7hoFlM84YrjT3mIY= github.com/leonklingele/grouper v1.1.2/go.mod h1:6D0M/HVkhs2yRKRFZUoGjeDy7EZTfFBE9gl4kjmIGkA= github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY= @@ -872,8 +879,8 @@ github.com/maratori/testableexamples v1.0.0 h1:dU5alXRrD8WKSjOUnmJZuzdxWOEQ57+7s github.com/maratori/testableexamples v1.0.0/go.mod h1:4rhjL1n20TUTT4vdh3RDqSizKLyXp7K2u6HgraZCGzE= github.com/maratori/testpackage v1.1.1 h1:S58XVV5AD7HADMmD0fNnziNHqKvSdDuEKdPD1rNTU04= github.com/maratori/testpackage v1.1.1/go.mod h1:s4gRK/ym6AMrqpOa/kEbQTV4Q4jb7WeLZzVhVVVOQMc= -github.com/matoous/godox v0.0.0-20240105082147-c5b5e0e7c0c0 h1:Ny7cm4KSWceJLYyI1sm+aFIVDWSGXLcOJ0O0UaS5wdU= -github.com/matoous/godox v0.0.0-20240105082147-c5b5e0e7c0c0/go.mod h1:jgE/3fUXiTurkdHOLT5WEkThTSuE7yxHv5iWPa80afs= +github.com/matoous/godox v0.0.0-20241202171805-94d1edd68ebb h1:16vJua1jlCfNLTCcMREK9/rX6SYkD22pD2UnUBTi0jU= +github.com/matoous/godox v0.0.0-20241202171805-94d1edd68ebb/go.mod h1:jgE/3fUXiTurkdHOLT5WEkThTSuE7yxHv5iWPa80afs= github.com/matryer/is v1.4.0 h1:sosSmIWwkYITGrxZ25ULNDeKiMNzFSr4V/eqBQP0PeE= github.com/matryer/is v1.4.0/go.mod h1:8I/i5uYgLzgsgEloJE1U6xx5HkBQpAZvepWuujKwMRU= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= @@ -1067,8 +1074,8 @@ github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6g github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= github.com/samber/lo v1.47.0 h1:z7RynLwP5nbyRscyvcD043DWYoOcYRv3mV8lBeqOCLc= github.com/samber/lo v1.47.0/go.mod h1:RmDH9Ct32Qy3gduHQuKJ3gW1fMHAnE/fAzQuf6He5cU= -github.com/sanposhiho/wastedassign/v2 v2.0.7 h1:J+6nrY4VW+gC9xFzUc+XjPD3g3wF3je/NsJFwFK7Uxc= -github.com/sanposhiho/wastedassign/v2 v2.0.7/go.mod h1:KyZ0MWTwxxBmfwn33zh3k1dmsbF2ud9pAAGfoLfjhtI= +github.com/sanposhiho/wastedassign/v2 v2.1.0 h1:crurBF7fJKIORrV85u9UUpePDYGWnwvv3+A96WvwXT0= +github.com/sanposhiho/wastedassign/v2 v2.1.0/go.mod h1:+oSmSC+9bQ+VUAxA66nBb0Z7N8CK7mscKTDYC6aIek4= github.com/santhosh-tekuri/jsonschema/v5 v5.3.1 h1:lZUw3E0/J3roVtGQ+SCrUrg3ON6NgVqpn3+iol9aGu4= github.com/santhosh-tekuri/jsonschema/v5 v5.3.1/go.mod h1:uToXkOrWAZ6/Oc07xWQrPOhJotwFIyu2bBVN41fcDUY= github.com/sashamelentyev/interfacebloat v1.1.0 h1:xdRdJp0irL086OyW1H/RTZTr1h/tMEOsumirXcOJqAw= @@ -1124,8 +1131,8 @@ github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI= github.com/spf13/viper v1.19.0/go.mod h1:GQUN9bilAbhU/jgc1bKs99f/suXKeUMct8Adx5+Ntkg= github.com/ssgreg/nlreturn/v2 v2.2.1 h1:X4XDI7jstt3ySqGU86YGAURbxw3oTDPK9sPEi6YEwQ0= github.com/ssgreg/nlreturn/v2 v2.2.1/go.mod h1:E/iiPB78hV7Szg2YfRgyIrk1AD6JVMTRkkxBiELzh2I= -github.com/stbenjam/no-sprintf-host-port v0.1.1 h1:tYugd/yrm1O0dV+ThCbaKZh195Dfm07ysF0U6JQXczc= -github.com/stbenjam/no-sprintf-host-port v0.1.1/go.mod h1:TLhvtIvONRzdmkFiio4O8LHsN9N74I+PhRquPsxpL0I= +github.com/stbenjam/no-sprintf-host-port v0.2.0 h1:i8pxvGrt1+4G0czLr/WnmyH7zbZ8Bg8etvARQ1rpyl4= +github.com/stbenjam/no-sprintf-host-port v0.2.0/go.mod h1:eL0bQ9PasS0hsyTyfTjjG+E80QIyPnBVQbYZyv20Jfk= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= @@ -1143,12 +1150,12 @@ 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= -github.com/tdakkota/asciicheck v0.2.0/go.mod h1:Qb7Y9EgjCLJGup51gDHFzbI08/gbGhL/UVhYIPWG2rg= +github.com/tdakkota/asciicheck v0.3.0 h1:LqDGgZdholxZMaJgpM6b0U9CFIjDCbFdUF00bDnBKOQ= +github.com/tdakkota/asciicheck v0.3.0/go.mod h1:KoJKXuX/Z/lt6XzLo8WMBfQGzak0SrAKZlvRr4tg8Ac= github.com/tenntenn/modver v1.0.1 h1:2klLppGhDgzJrScMpkj9Ujy3rXPUspSjAcev9tSEBgA= github.com/tenntenn/modver v1.0.1/go.mod h1:bePIyQPb7UeioSRkw3Q0XeMhYZSMx9B8ePqg6SAMGH0= github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3 h1:f+jULpRQGxTSkNYKJ51yaw6ChIqO+Je8UqsTKN/cDag= @@ -1184,8 +1191,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.3.0 h1:zwPch0fs9tdh9BmL5kcgSpvnObV+yHjO4JjVBl8IA10= +github.com/uudashr/iface v1.3.0/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= @@ -1223,8 +1230,8 @@ github.com/yuin/goldmark v1.7.8/go.mod h1:uzxRWxtg69N339t3louHJ7+O03ezfj6PlliRla github.com/yuin/goldmark-meta v1.1.0 h1:pWw+JLHGZe8Rk0EGsMVssiNb/AaPMHfSRszZeUeiOUc= github.com/yuin/goldmark-meta v1.1.0/go.mod h1:U4spWENafuA7Zyg+Lj5RqK/MF+ovMYtBvXi1lBb2VP0= github.com/zclconf/go-cty v1.10.0/go.mod h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uUAzyuvAk= -github.com/zclconf/go-cty v1.15.0 h1:tTCRWxsexYUmtt/wVxgDClUe+uQusuI443uL6e+5sXQ= -github.com/zclconf/go-cty v1.15.0/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= +github.com/zclconf/go-cty v1.15.1 h1:RgQYm4j2EvoBRXOPxhUvxPzRrGDo1eCOhHXuGfrj5S0= +github.com/zclconf/go-cty v1.15.1/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940 h1:4r45xpDWB6ZMSMNJFMOjqrGHynW3DIBuR2H9j0ug+Mo= github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940/go.mod h1:CmBdvvj3nqzfzJ6nTCIwDTPZ56aVGvDrmztiO5g3qrM= github.com/zclconf/go-cty-yaml v1.1.0 h1:nP+jp0qPHv2IhUVqmQSzjvqAWcObN0KBkUl2rWBdig0= @@ -1339,11 +1346,11 @@ golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.22.0 h1:D4nJWe9zXqHOmWqj4VMOJhvzj7bEZg4wEYa759z1pH4= @@ -1404,6 +1411,7 @@ golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/net v0.16.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= @@ -1561,6 +1569,7 @@ golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= @@ -1579,6 +1588,7 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= @@ -1650,12 +1660,12 @@ golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.3.0/go.mod h1:/rWhSS2+zyEVwoJf8YAX6L2f0ntZ7Kn/mGgAWcipA5k= golang.org/x/tools v0.5.0/go.mod h1:N+Kgy78s5I24c24dU8OfWNEotWjutIs8SnJvn5IDq+k= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= golang.org/x/tools v0.27.0 h1:qEKojBykQkQ4EynWy4S8Weg69NumxKdn40Fce3uc/8o= @@ -1716,8 +1726,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= @@ -1827,12 +1837,12 @@ google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqw google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= -google.golang.org/genproto v0.0.0-20241118233622-e639e219e697 h1:ToEetK57OidYuqD4Q5w+vfEnPvPpuTwedCNVohYJfNk= -google.golang.org/genproto v0.0.0-20241118233622-e639e219e697/go.mod h1:JJrvXBWRZaFMxBufik1a4RpFw4HhgVtBBWQeQgUj2cc= -google.golang.org/genproto/googleapis/api v0.0.0-20241118233622-e639e219e697 h1:pgr/4QbFyktUv9CtQ/Fq4gzEE6/Xs7iCXbktaGzLHbQ= -google.golang.org/genproto/googleapis/api v0.0.0-20241118233622-e639e219e697/go.mod h1:+D9ySVjN8nY8YCVjc5O7PZDIdZporIDY3KaGfJunh88= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241118233622-e639e219e697 h1:LWZqQOEjDyONlF1H6afSWpAL/znlREo2tHfLoe+8LMA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241118233622-e639e219e697/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= +google.golang.org/genproto v0.0.0-20241202173237-19429a94021a h1:4voejwOVTsjw6IMfnGt8IzTQBIw45hP8S0e77UMounA= +google.golang.org/genproto v0.0.0-20241202173237-19429a94021a/go.mod h1:dW27OyXi0Ph+N43jeCWMFC86aTT5VgdeQtOSf0Hehdw= +google.golang.org/genproto/googleapis/api v0.0.0-20241202173237-19429a94021a h1:OAiGFfOiA0v9MRYsSidp3ubZaBnteRUyn3xB2ZQ5G/E= +google.golang.org/genproto/googleapis/api v0.0.0-20241202173237-19429a94021a/go.mod h1:jehYqy3+AhJU9ve55aNOaSml7wUXjF9x6z2LcCfpAhY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a h1:hgh8P4EuoxpsuKMXX/To36nOFD7vixReXgn8lPGnt+o= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 44574223b4d4..a3e92a1002a9 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -47,7 +47,6 @@ updates: - "/.ci/providerlint" - "/.ci/tools" - "/skaff" - - "/tools/awssdkpatch" - "/tools/tfsdk2fw" schedule: interval: "daily" diff --git a/.github/labeler-issue-triage.yml b/.github/labeler-issue-triage.yml index fac4523bf0b7..96b42a88d4d2 100644 --- a/.github/labeler-issue-triage.yml +++ b/.github/labeler-issue-triage.yml @@ -599,6 +599,8 @@ service/s3control: - '((\*|-)\s*`?|(data|resource)\s+"?)aws_(s3_account_|s3control_|s3_access_)' service/s3outposts: - '((\*|-)\s*`?|(data|resource)\s+"?)aws_s3outposts_' +service/s3tables: + - '((\*|-)\s*`?|(data|resource)\s+"?)aws_s3tables_' service/sagemaker: - '((\*|-)\s*`?|(data|resource)\s+"?)aws_sagemaker_' service/sagemakera2iruntime: diff --git a/.github/labeler-pr-triage.yml b/.github/labeler-pr-triage.yml index 006d30413bfd..28d5a01a83d8 100644 --- a/.github/labeler-pr-triage.yml +++ b/.github/labeler-pr-triage.yml @@ -1890,6 +1890,12 @@ service/s3outposts: - any-glob-to-any-file: - 'internal/service/s3outposts/**/*' - 'website/**/s3outposts_*' +service/s3tables: + - any: + - changed-files: + - any-glob-to-any-file: + - 'internal/service/s3tables/**/*' + - 'website/**/s3tables_*' service/sagemaker: - any: - changed-files: @@ -2241,6 +2247,7 @@ service/vpc: - 'website/**/vpc_security_group_*' - 'website/**/vpc\.*' - 'website/**/vpcs\.*' + - 'website/**/vpc_block_public_access_*' service/vpclattice: - any: - changed-files: diff --git a/.github/workflows/comments-feed.yml b/.github/workflows/comments-feed.yml index 30d19919ea03..67a0678e83de 100644 --- a/.github/workflows/comments-feed.yml +++ b/.github/workflows/comments-feed.yml @@ -35,7 +35,7 @@ jobs: ISSUE_URL: ${{ github.event.issue.html_url }} ISSUE_TITLE: ${{ github.event.issue.title }} with: - webhook: ${{ secrets.SLACK_WEBHOOK_URL }} + webhook: ${{ secrets.FEED_SLACK_WEBHOOK_URL }} webhook-type: incoming-webhook payload: | { diff --git a/.github/workflows/label-notifications.yml b/.github/workflows/label-notifications.yml index 76f821eddb3c..12d64ca02aba 100644 --- a/.github/workflows/label-notifications.yml +++ b/.github/workflows/label-notifications.yml @@ -24,13 +24,12 @@ jobs: uses: slackapi/slack-github-action@485a9d42d3a73031f12ec201c457e2162c45d02d # v2.0.0 env: ISSUE_TITLE: ${{ toJSON(github.event.issue.title || github.event.pull_request.title) }} - SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }} with: - channel-id: ${{ secrets.SLACK_CHANNEL }} - webhook: ${{ secrets.SLACK_WEBHOOK_URL }} - webhook-type: incoming-webhook + method: chat.postMessage + token: ${{ secrets.SLACK_BOT_TOKEN }} payload: | { + "channel" : "${{ secrets.SLACK_CHANNEL }}", "blocks": [ { "type": "section", diff --git a/.github/workflows/post_publish.yml b/.github/workflows/post_publish.yml index 93d8886952af..08125f5f198b 100644 --- a/.github/workflows/post_publish.yml +++ b/.github/workflows/post_publish.yml @@ -65,11 +65,11 @@ jobs: for i in 1 2 do LATEST_VERSION=$(curl -s "https://registry.terraform.io/v2/providers/323/provider-versions/latest" | jq -r '.data.attributes.version') - if [[ "${{ needs.on-success-or-workflow-dispatch.outputs.release-tag }}" != ${LATEST_VERSION} ]]; then + if [[ "${{ needs.on-success-or-workflow-dispatch.outputs.release-tag }}" != "v${LATEST_VERSION}" ]]; then sleep 1h else echo "Registry and Github Version matches" - echo "current=$LATEST_VERSION >> "$GITHUB_OUTPUT" + echo "current=$LATEST_VERSION" >> "$GITHUB_OUTPUT" fi done @@ -107,14 +107,12 @@ jobs: - name: Send Slack Notification Upon Failure if: ${{ failure() }} uses: slackapi/slack-github-action@485a9d42d3a73031f12ec201c457e2162c45d02d # v2.0.0 - env: - SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }} with: - channel-id: ${{ secrets.SLACK_CHANNEL }} - webhook: ${{ secrets.SLACK_WEBHOOK_URL }} - webhook-type: incoming-webhook + method: chat.postMessage + token: ${{ secrets.SLACK_BOT_TOKEN }} payload: | { + "channel" : "${{ secrets.SLACK_CHANNEL }}", "blocks": [ { "type": "section", diff --git a/.github/workflows/pull_request_feed.yml b/.github/workflows/pull_request_feed.yml index 47feae911c5b..e266324bc521 100644 --- a/.github/workflows/pull_request_feed.yml +++ b/.github/workflows/pull_request_feed.yml @@ -36,7 +36,7 @@ jobs: MERGED_BY_URL: ${{ github.event.pull_request.merged_by.html_url }} MERGED_BY_LOGIN: ${{ github.event.pull_request.merged_by.login }} with: - webhook: ${{ secrets.SLACK_WEBHOOK_URL }} + webhook: ${{ secrets.FEED_SLACK_WEBHOOK_URL }} webhook-type: incoming-webhook payload: | { @@ -61,7 +61,7 @@ jobs: PR_AUTHOR_URL: ${{ github.event.pull_request.user.html_url }} PR_AUTHOR_LOGIN: ${{ github.event.pull_request.user.login }} with: - webhook: ${{ secrets.SLACK_WEBHOOK_URL }} + webhook: ${{ secrets.FEED_SLACK_WEBHOOK_URL }} webhook-type: incoming-webhook payload: | { @@ -85,7 +85,7 @@ jobs: PR_AUTHOR_URL: ${{ github.event.pull_request.user.html_url }} PR_AUTHOR_LOGIN: ${{ github.event.pull_request.user.login }} with: - webhook: ${{ secrets.SLACK_WEBHOOK_URL }} + webhook: ${{ secrets.FEED_SLACK_WEBHOOK_URL }} webhook-type: incoming-webhook payload: | { diff --git a/.github/workflows/pull_request_review.yml b/.github/workflows/pull_request_review.yml index 6e4c9b56d66a..4f6c4ee65642 100644 --- a/.github/workflows/pull_request_review.yml +++ b/.github/workflows/pull_request_review.yml @@ -35,7 +35,7 @@ jobs: PR_HTML_URL: ${{ github.event.pull_request.html_url }} PR_TITLE: ${{ github.event.pull_request.title }} with: - webhook: ${{ secrets.SLACK_WEBHOOK_URL }} + webhook: ${{ secrets.FEED_SLACK_WEBHOOK_URL }} webhook-type: incoming-webhook payload: | { diff --git a/.github/workflows/pull_request_target.yml b/.github/workflows/pull_request_target.yml index fb25e93a8711..16ede6f22072 100644 --- a/.github/workflows/pull_request_target.yml +++ b/.github/workflows/pull_request_target.yml @@ -35,7 +35,7 @@ jobs: - name: Apply Size Labels if: contains(fromJSON('["opened", "edited"]'), github.event.action) - uses: codelytv/pr-size-labeler@c7a55a022747628b50f3eb5bf863b9e796b8f274 # v1.10.1 + uses: codelytv/pr-size-labeler@1c3422395d899286d5ee2c809fd5aed264d5eb9b # v1.10.2 with: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} xs_label: "size/XS" diff --git a/.github/workflows/release-tag.yml b/.github/workflows/release-tag.yml index 081696ebcfa6..ef60bb4f23d3 100644 --- a/.github/workflows/release-tag.yml +++ b/.github/workflows/release-tag.yml @@ -11,7 +11,7 @@ jobs: id: slack uses: slackapi/slack-github-action@485a9d42d3a73031f12ec201c457e2162c45d02d # v2.0.0 with: - webhook: ${{ secrets.SLACK_WEBHOOK_URL }} + webhook: ${{ secrets.FEED_SLACK_WEBHOOK_URL }} webhook-type: incoming-webhook payload: | { diff --git a/.go-version b/.go-version index 14bee92c9e72..ac1df3fce34b 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 dcc12ef91299..d7ef593aa612 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"), @@ -201,6 +201,7 @@ val services = mapOf( "s3" to ServiceSpec("S3 (Simple Storage)"), "s3control" to ServiceSpec("S3 Control"), "s3outposts" to ServiceSpec("S3 on Outposts"), + "s3tables" to ServiceSpec("S3 Tables"), "sagemaker" to ServiceSpec("SageMaker", vpcLock = true), "scheduler" to ServiceSpec("EventBridge Scheduler"), "schemas" to ServiceSpec("EventBridge Schemas"), diff --git a/.teamcity/scripts/provider_tests/acceptance_tests.sh b/.teamcity/scripts/provider_tests/acceptance_tests.sh index 86f8286a2d59..2329d81f4569 100644 --- a/.teamcity/scripts/provider_tests/acceptance_tests.sh +++ b/.teamcity/scripts/provider_tests/acceptance_tests.sh @@ -61,4 +61,4 @@ TF_ACC=1 go test \ ./internal/types/... \ ./internal/vault/... \ ./internal/verify/... \ - -json -v -count=1 -parallel "%ACCTEST_PARALLELISM%" -timeout=0 -run=TestAcc + -json -count=1 -parallel "%ACCTEST_PARALLELISM%" -timeout=0 -run=TestAcc diff --git a/.teamcity/scripts/service_tests/acceptance_tests.sh b/.teamcity/scripts/service_tests/acceptance_tests.sh index e8a14f220b11..07fabf7e88c5 100644 --- a/.teamcity/scripts/service_tests/acceptance_tests.sh +++ b/.teamcity/scripts/service_tests/acceptance_tests.sh @@ -4,6 +4,7 @@ set -euo pipefail TEST_LIST=$(./test-binary -test.list="%TEST_PATTERN%" 2>/dev/null) +# shellcheck disable=2157 # This isn't a constant string, it's a TeamCity variable substitution if [[ -n "%TEST_EXCLUDE_PATTERN%" ]]; then TEST_LIST=$(echo "${TEST_LIST}" | grep -vE "%TEST_EXCLUDE_PATTERN%") fi diff --git a/.teamcity/settings.kts b/.teamcity/settings.kts index 6c00919e089e..01bd92395af3 100644 --- a/.teamcity/settings.kts +++ b/.teamcity/settings.kts @@ -326,6 +326,17 @@ object SetUp : BuildType({ } } + // For sweeper step + failureConditions { + failOnText { + conditionType = BuildFailureOnText.ConditionType.REGEXP + pattern = """Sweeper Tests for region \(([-a-z0-9]+)\) ran unsuccessfully""" + failureMessage = """Sweeper failure for region "${'$'}1"""" + reverse = false + reportOnlyFirstMatch = false + } + } + features { golang { testFormat = "json" diff --git a/CHANGELOG.md b/CHANGELOG.md index 1ead3d1f78b1..2f5d51591439 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,74 @@ -## 5.77.0 (Unreleased) +## 5.80.0 (Unreleased) + +FEATURES: + +* **New Resource:** `aws_codeconnections_connection` ([#40300](https://github.com/hashicorp/terraform-provider-aws/issues/40300)) +* **New Resource:** `aws_codeconnections_host` ([#40300](https://github.com/hashicorp/terraform-provider-aws/issues/40300)) +* **New Resource:** `aws_s3tables_namespace` ([#40420](https://github.com/hashicorp/terraform-provider-aws/issues/40420)) +* **New Resource:** `aws_s3tables_table` ([#40420](https://github.com/hashicorp/terraform-provider-aws/issues/40420)) +* **New Resource:** `aws_s3tables_table_bucket` ([#40420](https://github.com/hashicorp/terraform-provider-aws/issues/40420)) +* **New Resource:** `aws_s3tables_table_bucket_policy` ([#40420](https://github.com/hashicorp/terraform-provider-aws/issues/40420)) +* **New Resource:** `aws_s3tables_table_policy` ([#40420](https://github.com/hashicorp/terraform-provider-aws/issues/40420)) + +ENHANCEMENTS: + +* resource/aws_dynamodb_table_replica: Add `deletion_protection_enabled` argument ([#35359](https://github.com/hashicorp/terraform-provider-aws/issues/35359)) +* resource/aws_s3_directory_bucket: Support `LocalZone` as a valid value for `location.type`, enabling support for [Amazon S3 Express One Zone in AWS Dedicated Local Zones](https://docs.aws.amazon.com/AmazonS3/latest/userguide/directory-bucket-data-residency.html) ([#40339](https://github.com/hashicorp/terraform-provider-aws/issues/40339)) + +BUG FIXES: + +* resource/aws_bedrock_provisioned_model_throughput: Properly manages `tags_all` when planning. ([#40305](https://github.com/hashicorp/terraform-provider-aws/issues/40305)) +* resource/aws_connect_contact_flow: Fix `deserialization failed, failed to decode response body with invalid JSON` errors on Read ([#40419](https://github.com/hashicorp/terraform-provider-aws/issues/40419)) + +## 5.79.0 (December 3, 2024) + +FEATURES: + +* **New Resource:** `aws_vpc_block_public_access_exclusion` ([#40235](https://github.com/hashicorp/terraform-provider-aws/issues/40235)) +* **New Resource:** `aws_vpc_block_public_access_options` ([#40233](https://github.com/hashicorp/terraform-provider-aws/issues/40233)) + +ENHANCEMENTS: + +* resource/aws_eks_cluster: Add `compute_config`, `storage_config`, and `kubernetes_network_config.elastic_load_balancing` arguments for EKS Auto Mode ([#40370](https://github.com/hashicorp/terraform-provider-aws/issues/40370)) +* resource/aws_eks_cluster: Add `remote_network_config` argument for EKS Auto Mode ([#40371](https://github.com/hashicorp/terraform-provider-aws/issues/40371)) +* resource/aws_lambda_event_source_mapping: Add `metrics_config` argument ([#40322](https://github.com/hashicorp/terraform-provider-aws/issues/40322)) +* resource/aws_lambda_event_source_mapping: Add `provisioned_poller_config` argument ([#40303](https://github.com/hashicorp/terraform-provider-aws/issues/40303)) +* resource/aws_rds_cluster: Add ability to promote read replica cluster to standalone ([#40337](https://github.com/hashicorp/terraform-provider-aws/issues/40337)) +* resource/aws_vpc_endpoint_service: Add `supported_regions` argument ([#40346](https://github.com/hashicorp/terraform-provider-aws/issues/40346)) + +BUG FIXES: + +* resource/aws_fsx_openzfs_file_system: Increase maximum value of `disk_iops_configuration.iops` from `350000` to `400000` for `deployment_type = "SINGLE_AZ_2"` ([#40359](https://github.com/hashicorp/terraform-provider-aws/issues/40359)) + +## 5.78.0 (November 26, 2024) + +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: @@ -13,7 +83,13 @@ FEATURES: ENHANCEMENTS: +* data-source/aws_ami: Add warning diagnostic when `most_recent` is true and certain filter criteria are missing ([#40211](https://github.com/hashicorp/terraform-provider-aws/issues/40211)) +* data-source/aws_ecs_service: Add `availability_zone_rebalancing` attribute ([#40225](https://github.com/hashicorp/terraform-provider-aws/issues/40225)) +* 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: @@ -31,6 +107,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 a71dc2b1e5c6..31209aa041d4 100644 --- a/go.mod +++ b/go.mod @@ -1,265 +1,266 @@ 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 - github.com/aws/aws-sdk-go-v2 v1.32.5 - 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/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/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/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/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/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 - github.com/aws/aws-sdk-go-v2/service/bcmdataexports v1.7.6 - 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/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 - github.com/aws/aws-sdk-go-v2/service/cleanrooms v1.20.1 - 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/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/cloudwatch v1.43.1 - github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.43.3 - 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 - github.com/aws/aws-sdk-go-v2/service/codecommit v1.27.6 - github.com/aws/aws-sdk-go-v2/service/codeconnections v1.5.6 - 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/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/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/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/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 - github.com/aws/aws-sdk-go-v2/service/databrew v1.33.6 - github.com/aws/aws-sdk-go-v2/service/dataexchange v1.33.4 - github.com/aws/aws-sdk-go-v2/service/datapipeline v1.25.6 - github.com/aws/aws-sdk-go-v2/service/datasync v1.43.4 - github.com/aws/aws-sdk-go-v2/service/datazone v1.24.0 - github.com/aws/aws-sdk-go-v2/service/dax v1.23.6 - 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/directoryservice v1.30.7 - github.com/aws/aws-sdk-go-v2/service/dlm v1.28.6 - 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/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/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/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/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 - github.com/aws/aws-sdk-go-v2/service/evidently v1.23.6 - github.com/aws/aws-sdk-go-v2/service/finspace v1.28.6 - github.com/aws/aws-sdk-go-v2/service/firehose v1.35.1 - github.com/aws/aws-sdk-go-v2/service/fis v1.31.1 - github.com/aws/aws-sdk-go-v2/service/fms v1.38.4 - github.com/aws/aws-sdk-go-v2/service/fsx v1.49.6 - github.com/aws/aws-sdk-go-v2/service/gamelift v1.37.1 - github.com/aws/aws-sdk-go-v2/service/glacier v1.26.6 - github.com/aws/aws-sdk-go-v2/service/globalaccelerator v1.29.6 - github.com/aws/aws-sdk-go-v2/service/glue v1.102.0 - github.com/aws/aws-sdk-go-v2/service/grafana v1.26.6 - github.com/aws/aws-sdk-go-v2/service/greengrass v1.27.6 - github.com/aws/aws-sdk-go-v2/service/groundstation v1.31.6 - github.com/aws/aws-sdk-go-v2/service/guardduty v1.51.2 - github.com/aws/aws-sdk-go-v2/service/healthlake v1.28.6 - github.com/aws/aws-sdk-go-v2/service/iam v1.38.1 - 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/internetmonitor v1.20.1 - github.com/aws/aws-sdk-go-v2/service/iot v1.60.1 - 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 - github.com/aws/aws-sdk-go-v2/service/ivschat v1.16.6 - github.com/aws/aws-sdk-go-v2/service/kafka v1.38.6 - github.com/aws/aws-sdk-go-v2/service/kafkaconnect v1.21.6 - github.com/aws/aws-sdk-go-v2/service/kendra v1.54.6 - github.com/aws/aws-sdk-go-v2/service/keyspaces v1.16.0 - github.com/aws/aws-sdk-go-v2/service/kinesis v1.32.6 - github.com/aws/aws-sdk-go-v2/service/kinesisanalytics v1.25.7 - github.com/aws/aws-sdk-go-v2/service/kinesisanalyticsv2 v1.31.7 - 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/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 - github.com/aws/aws-sdk-go-v2/service/licensemanager v1.29.6 - github.com/aws/aws-sdk-go-v2/service/lightsail v1.42.6 - github.com/aws/aws-sdk-go-v2/service/location v1.42.6 - github.com/aws/aws-sdk-go-v2/service/lookoutmetrics v1.31.6 - github.com/aws/aws-sdk-go-v2/service/m2 v1.18.4 - github.com/aws/aws-sdk-go-v2/service/macie2 v1.43.6 - github.com/aws/aws-sdk-go-v2/service/mediaconnect v1.35.6 - github.com/aws/aws-sdk-go-v2/service/mediaconvert v1.63.0 - github.com/aws/aws-sdk-go-v2/service/medialive v1.62.6 - github.com/aws/aws-sdk-go-v2/service/mediapackage v1.34.6 - github.com/aws/aws-sdk-go-v2/service/mediapackagev2 v1.20.0 - github.com/aws/aws-sdk-go-v2/service/mediastore v1.24.6 - github.com/aws/aws-sdk-go-v2/service/memorydb v1.24.5 - 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/networkfirewall v1.44.3 - github.com/aws/aws-sdk-go-v2/service/networkmanager v1.31.6 - github.com/aws/aws-sdk-go-v2/service/networkmonitor v1.7.6 - github.com/aws/aws-sdk-go-v2/service/oam v1.15.6 - github.com/aws/aws-sdk-go-v2/service/opensearch v1.44.1 - github.com/aws/aws-sdk-go-v2/service/opensearchserverless v1.17.3 - github.com/aws/aws-sdk-go-v2/service/opsworks v1.26.6 - github.com/aws/aws-sdk-go-v2/service/organizations v1.35.1 - github.com/aws/aws-sdk-go-v2/service/osis v1.14.6 - github.com/aws/aws-sdk-go-v2/service/outposts v1.47.1 - github.com/aws/aws-sdk-go-v2/service/paymentcryptography v1.16.1 - github.com/aws/aws-sdk-go-v2/service/pcaconnectorad v1.9.6 - github.com/aws/aws-sdk-go-v2/service/pcs v1.2.7 - 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/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/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 - github.com/aws/aws-sdk-go-v2/service/redshift v1.52.1 - 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/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 - github.com/aws/aws-sdk-go-v2/service/rolesanywhere v1.16.6 - github.com/aws/aws-sdk-go-v2/service/route53 v1.46.2 - github.com/aws/aws-sdk-go-v2/service/route53domains v1.27.6 - github.com/aws/aws-sdk-go-v2/service/route53profiles v1.4.6 - github.com/aws/aws-sdk-go-v2/service/route53recoverycontrolconfig v1.25.6 - 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/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/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 - github.com/aws/aws-sdk-go-v2/service/securityhub v1.54.7 - github.com/aws/aws-sdk-go-v2/service/securitylake v1.19.4 - github.com/aws/aws-sdk-go-v2/service/serverlessapplicationrepository v1.24.6 - github.com/aws/aws-sdk-go-v2/service/servicecatalog v1.32.6 - 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/sesv2 v1.38.3 - github.com/aws/aws-sdk-go-v2/service/sfn v1.33.6 - 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/sqs v1.37.1 - github.com/aws/aws-sdk-go-v2/service/ssm v1.55.6 - 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/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 - github.com/aws/aws-sdk-go-v2/service/storagegateway v1.34.6 - github.com/aws/aws-sdk-go-v2/service/sts v1.33.1 - github.com/aws/aws-sdk-go-v2/service/swf v1.27.6 - 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/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/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 v1.32.6 + github.com/aws/aws-sdk-go-v2/config v1.28.6 + github.com/aws/aws-sdk-go-v2/credentials v1.17.47 + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.21 + github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.43 + github.com/aws/aws-sdk-go-v2/service/accessanalyzer v1.36.2 + github.com/aws/aws-sdk-go-v2/service/account v1.21.7 + github.com/aws/aws-sdk-go-v2/service/acm v1.30.7 + github.com/aws/aws-sdk-go-v2/service/acmpca v1.37.8 + github.com/aws/aws-sdk-go-v2/service/amp v1.30.4 + github.com/aws/aws-sdk-go-v2/service/amplify v1.27.5 + github.com/aws/aws-sdk-go-v2/service/apigateway v1.28.1 + github.com/aws/aws-sdk-go-v2/service/apigatewayv2 v1.24.7 + github.com/aws/aws-sdk-go-v2/service/appconfig v1.36.1 + github.com/aws/aws-sdk-go-v2/service/appfabric v1.11.7 + github.com/aws/aws-sdk-go-v2/service/appflow v1.45.8 + github.com/aws/aws-sdk-go-v2/service/appintegrations v1.30.7 + github.com/aws/aws-sdk-go-v2/service/applicationautoscaling v1.34.1 + github.com/aws/aws-sdk-go-v2/service/applicationinsights v1.29.5 + github.com/aws/aws-sdk-go-v2/service/applicationsignals v1.7.2 + github.com/aws/aws-sdk-go-v2/service/appmesh v1.29.7 + github.com/aws/aws-sdk-go-v2/service/apprunner v1.32.7 + github.com/aws/aws-sdk-go-v2/service/appstream v1.41.7 + github.com/aws/aws-sdk-go-v2/service/appsync v1.40.1 + github.com/aws/aws-sdk-go-v2/service/athena v1.49.0 + github.com/aws/aws-sdk-go-v2/service/auditmanager v1.37.7 + github.com/aws/aws-sdk-go-v2/service/autoscaling v1.51.1 + github.com/aws/aws-sdk-go-v2/service/autoscalingplans v1.24.7 + github.com/aws/aws-sdk-go-v2/service/backup v1.39.8 + github.com/aws/aws-sdk-go-v2/service/batch v1.48.2 + github.com/aws/aws-sdk-go-v2/service/bcmdataexports v1.7.7 + github.com/aws/aws-sdk-go-v2/service/bedrock v1.24.0 + github.com/aws/aws-sdk-go-v2/service/bedrockagent v1.31.0 + github.com/aws/aws-sdk-go-v2/service/budgets v1.28.7 + github.com/aws/aws-sdk-go-v2/service/chatbot v1.9.1 + github.com/aws/aws-sdk-go-v2/service/chime v1.34.7 + github.com/aws/aws-sdk-go-v2/service/chimesdkmediapipelines v1.21.2 + github.com/aws/aws-sdk-go-v2/service/chimesdkvoice v1.20.0 + github.com/aws/aws-sdk-go-v2/service/cleanrooms v1.21.0 + github.com/aws/aws-sdk-go-v2/service/cloud9 v1.28.7 + github.com/aws/aws-sdk-go-v2/service/cloudcontrol v1.23.2 + github.com/aws/aws-sdk-go-v2/service/cloudformation v1.56.1 + github.com/aws/aws-sdk-go-v2/service/cloudfront v1.43.1 + github.com/aws/aws-sdk-go-v2/service/cloudfrontkeyvaluestore v1.8.7 + github.com/aws/aws-sdk-go-v2/service/cloudhsmv2 v1.27.8 + github.com/aws/aws-sdk-go-v2/service/cloudsearch v1.26.6 + github.com/aws/aws-sdk-go-v2/service/cloudtrail v1.46.2 + github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.43.3 + github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.45.0 + github.com/aws/aws-sdk-go-v2/service/codeartifact v1.33.7 + github.com/aws/aws-sdk-go-v2/service/codebuild v1.49.2 + github.com/aws/aws-sdk-go-v2/service/codecatalyst v1.17.7 + github.com/aws/aws-sdk-go-v2/service/codecommit v1.27.7 + github.com/aws/aws-sdk-go-v2/service/codeconnections v1.5.7 + github.com/aws/aws-sdk-go-v2/service/codedeploy v1.29.7 + github.com/aws/aws-sdk-go-v2/service/codeguruprofiler v1.24.7 + github.com/aws/aws-sdk-go-v2/service/codegurureviewer v1.29.7 + github.com/aws/aws-sdk-go-v2/service/codepipeline v1.37.1 + github.com/aws/aws-sdk-go-v2/service/codestarconnections v1.29.7 + github.com/aws/aws-sdk-go-v2/service/codestarnotifications v1.26.7 + github.com/aws/aws-sdk-go-v2/service/cognitoidentity v1.27.7 + github.com/aws/aws-sdk-go-v2/service/cognitoidentityprovider v1.47.1 + github.com/aws/aws-sdk-go-v2/service/comprehend v1.35.7 + github.com/aws/aws-sdk-go-v2/service/computeoptimizer v1.40.1 + github.com/aws/aws-sdk-go-v2/service/configservice v1.51.1 + github.com/aws/aws-sdk-go-v2/service/connect v1.119.0 + github.com/aws/aws-sdk-go-v2/service/connectcases v1.21.7 + github.com/aws/aws-sdk-go-v2/service/controltower v1.20.1 + github.com/aws/aws-sdk-go-v2/service/costandusagereportservice v1.28.7 + github.com/aws/aws-sdk-go-v2/service/costexplorer v1.45.1 + github.com/aws/aws-sdk-go-v2/service/costoptimizationhub v1.11.1 + github.com/aws/aws-sdk-go-v2/service/customerprofiles v1.44.0 + github.com/aws/aws-sdk-go-v2/service/databasemigrationservice v1.44.5 + github.com/aws/aws-sdk-go-v2/service/databrew v1.33.7 + github.com/aws/aws-sdk-go-v2/service/dataexchange v1.33.5 + github.com/aws/aws-sdk-go-v2/service/datapipeline v1.25.7 + github.com/aws/aws-sdk-go-v2/service/datasync v1.43.5 + github.com/aws/aws-sdk-go-v2/service/datazone v1.25.0 + github.com/aws/aws-sdk-go-v2/service/dax v1.23.7 + github.com/aws/aws-sdk-go-v2/service/detective v1.31.7 + github.com/aws/aws-sdk-go-v2/service/devicefarm v1.28.7 + github.com/aws/aws-sdk-go-v2/service/devopsguru v1.34.7 + github.com/aws/aws-sdk-go-v2/service/directconnect v1.30.1 + github.com/aws/aws-sdk-go-v2/service/directoryservice v1.30.8 + github.com/aws/aws-sdk-go-v2/service/dlm v1.28.8 + github.com/aws/aws-sdk-go-v2/service/docdb v1.39.6 + github.com/aws/aws-sdk-go-v2/service/docdbelastic v1.14.4 + github.com/aws/aws-sdk-go-v2/service/drs v1.30.7 + github.com/aws/aws-sdk-go-v2/service/dynamodb v1.38.0 + github.com/aws/aws-sdk-go-v2/service/ec2 v1.195.0 + github.com/aws/aws-sdk-go-v2/service/ecr v1.36.7 + github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.27.7 + github.com/aws/aws-sdk-go-v2/service/ecs v1.52.1 + github.com/aws/aws-sdk-go-v2/service/efs v1.34.1 + github.com/aws/aws-sdk-go-v2/service/eks v1.53.0 + github.com/aws/aws-sdk-go-v2/service/elasticache v1.44.1 + github.com/aws/aws-sdk-go-v2/service/elasticbeanstalk v1.28.7 + github.com/aws/aws-sdk-go-v2/service/elasticloadbalancing v1.28.6 + github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.43.1 + github.com/aws/aws-sdk-go-v2/service/elasticsearchservice v1.32.7 + github.com/aws/aws-sdk-go-v2/service/elastictranscoder v1.27.7 + github.com/aws/aws-sdk-go-v2/service/emr v1.47.1 + github.com/aws/aws-sdk-go-v2/service/emrcontainers v1.33.8 + github.com/aws/aws-sdk-go-v2/service/emrserverless v1.26.7 + github.com/aws/aws-sdk-go-v2/service/eventbridge v1.36.0 + github.com/aws/aws-sdk-go-v2/service/evidently v1.23.7 + github.com/aws/aws-sdk-go-v2/service/finspace v1.28.7 + github.com/aws/aws-sdk-go-v2/service/firehose v1.35.2 + github.com/aws/aws-sdk-go-v2/service/fis v1.31.2 + github.com/aws/aws-sdk-go-v2/service/fms v1.38.5 + github.com/aws/aws-sdk-go-v2/service/fsx v1.51.0 + github.com/aws/aws-sdk-go-v2/service/gamelift v1.37.2 + github.com/aws/aws-sdk-go-v2/service/glacier v1.26.7 + github.com/aws/aws-sdk-go-v2/service/globalaccelerator v1.29.7 + github.com/aws/aws-sdk-go-v2/service/glue v1.103.0 + github.com/aws/aws-sdk-go-v2/service/grafana v1.26.7 + github.com/aws/aws-sdk-go-v2/service/greengrass v1.27.7 + github.com/aws/aws-sdk-go-v2/service/groundstation v1.31.7 + github.com/aws/aws-sdk-go-v2/service/guardduty v1.52.0 + github.com/aws/aws-sdk-go-v2/service/healthlake v1.28.7 + github.com/aws/aws-sdk-go-v2/service/iam v1.38.2 + github.com/aws/aws-sdk-go-v2/service/identitystore v1.27.7 + github.com/aws/aws-sdk-go-v2/service/imagebuilder v1.39.0 + github.com/aws/aws-sdk-go-v2/service/inspector v1.25.7 + github.com/aws/aws-sdk-go-v2/service/inspector2 v1.34.1 + github.com/aws/aws-sdk-go-v2/service/internetmonitor v1.20.2 + github.com/aws/aws-sdk-go-v2/service/iot v1.61.1 + github.com/aws/aws-sdk-go-v2/service/iotanalytics v1.26.7 + github.com/aws/aws-sdk-go-v2/service/iotevents v1.27.7 + github.com/aws/aws-sdk-go-v2/service/ivs v1.42.2 + github.com/aws/aws-sdk-go-v2/service/ivschat v1.16.7 + github.com/aws/aws-sdk-go-v2/service/kafka v1.38.7 + github.com/aws/aws-sdk-go-v2/service/kafkaconnect v1.21.7 + github.com/aws/aws-sdk-go-v2/service/kendra v1.54.7 + github.com/aws/aws-sdk-go-v2/service/keyspaces v1.16.1 + github.com/aws/aws-sdk-go-v2/service/kinesis v1.32.7 + github.com/aws/aws-sdk-go-v2/service/kinesisanalytics v1.25.8 + github.com/aws/aws-sdk-go-v2/service/kinesisanalyticsv2 v1.31.8 + github.com/aws/aws-sdk-go-v2/service/kinesisvideo v1.27.7 + github.com/aws/aws-sdk-go-v2/service/kms v1.37.7 + github.com/aws/aws-sdk-go-v2/service/lakeformation v1.39.0 + github.com/aws/aws-sdk-go-v2/service/lambda v1.69.1 + github.com/aws/aws-sdk-go-v2/service/launchwizard v1.8.7 + github.com/aws/aws-sdk-go-v2/service/lexmodelbuildingservice v1.28.7 + github.com/aws/aws-sdk-go-v2/service/lexmodelsv2 v1.49.7 + github.com/aws/aws-sdk-go-v2/service/licensemanager v1.29.7 + github.com/aws/aws-sdk-go-v2/service/lightsail v1.42.7 + github.com/aws/aws-sdk-go-v2/service/location v1.42.7 + github.com/aws/aws-sdk-go-v2/service/lookoutmetrics v1.31.7 + github.com/aws/aws-sdk-go-v2/service/m2 v1.18.5 + github.com/aws/aws-sdk-go-v2/service/macie2 v1.43.7 + github.com/aws/aws-sdk-go-v2/service/mediaconnect v1.35.7 + github.com/aws/aws-sdk-go-v2/service/mediaconvert v1.63.1 + github.com/aws/aws-sdk-go-v2/service/medialive v1.62.7 + github.com/aws/aws-sdk-go-v2/service/mediapackage v1.34.7 + github.com/aws/aws-sdk-go-v2/service/mediapackagev2 v1.20.1 + github.com/aws/aws-sdk-go-v2/service/mediastore v1.24.7 + github.com/aws/aws-sdk-go-v2/service/memorydb v1.25.0 + github.com/aws/aws-sdk-go-v2/service/mq v1.27.8 + github.com/aws/aws-sdk-go-v2/service/mwaa v1.33.1 + github.com/aws/aws-sdk-go-v2/service/neptune v1.35.6 + github.com/aws/aws-sdk-go-v2/service/neptunegraph v1.15.1 + github.com/aws/aws-sdk-go-v2/service/networkfirewall v1.44.4 + github.com/aws/aws-sdk-go-v2/service/networkmanager v1.32.1 + github.com/aws/aws-sdk-go-v2/service/networkmonitor v1.7.7 + github.com/aws/aws-sdk-go-v2/service/oam v1.15.7 + github.com/aws/aws-sdk-go-v2/service/opensearch v1.45.0 + github.com/aws/aws-sdk-go-v2/service/opensearchserverless v1.17.4 + github.com/aws/aws-sdk-go-v2/service/opsworks v1.26.7 + github.com/aws/aws-sdk-go-v2/service/organizations v1.36.0 + github.com/aws/aws-sdk-go-v2/service/osis v1.14.7 + github.com/aws/aws-sdk-go-v2/service/outposts v1.47.2 + github.com/aws/aws-sdk-go-v2/service/paymentcryptography v1.16.2 + github.com/aws/aws-sdk-go-v2/service/pcaconnectorad v1.9.7 + github.com/aws/aws-sdk-go-v2/service/pcs v1.2.8 + github.com/aws/aws-sdk-go-v2/service/pinpoint v1.34.7 + github.com/aws/aws-sdk-go-v2/service/pinpointsmsvoicev2 v1.18.2 + github.com/aws/aws-sdk-go-v2/service/pipes v1.18.5 + github.com/aws/aws-sdk-go-v2/service/polly v1.45.8 + github.com/aws/aws-sdk-go-v2/service/pricing v1.32.7 + github.com/aws/aws-sdk-go-v2/service/qbusiness v1.18.0 + github.com/aws/aws-sdk-go-v2/service/qldb v1.25.7 + github.com/aws/aws-sdk-go-v2/service/quicksight v1.81.0 + github.com/aws/aws-sdk-go-v2/service/ram v1.29.7 + github.com/aws/aws-sdk-go-v2/service/rbin v1.21.1 + github.com/aws/aws-sdk-go-v2/service/rds v1.92.0 + github.com/aws/aws-sdk-go-v2/service/redshift v1.53.0 + github.com/aws/aws-sdk-go-v2/service/redshiftdata v1.31.4 + github.com/aws/aws-sdk-go-v2/service/redshiftserverless v1.25.0 + github.com/aws/aws-sdk-go-v2/service/rekognition v1.45.8 + github.com/aws/aws-sdk-go-v2/service/resiliencehub v1.28.1 + github.com/aws/aws-sdk-go-v2/service/resourceexplorer2 v1.16.2 + github.com/aws/aws-sdk-go-v2/service/resourcegroups v1.27.7 + github.com/aws/aws-sdk-go-v2/service/resourcegroupstaggingapi v1.25.7 + github.com/aws/aws-sdk-go-v2/service/rolesanywhere v1.16.7 + github.com/aws/aws-sdk-go-v2/service/route53 v1.46.3 + github.com/aws/aws-sdk-go-v2/service/route53domains v1.27.7 + github.com/aws/aws-sdk-go-v2/service/route53profiles v1.4.7 + github.com/aws/aws-sdk-go-v2/service/route53recoverycontrolconfig v1.25.7 + github.com/aws/aws-sdk-go-v2/service/route53recoveryreadiness v1.21.7 + github.com/aws/aws-sdk-go-v2/service/route53resolver v1.34.2 + github.com/aws/aws-sdk-go-v2/service/rum v1.21.7 + github.com/aws/aws-sdk-go-v2/service/s3 v1.71.0 + github.com/aws/aws-sdk-go-v2/service/s3control v1.52.0 + github.com/aws/aws-sdk-go-v2/service/s3outposts v1.28.7 + github.com/aws/aws-sdk-go-v2/service/s3tables v1.0.0 + github.com/aws/aws-sdk-go-v2/service/sagemaker v1.168.1 + github.com/aws/aws-sdk-go-v2/service/scheduler v1.12.7 + github.com/aws/aws-sdk-go-v2/service/schemas v1.28.8 + github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.34.7 + github.com/aws/aws-sdk-go-v2/service/securityhub v1.55.0 + github.com/aws/aws-sdk-go-v2/service/securitylake v1.19.5 + github.com/aws/aws-sdk-go-v2/service/serverlessapplicationrepository v1.24.7 + github.com/aws/aws-sdk-go-v2/service/servicecatalog v1.32.7 + github.com/aws/aws-sdk-go-v2/service/servicecatalogappregistry v1.30.7 + github.com/aws/aws-sdk-go-v2/service/servicediscovery v1.33.7 + github.com/aws/aws-sdk-go-v2/service/servicequotas v1.25.7 + github.com/aws/aws-sdk-go-v2/service/ses v1.29.1 + github.com/aws/aws-sdk-go-v2/service/sesv2 v1.38.4 + github.com/aws/aws-sdk-go-v2/service/sfn v1.34.1 + github.com/aws/aws-sdk-go-v2/service/shield v1.29.7 + github.com/aws/aws-sdk-go-v2/service/signer v1.26.7 + github.com/aws/aws-sdk-go-v2/service/sns v1.33.7 + github.com/aws/aws-sdk-go-v2/service/sqs v1.37.2 + github.com/aws/aws-sdk-go-v2/service/ssm v1.56.1 + github.com/aws/aws-sdk-go-v2/service/ssmcontacts v1.26.7 + github.com/aws/aws-sdk-go-v2/service/ssmincidents v1.34.7 + github.com/aws/aws-sdk-go-v2/service/ssmquicksetup v1.3.1 + github.com/aws/aws-sdk-go-v2/service/ssmsap v1.18.7 + github.com/aws/aws-sdk-go-v2/service/sso v1.24.7 + github.com/aws/aws-sdk-go-v2/service/ssoadmin v1.29.7 + github.com/aws/aws-sdk-go-v2/service/storagegateway v1.34.7 + github.com/aws/aws-sdk-go-v2/service/sts v1.33.2 + github.com/aws/aws-sdk-go-v2/service/swf v1.27.8 + github.com/aws/aws-sdk-go-v2/service/synthetics v1.30.2 + github.com/aws/aws-sdk-go-v2/service/taxsettings v1.7.1 + github.com/aws/aws-sdk-go-v2/service/timestreaminfluxdb v1.6.7 + github.com/aws/aws-sdk-go-v2/service/timestreamwrite v1.29.8 + github.com/aws/aws-sdk-go-v2/service/transcribe v1.41.7 + github.com/aws/aws-sdk-go-v2/service/transfer v1.54.0 + github.com/aws/aws-sdk-go-v2/service/verifiedpermissions v1.20.3 + github.com/aws/aws-sdk-go-v2/service/vpclattice v1.13.0 + github.com/aws/aws-sdk-go-v2/service/waf v1.25.7 + github.com/aws/aws-sdk-go-v2/service/wafregional v1.25.7 + github.com/aws/aws-sdk-go-v2/service/wafv2 v1.55.6 + github.com/aws/aws-sdk-go-v2/service/wellarchitected v1.34.7 github.com/aws/aws-sdk-go-v2/service/worklink v1.23.2 - github.com/aws/aws-sdk-go-v2/service/workspaces v1.50.0 - github.com/aws/aws-sdk-go-v2/service/workspacesweb v1.25.0 - github.com/aws/aws-sdk-go-v2/service/xray v1.29.6 + github.com/aws/aws-sdk-go-v2/service/workspaces v1.50.2 + github.com/aws/aws-sdk-go-v2/service/workspacesweb v1.25.1 + github.com/aws/aws-sdk-go-v2/service/xray v1.30.1 github.com/aws/smithy-go v1.22.1 github.com/beevik/etree v1.4.1 github.com/cedar-policy/cedar-go v0.1.0 @@ -316,16 +317,16 @@ require ( github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect github.com/armon/go-radix v1.0.0 // indirect github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.7 // 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/configsources v1.3.25 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.25 // indirect github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 // indirect - github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.24 // indirect + github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.25 // 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/ssooidc v1.28.5 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.4.6 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.10.6 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.6 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.6 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.6 // indirect github.com/bgentry/speakeasy v0.2.0 // indirect github.com/boombuler/barcode v1.0.1 // indirect github.com/bufbuild/protocompile v0.6.0 // indirect @@ -362,7 +363,7 @@ require ( github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect github.com/xeipuuv/gojsonschema v1.2.0 // indirect - github.com/zclconf/go-cty v1.15.0 // indirect + github.com/zclconf/go-cty v1.15.1 // indirect go.opentelemetry.io/contrib/instrumentation/github.com/aws/aws-sdk-go-v2/otelaws v0.57.0 // indirect go.opentelemetry.io/otel v1.32.0 // indirect go.opentelemetry.io/otel/metric v1.32.0 // indirect @@ -371,7 +372,7 @@ require ( golang.org/x/sync v0.9.0 // indirect golang.org/x/sys v0.27.0 // indirect google.golang.org/appengine v1.6.8 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241118233622-e639e219e697 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a // indirect google.golang.org/grpc v1.68.0 // indirect google.golang.org/protobuf v1.35.2 // indirect gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect diff --git a/go.sum b/go.sum index b3bc9b6a9c60..ca410547f33b 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= @@ -23,526 +23,528 @@ github.com/armon/go-radix v1.0.0 h1:F4z6KzEeeQIMeLFa97iZU6vupzoecKdU5TX24SNppXI= github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/aws/aws-sdk-go v1.55.5 h1:KKUZBfBoyqy5d3swXyiC7Q76ic40rYcbqH7qjh59kzU= github.com/aws/aws-sdk-go v1.55.5/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU= -github.com/aws/aws-sdk-go-v2 v1.32.5 h1:U8vdWJuY7ruAkzaOdD7guwJjD06YSKmnKCJs7s3IkIo= -github.com/aws/aws-sdk-go-v2 v1.32.5/go.mod h1:P5WJBrYqqbWVaOxgH0X/FYYD47/nooaPOZPlQdmiN2U= +github.com/aws/aws-sdk-go-v2 v1.32.6 h1:7BokKRgRPuGmKkFMhEg/jSul+tB9VvXhcViILtfG8b4= +github.com/aws/aws-sdk-go-v2 v1.32.6/go.mod h1:P5WJBrYqqbWVaOxgH0X/FYYD47/nooaPOZPlQdmiN2U= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.7 h1:lL7IfaFzngfx0ZwUGOZdsFFnQ5uLvR0hWqqhyE7Q9M8= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.7/go.mod h1:QraP0UcVlQJsmHfioCrveWOC1nbiWUl3ej08h4mXWoc= -github.com/aws/aws-sdk-go-v2/config v1.28.5 h1:Za41twdCXbuyyWv9LndXxZZv3QhTG1DinqlFsSuvtI0= -github.com/aws/aws-sdk-go-v2/config v1.28.5/go.mod h1:4VsPbHP8JdcdUDmbTVgNL/8w9SqOkM5jyY8ljIxLO3o= -github.com/aws/aws-sdk-go-v2/credentials v1.17.46 h1:AU7RcriIo2lXjUfHFnFKYsLCwgbz1E7Mm95ieIRDNUg= -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/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= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.24/go.mod h1:dCn9HbJ8+K31i8IQ8EWmWj0EiIk0+vKiHNMxTTYveAg= +github.com/aws/aws-sdk-go-v2/config v1.28.6 h1:D89IKtGrs/I3QXOLNTH93NJYtDhm8SYa9Q5CsPShmyo= +github.com/aws/aws-sdk-go-v2/config v1.28.6/go.mod h1:GDzxJ5wyyFSCoLkS+UhGB0dArhb9mI+Co4dHtoTxbko= +github.com/aws/aws-sdk-go-v2/credentials v1.17.47 h1:48bA+3/fCdi2yAwVt+3COvmatZ6jUDNkDTIsqDiMUdw= +github.com/aws/aws-sdk-go-v2/credentials v1.17.47/go.mod h1:+KdckOejLW3Ks3b0E3b5rHsr2f9yuORBum0WPnE5o5w= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.21 h1:AmoU1pziydclFT/xRV+xXE/Vb8fttJCLRPv8oAkprc0= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.21/go.mod h1:AjUdLYe4Tgs6kpH4Bv7uMZo7pottoyHMn4eTcIcneaY= +github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.43 h1:iLdpkYZ4cXIQMO7ud+cqMWR1xK5ESbt1rvN77tRi1BY= +github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.43/go.mod h1:OgbsKPAswXDd5kxnR4vZov69p3oYjbvUyIRBAAV0y9o= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.25 h1:s/fF4+yDQDoElYhfIVvSNyeCydfbuTKzhxSXDXCPasU= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.25/go.mod h1:IgPfDv5jqFIzQSNbUEMoitNooSMXjRSDkhXv8jiROvU= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.25 h1:ZntTCl5EsYnhN/IygQEUugpdwbhdkom9uHcbCftiGgA= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.25/go.mod h1:DBdPrgeocww+CSl1C8cEV8PN1mHMBhuCDLpXezyvWkE= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 h1:VaRN3TlFdd6KxX1x3ILT5ynH6HvKgqdiXoTxAF4HQcQ= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1/go.mod h1:FbtygfRFze9usAadmnGJNc8KsP346kEe+y2/oyhGAGc= -github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.24 h1:JX70yGKLj25+lMC5Yyh8wBtvB01GDilyRuJvXJ4piD0= -github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.24/go.mod h1:+Ln60j9SUTD0LEwnhEB0Xhg61DHqplBrbZpLgyjoEHg= -github.com/aws/aws-sdk-go-v2/service/accessanalyzer v1.36.1 h1:IdOcs3kO2gSgjQ6CQVV3TiFrcqt4+p/hIO3fJoY5LAk= -github.com/aws/aws-sdk-go-v2/service/accessanalyzer v1.36.1/go.mod h1:73ZiTjCNz6qec4WaTLpXuz3QS/B6BGaeI1CsiojnR2w= -github.com/aws/aws-sdk-go-v2/service/account v1.21.6 h1:FtKN52U4HemOC0ScQTPmZKe+902h09Uf60s6F6x9eE8= -github.com/aws/aws-sdk-go-v2/service/account v1.21.6/go.mod h1:DoOQNxPjjgOCH5KPxVZ+37214qlPbXGOX7phOWvZPQU= -github.com/aws/aws-sdk-go-v2/service/acm v1.30.6 h1:fDg0RlN30Xf/yYzEUL/WXqhmgFsjVb/I3230oCfyI5w= -github.com/aws/aws-sdk-go-v2/service/acm v1.30.6/go.mod h1:zRR6jE3v/TcbfO8C2P+H0Z+kShiKKVaVyoIl8NQRjyg= -github.com/aws/aws-sdk-go-v2/service/acmpca v1.37.7 h1:uysdx5dYnLtvApVpV4A730PfmqqEjb2ejYcB0NB+2js= -github.com/aws/aws-sdk-go-v2/service/acmpca v1.37.7/go.mod h1:PmgOAeKyU7dx7gOZE+v+p3n2tiKa2DvGKvJ8GDehAZw= -github.com/aws/aws-sdk-go-v2/service/amp v1.30.3 h1:28FOQuvHpWMdEYK9x89FszjBmwGfhkWYIc45DQcLhsk= -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/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= -github.com/aws/aws-sdk-go-v2/service/appconfig v1.36.0/go.mod h1:mtklZ9Lk3KEtJ9ej2NrPqpGHaGGcrwfeSN9ClPd4FA8= -github.com/aws/aws-sdk-go-v2/service/appfabric v1.11.6 h1:71eLtI7uFLhWHgnbaZqLs+dCYw6obqHrAQy+/5+Jlt4= -github.com/aws/aws-sdk-go-v2/service/appfabric v1.11.6/go.mod h1:RPqeoYHbSE1AoVzgAPQp1JjaKiyGMXszHOZMa0pKdUM= -github.com/aws/aws-sdk-go-v2/service/appflow v1.45.7 h1:UfxkfxuI4Ksq33InChPPDFg/qEFGsPzrnRnBHzbisHM= -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/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= -github.com/aws/aws-sdk-go-v2/service/applicationsignals v1.7.1/go.mod h1:/tCS8SpYcmDH7u+RiqUuT7MgKQjyWJWzRwlkMlXbgAA= -github.com/aws/aws-sdk-go-v2/service/appmesh v1.29.6 h1:mnptOnjJlbuERJEoEGdUZKnTGxkvHzgosXba3+JoCfI= -github.com/aws/aws-sdk-go-v2/service/appmesh v1.29.6/go.mod h1:bRUdurcm4crbVyWF9uN8J7P1WHcZ0U7Losz/wc9mY94= -github.com/aws/aws-sdk-go-v2/service/apprunner v1.32.6 h1:Wqlx6m821gv7qXMJQ3f7JuTQusWbZNWbpEgFD6/qkgE= -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/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/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= -github.com/aws/aws-sdk-go-v2/service/backup v1.39.7/go.mod h1:oeRKTbMD3NrXPRvFZGSibtpJfpYlyLKnQOyHvl6rjqQ= -github.com/aws/aws-sdk-go-v2/service/batch v1.48.1 h1:DkHLOuDTutCshu7k+Po0sd/CXfOrtML+GHVx4dgkvpg= -github.com/aws/aws-sdk-go-v2/service/batch v1.48.1/go.mod h1:2bWNVbqMIXP8HnWqkEIEm+WTH3QNo9Ui/CGJ5l9IM2E= -github.com/aws/aws-sdk-go-v2/service/bcmdataexports v1.7.6 h1:sxKe/rHVVxLQJgqnxBzdlX2GYCLhY+y9jH9UmE9381A= -github.com/aws/aws-sdk-go-v2/service/bcmdataexports v1.7.6/go.mod h1:kplgf9W6J8e3ml6xKdfdNRuCCdXZbgmwVd6xfUeHkkM= -github.com/aws/aws-sdk-go-v2/service/bedrock v1.22.4 h1:R0Tw4Xon1Lz8TGmeTi3D2Qi8Rn601myEGVFRw0Rp3aY= -github.com/aws/aws-sdk-go-v2/service/bedrock v1.22.4/go.mod h1:U9FfwVNRitPo23yN28RGlXRR1EgqcwnP0P2oTUHKCi8= -github.com/aws/aws-sdk-go-v2/service/bedrockagent v1.27.1 h1:Uq364zd0sw4Sa5DovhBKFn5oXqEws3KQkzMMnRl1N5k= -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/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= -github.com/aws/aws-sdk-go-v2/service/chimesdkmediapipelines v1.21.1/go.mod h1:PMNzhRaaNVe10wFPXZot2S/d7oWZ+daavUxPZoJwunc= -github.com/aws/aws-sdk-go-v2/service/chimesdkvoice v1.19.6 h1:gHAxXcatt7lzQmRGwnlHzdsDc0QF2nyasvmGziUDW0M= -github.com/aws/aws-sdk-go-v2/service/chimesdkvoice v1.19.6/go.mod h1:06jbpOTnxPCMbGCiQZKt4GaM+w1NxNXoCYINTK0ddXQ= -github.com/aws/aws-sdk-go-v2/service/cleanrooms v1.20.1 h1:kILYJ5OnV3XPABU3XPWhCl2Ruek1SLGh9A2zOPpIHtg= -github.com/aws/aws-sdk-go-v2/service/cleanrooms v1.20.1/go.mod h1:AVtuSdL0mtsEZhTJQiSVDe3UMneZUQvqN0fgHCNM0kE= -github.com/aws/aws-sdk-go-v2/service/cloud9 v1.28.6 h1:pKLIvUEFSgh7BICo0Vkk1LXkQFfgrDVrGvD+jJr9QOA= -github.com/aws/aws-sdk-go-v2/service/cloud9 v1.28.6/go.mod h1:wDc8fmV/V2cWH6OYILCV6eaQGNe38/glTCiffF61N30= -github.com/aws/aws-sdk-go-v2/service/cloudcontrol v1.23.1 h1:x4XUX/gadOFFsX5ndid0zKvf9Y33rlkbPmlmubLsfZA= -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/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/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/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= -github.com/aws/aws-sdk-go-v2/service/codebuild v1.49.1/go.mod h1:8dQzphxd2LV1cd7+OGI4GMFDxQ/VPHVjh6KxVd2SJbo= -github.com/aws/aws-sdk-go-v2/service/codecatalyst v1.17.6 h1:+1s3luItMYMd4tzBtvvDC92v1P9wnTMbxTlQsL++8eg= -github.com/aws/aws-sdk-go-v2/service/codecatalyst v1.17.6/go.mod h1:+uaY4HqZJC0cu7SHnzMV6k/aeazDS7TLfW3yjHI4eSs= -github.com/aws/aws-sdk-go-v2/service/codecommit v1.27.6 h1:RDxqhwbpubVwvFAsh2YYFlK3y9JPTE3sfnRhLk5Ngj4= -github.com/aws/aws-sdk-go-v2/service/codecommit v1.27.6/go.mod h1:Q77pLjwbFzluXn9ciIdzS4kwnU8OSOKskIMIjFP6oyY= -github.com/aws/aws-sdk-go-v2/service/codeconnections v1.5.6 h1:qrWm4wG/P/ocxqYW4rBKaMoO8vabqrr3I1Hbvu+mTkM= -github.com/aws/aws-sdk-go-v2/service/codeconnections v1.5.6/go.mod h1:cx8mC1/hFSDeK6b40Kqga9vk2s2rkbf3MsErQLojnSA= -github.com/aws/aws-sdk-go-v2/service/codedeploy v1.29.6 h1:jwaOL3HT0yXEIs/2Bs35sx6DM6L755ppdW9DejXYYa4= -github.com/aws/aws-sdk-go-v2/service/codedeploy v1.29.6/go.mod h1:wOfD5vHIuGIe9aMoujgn0teM3fGOvtW1uxeZPs+MluI= -github.com/aws/aws-sdk-go-v2/service/codeguruprofiler v1.24.6 h1:NHA1oFgnYErN/m1U1KDFrM4pbL7EABumJU6hCL6FhIg= -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/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/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/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/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= -github.com/aws/aws-sdk-go-v2/service/customerprofiles v1.43.0/go.mod h1:NszyDJkn2aVBAt20J4jJou61HFdA8N6AFGNIBfsCmB4= -github.com/aws/aws-sdk-go-v2/service/databasemigrationservice v1.44.4 h1:WK5CyygA6+yzm8Zlx4W5u9b06uepMDJz+Hahpdmg25k= -github.com/aws/aws-sdk-go-v2/service/databasemigrationservice v1.44.4/go.mod h1:7TP5GpEyyLYic8kVFHJu/OK0bk9X2uKcvPqLw90CMok= -github.com/aws/aws-sdk-go-v2/service/databrew v1.33.6 h1:yZtWiFez6yMalTG9Ouc0A8LQqGrFjgKYePl5rM27fQo= -github.com/aws/aws-sdk-go-v2/service/databrew v1.33.6/go.mod h1:FGU+VnezEhrhsfnxFJcJnTu0sDNowur5LFxIFsL7M7Q= -github.com/aws/aws-sdk-go-v2/service/dataexchange v1.33.4 h1:Gfr2MS/iQBluI3gGBTepfBc6lCcUPDVu9SHBAcImPos= -github.com/aws/aws-sdk-go-v2/service/dataexchange v1.33.4/go.mod h1:npMegXgBSU5uTIVtczlAFOvKcy9f5x4uGpbLsAHqelU= -github.com/aws/aws-sdk-go-v2/service/datapipeline v1.25.6 h1:dH4IwB5kATH1fb0PV0Vw58CDKgKQFlE24qwd1j8Ruj4= -github.com/aws/aws-sdk-go-v2/service/datapipeline v1.25.6/go.mod h1:1v3H40k29g47RMmzLpeN8CQahznbkrrchPf7WYp7PyE= -github.com/aws/aws-sdk-go-v2/service/datasync v1.43.4 h1:rc3uPdxBtqgt3ELUzTP7qRV8M4MhWboC4wsvPCPGK3M= -github.com/aws/aws-sdk-go-v2/service/datasync v1.43.4/go.mod h1:+goO0fVAf3qrLIIlnp0nITiG26fGtkfKakRXkgJ9u14= -github.com/aws/aws-sdk-go-v2/service/datazone v1.24.0 h1:1vQZdB56DusyU/ZUVaJ6EOa3m/J5eOYQ9xnKE5huD5Q= -github.com/aws/aws-sdk-go-v2/service/datazone v1.24.0/go.mod h1:2f82lBtHfBrKP/pAn93z9QTta5TrO7pt60KR7I2ipnQ= -github.com/aws/aws-sdk-go-v2/service/dax v1.23.6 h1:tKtDYH6bWtGCD/2lWSh/nTDCSC13fj9Ta4opiJec4rs= -github.com/aws/aws-sdk-go-v2/service/dax v1.23.6/go.mod h1:UacIy1kHz1XwzQksauluq9Ikc/54pzzZalbGMs87T0A= -github.com/aws/aws-sdk-go-v2/service/detective v1.31.6 h1:Y8GzDptm2EHuqDCI5We0ZJoxnIJ07bMgH02JOk8/4DA= -github.com/aws/aws-sdk-go-v2/service/detective v1.31.6/go.mod h1:FjvuK1A2czZ+8xeIXDiXntztVg49AxwkSmCnTAmrqqw= -github.com/aws/aws-sdk-go-v2/service/devicefarm v1.28.6 h1:LMO26c9BpvBJU7TjkIOmeA0UnuVz9VEJGVKJUl/B6Ts= -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/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/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= -github.com/aws/aws-sdk-go-v2/service/docdbelastic v1.14.3/go.mod h1:TR7OBxz2KVqaU7utIGP4TjVZmIodSLNQyl3IcbiDi5Q= -github.com/aws/aws-sdk-go-v2/service/drs v1.30.6 h1:gRx0PWMok7r3zmoiwdFzYRyJwp2R2gzuuoFGVxQVSFs= -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/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= -github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.27.6/go.mod h1:qoPi18scDl8uM9o+tHi77043RLv2WIIFvVHcF1RT8Yk= -github.com/aws/aws-sdk-go-v2/service/ecs v1.52.0 h1:7/vgFWplkusJN/m+3QOa+W9FNRqa8ujMPNmdufRaJpg= -github.com/aws/aws-sdk-go-v2/service/ecs v1.52.0/go.mod h1:dPTOvmjJQ1T7Q+2+Xs2KSPrMvx+p0rpyV+HsQVnUK4o= -github.com/aws/aws-sdk-go-v2/service/efs v1.34.0 h1:0VpBMWwpq5UuhneIWO19+/Mp5DmFwQIEAoC0LqFCYdM= -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/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/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/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= -github.com/aws/aws-sdk-go-v2/service/emrserverless v1.26.6/go.mod h1:xfBpOsT/7QZnOPGQmaNxW99mqJG8Ya02kmvUcwOYiGk= -github.com/aws/aws-sdk-go-v2/service/eventbridge v1.35.6 h1:LLUzdN3H7EEmpRjkJDpMGdbimAPTg6+3fFvJCDpjcrQ= -github.com/aws/aws-sdk-go-v2/service/eventbridge v1.35.6/go.mod h1:njIZoyz4eQquthx3TH9aIz5svTr55u/6+agentCxFC0= -github.com/aws/aws-sdk-go-v2/service/evidently v1.23.6 h1:dVG09QDQUUvWW16V1nbRrYLnTN6K0DukfN6D2cFn9jE= -github.com/aws/aws-sdk-go-v2/service/evidently v1.23.6/go.mod h1:KL+GoKHIcOl97tHqKuL39pAjTQ6+cjifp1Y4Z4fagM4= -github.com/aws/aws-sdk-go-v2/service/finspace v1.28.6 h1:DMzWUq6cdH+I03X8Bn1UATTt0MFnhsSkR6kOsN5pcFo= -github.com/aws/aws-sdk-go-v2/service/finspace v1.28.6/go.mod h1:5SpnpHrkr9dXBugT+Dv/X+X57K88XC5MtYDK4WDf6a8= -github.com/aws/aws-sdk-go-v2/service/firehose v1.35.1 h1:yA6/HoFnFrPhE1nMO3LzsgKIT/99NDWoX5Xzqnqhpyg= -github.com/aws/aws-sdk-go-v2/service/firehose v1.35.1/go.mod h1:TSAFnwAC+DYOJX5JehOV+wJiAhpluwa+yHDxDmWI4P0= -github.com/aws/aws-sdk-go-v2/service/fis v1.31.1 h1:bllAkyDhLHCyJFn/nP+b49RRL8Hh/w5Fj4TW8rZhKrw= -github.com/aws/aws-sdk-go-v2/service/fis v1.31.1/go.mod h1:IxUBo1RMVFX9fbptkBFSnqaAh4x5SXdTDmLLsyzYPC4= -github.com/aws/aws-sdk-go-v2/service/fms v1.38.4 h1:cEOnWR/0wXpeQ/UR7ekpfdi3E0tn5GUhPoJWoaPid+Y= -github.com/aws/aws-sdk-go-v2/service/fms v1.38.4/go.mod h1:sdb9Vy6D39p4Vye95Bz5tRQc6IPenFmcT8+wsketxUw= -github.com/aws/aws-sdk-go-v2/service/fsx v1.49.6 h1:dgI1m+My7Se4SpgSLJ3oIaNQDvwTHUNdjLjq7vPgJjo= -github.com/aws/aws-sdk-go-v2/service/fsx v1.49.6/go.mod h1:MV66g+vJERlW3JmnDD0fGwJHkCQ13iAhACBUUsG9Fbg= -github.com/aws/aws-sdk-go-v2/service/gamelift v1.37.1 h1:knLg8HvuZ0aMqX4YlH2uPSlScqcj9xFejdn6KUCvpig= -github.com/aws/aws-sdk-go-v2/service/gamelift v1.37.1/go.mod h1:yfH6QVHv+ST1elyWtd4lj9V7Uw+QMjVROA7/gjrhNCM= -github.com/aws/aws-sdk-go-v2/service/glacier v1.26.6 h1:Yb4du9dQRtexyb3AsAnH/soJOYdULLsjCIzIYSi2KFk= -github.com/aws/aws-sdk-go-v2/service/glacier v1.26.6/go.mod h1:mcndxNubKcVuK74+86W8BDJYhmWgfV/9/WO25Ofouuw= -github.com/aws/aws-sdk-go-v2/service/globalaccelerator v1.29.6 h1:p4aGf3B37+2c8Jqh9oukh2Aj2AMK8E0XRroDyLJ0jx8= -github.com/aws/aws-sdk-go-v2/service/globalaccelerator v1.29.6/go.mod h1:Au4Za2pi2wu/ib9eut/FRpmW4bqw/HuFpnlje/94Of4= -github.com/aws/aws-sdk-go-v2/service/glue v1.102.0 h1:D6OOWCPCSpjzwfya9hOgDQk3BNvgN1N8ie8bzszq3VU= -github.com/aws/aws-sdk-go-v2/service/glue v1.102.0/go.mod h1:TNh83y7HCK7s/ImCZkiJF/a5/25XZwkvGHtmvDM4y7I= -github.com/aws/aws-sdk-go-v2/service/grafana v1.26.6 h1:4HbrlCilE6Gfp/mzsm0QUZWrkOXnJhA6tANilm4bW5A= -github.com/aws/aws-sdk-go-v2/service/grafana v1.26.6/go.mod h1:HJ529PdQzuLBtEDDjLtpk9tUskaGduSfAeY2bQzSPi0= -github.com/aws/aws-sdk-go-v2/service/greengrass v1.27.6 h1:Jsv+CFWW/dC7Pnn8QyxfzyJkfQBt0sEFg+I+DQAxrB4= -github.com/aws/aws-sdk-go-v2/service/greengrass v1.27.6/go.mod h1:TPDOTBV37nVuKseCVfhtjXYFsesBQmhe/ap5HFKTUWc= -github.com/aws/aws-sdk-go-v2/service/groundstation v1.31.6 h1:mIzNjH67V9Nu0YaT8FMxe48i4da5etXCxr9YZbBc8os= -github.com/aws/aws-sdk-go-v2/service/groundstation v1.31.6/go.mod h1:FutbhbkJQBICQf1iATk3YM5/KpMCoGBwtIzrj4fpjN8= -github.com/aws/aws-sdk-go-v2/service/guardduty v1.51.2 h1:b7UFaMcKBI7L6dn0cIdti+JWo7tu/PBzSiPMxL5hG+0= -github.com/aws/aws-sdk-go-v2/service/guardduty v1.51.2/go.mod h1:Nt8fPu+TIY++o7jufOiHACxNFdgTNSL5yY9csYxIK3s= -github.com/aws/aws-sdk-go-v2/service/healthlake v1.28.6 h1:5ORoj9mfye3aGD2Q3bWqybeflWHK4MKd8YrVwy2lQGU= -github.com/aws/aws-sdk-go-v2/service/healthlake v1.28.6/go.mod h1:X3UjJJdBn2mecE1MqmLTjL83ueoiwBo8aWFCMk8HYbE= -github.com/aws/aws-sdk-go-v2/service/iam v1.38.1 h1:hfkzDZHBp9jAT4zcd5mtqckpU4E3Ax0LQaEWWk1VgN8= -github.com/aws/aws-sdk-go-v2/service/iam v1.38.1/go.mod h1:u36ahDtZcQHGmVm/r+0L1sfKX4fzLEMdCqiKRKkUMVM= -github.com/aws/aws-sdk-go-v2/service/identitystore v1.27.6 h1:K0vnb1HZx5Bzc4VP2Pyul6pKGOkmlOdLGLNag1H6tJ0= -github.com/aws/aws-sdk-go-v2/service/identitystore v1.27.6/go.mod h1:4biBEi9kbDSwayhZhLtGF6325lrEi3e+C9q+C0N5Jv0= -github.com/aws/aws-sdk-go-v2/service/imagebuilder v1.38.4 h1:aiUxEicGm5tUeTfhsay1FJXnKJnwVO7RPqSLL9ofmcI= -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/internal/v4a v1.3.25 h1:r67ps7oHCYnflpgDy2LZU0MAQtQbYIOqNNnqGO6xQkE= +github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.25/go.mod h1:GrGY+Q4fIokYLtjCVB/aFfCVL6hhGUFl8inD18fDalE= +github.com/aws/aws-sdk-go-v2/service/accessanalyzer v1.36.2 h1:9WvCTutkgDExBamb9UZQ94oiCjJwXUhhtoBH3NIs0Iw= +github.com/aws/aws-sdk-go-v2/service/accessanalyzer v1.36.2/go.mod h1:9QmJU2Zam+wUZe8etjM4VY9NlC0WeMFLIvtUIOIko4U= +github.com/aws/aws-sdk-go-v2/service/account v1.21.7 h1:TljZChU1jYlIrVC6GpS4t5CCuTPVbxkHP9pOv9yKz+o= +github.com/aws/aws-sdk-go-v2/service/account v1.21.7/go.mod h1:/OutbIU/lpaxPpjAeKIE6lOfy9bPOZi1xMzSllMubKw= +github.com/aws/aws-sdk-go-v2/service/acm v1.30.7 h1:rv8PVsnReslpDVVByyuX4LzfA7j0+Jcj6Gili1dBEd0= +github.com/aws/aws-sdk-go-v2/service/acm v1.30.7/go.mod h1:ns7D5/uAekEaVLAIzzNrxVz/CsBCCwNfSdi46PEaGhI= +github.com/aws/aws-sdk-go-v2/service/acmpca v1.37.8 h1:qcx0XpDUjTkwp89kt15m1iKorZ1BK1uzXFTT+1NvU0A= +github.com/aws/aws-sdk-go-v2/service/acmpca v1.37.8/go.mod h1:T44GdsVnipn1kFnmZbVqLhDNtl9rrWVBmjsuPIrRQzY= +github.com/aws/aws-sdk-go-v2/service/amp v1.30.4 h1:0ya3FPNzwsGD93yx7ag3l5sD6Kelb8qghRAUgRfB5G8= +github.com/aws/aws-sdk-go-v2/service/amp v1.30.4/go.mod h1:e3oL6s7I4YUSaRCpz4gSp1ujDmi+f0CwMbDjlRsad40= +github.com/aws/aws-sdk-go-v2/service/amplify v1.27.5 h1:W+P/AMT4p8I1EuP9BaRidIiJXWbUNpbsSb4uZwXah+Q= +github.com/aws/aws-sdk-go-v2/service/amplify v1.27.5/go.mod h1:2wrh0ye46s6rA3L1TKkvu4MEADM54tvnxcMkXVL4z5c= +github.com/aws/aws-sdk-go-v2/service/apigateway v1.28.1 h1:XBVNkd4B5uGC6RgJ+/4x/ZUuk7/6f/hQ8cvGRSxltBI= +github.com/aws/aws-sdk-go-v2/service/apigateway v1.28.1/go.mod h1:4cynmnoMmeiroN7OvI8upcQbvJ3Rfzd3j5hOthYKQnk= +github.com/aws/aws-sdk-go-v2/service/apigatewayv2 v1.24.7 h1:sDijLs7HLzhvxPWxODryESj4gMA8A8seQWhaUVZaPlE= +github.com/aws/aws-sdk-go-v2/service/apigatewayv2 v1.24.7/go.mod h1:5AN33eZ7xq2pxsvMJGgXmQA30PQGHOGOaHZf8Q7AaFw= +github.com/aws/aws-sdk-go-v2/service/appconfig v1.36.1 h1:I8nQw87FkrIlGbeXx3O7yFpn6a1wmcdEzDd3U6lCacM= +github.com/aws/aws-sdk-go-v2/service/appconfig v1.36.1/go.mod h1:pTisi6AYAEJXJpYnghBsl52D0U2Xu8/ZxnCsN5g8Fz0= +github.com/aws/aws-sdk-go-v2/service/appfabric v1.11.7 h1:rktzRP9bRlkjb9g5ndMnS6x8tUgc/rrrXyCCn3qHe4s= +github.com/aws/aws-sdk-go-v2/service/appfabric v1.11.7/go.mod h1:7UgJlroQG4RN5Klt8zwbZFvfGGV8zWvgf3BH+iJoRfY= +github.com/aws/aws-sdk-go-v2/service/appflow v1.45.8 h1:C4Ahu+vqQMgwcKfOaxdUgn0Tmz/yKl5lrk/Y9aGhRsc= +github.com/aws/aws-sdk-go-v2/service/appflow v1.45.8/go.mod h1:m9n55ulVW0oYNVhczguWuVkoaWky0znzYCn1Is2Q4l0= +github.com/aws/aws-sdk-go-v2/service/appintegrations v1.30.7 h1:LrYSdKQMAAJs8XpSfNba7Goc0m0hOEGWoNvrOWFasEw= +github.com/aws/aws-sdk-go-v2/service/appintegrations v1.30.7/go.mod h1:GiSlb1fm4OJ1foTOhXcDziKm2Xre4+bcG8AnQAhjUIM= +github.com/aws/aws-sdk-go-v2/service/applicationautoscaling v1.34.1 h1:8EwNbY+A/Q5myYggLJ7v9v9f00UuWoh9S04y5kre8UQ= +github.com/aws/aws-sdk-go-v2/service/applicationautoscaling v1.34.1/go.mod h1:2mMP2R86zLPAUz0TpJdsKW8XawHgs9Nk97fYJomO3o8= +github.com/aws/aws-sdk-go-v2/service/applicationinsights v1.29.5 h1:dxVAH0LY3XmilHw4O4eB+kYKTu3SqujSYQlyKA6PqkM= +github.com/aws/aws-sdk-go-v2/service/applicationinsights v1.29.5/go.mod h1:A+d2JfMEfDdWWMz3OfbK0IKtWjqoLaKlHt3ifC9pd04= +github.com/aws/aws-sdk-go-v2/service/applicationsignals v1.7.2 h1:QL9Ak3hh3POYTr/DgOe4pn0naYOnARZ9Gy9/uIzW+Oo= +github.com/aws/aws-sdk-go-v2/service/applicationsignals v1.7.2/go.mod h1:a+yECc5pms9wxGPwIKHOhnmDWcHJqAUmTIZR76IhMaA= +github.com/aws/aws-sdk-go-v2/service/appmesh v1.29.7 h1:sycevRiEU3w7mUO+aVCAFgQw7VxXmzGj+13evW/l+Hk= +github.com/aws/aws-sdk-go-v2/service/appmesh v1.29.7/go.mod h1:7/hVyfkxKjfuBu0Z+Ggh9n9VWNEkxPVFagCJZZYGV0U= +github.com/aws/aws-sdk-go-v2/service/apprunner v1.32.7 h1:VlcGnZMtvyxACAPxWPPyWBIRmaqQ62vyf/dTWKyHC84= +github.com/aws/aws-sdk-go-v2/service/apprunner v1.32.7/go.mod h1:/lor1ybmbMZb2It700RSirZR8uIXzt6/EVv9b9qX3r0= +github.com/aws/aws-sdk-go-v2/service/appstream v1.41.7 h1:9KTwRIeh67p4JjOtkAiUQ6Qbzui3igoFyCFGudRR9BY= +github.com/aws/aws-sdk-go-v2/service/appstream v1.41.7/go.mod h1:YC50kSYeBhmjzeJKNf4CB85KN9Gdy+RKhtt4MvMx4ro= +github.com/aws/aws-sdk-go-v2/service/appsync v1.40.1 h1:+fJ03y/PaSNBw6ZrJZFnyix+hTOagn1/+iRLQbW/Crg= +github.com/aws/aws-sdk-go-v2/service/appsync v1.40.1/go.mod h1:YN/LhOApnQGAgb4AljjHkcpl+OmaLrkD6cGPL1dkajI= +github.com/aws/aws-sdk-go-v2/service/athena v1.49.0 h1:D+iatX9gV6gCuNd6BnUkfwfZJw/cXlEk+LwwDdSMdtw= +github.com/aws/aws-sdk-go-v2/service/athena v1.49.0/go.mod h1:27ljwDsnZvfrZKsLzWD4WFjI4OZutEFIjvVtYfj9gHc= +github.com/aws/aws-sdk-go-v2/service/auditmanager v1.37.7 h1:THLQzF9JZZthlhdf8i+rDCqO8K7sk2xmsgl/by0/4B4= +github.com/aws/aws-sdk-go-v2/service/auditmanager v1.37.7/go.mod h1:UZOdtpOTwIj4yHbPVNxfayWIlQp4c3Xht/7sDaFzZs0= +github.com/aws/aws-sdk-go-v2/service/autoscaling v1.51.1 h1:XFZsqNpwwi/D8nFI/tdUQn1QW1BTVcuQH382RNUXojE= +github.com/aws/aws-sdk-go-v2/service/autoscaling v1.51.1/go.mod h1:r+eOyjSMo2zY+j6zEEaHjb7nU74oyva1r2/wFqDkPg4= +github.com/aws/aws-sdk-go-v2/service/autoscalingplans v1.24.7 h1:7zci6q+hPs522cfe75lHUw9LnJ/Ha6eeE977IpBiRwg= +github.com/aws/aws-sdk-go-v2/service/autoscalingplans v1.24.7/go.mod h1:J/X0cqccGAPGPtWCWi5Juw2sSkmUN7mKnBKbbyyjzwc= +github.com/aws/aws-sdk-go-v2/service/backup v1.39.8 h1:ChfrtARE1PhWRW+EZ89IywUUoiPf4f9HYFEahbDaKxo= +github.com/aws/aws-sdk-go-v2/service/backup v1.39.8/go.mod h1:YgtsGOZJNjMAnSov/HRVspxzEUjjszZi3qXo90gzNU8= +github.com/aws/aws-sdk-go-v2/service/batch v1.48.2 h1:/BSZk0ywzZD4KKRt4qm33fIcXQztMSr8zpkr6EfrACs= +github.com/aws/aws-sdk-go-v2/service/batch v1.48.2/go.mod h1:5pxmENM3nBEAr2XrSs6c89Iwl6wAJk0/pkyFd3Gmav0= +github.com/aws/aws-sdk-go-v2/service/bcmdataexports v1.7.7 h1:zrQ6zDzE5ohrLEpwaXGoF0PoBiSBo0oW6uW72iyF0ic= +github.com/aws/aws-sdk-go-v2/service/bcmdataexports v1.7.7/go.mod h1:J+Zv3ekV1h3RyqVlxi1hCliEuI1SwugGAnmiOfwzNco= +github.com/aws/aws-sdk-go-v2/service/bedrock v1.24.0 h1:WyGNIAmXDXp59IAVi/US8K/rV6kA5F0wWg5he/BLx0M= +github.com/aws/aws-sdk-go-v2/service/bedrock v1.24.0/go.mod h1:BKSewSMuaeUidKqXArDlT06PWK/PP3wsgLWTXKeKgQw= +github.com/aws/aws-sdk-go-v2/service/bedrockagent v1.31.0 h1:Nm9+rGcx1CWDDbEiRcuQ4kwyFS24ajcxNn8ca/aqAw0= +github.com/aws/aws-sdk-go-v2/service/bedrockagent v1.31.0/go.mod h1:d+BIleA83BNMLQbwc1gYB/Kgrogwl4lzn2RN+XPIC0s= +github.com/aws/aws-sdk-go-v2/service/budgets v1.28.7 h1:MaBE1kMoZnJ7sxK7wtR7qVe4ggfMz9681DoQZtasgII= +github.com/aws/aws-sdk-go-v2/service/budgets v1.28.7/go.mod h1:jhUXdAWAOIKQReti3jcD8zaDjyayYBAuhmijh8+rYrk= +github.com/aws/aws-sdk-go-v2/service/chatbot v1.9.1 h1:g+Xnw4sHm/T5xDTlNvPBeM6gAAQSzj7EwOI0vBXscSE= +github.com/aws/aws-sdk-go-v2/service/chatbot v1.9.1/go.mod h1:lpKKa8zv8/MTIHRh1JB24Y+R/RXLE6BWxnFCQ/b0W2M= +github.com/aws/aws-sdk-go-v2/service/chime v1.34.7 h1:iHBLzHxZF2vRCQzm9fKp7yA6X2nnUzqeVF3TY60tqhQ= +github.com/aws/aws-sdk-go-v2/service/chime v1.34.7/go.mod h1:NFTd15WIZy1RPTOSZEsWalWG7PuteqwXLfcy/YQocY4= +github.com/aws/aws-sdk-go-v2/service/chimesdkmediapipelines v1.21.2 h1:r4NLm/DDTGnpo2MMXIv/yox2ckrm1xugN41SH/gBrIQ= +github.com/aws/aws-sdk-go-v2/service/chimesdkmediapipelines v1.21.2/go.mod h1:NVs+MoGw0vt6s6g0hulXyy9IMRxTlfPrsral5630V9E= +github.com/aws/aws-sdk-go-v2/service/chimesdkvoice v1.20.0 h1:IwQ9oL4a8ZhJq/tgfPd5r17wxe7V9Sa6JhhwfCkS0D0= +github.com/aws/aws-sdk-go-v2/service/chimesdkvoice v1.20.0/go.mod h1:U8vcvSwicq+2VDdkPTP8UYn5IV8YFWPPi8CoMI786w8= +github.com/aws/aws-sdk-go-v2/service/cleanrooms v1.21.0 h1:XlyfMge7JCGYR9wJoihE0aSx1mmlDdmeDg8l/SmCXPQ= +github.com/aws/aws-sdk-go-v2/service/cleanrooms v1.21.0/go.mod h1:F/4OPOJP5yt+EsQXiOyMq1CkV00LZImdgoHdRWd0nQA= +github.com/aws/aws-sdk-go-v2/service/cloud9 v1.28.7 h1:gcTAeqesSwreH8YtKudbKx3FrliadMbVJOdmHssqEDc= +github.com/aws/aws-sdk-go-v2/service/cloud9 v1.28.7/go.mod h1:l1sYjOTxY/lcqFT56ruW2YoC1k2in//ko50kBxwpYII= +github.com/aws/aws-sdk-go-v2/service/cloudcontrol v1.23.2 h1:xUD/6aoYwDsMmVl6J6Umkgk+QlkzDm1N0w2BukgXTMI= +github.com/aws/aws-sdk-go-v2/service/cloudcontrol v1.23.2/go.mod h1:NQSFnuiS7N4Leys2Mx/N0UMIWkMsXHBs3HEI4ElCSV8= +github.com/aws/aws-sdk-go-v2/service/cloudformation v1.56.1 h1:EqRhsrEoXFFyzcNuqQCF1g9rG9EA8K2EiUj6/eWClgk= +github.com/aws/aws-sdk-go-v2/service/cloudformation v1.56.1/go.mod h1:75rrfzgrN4Ol0m9Xo4+8S09KBoGAd1t6eafFHMt5wDI= +github.com/aws/aws-sdk-go-v2/service/cloudfront v1.43.1 h1:riUb1ppQ6Qs0+Yz0bttwlwPIl0AdBAcJdtuKLzsbaI4= +github.com/aws/aws-sdk-go-v2/service/cloudfront v1.43.1/go.mod h1:fXHLupAMPNGhRAW7e2kS0aoDY/KsQ9GHu80GSK70cRs= +github.com/aws/aws-sdk-go-v2/service/cloudfrontkeyvaluestore v1.8.7 h1:+7Ru1G2Y17qgRiUAcBxc9enlf0TxustitfBqonrWcBc= +github.com/aws/aws-sdk-go-v2/service/cloudfrontkeyvaluestore v1.8.7/go.mod h1:Di9EQnngIp8gHvxf+GkB14uEbC5UcSxsNOOnSWMsfjQ= +github.com/aws/aws-sdk-go-v2/service/cloudhsmv2 v1.27.8 h1:3WVykb3vPvTQ7Ht1LgUzcqlSuZVhV6hntx9lwhvaJ3Y= +github.com/aws/aws-sdk-go-v2/service/cloudhsmv2 v1.27.8/go.mod h1:l9Gu/zoAKx1ww1ZtRlSj8qP80AV742bDP337N5NkY3o= +github.com/aws/aws-sdk-go-v2/service/cloudsearch v1.26.6 h1:m1CAIBZzVi05OAocQs7SzY3gLsGGNBmg+qpHA7HQteU= +github.com/aws/aws-sdk-go-v2/service/cloudsearch v1.26.6/go.mod h1:4ogUNAMmF9rtIYGYnFm21WXc/8+lcAuoNYUkS534MfI= +github.com/aws/aws-sdk-go-v2/service/cloudtrail v1.46.2 h1:DrN2vg75JseLCepYjMVav43e+v7+AhArtWlm2F0OJ6Y= +github.com/aws/aws-sdk-go-v2/service/cloudtrail v1.46.2/go.mod h1:WcTfALKgqv+VCMRCLtG4155sAwcfdYhFADc/yDJgSlc= +github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.43.3 h1:nQLG9irjDGUFXVPDHzjCGEEwh0hZ6BcxTvHOod1YsP4= +github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.43.3/go.mod h1:URs8sqsyaxiAZkKP6tOEmhcs9j2ynFIomqOKY/CAHJc= +github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.45.0 h1:j9rGKWaYglZpf9KbJCQVM/L85Y4UdGMgK80A1OddR24= +github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.45.0/go.mod h1:LZafBHU62ByizrdhNLMnzWGsUX+abAW4q35PN+FOj+A= +github.com/aws/aws-sdk-go-v2/service/codeartifact v1.33.7 h1:5us9BU1TnHeSqgQEiQCH9qpDbwGEtYAz6fhSL0jiAyA= +github.com/aws/aws-sdk-go-v2/service/codeartifact v1.33.7/go.mod h1:k6IbvJ+UeAR3ueA7so+YwS+sPoHa99ECNQvbtwt/pxk= +github.com/aws/aws-sdk-go-v2/service/codebuild v1.49.2 h1:hQB9ib1JAhjLodnSczNfG5XDw1bWZU0wBwW0FjDs2/4= +github.com/aws/aws-sdk-go-v2/service/codebuild v1.49.2/go.mod h1:dOgg7MoOJYIvQkUkZRrKuO/3YdAbO3+fIJlICyDc3dc= +github.com/aws/aws-sdk-go-v2/service/codecatalyst v1.17.7 h1:FgYA/R4VzjeXwimhbQGJhuyaxV/ORz1LVXUkn4t++Nw= +github.com/aws/aws-sdk-go-v2/service/codecatalyst v1.17.7/go.mod h1:1V3pxyJ9hgz8HDju0oDV7lY+pzM/rERREZh7Kd6W3Yo= +github.com/aws/aws-sdk-go-v2/service/codecommit v1.27.7 h1:8IZ97GQsCxQ3n0yQ+0QAMMtt2YpOeig6W5Q+hIBCfjE= +github.com/aws/aws-sdk-go-v2/service/codecommit v1.27.7/go.mod h1:7thXvCQtqWJhO9u+40n1lA89PhEA7069UVxShNyL5N0= +github.com/aws/aws-sdk-go-v2/service/codeconnections v1.5.7 h1:j2T2/23Cyo+5cOl8iXOL9Tau780sXBriOhWw/N4ex20= +github.com/aws/aws-sdk-go-v2/service/codeconnections v1.5.7/go.mod h1:GmV2UoFy3kQRz44DlCYZUu7/m1tT8K+6TGtqkBQWxHY= +github.com/aws/aws-sdk-go-v2/service/codedeploy v1.29.7 h1:WPhY1/OCDi8AteUyBZj7zvVczNZ4O6T5/HtSxBWh3nE= +github.com/aws/aws-sdk-go-v2/service/codedeploy v1.29.7/go.mod h1:0Xfzxc16U/0QopHTRY6P7MapMxHqd8RkJOt27ryEV+g= +github.com/aws/aws-sdk-go-v2/service/codeguruprofiler v1.24.7 h1:5FCm30+pN7ZXwLohD5e2ec/rGPeuTz7l5cCFMFZfVwY= +github.com/aws/aws-sdk-go-v2/service/codeguruprofiler v1.24.7/go.mod h1:miiswEyJjWFb8lIQgqA067DXBnq5mmTk2eIgKkhg9Yg= +github.com/aws/aws-sdk-go-v2/service/codegurureviewer v1.29.7 h1:x7Wiwow6bm0ICkR9akuYUkzfdpZrDx5wvkY64hZ0nT8= +github.com/aws/aws-sdk-go-v2/service/codegurureviewer v1.29.7/go.mod h1:91nPYuyG0FyzUG6sKqXqU6wJyeysU/9H/ug+tbQR1jc= +github.com/aws/aws-sdk-go-v2/service/codepipeline v1.37.1 h1:+PBCTujGgVyFHSFR7VKGBuwzHZCd6aolUCXO98Xd3yw= +github.com/aws/aws-sdk-go-v2/service/codepipeline v1.37.1/go.mod h1:fLGjNeyN4aduz+LrpWje0ufvfadQnwZof389MwTeFtI= +github.com/aws/aws-sdk-go-v2/service/codestarconnections v1.29.7 h1:5bDPXYGWnZ9nY/N7tY9cSO4hMadCFvZqDwRIs/4ik7w= +github.com/aws/aws-sdk-go-v2/service/codestarconnections v1.29.7/go.mod h1:K9YY4T95yT7BVqHvDjSo8h9yxftqPvWYDFfuCxtHF/g= +github.com/aws/aws-sdk-go-v2/service/codestarnotifications v1.26.7 h1:12UdLytB/DylaodJgGl0CUBT7Zz2xRskdlrHst29JVE= +github.com/aws/aws-sdk-go-v2/service/codestarnotifications v1.26.7/go.mod h1:yDbe8Oh55gPuNdJzsv3CFbHV7d5wvUoLkFhql0p+y1U= +github.com/aws/aws-sdk-go-v2/service/cognitoidentity v1.27.7 h1:Mr0Fl/TJ1ZtkTOtX3wpgzqL6ZI+WOTnxHF0X0OlZyXo= +github.com/aws/aws-sdk-go-v2/service/cognitoidentity v1.27.7/go.mod h1:eVAaMRWHgjdGuTJCjlmcwYleskahesLPrGFV4MpQYvA= +github.com/aws/aws-sdk-go-v2/service/cognitoidentityprovider v1.47.1 h1:isjmZUmhAMzCLs38LnWVIKqWRSkItqZVGpdJowlmV/Y= +github.com/aws/aws-sdk-go-v2/service/cognitoidentityprovider v1.47.1/go.mod h1:U+GnB0KkXI5SgVMzW2J1FHMGbAiObr1XaIGZSMejLlI= +github.com/aws/aws-sdk-go-v2/service/comprehend v1.35.7 h1:z6WD4P7bvSJNlmNVDsfNP/e5o0Zmbz9oM2wOgFWCHRA= +github.com/aws/aws-sdk-go-v2/service/comprehend v1.35.7/go.mod h1:M+Z8mhHoSWbr3Q1V8ZaINLLj0p1WGYWjCv/kO4IgUVw= +github.com/aws/aws-sdk-go-v2/service/computeoptimizer v1.40.1 h1:iH/z1Q7WYbT2MoTkEIMvR32Ip+FFRuD74EKXUqYLP+k= +github.com/aws/aws-sdk-go-v2/service/computeoptimizer v1.40.1/go.mod h1:Epb43KiHofSehPHq6PEQZ07hcl/Euv4vUi7kEcC7J7I= +github.com/aws/aws-sdk-go-v2/service/configservice v1.51.1 h1:zA4KArT5FZ4ypJc8X+7MJNN3iv74K8ygmFhci64M4YI= +github.com/aws/aws-sdk-go-v2/service/configservice v1.51.1/go.mod h1:2fOznUkaoZ2EtJimN0zizQRxQmkndSJz/SSd2x0goKo= +github.com/aws/aws-sdk-go-v2/service/connect v1.119.0 h1:uZ2hecASZoYuuGLHa252ss5SSbFYEhcS/SSWUa/u9kE= +github.com/aws/aws-sdk-go-v2/service/connect v1.119.0/go.mod h1:tuGtOUYMxcOObTcKDHKpzTG9EvjfXjOIEC74a6meGRk= +github.com/aws/aws-sdk-go-v2/service/connectcases v1.21.7 h1:uWiDzkr4L/KMlftI2OqmELmsv0ZGxeyi3YAo266wJzs= +github.com/aws/aws-sdk-go-v2/service/connectcases v1.21.7/go.mod h1:/FZ+YQmJpAdZPR4Z1tA1mIxA/SmLmUlgrn3sZOAmnfQ= +github.com/aws/aws-sdk-go-v2/service/controltower v1.20.1 h1:fpqsKm/4mA+oOn2IM62syUhcVZMU3Gc7tl8HTd4Ul+k= +github.com/aws/aws-sdk-go-v2/service/controltower v1.20.1/go.mod h1:zVh69cAM8AHhBlu/eP9OSBCRbojNw++iEHx0+wgBojI= +github.com/aws/aws-sdk-go-v2/service/costandusagereportservice v1.28.7 h1:8iIE0CQ6ZWC11vSLJf+M4gPgaiP+qxQ3haPV7KhGZTE= +github.com/aws/aws-sdk-go-v2/service/costandusagereportservice v1.28.7/go.mod h1:guVPkA6zDaG1wnh0Od9xyPb/6lUijf2zaHi4tTxW8Do= +github.com/aws/aws-sdk-go-v2/service/costexplorer v1.45.1 h1:2aaEZa6CBfsEebfn3jxwnIDGbSAwZnqIsEC5KF89X2w= +github.com/aws/aws-sdk-go-v2/service/costexplorer v1.45.1/go.mod h1:RboWadEsqV6Hw/OOyyu8IP+kdz0DASutt3H4ezBxSIk= +github.com/aws/aws-sdk-go-v2/service/costoptimizationhub v1.11.1 h1:r1LakPxgYvob4eOY0rTjgYuahwFhVgx0txkSHpnyxFw= +github.com/aws/aws-sdk-go-v2/service/costoptimizationhub v1.11.1/go.mod h1:agAlqygpDyX9paflw12sVF0sGGzAk6Ed5plVQgOqJRk= +github.com/aws/aws-sdk-go-v2/service/customerprofiles v1.44.0 h1:Wkf9S+n02aTZ8pQsp+nBRRVFdodbHG7V5HWqwYQWm/Q= +github.com/aws/aws-sdk-go-v2/service/customerprofiles v1.44.0/go.mod h1:yresrCHgaNcKcF7cLJ6emqK9eb05B1Ik2KvDMLbncU8= +github.com/aws/aws-sdk-go-v2/service/databasemigrationservice v1.44.5 h1:KmcRuMU/pSZy/bhnZ0nTGeNXhvBO0cvXkXduq3E5mAQ= +github.com/aws/aws-sdk-go-v2/service/databasemigrationservice v1.44.5/go.mod h1:4O6knGhxKpEu9ILt1+PGSN/LVWzLa4hdyUdPfjgFTao= +github.com/aws/aws-sdk-go-v2/service/databrew v1.33.7 h1:kaYiuNxHzwDMwsqM766yy0cp8ZVldOTwJhOeR0MINU8= +github.com/aws/aws-sdk-go-v2/service/databrew v1.33.7/go.mod h1:Gu2mR/aUZzdmnNORl8GbAN6xDsPO/t9KNG+B99SNMIk= +github.com/aws/aws-sdk-go-v2/service/dataexchange v1.33.5 h1:X62garDt07bE4Ojd+qO6MTlyMC/wYPw6Sg0QkSfNgXs= +github.com/aws/aws-sdk-go-v2/service/dataexchange v1.33.5/go.mod h1:UJZLGoXBQs6AukctWkOWimAQh6wloVGq6LOTyg/ALJs= +github.com/aws/aws-sdk-go-v2/service/datapipeline v1.25.7 h1:b2xXuJ5Yh5RuyOzs3vdBamLXVK5DIM5l819/pCxbC/M= +github.com/aws/aws-sdk-go-v2/service/datapipeline v1.25.7/go.mod h1:IH2WIe0ol0aDtM5a/+nP6UYRwrDXi/gwF+DA0nJK+i8= +github.com/aws/aws-sdk-go-v2/service/datasync v1.43.5 h1:4tdw3XO+pUwsjE6j2a4kWxZt80NtRxhOl9OnDtPS1fY= +github.com/aws/aws-sdk-go-v2/service/datasync v1.43.5/go.mod h1:ty1/xBfWRiv/C+e/cbTLkM4UGMfkOavUgp3daLZ2QKc= +github.com/aws/aws-sdk-go-v2/service/datazone v1.25.0 h1:L1IGMQ1T1eZtJLDA4n0SgTYFaHeJ7OJYqy00+JrEGoY= +github.com/aws/aws-sdk-go-v2/service/datazone v1.25.0/go.mod h1:2MCAq6PXnLOI6NVaUES50GGvOl1pa5l6N2XmRAVWWWw= +github.com/aws/aws-sdk-go-v2/service/dax v1.23.7 h1:hZg1sHhWXGZShzHGpwcaOT8HZfx26kkbRDNZgZda4xI= +github.com/aws/aws-sdk-go-v2/service/dax v1.23.7/go.mod h1:fYBjETTq8hZfirBEgXM1xIMy+tvCGYZTeWpjeKKp0bU= +github.com/aws/aws-sdk-go-v2/service/detective v1.31.7 h1:Pw3K9Leqg7SfEoPZek374z1pTJXSKbbS+zbGolMCsWI= +github.com/aws/aws-sdk-go-v2/service/detective v1.31.7/go.mod h1:ngskhJvBbS6oSmoGYyX6gzcoumPw+W5KIzbMVNBd8lQ= +github.com/aws/aws-sdk-go-v2/service/devicefarm v1.28.7 h1:oXxzZJw5Jc5rrbnSBYjC5EfQ3cik+ZzdjHIZYPQ2SeA= +github.com/aws/aws-sdk-go-v2/service/devicefarm v1.28.7/go.mod h1:RmmJpAmMnDSzrKzi29jEcnhy9d4xfjRJ368FEnhvCiE= +github.com/aws/aws-sdk-go-v2/service/devopsguru v1.34.7 h1:WrbyPtKCsyt0UcHzoF/5Kof6O3b4JkZgx5pAFrAe3Ps= +github.com/aws/aws-sdk-go-v2/service/devopsguru v1.34.7/go.mod h1:/pcwN9rb3n1thi1++LLQik7v48pXo7mcgh4baY5giPA= +github.com/aws/aws-sdk-go-v2/service/directconnect v1.30.1 h1:U2VtqwmOzP7sZYWmrnapl3j3KLxIntWyK0RU3uGBIPk= +github.com/aws/aws-sdk-go-v2/service/directconnect v1.30.1/go.mod h1:IVHMPfXzPHdq2JuZmnyreo2Dhhlu84Vel/tochYKgh8= +github.com/aws/aws-sdk-go-v2/service/directoryservice v1.30.8 h1:o3yUhrImWkJuI42DyTJu7REWf1+EUNlwfmLpo2yXzb0= +github.com/aws/aws-sdk-go-v2/service/directoryservice v1.30.8/go.mod h1:CxYqXrb08ko/psMpQ692AcEFXCuB+sVuWA2OZPB32t0= +github.com/aws/aws-sdk-go-v2/service/dlm v1.28.8 h1:Ez/XAeVo6h1hd4dk+r0JADhEqR3fhDPOIgzkWcbKPns= +github.com/aws/aws-sdk-go-v2/service/dlm v1.28.8/go.mod h1:SBPSK/ycAG4ET3JblaBP2Xt52RjNcg827EFgqN8W7AY= +github.com/aws/aws-sdk-go-v2/service/docdb v1.39.6 h1:N2iwdECLOQuClhv3XdTgGSY75N7QHF5nDekPGoFpRyY= +github.com/aws/aws-sdk-go-v2/service/docdb v1.39.6/go.mod h1:pa9tid/NTUDjayagl5El0KVg9IiV3hJEKVxFmvyc+J8= +github.com/aws/aws-sdk-go-v2/service/docdbelastic v1.14.4 h1:pT1NLJ04YA/05ZEbYBNhminfsbKBvHDlOh8ScoMZybA= +github.com/aws/aws-sdk-go-v2/service/docdbelastic v1.14.4/go.mod h1:ZupWmXwSQwiyktsk0/7C71pCkTn7dLgOw47TmpvtU1Q= +github.com/aws/aws-sdk-go-v2/service/drs v1.30.7 h1:0jUZJqidFnPF9LlSSsYD9yQcbIYLyNKjGa+gFPh9UlA= +github.com/aws/aws-sdk-go-v2/service/drs v1.30.7/go.mod h1:myL1h4VGyN3HU1B/7WBs2MsjKYX3FugwPJ09muIM8tE= +github.com/aws/aws-sdk-go-v2/service/dynamodb v1.38.0 h1:isKhHsjpQR3CypQJ4G1g8QWx7zNpiC/xKw1zjgJYVno= +github.com/aws/aws-sdk-go-v2/service/dynamodb v1.38.0/go.mod h1:xDvUyIkwBwNtVZJdHEwAuhFly3mezwdEWkbJ5oNYwIw= +github.com/aws/aws-sdk-go-v2/service/ec2 v1.195.0 h1:F3pFi50sK30DZ4IkkNpHwTLGeal5c3nlKuvTgv7xec4= +github.com/aws/aws-sdk-go-v2/service/ec2 v1.195.0/go.mod h1:00zqVNJFK6UASrTnuvjJHJuaqUdkVz5tW8Ip+VhzuNg= +github.com/aws/aws-sdk-go-v2/service/ecr v1.36.7 h1:R+5XKIJga2K9Dkj0/iQ6fD/MBGo02oxGGFTc512lK/Q= +github.com/aws/aws-sdk-go-v2/service/ecr v1.36.7/go.mod h1:fDPQV/6ONOQOjvtKhtypIy1wcGLcKYtoK/lvZ9fyDGQ= +github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.27.7 h1:eddAe+FnCCLECUKHUHLM9/iAlqDkyRjZk/84+eo0ToE= +github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.27.7/go.mod h1:lik3qEJ4TBnQrEKoZnFh8E8nn5oZSebnB/pydq8oQRQ= +github.com/aws/aws-sdk-go-v2/service/ecs v1.52.1 h1:85SGI/Db9I8PT2rvDLIRGxXdSzuyC4ZKDJwfzuv7WqQ= +github.com/aws/aws-sdk-go-v2/service/ecs v1.52.1/go.mod h1:Ghi1OWUv4+VMEULWiHsKH2gNA3KAcMoLWsvU0eRXvIA= +github.com/aws/aws-sdk-go-v2/service/efs v1.34.1 h1:y2BaF/VBEQM5Gi27ZOX1jSKRQLNifOfvegkqKKDPNEM= +github.com/aws/aws-sdk-go-v2/service/efs v1.34.1/go.mod h1:0c/j249PCFk5d/KHJsBIoCVdnZa9Or71J/fqC/n63BA= +github.com/aws/aws-sdk-go-v2/service/eks v1.53.0 h1:ACTxnLwL6YNmuYbxtp/VR3HGL9SWXU6VZkXPjWST9ZQ= +github.com/aws/aws-sdk-go-v2/service/eks v1.53.0/go.mod h1:ZzOjZXGGUQxOq+T3xmfPLKCZe4OaB5vm1LdGaC8IPn4= +github.com/aws/aws-sdk-go-v2/service/elasticache v1.44.1 h1:Dch9DIcyrHf6OTEhgzz7wIFKrHZAWfcZ1BCAlZtwpYo= +github.com/aws/aws-sdk-go-v2/service/elasticache v1.44.1/go.mod h1:gzplo968xB24VkeHC4wKfDbSERguKL2xKPL1Csd/mH4= +github.com/aws/aws-sdk-go-v2/service/elasticbeanstalk v1.28.7 h1:ieY1UqWTqjb83Rx1KiUO2pxFRdebobkKxHKDXIlIMhM= +github.com/aws/aws-sdk-go-v2/service/elasticbeanstalk v1.28.7/go.mod h1:U47A7lAuy5QYMD7lnRHA8WJCzV/W0POLZrUfjZ7HLro= +github.com/aws/aws-sdk-go-v2/service/elasticloadbalancing v1.28.6 h1:uQFPQNvc9hIaF7SyHQyg2vRtTcWONaa1LUUy+8LEzT8= +github.com/aws/aws-sdk-go-v2/service/elasticloadbalancing v1.28.6/go.mod h1:KkaWcwL6GJtS/TNn1+fVJPAR+6G7Bs7kEm8E3MlgbhQ= +github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.43.1 h1:L9Wt9zgtoYKIlaeFTy+EztGjL4oaXBBGtVXA+jaeYko= +github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.43.1/go.mod h1:yxzLdxt7bVGvIOPYIKFtiaJCJnx2ChlIIvlhW4QgI6M= +github.com/aws/aws-sdk-go-v2/service/elasticsearchservice v1.32.7 h1:LEo0xkW2yM3qVp8awRVG1lp1o/eR2o0CSR4h9CpB3us= +github.com/aws/aws-sdk-go-v2/service/elasticsearchservice v1.32.7/go.mod h1:cMruo7iPDprwYjl8CruF4+ht8gZnMJ8nmbVtgEEBu8M= +github.com/aws/aws-sdk-go-v2/service/elastictranscoder v1.27.7 h1:46x9DdOeOXKRKsDuwX22aHWg1Ow/32jkYyETzh/1zPQ= +github.com/aws/aws-sdk-go-v2/service/elastictranscoder v1.27.7/go.mod h1:sjP2fl/DXY5A/zWjkC414jwK5HXbydQ/ClUFIIzyNQA= +github.com/aws/aws-sdk-go-v2/service/emr v1.47.1 h1:7vjckLqynZflJB13FUfp1oWOvmAhkHFlA6WsnWSOcj0= +github.com/aws/aws-sdk-go-v2/service/emr v1.47.1/go.mod h1:Bae8t4Qt9r5jnngv9coFhXIHvFBCzlplxsqzm2pOLTs= +github.com/aws/aws-sdk-go-v2/service/emrcontainers v1.33.8 h1:tr2CAqQqNsOQqlQTNFJ0HW4o4A/era9mnq/9UnnVZng= +github.com/aws/aws-sdk-go-v2/service/emrcontainers v1.33.8/go.mod h1:BAo50mn0HxLW1w5N96Y3KluxU//eaQkpQv2O0LLPsw4= +github.com/aws/aws-sdk-go-v2/service/emrserverless v1.26.7 h1:9mmljOULuO7Q0foAf32HWwyhgbm+oLGeVwaGadp08lY= +github.com/aws/aws-sdk-go-v2/service/emrserverless v1.26.7/go.mod h1:HAlr1TP57Lswg9mwg+5SyoeDRMMj98chLBn9BRq/SmE= +github.com/aws/aws-sdk-go-v2/service/eventbridge v1.36.0 h1:UBCwgevYbPDbPb8LKyCmyBJ0Lk/gCPq4v85rZLe3vr4= +github.com/aws/aws-sdk-go-v2/service/eventbridge v1.36.0/go.mod h1:ve9wzd6ToYjkZrF0nesNJxy14kU77QjrH5Rixrr4NJY= +github.com/aws/aws-sdk-go-v2/service/evidently v1.23.7 h1:Y4KQFc4uXRZRUS0c8zauTd0t0vAMvQrAS06DqwyvWMg= +github.com/aws/aws-sdk-go-v2/service/evidently v1.23.7/go.mod h1:uvzDzbyHPk9ZoALbM6K0Yz+XiZuGHwHPNGXUdggdDu0= +github.com/aws/aws-sdk-go-v2/service/finspace v1.28.7 h1:4Figzs7CIQI08uPe8YDsECkDOJuR9N8eMz2Y8pccxc4= +github.com/aws/aws-sdk-go-v2/service/finspace v1.28.7/go.mod h1:a+RGo9o5n5Ts8kCQadDaq8Py9r6upMOFTzd5LV1xB2M= +github.com/aws/aws-sdk-go-v2/service/firehose v1.35.2 h1:A4rkZ/YpyzoU8f8LMe1rPXEvkzX5R/vdAxDwN6IGegs= +github.com/aws/aws-sdk-go-v2/service/firehose v1.35.2/go.mod h1:3Iza1sNaP9L+uKzhE08ilDSz8Dbu2tOL8e5exyj0etE= +github.com/aws/aws-sdk-go-v2/service/fis v1.31.2 h1:sgNhe7x7r4SffGdtbZteb0AHqCmw5ZHDIiyMCEl6BWs= +github.com/aws/aws-sdk-go-v2/service/fis v1.31.2/go.mod h1:MDGBuQGY9Y4zvv6Bi5tDF4Am+D7fRCvk+nUVndGr0l0= +github.com/aws/aws-sdk-go-v2/service/fms v1.38.5 h1:y41UPvSB231dfhAikN9xB2OSEGi8wdJgu7YvOHIT9IY= +github.com/aws/aws-sdk-go-v2/service/fms v1.38.5/go.mod h1:XnzEACT9GzGF0eSbBbkupYA74UtnF2b4mQN6In289KA= +github.com/aws/aws-sdk-go-v2/service/fsx v1.51.0 h1:n4ifwCx29MYkKBnojL/dkV1BzG5IJubsG4Z9A/bZB30= +github.com/aws/aws-sdk-go-v2/service/fsx v1.51.0/go.mod h1:5q7w7rvT828zgFuEod4Ijbw/yJ4Tn4vOPSSxbRT7Lws= +github.com/aws/aws-sdk-go-v2/service/gamelift v1.37.2 h1:OzCZubJlSiTU7ht4kGi+g5/RWjoutYyBYWPPaw6Mi5c= +github.com/aws/aws-sdk-go-v2/service/gamelift v1.37.2/go.mod h1:MOsRBRZZKsukJ3FetfsrX+QXgLd9k0q1wwIxJrh5qu0= +github.com/aws/aws-sdk-go-v2/service/glacier v1.26.7 h1:YTg3h8OBu4x3UCsu9vKz9VHqkfJQpY1fpwXye6GeoMQ= +github.com/aws/aws-sdk-go-v2/service/glacier v1.26.7/go.mod h1:w/cFjxbAVqNeAMQf31PI9KopvcFYoXdv0oG2Y9wU0uA= +github.com/aws/aws-sdk-go-v2/service/globalaccelerator v1.29.7 h1:TB66P1ES3DvjeR7YNTfO4/4ncB2MiFx0jzazbPisWkw= +github.com/aws/aws-sdk-go-v2/service/globalaccelerator v1.29.7/go.mod h1:geddg2iWFvxpfa7SIoJztvcdP/Prm1xk9W4+IUhGs7Y= +github.com/aws/aws-sdk-go-v2/service/glue v1.103.0 h1:aWkaWcO6AWKOZgnm45es3lL+jZ9tece2kfQ2Na4xoQs= +github.com/aws/aws-sdk-go-v2/service/glue v1.103.0/go.mod h1:ajiRue7mZ0vQjVHQkQG2KBaPHW8lL5GtvmjRTHWDaqk= +github.com/aws/aws-sdk-go-v2/service/grafana v1.26.7 h1:LVJA+YR5tHGo95E8P5W1GFnqrQIiOOagnYCGLExvVr0= +github.com/aws/aws-sdk-go-v2/service/grafana v1.26.7/go.mod h1:oEez2RtKrs3oJ6EgbLV0aBC5YJ/bPcMbkGNtsrW1L3Q= +github.com/aws/aws-sdk-go-v2/service/greengrass v1.27.7 h1:ZYq/OyCCRtS55xvC73U7klRHzWlV4AG0XvG8/jbBH1E= +github.com/aws/aws-sdk-go-v2/service/greengrass v1.27.7/go.mod h1:5iOqOd+Xi7tMBd+ucAb95owiLCYfeqxphlblc8EvCJg= +github.com/aws/aws-sdk-go-v2/service/groundstation v1.31.7 h1:6I620zcBLf791OnuF3hJGj2ft+qLvSsxRerminjOiGY= +github.com/aws/aws-sdk-go-v2/service/groundstation v1.31.7/go.mod h1:RPZk76+qDmck0IFAo+ZteQDOKRN3jST4mFsCeicDmOc= +github.com/aws/aws-sdk-go-v2/service/guardduty v1.52.0 h1:eU4Wt4yUuxVfETAfHqkIivj2fmaObjY+1rNRAVp63tQ= +github.com/aws/aws-sdk-go-v2/service/guardduty v1.52.0/go.mod h1:JMxJFzRnFpi77J2uktvtZh4lcGMJMC9HLE9Tqvf7atA= +github.com/aws/aws-sdk-go-v2/service/healthlake v1.28.7 h1:XuRWGRITuK7WMWKMkog/htDAt/t58wwdTK04oynlPL8= +github.com/aws/aws-sdk-go-v2/service/healthlake v1.28.7/go.mod h1:0Ef9fBviMZwF5p9vDNcmAB6hUst2h8aNRnkUhzoE3B0= +github.com/aws/aws-sdk-go-v2/service/iam v1.38.2 h1:8iFKuRj/FJipy/aDZ2lbq0DYuEHdrxp0qVsdi+ZEwnE= +github.com/aws/aws-sdk-go-v2/service/iam v1.38.2/go.mod h1:UBe4z0VZnbXGp6xaCW1ulE9pndjfpsnrU206rWZcR0Y= +github.com/aws/aws-sdk-go-v2/service/identitystore v1.27.7 h1:y0SG6t2s4xrOwjulhbGQ72ovA2MSlrb2UyAz+pA6n8g= +github.com/aws/aws-sdk-go-v2/service/identitystore v1.27.7/go.mod h1:cJpIii79T0fjc0awSqvU/1kltAjp8MCmMpkhbOUUiik= +github.com/aws/aws-sdk-go-v2/service/imagebuilder v1.39.0 h1:iYKAYIDogQjGVip912p9brH3/SUnY+uBAZyZi2TKz20= +github.com/aws/aws-sdk-go-v2/service/imagebuilder v1.39.0/go.mod h1:7s6ULWi0Vru/qbdXGU9P17fRG3J0pnCLdb0Q7ldlI2s= +github.com/aws/aws-sdk-go-v2/service/inspector v1.25.7 h1:LV32Xwxm9bvE4DnnUHyfDFrkL5sNGGnr/PWG8LMg2rA= +github.com/aws/aws-sdk-go-v2/service/inspector v1.25.7/go.mod h1:yK+nyYadIKeORBC4ctdbS87vSBa6AHzck8HHhQ6ZxX4= +github.com/aws/aws-sdk-go-v2/service/inspector2 v1.34.1 h1:dX68SHOUFejZMeg2HyHlyL1QFWR+p03S2y08EO2eTdY= +github.com/aws/aws-sdk-go-v2/service/inspector2 v1.34.1/go.mod h1:SDwBSilPek820sf6C7qttUzdiO/2FXPkj811SAbn0sY= 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= -github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.4.5/go.mod h1:DLWnfvIcm9IET/mmjdxeXbBKmTCm0ZB8p1za9BVteM8= -github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.10.5 h1:3Y457U2eGukmjYjeHG6kanZpDzJADa2m0ADqnuePYVQ= -github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.10.5/go.mod h1:CfwEHGkTjYZpkQ/5PvcbEtT7AJlG68KkEvmtwU8z3/U= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.5 h1:wtpJ4zcwrSbwhECWQoI/g6WM9zqCcSpHDJIWSbMLOu4= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.5/go.mod h1:qu/W9HXQbbQ4+1+JcZp0ZNPV31ym537ZJN+fiS7Ti8E= -github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.5 h1:P1doBzv5VEg1ONxnJss1Kh5ZG/ewoIE4MQtKKc6Crgg= -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/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= -github.com/aws/aws-sdk-go-v2/service/iotevents v1.27.6/go.mod h1:trsP/zg3CggG/NoU1ST6HWEHoZrc1MiQZOjpjmsAbeA= -github.com/aws/aws-sdk-go-v2/service/ivs v1.42.1 h1:9u32vlxg5QBHW3nbVJDRzcGCAW/V0yxBfgd93LazzQM= -github.com/aws/aws-sdk-go-v2/service/ivs v1.42.1/go.mod h1:i0WHmbRSq7fzU4s4jTS0npa50FFxMozzpXwv6mz9OFQ= -github.com/aws/aws-sdk-go-v2/service/ivschat v1.16.6 h1:5xHMX7m64RVGupzIV8fEQqEaosY6q2E+OH95s0ONMKU= -github.com/aws/aws-sdk-go-v2/service/ivschat v1.16.6/go.mod h1:dJPtJnW8PowNFXJzPltAM/DsQq27tH+zgNYdygfSZDs= -github.com/aws/aws-sdk-go-v2/service/kafka v1.38.6 h1:VwFMQWdGfkUW7xhkLWfqZXk1X3ufQ1JyrwA11Uaejo4= -github.com/aws/aws-sdk-go-v2/service/kafka v1.38.6/go.mod h1:zYy5wnwc0at4JSdXWyPQ9vthJyBRsi7fuAQZHdaWs5s= -github.com/aws/aws-sdk-go-v2/service/kafkaconnect v1.21.6 h1:OJOnpv9SKHd3BbAZ7ZOVfTwH9ZuZ8DudbZ1q7Y8zEik= -github.com/aws/aws-sdk-go-v2/service/kafkaconnect v1.21.6/go.mod h1:doTPYxH1R3obnAYNR7dNb+q5uaQrFGWsjrK7mmkhFOI= -github.com/aws/aws-sdk-go-v2/service/kendra v1.54.6 h1:tFPhqndyf8ylW0sHA4SKjxdey2Tc99avmKyI4KpWd/I= -github.com/aws/aws-sdk-go-v2/service/kendra v1.54.6/go.mod h1:PfMkacoIQi/2ICBRITqDcuMtssqRcOqnlH2La8wg280= -github.com/aws/aws-sdk-go-v2/service/keyspaces v1.16.0 h1:9VSwywZan7uSofA8lg87jXAvrXH4+QDTIF+7H/Q+SRw= -github.com/aws/aws-sdk-go-v2/service/keyspaces v1.16.0/go.mod h1:H8dcZZVknJUIM10091NgZ6lwrNFZRWamRA/a1JskMIE= -github.com/aws/aws-sdk-go-v2/service/kinesis v1.32.6 h1:yN7WEx9ksiP5+9zdKtoQYrUT51HvYw+EA1TXsElvMyk= -github.com/aws/aws-sdk-go-v2/service/kinesis v1.32.6/go.mod h1:j8MNat6qtGw5OoEACRbWtT8r5my4nRWfM/6Uk+NsuC4= -github.com/aws/aws-sdk-go-v2/service/kinesisanalytics v1.25.7 h1:Qbwhj/5W7R/gD/kLKercGtFzbLN68Dr/xVCU36RLnTg= -github.com/aws/aws-sdk-go-v2/service/kinesisanalytics v1.25.7/go.mod h1:9NP8BTAPCUTA2xq2KCPtpnDzVkrsS32y0AnJGQWetLg= -github.com/aws/aws-sdk-go-v2/service/kinesisanalyticsv2 v1.31.7 h1:26BO/wxoZ0UxhBnRXfoU58PHGyXAOHD6MGRdMw6bnXw= -github.com/aws/aws-sdk-go-v2/service/kinesisanalyticsv2 v1.31.7/go.mod h1:G655M6ZsQSwHjKDrSSYkzzNLNl0yd24TS/Nvte1Aq8M= -github.com/aws/aws-sdk-go-v2/service/kinesisvideo v1.27.6 h1:HBq8LJ3tFE44HRDDHFdfHT/12xHhlupUL3TMyz2HqR8= -github.com/aws/aws-sdk-go-v2/service/kinesisvideo v1.27.6/go.mod h1:RrmAKIuupEED9AZl0bikVGtyyDO3C93mA0nQwKaPOT0= -github.com/aws/aws-sdk-go-v2/service/kms v1.37.6 h1:CZImQdb1QbU9sGgJ9IswhVkxAcjkkD1eQTMA1KHWk+E= -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/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= -github.com/aws/aws-sdk-go-v2/service/lexmodelbuildingservice v1.28.6/go.mod h1:NIISLX1VE6siExm6eBCKwUxgUtbcZuijhfwovFLlhww= -github.com/aws/aws-sdk-go-v2/service/lexmodelsv2 v1.49.6 h1:2x58q4xIruXYmlJlN16QYK1i3I3BPczqUWdLLu0tGS0= -github.com/aws/aws-sdk-go-v2/service/lexmodelsv2 v1.49.6/go.mod h1:g8skRF3vu5As3fJIFINhNV9kyeAOr8pBDhW9wFHjRDs= -github.com/aws/aws-sdk-go-v2/service/licensemanager v1.29.6 h1:lIBhjNuzuaHwAuziSpwd1pUPrOUGrHnQlg7cbcbLegM= -github.com/aws/aws-sdk-go-v2/service/licensemanager v1.29.6/go.mod h1:G2ZGBJQHBfH6UXY9f0TUfx6kucCKJgQbLKftvjzpXls= -github.com/aws/aws-sdk-go-v2/service/lightsail v1.42.6 h1:Q5zuxb0SS9xrIEnuKlKwFYedk5nviOmtEDXWrfhh/CY= -github.com/aws/aws-sdk-go-v2/service/lightsail v1.42.6/go.mod h1:qklSjYVYEPst2z+rhuBpn84+jYzoo7QRRRk+ZguUoCA= -github.com/aws/aws-sdk-go-v2/service/location v1.42.6 h1:vEfLyr8ouHpU3AzTlyjBO3tMMcVIuaWWSACv9w1VK4c= -github.com/aws/aws-sdk-go-v2/service/location v1.42.6/go.mod h1:etVji3nL4Ge3MpPffv+buU/Scj/iWAL/xf9yUGRZ8zs= -github.com/aws/aws-sdk-go-v2/service/lookoutmetrics v1.31.6 h1:G3y3bhS/P9Y2+YAuvHcHHfyDN4sDjdDZEruCiIBUZM0= -github.com/aws/aws-sdk-go-v2/service/lookoutmetrics v1.31.6/go.mod h1:Da6VcI7dL5IJesAqesB4nr7s2Qv6vFz/DXRUfVFWg+w= -github.com/aws/aws-sdk-go-v2/service/m2 v1.18.4 h1:clAzdHIybLtBrZyt8cqwR171x7mVE3fMmCVmaffskmY= -github.com/aws/aws-sdk-go-v2/service/m2 v1.18.4/go.mod h1:FDVkgTp/iqmocl2JsFtyiQftsSa2jO+DpZ4dB+CRe4E= -github.com/aws/aws-sdk-go-v2/service/macie2 v1.43.6 h1:8Ma/55QqIQBimERWAPLiOafZZ2CGMz15l1jKOcx2YnU= -github.com/aws/aws-sdk-go-v2/service/macie2 v1.43.6/go.mod h1:8DUfCGSV5Y4q2H2pyN1+oZtLszDKMzizpUx6AA9WAxo= -github.com/aws/aws-sdk-go-v2/service/mediaconnect v1.35.6 h1:FXVjLYYBZ9t9BC14HifNCrkzUWTaIrpEEkocPcOvWjE= -github.com/aws/aws-sdk-go-v2/service/mediaconnect v1.35.6/go.mod h1:YTN0ly1dMxMDXGGWWryQB8cDV53rIcPJZNJNXwSoBJA= -github.com/aws/aws-sdk-go-v2/service/mediaconvert v1.63.0 h1:nnH0LGQDZDa7zv8OoXtvixQ8uXH+76tOaMzdu6jDgtU= -github.com/aws/aws-sdk-go-v2/service/mediaconvert v1.63.0/go.mod h1:2Xyd+9T+Wq6gdWAnCEnsuhXE3XES+gwkGsPJI0EBRNI= -github.com/aws/aws-sdk-go-v2/service/medialive v1.62.6 h1:YY15VFYZC/vN2o24nEnQ8KI79GnAfqkYb6RCf0xIFfw= -github.com/aws/aws-sdk-go-v2/service/medialive v1.62.6/go.mod h1:gBEjJ+TAuuuuPDAryKEKdcTLj0oZanQ9moERd0TJpo8= -github.com/aws/aws-sdk-go-v2/service/mediapackage v1.34.6 h1:yLTr2ccKf3+v8eErIAZxuQcHZuVf0+8w/h/RtTJemNw= -github.com/aws/aws-sdk-go-v2/service/mediapackage v1.34.6/go.mod h1:eb107D0QJ62buaWqqmr8FZW7nGOLpgUkanSBzd8HOZw= -github.com/aws/aws-sdk-go-v2/service/mediapackagev2 v1.20.0 h1:jyZC/sFkBrjgxae9USiu6s+V3yW9kbaw/0YeOtM09Sw= -github.com/aws/aws-sdk-go-v2/service/mediapackagev2 v1.20.0/go.mod h1:N/XJzgT7ToK87uK+nTO/gT6oSV+lhbmEhEYTSAHHkZQ= -github.com/aws/aws-sdk-go-v2/service/mediastore v1.24.6 h1:mwGoScB0hwRkKBlbpFhHGwWVuifXKgubYv+OxpxQa0c= -github.com/aws/aws-sdk-go-v2/service/mediastore v1.24.6/go.mod h1:LTbk7V5F9ZAS5dDrCb8Hej0ztaKxzZ2k2XerAfJ1//c= -github.com/aws/aws-sdk-go-v2/service/memorydb v1.24.5 h1:XPYy54nDWNBzieltKQ6pmm5S72NQ++ABzEMrWReAHp8= -github.com/aws/aws-sdk-go-v2/service/memorydb v1.24.5/go.mod h1:O94Vn/09IxbWludvHgI4EmmMNrGHJYUuubF6KxYELlY= -github.com/aws/aws-sdk-go-v2/service/mq v1.27.7 h1:SM+fa0iiR0B/CNpSnYZgBAFMcaPqxaWJyFHz+0QvpHc= -github.com/aws/aws-sdk-go-v2/service/mq v1.27.7/go.mod h1:uM+OjF2Wbww2yCvtPJ3lK7pO0MzcNLtItckYtWbg7bQ= -github.com/aws/aws-sdk-go-v2/service/mwaa v1.33.0 h1:2MD49J99Lxb43LfLItaZEPVVgXHQofAxXo2fQWUzWhA= -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/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/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= -github.com/aws/aws-sdk-go-v2/service/oam v1.15.6/go.mod h1:WSjmYbqG4Sa08dw+q1kBbn5sOK4ioCAwajICCrytQ5I= -github.com/aws/aws-sdk-go-v2/service/opensearch v1.44.1 h1:8LrDaf/GI94aAXufGevIiHYd+btpMkWPmpHRKn7gLPs= -github.com/aws/aws-sdk-go-v2/service/opensearch v1.44.1/go.mod h1:Hda4HPusP9TqF+NEC+aw2296WJ+yJGZR72Ufj1atZ3w= -github.com/aws/aws-sdk-go-v2/service/opensearchserverless v1.17.3 h1:4VeBNMpriKBFdPX7y7ARuiE63IyRbzmritTKD2uqpME= -github.com/aws/aws-sdk-go-v2/service/opensearchserverless v1.17.3/go.mod h1:FAez2d7b4Pe0pkJBE+BhG+1kFJszPdasr5f/uWLFttM= -github.com/aws/aws-sdk-go-v2/service/opsworks v1.26.6 h1:5RdEdk2lp3M+cLixpXURN0MjkUV5FRmDwFo1UXMt0Oc= -github.com/aws/aws-sdk-go-v2/service/opsworks v1.26.6/go.mod h1:pIHYTG0D9gBoZ0gmlZRL8benTzF85bnjPbWrVU25YLk= -github.com/aws/aws-sdk-go-v2/service/organizations v1.35.1 h1:+QsuehAdI8oDvdbkSfgM2yK00FzhPpM8sFozmG1rXD8= -github.com/aws/aws-sdk-go-v2/service/organizations v1.35.1/go.mod h1:Y4nD5yj/r634ux6MWgvZFWmwTofHrHvzYvX2nMnkMdY= -github.com/aws/aws-sdk-go-v2/service/osis v1.14.6 h1:IkLznNNge5hWvUsxF6bYhKkoGpcC0E/5OqOI8rI3WcA= -github.com/aws/aws-sdk-go-v2/service/osis v1.14.6/go.mod h1:tPJ/Jub87lHWze0ct1XH1oA6mKbwIdcLXxaafsnz4t8= -github.com/aws/aws-sdk-go-v2/service/outposts v1.47.1 h1:1+XB/P5Hhf8PS7wW/J+0JuPKHMR/IF0YSYmhC+XiZXc= -github.com/aws/aws-sdk-go-v2/service/outposts v1.47.1/go.mod h1:xwxXMu+7LhL0fmE7tTDhc4tKoClcIvavT13GyixjcXU= -github.com/aws/aws-sdk-go-v2/service/paymentcryptography v1.16.1 h1:lEULsuCT1aAFhns7c33YERMpdIQDz5Hsd8zWB9we/XM= -github.com/aws/aws-sdk-go-v2/service/paymentcryptography v1.16.1/go.mod h1:lncC4s0TLDksKC5mu3D07d2hoEwyxtq/9rCfv+Rhsrg= -github.com/aws/aws-sdk-go-v2/service/pcaconnectorad v1.9.6 h1:KNybFigKqPXtgiSvJlQAfBRdyo+r+pcvf8m4LkNNYzo= -github.com/aws/aws-sdk-go-v2/service/pcaconnectorad v1.9.6/go.mod h1:1oelry9UC3Ht/EyNJYOtj7Jl3lXPJJS1yfAcnRX4mXo= -github.com/aws/aws-sdk-go-v2/service/pcs v1.2.7 h1:ym8CxKwHy+DcZ/q+Nr+jRW79O0TYHszJfppHDyRiaNk= -github.com/aws/aws-sdk-go-v2/service/pcs v1.2.7/go.mod h1:nEWxtjVwnxhC/+PiFYotwLndICIO7s7zg9ppmof7Snc= -github.com/aws/aws-sdk-go-v2/service/pinpoint v1.34.6 h1:20YDzR53Z4/F5Lj9TvZ+C8LXIUQ0Wjy+HtJXM91Ir4s= -github.com/aws/aws-sdk-go-v2/service/pinpoint v1.34.6/go.mod h1:lXmDGZDFvSb1CySh9mujOzljpo5lwKQchPLssSBT890= -github.com/aws/aws-sdk-go-v2/service/pinpointsmsvoicev2 v1.18.1 h1:Rq87gPsr+seXVoRG1qaB+PyYVZPWUYHwHNZj7vxvxR0= -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/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/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= -github.com/aws/aws-sdk-go-v2/service/rbin v1.21.0/go.mod h1:pmSXGrqZyUIIZy6GCp+jvHtreRPPAyHA0B5Rj3JWP/M= -github.com/aws/aws-sdk-go-v2/service/rds v1.91.0 h1:eqHz3Uih+gb0vLE5Cc4Xf733vOxsxDp6GFUUVQU4d7w= -github.com/aws/aws-sdk-go-v2/service/rds v1.91.0/go.mod h1:h2jc7IleH3xHY7y+h8FH7WAZcz3IVLOB6/jXotIQ/qU= -github.com/aws/aws-sdk-go-v2/service/redshift v1.52.1 h1:zb5RnnLLNhQ5ttu/M2awKTMFZCSPk/dFkzLg0wRoGEY= -github.com/aws/aws-sdk-go-v2/service/redshift v1.52.1/go.mod h1:wwRCtvNBYB+hYayN6DRc2bnpuHQa1nlbxzl2hG0iiFY= -github.com/aws/aws-sdk-go-v2/service/redshiftdata v1.31.3 h1:TjnbaZH/KmEb05dDFhghgfRkDfPwlW8offp3N038gTQ= -github.com/aws/aws-sdk-go-v2/service/redshiftdata v1.31.3/go.mod h1:GdcVhrp1b1xkdTQuX05ULZ+nUleYT5uJdQwu+vorK/w= -github.com/aws/aws-sdk-go-v2/service/redshiftserverless v1.24.3 h1:kK6hgb+NPtKbVt6ipCyWDSny6mJty3IxnArQAeUQHRw= -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/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= -github.com/aws/aws-sdk-go-v2/service/resourcegroups v1.27.6/go.mod h1:gGux5LmDJLXI5Q+Nt4YqX+l3ucXvgcxAzuyJ2v9Th/I= -github.com/aws/aws-sdk-go-v2/service/resourcegroupstaggingapi v1.25.6 h1:I+a2rKx253mIClu5QtBkYWtko1k3nC+SvAtWTomengI= -github.com/aws/aws-sdk-go-v2/service/resourcegroupstaggingapi v1.25.6/go.mod h1:hmJ9BhvEvDx0TrC16/p9UdoBRyCD2+k23ritPq5ctdM= -github.com/aws/aws-sdk-go-v2/service/rolesanywhere v1.16.6 h1:PAcYgkHkqSQnXRvlJiYogADw2FE6e3RlxZhEyfLbp5s= -github.com/aws/aws-sdk-go-v2/service/rolesanywhere v1.16.6/go.mod h1:0oftCHOKgkrfOUU5py1HImPvXXmohziImw6ZsDblUZY= -github.com/aws/aws-sdk-go-v2/service/route53 v1.46.2 h1:wmt05tPp/CaRZpPV5B4SaJ5TwkHKom07/BzHoLdkY1o= -github.com/aws/aws-sdk-go-v2/service/route53 v1.46.2/go.mod h1:d+K9HESMpGb1EU9/UmmpInbGIUcAkwmcY6ZO/A3zZsw= -github.com/aws/aws-sdk-go-v2/service/route53domains v1.27.6 h1:V05BVZkF8PlS+7mv/mZbg+RTosgot+/vbC/GjD/O6+I= -github.com/aws/aws-sdk-go-v2/service/route53domains v1.27.6/go.mod h1:qi5Gro08MCfHLMycebAQWfHotdcpDzzPE3lwYSdQDHA= -github.com/aws/aws-sdk-go-v2/service/route53profiles v1.4.6 h1:GmnkT3Bgzhdmpr2jTEwNRBkJIG0wEJto5V0iU0+Y2Ws= -github.com/aws/aws-sdk-go-v2/service/route53profiles v1.4.6/go.mod h1:nmCbIBvDF0cz6unQBjj+0mWo1rrS/Kx5cLidUnBTqxM= -github.com/aws/aws-sdk-go-v2/service/route53recoverycontrolconfig v1.25.6 h1:WOwc3eLLF/1K72JrZNOj8zouEKO1LeIAVNPQ0SVLMoY= -github.com/aws/aws-sdk-go-v2/service/route53recoverycontrolconfig v1.25.6/go.mod h1:hSlHrezzmKmqKk5wUR4cx3jBGskN7wyP/9EzeUlr3Y4= -github.com/aws/aws-sdk-go-v2/service/route53recoveryreadiness v1.21.6 h1:UlFi92om4R46idg9Ha1Q9E7X4wBluNqPzbwJfbMe9XQ= -github.com/aws/aws-sdk-go-v2/service/route53recoveryreadiness v1.21.6/go.mod h1:RBzN/I/E7XuGozrYf7XXSKdbFd50qZIvqCxnisme/S0= -github.com/aws/aws-sdk-go-v2/service/route53resolver v1.34.1 h1:FlKzCc4JH3i87BpFsCvoXQrc2acahy24kebPFvSVWMY= -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/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/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= -github.com/aws/aws-sdk-go-v2/service/schemas v1.28.7/go.mod h1:iwJXS0UyH3hE+/Bt+1MAFCwFuJ6uSx7MUv5KdFeqqPc= -github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.34.6 h1:1KDMKvOKNrpD667ORbZ/+4OgvUoaok1gg/MLzrHF9fw= -github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.34.6/go.mod h1:DmtyfCfONhOyVAJ6ZMTrDSFIeyCBlEO93Qkfhxwbxu0= -github.com/aws/aws-sdk-go-v2/service/securityhub v1.54.7 h1:pWQKR8guL3JKhJo4fzbez5TwcG6oNShKNv1cOlDX0KM= -github.com/aws/aws-sdk-go-v2/service/securityhub v1.54.7/go.mod h1:UleZz3snRNYUF7PwsUDdKFq7VF1SUI4WGgMrnLNbYos= -github.com/aws/aws-sdk-go-v2/service/securitylake v1.19.4 h1:9q6LYxzfK4fW6hYMtrHrI/lXu4sS7I2gGY1vlyrCKNs= -github.com/aws/aws-sdk-go-v2/service/securitylake v1.19.4/go.mod h1:QwvPHp/z19J3LsiN3xOStRqe5rV0TJN4tfbKjBSFlyE= -github.com/aws/aws-sdk-go-v2/service/serverlessapplicationrepository v1.24.6 h1:GfQTL+TxMeqrcUj+e0C85o60mXXsiwCzuFJvEC/XCb0= -github.com/aws/aws-sdk-go-v2/service/serverlessapplicationrepository v1.24.6/go.mod h1:mHgnVSl8qnOokL5Vrn+r8Vk26lxG5rJJWsf3ng9MmMQ= -github.com/aws/aws-sdk-go-v2/service/servicecatalog v1.32.6 h1:ZfH1I4A7xSoZV7Hy/NNHpCTyOj6TjxLax4gZvIdmvEA= -github.com/aws/aws-sdk-go-v2/service/servicecatalog v1.32.6/go.mod h1:8mB+AmDLKnSF82XAtwnUzRjLxDyiEJOj53S84IhR0Mw= -github.com/aws/aws-sdk-go-v2/service/servicecatalogappregistry v1.30.6 h1:3rDGhJUqFxm3njevh4wdEwuqUEhMRUTk16gDEjMIfXg= -github.com/aws/aws-sdk-go-v2/service/servicecatalogappregistry v1.30.6/go.mod h1:VB1Zh7z33iwdgqfNks5+k+YRCIVDX+t0odHr7iRh/9c= -github.com/aws/aws-sdk-go-v2/service/servicediscovery v1.33.6 h1:SNpBx1RGzJRBdiUqyzEeLvJTWIsO/XdrSMNI+z6Oy88= -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/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/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/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/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/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= -github.com/aws/aws-sdk-go-v2/service/sso v1.24.6/go.mod h1:WJSZH2ZvepM6t6jwu4w/Z45Eoi75lPN7DcydSRtJg6Y= -github.com/aws/aws-sdk-go-v2/service/ssoadmin v1.29.6 h1:/+meNQDvDq2Bq3mAhlBkCJjSsjKhOKIUoxSkgy9VJ1o= -github.com/aws/aws-sdk-go-v2/service/ssoadmin v1.29.6/go.mod h1:clySUxAQHWp4zLgAIm9hEOlLFHyxSE2YYb2wL/p+7Oo= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.5 h1:K0OQAsDywb0ltlFrZm0JHPY3yZp/S9OaoLU33S7vPS8= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.5/go.mod h1:ORITg+fyuMoeiQFiVGoqB3OydVTLkClw/ljbblMq6Cc= -github.com/aws/aws-sdk-go-v2/service/storagegateway v1.34.6 h1:6TACV9Oz/QFABh6zqHCRt6/3TCCTN2yu/Vk/d2QiMCo= -github.com/aws/aws-sdk-go-v2/service/storagegateway v1.34.6/go.mod h1:9Zh7Q083SlzjsH5+Ay1MUsPwDBFdpQWd8C2k3LYiIZ0= -github.com/aws/aws-sdk-go-v2/service/sts v1.33.1 h1:6SZUVRQNvExYlMLbHdlKB48x0fLbc2iVROyaNEwBHbU= -github.com/aws/aws-sdk-go-v2/service/sts v1.33.1/go.mod h1:GqWyYCwLXnlUB1lOAXQyNSPqPLQJvmo8J0DWBzp9mtg= -github.com/aws/aws-sdk-go-v2/service/swf v1.27.6 h1:SNBI1mmvexuy41GeRryQe8r/BWlEtnC7TuDrlIiccDg= -github.com/aws/aws-sdk-go-v2/service/swf v1.27.6/go.mod h1:p48SX8A0BLF1a9owTvsdlpALq2th780a2FJi/DGGK/s= -github.com/aws/aws-sdk-go-v2/service/synthetics v1.30.1 h1:f9icqeThImJEpO3cQp7CO4taZOil/uph9uaiLqo6ZMw= -github.com/aws/aws-sdk-go-v2/service/synthetics v1.30.1/go.mod h1:l0COvN1sYnOLJJaXAQistyp96G76KL0+1CtsvLtQJ/8= -github.com/aws/aws-sdk-go-v2/service/taxsettings v1.7.0 h1:NWEjSezAbU7klTwlWJFLhDHgwyUpwUuByd1QExRMULM= -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/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/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= -github.com/aws/aws-sdk-go-v2/service/wafregional v1.25.6/go.mod h1:j3VEF66T5h8nu3WjPwPZRiBIwUo7rlDgyklgTTNleAE= -github.com/aws/aws-sdk-go-v2/service/wafv2 v1.55.5 h1:Fqt5dudTu1FxJXxrcLxKmnSPVuOV5qYyONUWXEeEU0g= -github.com/aws/aws-sdk-go-v2/service/wafv2 v1.55.5/go.mod h1:SGymgXOuZBAnbdEO2NAPUHOXU2swMyT0+nHD1VlNxhk= -github.com/aws/aws-sdk-go-v2/service/wellarchitected v1.34.6 h1:gRlAqT37MBjotuhc9aES3J9OcyRolDlZE9y4eqlWx7g= -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/internal/checksum v1.4.6 h1:HCpPsWqmYQieU7SS6E9HXfdAMSud0pteVXieJmcpIRI= +github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.4.6/go.mod h1:ngUiVRCco++u+soRRVBIvBZxSMMvOVMXA4PJ36JLfSw= +github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.10.6 h1:nbmKXZzXPJn41CcD4HsHsGWqvKjLKz9kWu6XxvLmf1s= +github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.10.6/go.mod h1:SJhcisfKfAawsdNQoZMBEjg+vyN2lH6rO6fP+T94z5Y= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.6 h1:50+XsN70RS7dwJ2CkVNXzj7U2L1HKP8nqTd3XWEXBN4= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.6/go.mod h1:WqgLmwY7so32kG01zD8CPTJWVWM+TzJoOVHwTg4aPug= +github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.6 h1:BbGDtTi0T1DYlmjBiCr/le3wzhA37O8QTC5/Ab8+EXk= +github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.6/go.mod h1:hLMJt7Q8ePgViKupeymbqI0la+t9/iYFBjxQCFwuAwI= +github.com/aws/aws-sdk-go-v2/service/internetmonitor v1.20.2 h1:Dv+q59QjG5FUBRrZGSnu5nouzwPoivj2Z7KH0U0EneU= +github.com/aws/aws-sdk-go-v2/service/internetmonitor v1.20.2/go.mod h1:Pnzezn20O/qGSc8S3NVpy879f5w4bWnYW3iGHTUbgBw= +github.com/aws/aws-sdk-go-v2/service/iot v1.61.1 h1:xU86aILQFTU5I35YHw5iOLIbSriLsdmnYBuTst9+5K8= +github.com/aws/aws-sdk-go-v2/service/iot v1.61.1/go.mod h1:2QrSORRSY/NYGcTbUdHIz62SM5RlLCAnBcpcDIjg/Sk= +github.com/aws/aws-sdk-go-v2/service/iotanalytics v1.26.7 h1:Wzu7Zb+Xxekp9ncI9Lqx24b8avRoLh4ZaVjUWda3Po8= +github.com/aws/aws-sdk-go-v2/service/iotanalytics v1.26.7/go.mod h1:dT/c5XzdfUmqgbuY2rfoqEoaS4hhhV6bzYKCmHIudsg= +github.com/aws/aws-sdk-go-v2/service/iotevents v1.27.7 h1:3+CqncIjYZhQ4dW0MEe3LN48ny4H1OydEIrtN6N/NMM= +github.com/aws/aws-sdk-go-v2/service/iotevents v1.27.7/go.mod h1:A8OzS86qbmve0dL7bqdbqy4PcBKWCWqg8gKRHLO9pEI= +github.com/aws/aws-sdk-go-v2/service/ivs v1.42.2 h1:9QFYCHXxRywbd/jvx9wtU73u7QT0I7Y3qAKLgDDIwKo= +github.com/aws/aws-sdk-go-v2/service/ivs v1.42.2/go.mod h1:BwNgy90oNpZ/VrzHTn6y/z2jdsJ2ZK6D5yvvtE5Ft0o= +github.com/aws/aws-sdk-go-v2/service/ivschat v1.16.7 h1:HlECOFumfIpk5nRnSdJ6F6ney0vxu9JsLe4zifGlswg= +github.com/aws/aws-sdk-go-v2/service/ivschat v1.16.7/go.mod h1:C57nohycrCEMovZLg5G75J/DEZka5WSuOJtfaYqIq8s= +github.com/aws/aws-sdk-go-v2/service/kafka v1.38.7 h1:RjCwdphB+wBtT/qQw6e7c6HOZ7ab4WN22Uw8GSmKNb8= +github.com/aws/aws-sdk-go-v2/service/kafka v1.38.7/go.mod h1:6ezJjIOpnDf+Q/BJ2CIITrcdXSvfUS1zwjnEHHPa8oU= +github.com/aws/aws-sdk-go-v2/service/kafkaconnect v1.21.7 h1:OSj7D23vSCmeHSp8IQUuSvc57cUi6FwYQ634FgbMdOY= +github.com/aws/aws-sdk-go-v2/service/kafkaconnect v1.21.7/go.mod h1:oy7uAjiwfudbkCbOW5nIBNhzPEsQbnbcNO18JgdVqZU= +github.com/aws/aws-sdk-go-v2/service/kendra v1.54.7 h1:tOVT7NRS+pv4o1/X8V8Abd/Pa+rVCvwfkdxCfPqofoI= +github.com/aws/aws-sdk-go-v2/service/kendra v1.54.7/go.mod h1:/HuziZyTc3mY3YW5DqgZAnyhFoK38EMCqnASuWrpYoo= +github.com/aws/aws-sdk-go-v2/service/keyspaces v1.16.1 h1:6H6WaX339sByRffHdcX7yCG7JeFM4Z/61+uvGLleQNw= +github.com/aws/aws-sdk-go-v2/service/keyspaces v1.16.1/go.mod h1:hW+Z1zESPAefZ33sgnMvY1ADVCiPI2e8v1vTQcz/MDY= +github.com/aws/aws-sdk-go-v2/service/kinesis v1.32.7 h1:QTtbqxI+i2gaWjcTwJZtm8/xEl9kiQXXbOatGabNuXA= +github.com/aws/aws-sdk-go-v2/service/kinesis v1.32.7/go.mod h1:5aKZaOb2yfdeAOvfam0/6HoUXg01pN172bn7MqpM35c= +github.com/aws/aws-sdk-go-v2/service/kinesisanalytics v1.25.8 h1:0h1EmAZ5VTdoteDEzE9OlTr7OXZGO56eMxOGGceioBE= +github.com/aws/aws-sdk-go-v2/service/kinesisanalytics v1.25.8/go.mod h1:c9hLEK1e3z+ruMXThiEyqMrPdpPOxRw4yg3KZ3rHYl4= +github.com/aws/aws-sdk-go-v2/service/kinesisanalyticsv2 v1.31.8 h1:ryRIc8QkgWcMqmCSBcnYkchdLeDEOtCEjU4tJKCZv9M= +github.com/aws/aws-sdk-go-v2/service/kinesisanalyticsv2 v1.31.8/go.mod h1:vS4K9dorERPC3u8+nXR32WJfltj6DCrx/B3w1njvJUY= +github.com/aws/aws-sdk-go-v2/service/kinesisvideo v1.27.7 h1:u312E9WSNS3aL0fMkD3R8TCrv6RX4KT1F8I6itnQe/4= +github.com/aws/aws-sdk-go-v2/service/kinesisvideo v1.27.7/go.mod h1:pdoRfafdWneitPJSDJEIUH3npcWNF0a9ReMblcQC+hA= +github.com/aws/aws-sdk-go-v2/service/kms v1.37.7 h1:dZmNIRtPUvtvUIIDVNpvtnJQ8N8Iqm7SQAxf18htZYw= +github.com/aws/aws-sdk-go-v2/service/kms v1.37.7/go.mod h1:vj8PlfJH9mnGeIzd6uMLPi5VgiqzGG7AZoe1kf1uTXM= +github.com/aws/aws-sdk-go-v2/service/lakeformation v1.39.0 h1:1tONU+X0IWsiNJIXZGCHQC25GVGbuTcH2EufcOH4gJA= +github.com/aws/aws-sdk-go-v2/service/lakeformation v1.39.0/go.mod h1:TrZ6XeQ86aBjOsy+ae7RKlYWh3TQ53QQcA6YhtFadYk= +github.com/aws/aws-sdk-go-v2/service/lambda v1.69.1 h1:q1NrvoJiz0rm9ayKOJ9wsMGmStK6rZSY36BDICMrcuY= +github.com/aws/aws-sdk-go-v2/service/lambda v1.69.1/go.mod h1:hDj7He9kbR9T5zugnS+T21l4z6do4SEGuno/BpJLpA0= +github.com/aws/aws-sdk-go-v2/service/launchwizard v1.8.7 h1:nMYxTZs0WjVLEyTEqRtD6WR83nMqF65uPHSv43SrFDQ= +github.com/aws/aws-sdk-go-v2/service/launchwizard v1.8.7/go.mod h1:6g7hO7AFKCy9KcvxJFPs8m6u/YS42+AXnI5G6v5amyk= +github.com/aws/aws-sdk-go-v2/service/lexmodelbuildingservice v1.28.7 h1:ctsj2+1N2CfpM2WOrnSKMXgHIjoxqm8LbQ2zs/ecZWI= +github.com/aws/aws-sdk-go-v2/service/lexmodelbuildingservice v1.28.7/go.mod h1:jW7hiTAbVhBgyur3096wz15sT2YEZYPyVtO4fRWgZc4= +github.com/aws/aws-sdk-go-v2/service/lexmodelsv2 v1.49.7 h1:1iMiIfLc8yYCQJ4HwxLkD9L6vU5hnTcNoBI8yoanyR4= +github.com/aws/aws-sdk-go-v2/service/lexmodelsv2 v1.49.7/go.mod h1:Tj5DuyiCjIK6WkzvyXYy0PVq24dK+6CKvon670Q9Jag= +github.com/aws/aws-sdk-go-v2/service/licensemanager v1.29.7 h1:qtiX/fhTL1mrZNOM7KXKgaiHCMSmRfclUMtI2ep619U= +github.com/aws/aws-sdk-go-v2/service/licensemanager v1.29.7/go.mod h1:aH2CD/bGJKv5nBMc2S3bYIapITSSZ6au6YJERm5cEdo= +github.com/aws/aws-sdk-go-v2/service/lightsail v1.42.7 h1:pVO3tnwny+c+XIfNkmrReAkNd4Gyy7TVvro1ZTfzY4g= +github.com/aws/aws-sdk-go-v2/service/lightsail v1.42.7/go.mod h1:yveTbfkp9hhabgl3aXbd2/AvWCgJRi0O+mhm3REyvE8= +github.com/aws/aws-sdk-go-v2/service/location v1.42.7 h1:yLpR7rDAh1mSazJyYc2bNzVk8EMuertx4ZCsDzSFeNg= +github.com/aws/aws-sdk-go-v2/service/location v1.42.7/go.mod h1:lSuujyYUNaI4cHRzTha04mEVGSpIW0PM9AiTemTvKDY= +github.com/aws/aws-sdk-go-v2/service/lookoutmetrics v1.31.7 h1:wyvJFktMUDLYX7q8LpfuvDS50sIR2QrcK2OPaoJZL+Q= +github.com/aws/aws-sdk-go-v2/service/lookoutmetrics v1.31.7/go.mod h1:xVdP3fbrhDfhVNugkmC2aY95Ea0od8j0cUUxoRJ+UP8= +github.com/aws/aws-sdk-go-v2/service/m2 v1.18.5 h1:X6iVlWx3rVolup+wnlNcyylpUIoBbWWhwmvjM+4sC2o= +github.com/aws/aws-sdk-go-v2/service/m2 v1.18.5/go.mod h1:XXdV0w3yWrEmBvE4iZVAwWEPtQD+UrDIc3j/ETsI5+4= +github.com/aws/aws-sdk-go-v2/service/macie2 v1.43.7 h1:mlaPITmZnYi8bm20Ql8tTPrSdLZc6LwdH9RYDuAgf3o= +github.com/aws/aws-sdk-go-v2/service/macie2 v1.43.7/go.mod h1:wya8VTBSC9uglnFujLKT/21M03qc+tnTUHV3fgW6aFM= +github.com/aws/aws-sdk-go-v2/service/mediaconnect v1.35.7 h1:8fTYn2M9KBwvo/MN4S5V5HJkl76MCC4dCZGKK+9y11E= +github.com/aws/aws-sdk-go-v2/service/mediaconnect v1.35.7/go.mod h1:NyaKp3HdG4vD6gNfnIwGsl68/4vneSu1cok7yZAOB/U= +github.com/aws/aws-sdk-go-v2/service/mediaconvert v1.63.1 h1:O0PufOavkptAta6HE7q128zvKV4jcZ5PbyyIRbUsWI8= +github.com/aws/aws-sdk-go-v2/service/mediaconvert v1.63.1/go.mod h1:4B8R+NlIvQUF77Rpqe2r4xQceaUVXCFYfbJ2ASlocbc= +github.com/aws/aws-sdk-go-v2/service/medialive v1.62.7 h1:BdMoauoIpEII5wAfLUnyTJpaiigoqzRctfTtQpdiYwE= +github.com/aws/aws-sdk-go-v2/service/medialive v1.62.7/go.mod h1:3941uJpLJirB+Xc5CM5rsVMeQuNkp0UMrdswdqvOelQ= +github.com/aws/aws-sdk-go-v2/service/mediapackage v1.34.7 h1:NEDXmP4JZxYVPcU+rvIcLUPM6kEhCS2lw09weM1a0WI= +github.com/aws/aws-sdk-go-v2/service/mediapackage v1.34.7/go.mod h1:E4wTOblO64Lm0JHaNwxx1klyfyQ3rKje2J0CwQ6Q4XE= +github.com/aws/aws-sdk-go-v2/service/mediapackagev2 v1.20.1 h1:F+do5xWXqiQhY4sVpYwzVxrER5h6IKfedgFJVuAfpF0= +github.com/aws/aws-sdk-go-v2/service/mediapackagev2 v1.20.1/go.mod h1:+vDyRn8cichafKg5NVt3+HC81nasKOkFpJ0jxuTL6J0= +github.com/aws/aws-sdk-go-v2/service/mediastore v1.24.7 h1:OK3XNax+Pg6cKlgOSOs3Rp/zGlq29gmQQVOMv6Frh4g= +github.com/aws/aws-sdk-go-v2/service/mediastore v1.24.7/go.mod h1:4Cz00WLWNC0c79Y1Rks4MH+ezS5zXGerYY9DryVWRNQ= +github.com/aws/aws-sdk-go-v2/service/memorydb v1.25.0 h1:7HzWnEIEXis3QZCiGpI0FwM4CzxKr82dc18cTqE+Ws8= +github.com/aws/aws-sdk-go-v2/service/memorydb v1.25.0/go.mod h1:nv31Ugm3PeTj/1NoUT1wlJpSttTV9kpANgSGMCOdTYg= +github.com/aws/aws-sdk-go-v2/service/mq v1.27.8 h1:xGcrYXOE7mCt14ToL/ZibXsBW0DhReBuollS35Ci7pQ= +github.com/aws/aws-sdk-go-v2/service/mq v1.27.8/go.mod h1:EjYQlgBAl1BVTGEpjQSTTn8q2IaBYmKZAMGorq+J8N8= +github.com/aws/aws-sdk-go-v2/service/mwaa v1.33.1 h1:Vy9YZcV16Fpo0gFJBTKnEoDiKsREAIwPxvZR51DDlXY= +github.com/aws/aws-sdk-go-v2/service/mwaa v1.33.1/go.mod h1:jMA6WUWuLnmu8HD8/bbhF+UsqZZDD21Sy50KeCYk4Us= +github.com/aws/aws-sdk-go-v2/service/neptune v1.35.6 h1:4XpR4uxdYixFnQecBQ4bj+OVTTIllaVLIdNZT9PVGXU= +github.com/aws/aws-sdk-go-v2/service/neptune v1.35.6/go.mod h1:JeJv7jf5G41lHVNiZ+24s7Frzg8k9xYCGborBe0FdNw= +github.com/aws/aws-sdk-go-v2/service/neptunegraph v1.15.1 h1:2jejkFcjwRmm2w7h5em/psgHikBl+uc8F9qoFdyS5F8= +github.com/aws/aws-sdk-go-v2/service/neptunegraph v1.15.1/go.mod h1:GpKZo1Lgbubeuqk2To4Tr1E5DBHj2mGrl2tuhysti2I= +github.com/aws/aws-sdk-go-v2/service/networkfirewall v1.44.4 h1:kkkVxybBMwof8LX4KwP46syMXHwYAQP90nsEPA5cKiU= +github.com/aws/aws-sdk-go-v2/service/networkfirewall v1.44.4/go.mod h1:b3UwYXVSlxwwRl8frZR9eXRc3rqisD4YyHv+rZ1Xmyc= +github.com/aws/aws-sdk-go-v2/service/networkmanager v1.32.1 h1:xc15Eon+HAbIUBF+58ow0ZxpJ+ZRiQgY0Lu7UmkAe1A= +github.com/aws/aws-sdk-go-v2/service/networkmanager v1.32.1/go.mod h1:EWCvUfz0rkfBfd/2s6Jj8DBT/PilQ/ClD/EByti+JKA= +github.com/aws/aws-sdk-go-v2/service/networkmonitor v1.7.7 h1:jq2n7Z+SUcKFK8zR4lmELte9rgX59HtBqQUBg2DhTYU= +github.com/aws/aws-sdk-go-v2/service/networkmonitor v1.7.7/go.mod h1:Sl6QugaUidIUBpGqzz5EHcwx6cT918H/mnQKNHTyAdc= +github.com/aws/aws-sdk-go-v2/service/oam v1.15.7 h1:gy/9lznIWLyAxokvjktoXNHpmLz8f7Fl/jUrdXdWbGk= +github.com/aws/aws-sdk-go-v2/service/oam v1.15.7/go.mod h1:Rh8Jc91inXNMdoRQk/ETf3waaqde2ZgaBFMyUKC10ko= +github.com/aws/aws-sdk-go-v2/service/opensearch v1.45.0 h1:rjJ9MjX7jObSSxrBK1IU7bkHD6iudbhKTZie4eSHoBo= +github.com/aws/aws-sdk-go-v2/service/opensearch v1.45.0/go.mod h1:f2qp9ZzFIyhStNsVqT09BQbw5K13qEYYMTB9WNNWtDs= +github.com/aws/aws-sdk-go-v2/service/opensearchserverless v1.17.4 h1:+igfh7CHy9+DAnTtTsC1ZIcfkCn/8r+ESK+/+NQj4bk= +github.com/aws/aws-sdk-go-v2/service/opensearchserverless v1.17.4/go.mod h1:pyPPjpS52Akb5g9Y1Sy1eNqWud1ZDDjhe/cLrBfrvyo= +github.com/aws/aws-sdk-go-v2/service/opsworks v1.26.7 h1:JHabLpXH1A2IkaLYccQwC2TBnKLm2b3uSKvAu9N39YE= +github.com/aws/aws-sdk-go-v2/service/opsworks v1.26.7/go.mod h1:ddJLpQoIwK18NaELU6CxxgLnzYdAyzfGEGBwudjbJgo= +github.com/aws/aws-sdk-go-v2/service/organizations v1.36.0 h1:CVHfN8ZVvWzDkAf/Qj+GO53dD5NWVyK16O8pYg/wp3k= +github.com/aws/aws-sdk-go-v2/service/organizations v1.36.0/go.mod h1:SVY+doFrL3KTvVMWzFLKvD7KYQ6GQfwNRPSQS7eA3cA= +github.com/aws/aws-sdk-go-v2/service/osis v1.14.7 h1:K37+ch2PxHJVWg1NRfVebstqZvicwfPPHQuXmwznbqw= +github.com/aws/aws-sdk-go-v2/service/osis v1.14.7/go.mod h1:TRjW1OYREjDpa4Z8pn5Axm6SFPdP2FVcy+jX5eyX3XY= +github.com/aws/aws-sdk-go-v2/service/outposts v1.47.2 h1:OpS3l/leIv8pbK1zaeoZ5WzzTojbLN8zdK8inc37bMM= +github.com/aws/aws-sdk-go-v2/service/outposts v1.47.2/go.mod h1:5X4a801ISjSwj+2Wq5FVicytit172Cdy7Clwia8l3Q0= +github.com/aws/aws-sdk-go-v2/service/paymentcryptography v1.16.2 h1:FShkGVtnQNoezF2amvLfP47k7t/TcwwnXPihC1dpw5s= +github.com/aws/aws-sdk-go-v2/service/paymentcryptography v1.16.2/go.mod h1:mGR1OiBn//5KaxFrLLMwoMDiMeKD07ifB/YaHpYFsFI= +github.com/aws/aws-sdk-go-v2/service/pcaconnectorad v1.9.7 h1:LOvtIRHTybPxw6Q57GpPxmNaD1dn3I8oK9aYD2ZBRmE= +github.com/aws/aws-sdk-go-v2/service/pcaconnectorad v1.9.7/go.mod h1:3BgmxWQ8Z4E2uyTWXp610jzZ4ohM0vk4ECRTiquMusM= +github.com/aws/aws-sdk-go-v2/service/pcs v1.2.8 h1:Ir7mcDtBOJObLKHl/FXB2eRPuWgsDoZNIq8lfVNuJ+Y= +github.com/aws/aws-sdk-go-v2/service/pcs v1.2.8/go.mod h1:LI8eDIEw9SSDuQp2D3UDB6+LZtfs3oraCFoCuf5NHQE= +github.com/aws/aws-sdk-go-v2/service/pinpoint v1.34.7 h1:SZq67/WO334eVG9JqpGZ8uT2ozLV8eX4KWXOXncVmT4= +github.com/aws/aws-sdk-go-v2/service/pinpoint v1.34.7/go.mod h1:8vy9a2PeHCuidO1JTs7iII3BB9WHA4VRlpgHP04mR8c= +github.com/aws/aws-sdk-go-v2/service/pinpointsmsvoicev2 v1.18.2 h1:JijCnewV7KgxgzohNUqCrkH8AU1asAC3Gna0+O9lC6Q= +github.com/aws/aws-sdk-go-v2/service/pinpointsmsvoicev2 v1.18.2/go.mod h1:Aj5x9nXOR2FuuPVcPVlEQnEaliM7Sy08MKxmy40ZQck= +github.com/aws/aws-sdk-go-v2/service/pipes v1.18.5 h1:W0cvpLbDGJIctaEWbClBT6oLNdiUUsEmq4CMm00cLMs= +github.com/aws/aws-sdk-go-v2/service/pipes v1.18.5/go.mod h1:D3p7y45dr9Vgx5sIVD/PxnTwIcbjmlboTHv4GMP7Qsk= +github.com/aws/aws-sdk-go-v2/service/polly v1.45.8 h1:qP67eGQ8myAxyd9+ZA6AZc0nYFmEOBwi7zrC5Aj0DFg= +github.com/aws/aws-sdk-go-v2/service/polly v1.45.8/go.mod h1:Bn1paZpSkDKa1vVJcx5DnDZOFMxMrgR7s74igJuhMTk= +github.com/aws/aws-sdk-go-v2/service/pricing v1.32.7 h1:9UDHX1ZgcXUTAGcyxmw04r/6OVG/aUpQ7dZUziR+vTM= +github.com/aws/aws-sdk-go-v2/service/pricing v1.32.7/go.mod h1:68s1DYctoo30LibzEY6gLajXbQEhxpn49+zYFy+Q5Xs= +github.com/aws/aws-sdk-go-v2/service/qbusiness v1.18.0 h1:Wazwv3/svgvNu31XSsX0fdcwAzuEDKklcMv/V5PNcFE= +github.com/aws/aws-sdk-go-v2/service/qbusiness v1.18.0/go.mod h1:cmW8VmRWKpSEhqy70H3+QCFfHcTguZMZphBIdqcWsIo= +github.com/aws/aws-sdk-go-v2/service/qldb v1.25.7 h1:TWJzwB7S/SBBVitz/0HtdB7pqyf1iv9OUCQ6qeYob5Q= +github.com/aws/aws-sdk-go-v2/service/qldb v1.25.7/go.mod h1:8AyevnOHnUsSNTlqH723oxU2hGgIdhVsUjtDS6JIi8w= +github.com/aws/aws-sdk-go-v2/service/quicksight v1.81.0 h1:U/ktIgrHh0l1Azkhl8sNxNvknhz1Ql6PtEgluc9R8GU= +github.com/aws/aws-sdk-go-v2/service/quicksight v1.81.0/go.mod h1:GE3TPXNfQ2OETAUjwhnFl3CYWqzF9SPB1sJjeUSOkJA= +github.com/aws/aws-sdk-go-v2/service/ram v1.29.7 h1:c6XYrBzh3J8J5Vaxcj4fbfuzDtKv7Blg/bYmd12PG44= +github.com/aws/aws-sdk-go-v2/service/ram v1.29.7/go.mod h1:Znaic26hqqKZ3mmG+UA8aLdnWrOYmkdHUd5KoT/DzGY= +github.com/aws/aws-sdk-go-v2/service/rbin v1.21.1 h1:4w3T6RGy/jrGrup/o9WwtVXEWbwbL/up/+dPaGR5IfU= +github.com/aws/aws-sdk-go-v2/service/rbin v1.21.1/go.mod h1:R1qdIYNn+b3mrEkq9r7jM7FVpgGDeOkeYVr3Poc+95g= +github.com/aws/aws-sdk-go-v2/service/rds v1.92.0 h1:W0gUYAjO24u/M6tpR041wMHJWGzleOhxtCnNLImdrZs= +github.com/aws/aws-sdk-go-v2/service/rds v1.92.0/go.mod h1:ADD2uROOoEIXjbjDPEvDDZWnGmfKFYMddgKwG5RlBGw= +github.com/aws/aws-sdk-go-v2/service/redshift v1.53.0 h1:4/hmROBioc89sKlMVjHgOaH92zAkrAAMZR3BIvYwyD0= +github.com/aws/aws-sdk-go-v2/service/redshift v1.53.0/go.mod h1:UydVhUJOB/DaCJWiaBkPlvuzvWVcUlgbS2Bxn33bcKI= +github.com/aws/aws-sdk-go-v2/service/redshiftdata v1.31.4 h1:A0vlEMhhjNwiDuSeyqCV5E+nKi71xB7JEZ3zmSk9C2o= +github.com/aws/aws-sdk-go-v2/service/redshiftdata v1.31.4/go.mod h1:D22t6rKMIQkle+JZOeXSyPbhluGCmp64qfBYnJciyNo= +github.com/aws/aws-sdk-go-v2/service/redshiftserverless v1.25.0 h1:g72Z/eRmA5dK2v6LCw5hwPpCLI36bbgyIQkUS4KlCPM= +github.com/aws/aws-sdk-go-v2/service/redshiftserverless v1.25.0/go.mod h1:HR4+m/4+W7RiaFMme0p6Y5dV7bDKhAIn8UiiZfWJVXg= +github.com/aws/aws-sdk-go-v2/service/rekognition v1.45.8 h1:K21+kYo7APUzqhc6pvCxHWAGxdyaxJqnEfBSySbFlGM= +github.com/aws/aws-sdk-go-v2/service/rekognition v1.45.8/go.mod h1:LIrvj+qa6+K+FfiOFv/DXgmBxDU/LCZebFYulAITgps= +github.com/aws/aws-sdk-go-v2/service/resiliencehub v1.28.1 h1:NBrNat0V6a0IlxwURP/kixLzvW7sSYy4/PAqe/OwB5Q= +github.com/aws/aws-sdk-go-v2/service/resiliencehub v1.28.1/go.mod h1:6M1A4+fuybF+twN7Ch53fSEb0jdQAnDl7SjEQOdJQrE= +github.com/aws/aws-sdk-go-v2/service/resourceexplorer2 v1.16.2 h1:vqsk41T4OS50+uU4oYh6YWXjX+wMV8j6fbxMD+xkHXg= +github.com/aws/aws-sdk-go-v2/service/resourceexplorer2 v1.16.2/go.mod h1:TsghsVk15IIlBkv5onzATu0Efu4xd8Xqh1QsQRCFoQU= +github.com/aws/aws-sdk-go-v2/service/resourcegroups v1.27.7 h1:gj5YZ+wn0LpNlqapkn6mEc3Af3w3G79RPh2eT7Os/zc= +github.com/aws/aws-sdk-go-v2/service/resourcegroups v1.27.7/go.mod h1:XngsyfRxK0KbWSC3WIP+YacPE4HoSm4GDpRWiwtQAfQ= +github.com/aws/aws-sdk-go-v2/service/resourcegroupstaggingapi v1.25.7 h1:xQUVjSepDh2F1BUH9Fyxam3YLnYpehb4qzdvdo6sBcY= +github.com/aws/aws-sdk-go-v2/service/resourcegroupstaggingapi v1.25.7/go.mod h1:XklDWgTWh+O/pQRDMSmh6AJaTFYswRsQ+o5XjwBP2+c= +github.com/aws/aws-sdk-go-v2/service/rolesanywhere v1.16.7 h1:M49WXIllz0oLeFxvvEfZvb+FPMfhN9nnDH/Bdiyjf4k= +github.com/aws/aws-sdk-go-v2/service/rolesanywhere v1.16.7/go.mod h1:cb8Aygy/+Ap36c0StMfVnUBCLked9v65w7i/ShJLTLs= +github.com/aws/aws-sdk-go-v2/service/route53 v1.46.3 h1:pDBrvz7CMK381q5U+nPqtSQZZid5z1XH8lsI6kHNcSY= +github.com/aws/aws-sdk-go-v2/service/route53 v1.46.3/go.mod h1:rDMeB13C/RS0/zw68RQD4LLiWChf5tZBKjEQmjtHa/c= +github.com/aws/aws-sdk-go-v2/service/route53domains v1.27.7 h1:cUSak+oDWuKhl3doMhJkm8adfJcP6wRz9Alh9HxDQJI= +github.com/aws/aws-sdk-go-v2/service/route53domains v1.27.7/go.mod h1:c4Zcr9bz35UJ07RC3cR/zBdpFn7ZjZqy/ow+oN0+NEo= +github.com/aws/aws-sdk-go-v2/service/route53profiles v1.4.7 h1:6SZ8kRmQE278KIJXq4cLdlOgO7nvlxgn6BNZRIIuyFQ= +github.com/aws/aws-sdk-go-v2/service/route53profiles v1.4.7/go.mod h1:RFwYVDBuEI0U+vxTP5m5lGgGe9Wo2kagynHfxTl2fWU= +github.com/aws/aws-sdk-go-v2/service/route53recoverycontrolconfig v1.25.7 h1:/NwKq9S1DBMAIYNamv9kBz0fwuqnILphCnilPMO48Yc= +github.com/aws/aws-sdk-go-v2/service/route53recoverycontrolconfig v1.25.7/go.mod h1:Qalb81pBJbyuXB8Z1JbrOs8ZB8pbLwTTfR/L+ssPP2k= +github.com/aws/aws-sdk-go-v2/service/route53recoveryreadiness v1.21.7 h1:uozag7wGE9PbM/rESMnnXkBqPpOR/UtSpUSUB5Knl6M= +github.com/aws/aws-sdk-go-v2/service/route53recoveryreadiness v1.21.7/go.mod h1:aC09Jm/A1wGiFkMs2BDU5IvGL6V26xIgJKQbM1VyXrA= +github.com/aws/aws-sdk-go-v2/service/route53resolver v1.34.2 h1:9YaCGPw0s0qmxlyPujSe6LWqmtjfouTIRXrEtiJyHaw= +github.com/aws/aws-sdk-go-v2/service/route53resolver v1.34.2/go.mod h1:m0CMmlFRzCrscSzjkH7GOPstcuKhgJCgK2153O2bP1I= +github.com/aws/aws-sdk-go-v2/service/rum v1.21.7 h1:AEl97eESj/H7fjtDH1dNyUCXHH2Dj16o2JYXLePaRH0= +github.com/aws/aws-sdk-go-v2/service/rum v1.21.7/go.mod h1:D54Xit4pURxcusZV7N1/J9U+/1LSTA2wmrAb2zAJhdA= +github.com/aws/aws-sdk-go-v2/service/s3 v1.71.0 h1:nyuzXooUNJexRT0Oy0UQY6AhOzxPxhtt4DcBIHyCnmw= +github.com/aws/aws-sdk-go-v2/service/s3 v1.71.0/go.mod h1:sT/iQz8JK3u/5gZkT+Hmr7GzVZehUMkRZpOaAwYXeGY= +github.com/aws/aws-sdk-go-v2/service/s3control v1.52.0 h1:tH6HJdKj1O5N8Uti8D2X20JYoDe9ZdC827iY92U+Ooo= +github.com/aws/aws-sdk-go-v2/service/s3control v1.52.0/go.mod h1:sAOVMYapLSs3nCfdQo63qfVkKHlu97oqHDPrRbqayNg= +github.com/aws/aws-sdk-go-v2/service/s3outposts v1.28.7 h1:yUuN4xIlI/2bUqniq5OdIw13FIGtUdPhzU4dzl2v6fM= +github.com/aws/aws-sdk-go-v2/service/s3outposts v1.28.7/go.mod h1:yCIumXPHLHsjmrD8P9UvXFVT0R9R+Wlqut71bW5+ZY4= +github.com/aws/aws-sdk-go-v2/service/s3tables v1.0.0 h1:akXaBXvSIT3ca7Ojnc1TX+2pTK6lhyodZTYTrdUD6Vc= +github.com/aws/aws-sdk-go-v2/service/s3tables v1.0.0/go.mod h1:X85zeZUOEsqLnH/CShIydM9ANVMwXHL1A/pvTMSQw6U= +github.com/aws/aws-sdk-go-v2/service/sagemaker v1.168.1 h1:Sz0HMK2/8itHAb9ABnMOEHfpOAIxk2a+f6EMsw7jn54= +github.com/aws/aws-sdk-go-v2/service/sagemaker v1.168.1/go.mod h1:LoIh7abCP1rQng1kxJVJOTux55TaYN2tVN7G+zNbhus= +github.com/aws/aws-sdk-go-v2/service/scheduler v1.12.7 h1:lRA+BvESWVoldCxaw3SG9UssITkVref8rlVy5xCsh0A= +github.com/aws/aws-sdk-go-v2/service/scheduler v1.12.7/go.mod h1:hCwaxwoPRJmODF1jv6HvbUyT9q7Ak43LesgkvNvZ0PI= +github.com/aws/aws-sdk-go-v2/service/schemas v1.28.8 h1:9TVRGRx70yb6sa0QHQiASkQJvi/7yyHjSgacjqtuoGs= +github.com/aws/aws-sdk-go-v2/service/schemas v1.28.8/go.mod h1:e2l9QQlF3fXpXQp/eOaiAY8eVIk/JZX4Ood3FFMSGa8= +github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.34.7 h1:Nyfbgei75bohfmZNxgN27i528dGYVzqWJGlAO6lzXy8= +github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.34.7/go.mod h1:FG4p/DciRxPgjA+BEOlwRHN0iA8hX2h9g5buSy3cTDA= +github.com/aws/aws-sdk-go-v2/service/securityhub v1.55.0 h1:nMhvHZ3rqAVJEf6nQzhPFJxd1Ta2V5irglgO6LxefZQ= +github.com/aws/aws-sdk-go-v2/service/securityhub v1.55.0/go.mod h1:vcK9C11qfED/CA+tpAVXNzUNdHMIi6YkG2SY4rJeWzQ= +github.com/aws/aws-sdk-go-v2/service/securitylake v1.19.5 h1:nwqNHhr5lUPJu7+xguOlyHzT8/mWvzq/sAalls7Z2lg= +github.com/aws/aws-sdk-go-v2/service/securitylake v1.19.5/go.mod h1:5ouEhyGzNtLjT3iWieBp4haVCzL3O+L/WACksBRvGmc= +github.com/aws/aws-sdk-go-v2/service/serverlessapplicationrepository v1.24.7 h1:nwt36WJvLlHVvWsMJ6I9kXL9PDdHymiMX1wGbC9XV70= +github.com/aws/aws-sdk-go-v2/service/serverlessapplicationrepository v1.24.7/go.mod h1:ebAPCdcVdlTh+1dJqKJZ9nqaaW9fvVmUsDhgd5mu5uU= +github.com/aws/aws-sdk-go-v2/service/servicecatalog v1.32.7 h1:5wifyBACWZHZQ2Qgfs4rhJn5+pDDwLADqPKZDjdrhuY= +github.com/aws/aws-sdk-go-v2/service/servicecatalog v1.32.7/go.mod h1:yKI83wCV2CPuFQC8xrt8pzAiemWUsz7NKFZEOJBO+Og= +github.com/aws/aws-sdk-go-v2/service/servicecatalogappregistry v1.30.7 h1:uUMAVnxMbdZNkIYjSa0x33AQQ7d/FctnXacslwqHV20= +github.com/aws/aws-sdk-go-v2/service/servicecatalogappregistry v1.30.7/go.mod h1:6lOlu/wGdOPV5TwZ4gPZWDb0y1PtzN+jaUWL++ocCx8= +github.com/aws/aws-sdk-go-v2/service/servicediscovery v1.33.7 h1:GfXWwM9/iEJVcWQaMu22YzBeGQnY6zjiZD556awNJBA= +github.com/aws/aws-sdk-go-v2/service/servicediscovery v1.33.7/go.mod h1:YMM+e0OfZQVBpTJs+WNZWP/hdodeWnepXgancR5NFFw= +github.com/aws/aws-sdk-go-v2/service/servicequotas v1.25.7 h1:MpCqFu4StEaeuKFfcfHBr+a6I2ZG+GgiNZqKa5gBHI8= +github.com/aws/aws-sdk-go-v2/service/servicequotas v1.25.7/go.mod h1:Idae0gtkk4euj6ncytZGgDkkyZKmkFasf1mbZZ0RA6s= +github.com/aws/aws-sdk-go-v2/service/ses v1.29.1 h1:2e4bmSER1FF330Xu8p0nwnV4Ctdb0VzLQPUV15xs3iY= +github.com/aws/aws-sdk-go-v2/service/ses v1.29.1/go.mod h1:axmD03yvc8MIBcQkETvptcdw+wySwdc8MpYzQixku2w= +github.com/aws/aws-sdk-go-v2/service/sesv2 v1.38.4 h1:6qEG7Ee2TgPtiCRMyK0VK5ZCh5GXdsyXSpcbE+tPjpA= +github.com/aws/aws-sdk-go-v2/service/sesv2 v1.38.4/go.mod h1:dI4OVSVcgeQXlqjRN8zspZVtYxmDis1rZwpopBeu3dc= +github.com/aws/aws-sdk-go-v2/service/sfn v1.34.1 h1:EsBALm4m1lGz5riWufNKWguTFOt7Nze7m0wVIzIq8wU= +github.com/aws/aws-sdk-go-v2/service/sfn v1.34.1/go.mod h1:svXjjW4/t8lsSJa4+AUxYPevCzfw3m+z8sk4XcSsosU= +github.com/aws/aws-sdk-go-v2/service/shield v1.29.7 h1:S4nh0xUMZyNkhm7R5r2ITaa966JUYklMGug5LQHWefk= +github.com/aws/aws-sdk-go-v2/service/shield v1.29.7/go.mod h1:YebUyWBs2+7W+ybtLOJp/cvCqi9pqIwS8J2Zkn70Tls= +github.com/aws/aws-sdk-go-v2/service/signer v1.26.7 h1:lFV4EORSh0nyu8KkVp6Esw9A4nQqJ7kKdJT4IB7ods0= +github.com/aws/aws-sdk-go-v2/service/signer v1.26.7/go.mod h1:SVmnmYEocWBuQQhmyACYG1nDoWaMUpBQsgUkPa9v6WU= +github.com/aws/aws-sdk-go-v2/service/sns v1.33.7 h1:N3o8mXK6/MP24BtD9sb51omEO9J9cgPM3Ughc293dZc= +github.com/aws/aws-sdk-go-v2/service/sns v1.33.7/go.mod h1:AAHZydTB8/V2zn3WNwjLXBK1RAcSEpDNmFfrmjvrJQg= +github.com/aws/aws-sdk-go-v2/service/sqs v1.37.2 h1:mFLfxLZB/TVQwNJAYox4WaxpIu+dFVIcExrmRmRCOhw= +github.com/aws/aws-sdk-go-v2/service/sqs v1.37.2/go.mod h1:GnvfTdlvcpD+or3oslHPOn4Mu6KaCwlCp+0p0oqWnrM= +github.com/aws/aws-sdk-go-v2/service/ssm v1.56.1 h1:cfVjoEwOMOJOI6VoRQua0nI0KjZV9EAnR8bKaMeSppE= +github.com/aws/aws-sdk-go-v2/service/ssm v1.56.1/go.mod h1:fGHwAnTdNrLKhgl+UEeq9uEL4n3Ng4MJucA+7Xi3sC4= +github.com/aws/aws-sdk-go-v2/service/ssmcontacts v1.26.7 h1:9C399gf+xBWcnc88jYMdJXuDIUD4Cx0GgWgNwLkw7sQ= +github.com/aws/aws-sdk-go-v2/service/ssmcontacts v1.26.7/go.mod h1:s66Ty5zVYIbHuUl9Qv1jKyGPviLi1JCyMUITScR9eTs= +github.com/aws/aws-sdk-go-v2/service/ssmincidents v1.34.7 h1:oaL9ihEn6IFAj7B2TMsHl5FWDD7mtzVP4cLuAixRZyA= +github.com/aws/aws-sdk-go-v2/service/ssmincidents v1.34.7/go.mod h1:V8XcDjqhMDjAKPMbMVHhIdlxq4XmE38TrCnUPqVc7UE= +github.com/aws/aws-sdk-go-v2/service/ssmquicksetup v1.3.1 h1:VVR6LIH9dWS+yjm65SirUAOq/AslPI0pHyKAcYblDBQ= +github.com/aws/aws-sdk-go-v2/service/ssmquicksetup v1.3.1/go.mod h1:T8ZPwRPFsWMZRMdGRI8A//XEB8LO6rmg10HzcdJtPQI= +github.com/aws/aws-sdk-go-v2/service/ssmsap v1.18.7 h1:G/RD7kQlR7Kn+4zkXDX2zNGI35h+vITgfxXR836n3nY= +github.com/aws/aws-sdk-go-v2/service/ssmsap v1.18.7/go.mod h1:S74L321WjjyiND/iV5Ogc6FTPVKFlWfdvHu4kg3Wl8U= +github.com/aws/aws-sdk-go-v2/service/sso v1.24.7 h1:rLnYAfXQ3YAccocshIH5mzNNwZBkBo+bP6EhIxak6Hw= +github.com/aws/aws-sdk-go-v2/service/sso v1.24.7/go.mod h1:ZHtuQJ6t9A/+YDuxOLnbryAmITtr8UysSny3qcyvJTc= +github.com/aws/aws-sdk-go-v2/service/ssoadmin v1.29.7 h1:X+5QChV4btPAoTpQ/GAcEJ1tCrpO6Y8X4C5CG11WNWI= +github.com/aws/aws-sdk-go-v2/service/ssoadmin v1.29.7/go.mod h1:LYMBcQuhPc6czFaQpYC9JAcEcMf1DNVie4YHg6iC240= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.6 h1:JnhTZR3PiYDNKlXy50/pNeix9aGMo6lLpXwJ1mw8MD4= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.6/go.mod h1:URronUEGfXZN1VpdktPSD1EkAL9mfrV+2F4sjH38qOY= +github.com/aws/aws-sdk-go-v2/service/storagegateway v1.34.7 h1:InM09Qs5JI3JIAFhn+rSUCntQYzxCWjxbhO4ClleGK0= +github.com/aws/aws-sdk-go-v2/service/storagegateway v1.34.7/go.mod h1:ilUpGJkGtgY4Wm/A0RMUualrpaLeNqKVK+v6IneCKEU= +github.com/aws/aws-sdk-go-v2/service/sts v1.33.2 h1:s4074ZO1Hk8qv65GqNXqDjmkf4HSQqJukaLuuW0TpDA= +github.com/aws/aws-sdk-go-v2/service/sts v1.33.2/go.mod h1:mVggCnIWoM09jP71Wh+ea7+5gAp53q+49wDFs1SW5z8= +github.com/aws/aws-sdk-go-v2/service/swf v1.27.8 h1:uOj2sgPJAhL/SGgWo+eXS6BwzSvf1b1aU7j3EXjnk88= +github.com/aws/aws-sdk-go-v2/service/swf v1.27.8/go.mod h1:AvLsUcEcGmH2QWmwosGAMkBqRrsI0Jr2x92clBtul9s= +github.com/aws/aws-sdk-go-v2/service/synthetics v1.30.2 h1:k/jiEnfNxjWewwhKbdqkvrOo/AIyQTPgaAxTy/nqYJU= +github.com/aws/aws-sdk-go-v2/service/synthetics v1.30.2/go.mod h1:S/mI+GqL6A6JNbKqu0M9qKop3LOE6X96OzXdJX0rO6w= +github.com/aws/aws-sdk-go-v2/service/taxsettings v1.7.1 h1:eJp5OnMaO41jYGwemZSOtmWf2g/TSAYfWEQDfZ6yBP4= +github.com/aws/aws-sdk-go-v2/service/taxsettings v1.7.1/go.mod h1:izz7C90kWSbYfURLt+atG6pdCvOP3AFjGEznRf0YgGw= +github.com/aws/aws-sdk-go-v2/service/timestreaminfluxdb v1.6.7 h1:JQUps7DzFbYEAHZb6O9xJCAU1GVN396Vu0Pjj9VoGPc= +github.com/aws/aws-sdk-go-v2/service/timestreaminfluxdb v1.6.7/go.mod h1:oIpMQLOrjkZVCZl0ff5cDgE/zZuFE4PwVb61+2fkELk= +github.com/aws/aws-sdk-go-v2/service/timestreamwrite v1.29.8 h1:chzp64fl/hknlRR9jlstQDB4bYaf848v7KmzUB13omA= +github.com/aws/aws-sdk-go-v2/service/timestreamwrite v1.29.8/go.mod h1:6r72p62vXJL+0VTgk9rVV7i9+C0qTcx+HuL56XT9Pus= +github.com/aws/aws-sdk-go-v2/service/transcribe v1.41.7 h1:KJ5CkGw76hEoR66sJRZFgiRGxtybWGuQgvnJ+Q6qTtA= +github.com/aws/aws-sdk-go-v2/service/transcribe v1.41.7/go.mod h1:BwUrZHaN6ruqmc8+b12wWhJ6fHqLrkZ0Z214feUqWWM= +github.com/aws/aws-sdk-go-v2/service/transfer v1.54.0 h1:IA34IDWH2ooVUIPOidlQL1wZLej8QbcaZsYVgeRiA6w= +github.com/aws/aws-sdk-go-v2/service/transfer v1.54.0/go.mod h1:UV0UI3xdWUkyarrq5gViMKtXx4EWBKQsSpPxc+rdJCA= +github.com/aws/aws-sdk-go-v2/service/verifiedpermissions v1.20.3 h1:3HJY3Fym+WfG/BQmrrGq5hS80th6Vlx3VM2ZyaH41Lo= +github.com/aws/aws-sdk-go-v2/service/verifiedpermissions v1.20.3/go.mod h1:myoi8VQCWyHnkfxRjkM1H5lFQilgGXbU2ulwAVqxeow= +github.com/aws/aws-sdk-go-v2/service/vpclattice v1.13.0 h1:UvZSATW4nNWJFzsBmgVvosdrlLTPgtpaDfra2afaSlk= +github.com/aws/aws-sdk-go-v2/service/vpclattice v1.13.0/go.mod h1:LLTXSn+ChGS/Ejt+akSlR0QBJ2VJVibiKQfp/IovK7Q= +github.com/aws/aws-sdk-go-v2/service/waf v1.25.7 h1:QatDy5lb2iXs9GPxuPSRDogX2HesmmUXu0GCDCQ7exQ= +github.com/aws/aws-sdk-go-v2/service/waf v1.25.7/go.mod h1:Jx83wxDXt4tq2UEhy4ODhqgpb6NBkQRs4TSkcHfBPcg= +github.com/aws/aws-sdk-go-v2/service/wafregional v1.25.7 h1:9V+YZqYy+FvDzZF16xXE7IWYlNWJKurMay7HC+ZGm0A= +github.com/aws/aws-sdk-go-v2/service/wafregional v1.25.7/go.mod h1:gB1OOPydtleVh7rcCj8fgoNfi6/4chzyP6aereNH3tA= +github.com/aws/aws-sdk-go-v2/service/wafv2 v1.55.6 h1:cK66ajiEQ2+eVezj6SMetpTohM1TuR94nPXGbGGCHaI= +github.com/aws/aws-sdk-go-v2/service/wafv2 v1.55.6/go.mod h1:HSfXIyNzPY6UIB37eFe76S4f/YyQPbuoovY+JhEy1x8= +github.com/aws/aws-sdk-go-v2/service/wellarchitected v1.34.7 h1:e4VW/f+S98RAKzHZT9+gPqFhNELSobBcgVZOTl23C/o= +github.com/aws/aws-sdk-go-v2/service/wellarchitected v1.34.7/go.mod h1:X1zN/DRROy1bpTCMdQqVLd4/hLaM3GbMhVURUW8F8mA= 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/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/workspaces v1.50.2 h1:VfPamxDTVfbKWP3UPDt3iJ8msHkHfIvqZNUhLjtGD9Q= +github.com/aws/aws-sdk-go-v2/service/workspaces v1.50.2/go.mod h1:OX0I9k3wOSsRCrdqAUOVEDLHupani0n+UJ80TY0fIWc= +github.com/aws/aws-sdk-go-v2/service/workspacesweb v1.25.1 h1:PrMt4dBsy0rdfuMcFYlqOQNSgHmF+gCGbV0M/8MbYd8= +github.com/aws/aws-sdk-go-v2/service/workspacesweb v1.25.1/go.mod h1:pwgFCLPLVoTNXQxG6LZdpXBGMr2wmVZBDci+yfuGZi8= +github.com/aws/aws-sdk-go-v2/service/xray v1.30.1 h1:BqsNRmYVd9CLJtcTwlJftM5oCsmuHcKm8ajJjYscP0Q= +github.com/aws/aws-sdk-go-v2/service/xray v1.30.1/go.mod h1:4XSKiCaqUPZUSQwLQCAzVVCEYJZKMzHF2s36fCTTirk= 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= @@ -761,8 +763,8 @@ github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1: github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74= github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -github.com/zclconf/go-cty v1.15.0 h1:tTCRWxsexYUmtt/wVxgDClUe+uQusuI443uL6e+5sXQ= -github.com/zclconf/go-cty v1.15.0/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= +github.com/zclconf/go-cty v1.15.1 h1:RgQYm4j2EvoBRXOPxhUvxPzRrGDo1eCOhHXuGfrj5S0= +github.com/zclconf/go-cty v1.15.1/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940 h1:4r45xpDWB6ZMSMNJFMOjqrGHynW3DIBuR2H9j0ug+Mo= github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940/go.mod h1:CmBdvvj3nqzfzJ6nTCIwDTPZ56aVGvDrmztiO5g3qrM= go.opentelemetry.io/contrib/instrumentation/github.com/aws/aws-sdk-go-v2/otelaws v0.57.0 h1:G47XgH32CEM1I9kZ8xrVExSxivATGHNE0tdxuqlx9MQ= @@ -826,8 +828,8 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241118233622-e639e219e697 h1:LWZqQOEjDyONlF1H6afSWpAL/znlREo2tHfLoe+8LMA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241118233622-e639e219e697/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a h1:hgh8P4EuoxpsuKMXX/To36nOFD7vixReXgn8lPGnt+o= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= google.golang.org/grpc v1.68.0 h1:aHQeeJbo8zAkAa3pRzrVjZlbz6uSfeOXlJNQM0RAbz0= google.golang.org/grpc v1.68.0/go.mod h1:fmSPC5AsjSBCK54MyHRx48kpOti1/jRfOlwEWywNjWA= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= diff --git a/infrastructure/repository/labels-service.tf b/infrastructure/repository/labels-service.tf index 9473e9a0c6d0..70785563f5b1 100644 --- a/infrastructure/repository/labels-service.tf +++ b/infrastructure/repository/labels-service.tf @@ -286,6 +286,7 @@ variable "service_labels" { "s3", "s3control", "s3outposts", + "s3tables", "sagemaker", "sagemakera2iruntime", "sagemakeredge", diff --git a/infrastructure/repository/main.tf b/infrastructure/repository/main.tf index 5dbca94a3d8e..15b7ab37a9d5 100644 --- a/infrastructure/repository/main.tf +++ b/infrastructure/repository/main.tf @@ -13,7 +13,7 @@ terraform { required_providers { github = { source = "integrations/github" - version = "6.3.1" + version = "6.4.0" } } diff --git a/internal/acctest/acctest.go b/internal/acctest/acctest.go index a5d9a7232249..9808d2fa698a 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" @@ -322,7 +321,7 @@ func PreCheck(ctx context.Context, t *testing.T) { } // ProviderAccountID returns the account ID of an AWS provider -func ProviderAccountID(provider *schema.Provider) string { +func ProviderAccountID(ctx context.Context, provider *schema.Provider) string { if provider == nil { log.Print("[DEBUG] Unable to read account ID from test provider: empty provider") return "" @@ -336,7 +335,7 @@ func ProviderAccountID(provider *schema.Provider) string { log.Print("[DEBUG] Unable to read account ID from test provider: non-AWS or unconfigured AWS provider") return "" } - return client.AccountID + return client.AccountID(ctx) } // CheckDestroyNoop is a TestCheckFunc to be used as a TestCase's CheckDestroy when no such check can be made. @@ -356,17 +355,17 @@ func CheckSleep(t *testing.T, d time.Duration) resource.TestCheckFunc { } // CheckResourceAttrAccountID ensures the Terraform state exactly matches the account ID -func CheckResourceAttrAccountID(resourceName, attributeName string) resource.TestCheckFunc { +func CheckResourceAttrAccountID(ctx context.Context, resourceName, attributeName string) resource.TestCheckFunc { return func(s *terraform.State) error { - return resource.TestCheckResourceAttr(resourceName, attributeName, AccountID())(s) + return resource.TestCheckResourceAttr(resourceName, attributeName, AccountID(ctx))(s) } } // CheckResourceAttrRegionalARN ensures the Terraform state exactly matches a formatted ARN with region -func CheckResourceAttrRegionalARN(resourceName, attributeName, arnService, arnResource string) resource.TestCheckFunc { +func CheckResourceAttrRegionalARN(ctx context.Context, resourceName, attributeName, arnService, arnResource string) resource.TestCheckFunc { return func(s *terraform.State) error { attributeValue := arn.ARN{ - AccountID: AccountID(), + AccountID: AccountID(ctx), Partition: Partition(), Region: Region(), Resource: arnResource, @@ -459,10 +458,10 @@ func MatchResourceAttrAccountID(resourceName, attributeName string) resource.Tes } // MatchResourceAttrRegionalARN ensures the Terraform state regexp matches a formatted ARN with region -func MatchResourceAttrRegionalARN(resourceName, attributeName, arnService string, arnResourceRegexp *regexp.Regexp) resource.TestCheckFunc { +func MatchResourceAttrRegionalARN(ctx context.Context, resourceName, attributeName, arnService string, arnResourceRegexp *regexp.Regexp) resource.TestCheckFunc { return func(s *terraform.State) error { arnRegexp := arn.ARN{ - AccountID: AccountID(), + AccountID: AccountID(ctx), Partition: Partition(), Region: Region(), Resource: arnResourceRegexp.String(), @@ -480,10 +479,10 @@ func MatchResourceAttrRegionalARN(resourceName, attributeName, arnService string } // MatchResourceAttrRegionalARNRegion ensures the Terraform state regexp matches a formatted ARN with the specified region -func MatchResourceAttrRegionalARNRegion(resourceName, attributeName, arnService, region string, arnResourceRegexp *regexp.Regexp) resource.TestCheckFunc { +func MatchResourceAttrRegionalARNRegion(ctx context.Context, resourceName, attributeName, arnService, region string, arnResourceRegexp *regexp.Regexp) resource.TestCheckFunc { return func(s *terraform.State) error { arnRegexp := arn.ARN{ - AccountID: AccountID(), + AccountID: AccountID(ctx), Partition: Partition(), Region: region, Resource: arnResourceRegexp.String(), @@ -571,9 +570,9 @@ func MatchResourceAttrGlobalHostname(resourceName, attributeName, serviceName st } } -func globalARNValue(arnService, arnResource string) string { +func globalARNValue(ctx context.Context, arnService, arnResource string) string { return arn.ARN{ - AccountID: AccountID(), + AccountID: AccountID(ctx), Partition: Partition(), Resource: arnResource, Service: arnService, @@ -581,9 +580,9 @@ func globalARNValue(arnService, arnResource string) string { } // CheckResourceAttrGlobalARN ensures the Terraform state exactly matches a formatted ARN without region -func CheckResourceAttrGlobalARN(resourceName, attributeName, arnService, arnResource string) resource.TestCheckFunc { +func CheckResourceAttrGlobalARN(ctx context.Context, resourceName, attributeName, arnService, arnResource string) resource.TestCheckFunc { return func(s *terraform.State) error { - return resource.TestCheckResourceAttr(resourceName, attributeName, globalARNValue(arnService, arnResource))(s) + return resource.TestCheckResourceAttr(resourceName, attributeName, globalARNValue(ctx, arnService, arnResource))(s) } } @@ -613,10 +612,10 @@ func CheckResourceAttrGlobalARNAccountID(resourceName, attributeName, accountID, } // MatchResourceAttrGlobalARN ensures the Terraform state regexp matches a formatted ARN without region -func MatchResourceAttrGlobalARN(resourceName, attributeName, arnService string, arnResourceRegexp *regexp.Regexp) resource.TestCheckFunc { +func MatchResourceAttrGlobalARN(ctx context.Context, resourceName, attributeName, arnService string, arnResourceRegexp *regexp.Regexp) resource.TestCheckFunc { return func(s *terraform.State) error { arnRegexp := arn.ARN{ - AccountID: AccountID(), + AccountID: AccountID(ctx), Partition: Partition(), Resource: arnResourceRegexp.String(), Service: arnService, @@ -893,20 +892,20 @@ func PrimaryInstanceState(s *terraform.State, name string) (*terraform.InstanceS // AccountID returns the account ID of Provider // Must be used within a resource.TestCheckFunc -func AccountID() string { - return ProviderAccountID(Provider) +func AccountID(ctx context.Context) string { + return ProviderAccountID(ctx, Provider) } func Region() string { - return envvar.GetWithDefault(envvar.DefaultRegion, names.USWest2RegionID) + return envvar.GetWithDefault(envvar.DefaultRegion, endpoints.UsWest2RegionID) } func AlternateRegion() string { - return envvar.GetWithDefault(envvar.AlternateRegion, names.USEast1RegionID) + return envvar.GetWithDefault(envvar.AlternateRegion, endpoints.UsEast1RegionID) } func ThirdRegion() string { - return envvar.GetWithDefault(envvar.ThirdRegion, names.USEast2RegionID) + return envvar.GetWithDefault(envvar.ThirdRegion, endpoints.UsEast2RegionID) } func Partition() string { @@ -1007,17 +1006,7 @@ func PreCheckMultipleRegion(t *testing.T, regions int) { func PreCheckRegion(t *testing.T, regions ...string) { t.Helper() - curr := Region() - var regionOK bool - - for _, region := range regions { - if curr == region { - regionOK = true - break - } - } - - if !regionOK { + if curr := Region(); !slices.Contains(regions, curr) { t.Skipf("skipping tests; %s (%s) not supported. Supported: [%s]", envvar.DefaultRegion, curr, strings.Join(regions, ", ")) } } @@ -1026,21 +1015,26 @@ func PreCheckRegion(t *testing.T, regions ...string) { func PreCheckRegionNot(t *testing.T, regions ...string) { t.Helper() - curr := Region() + if curr := Region(); slices.Contains(regions, curr) { + t.Skipf("skipping tests; %s (%s) not supported", envvar.DefaultRegion, curr) + } +} - for _, region := range regions { - if curr == region { - t.Skipf("skipping tests; %s (%s) not supported", envvar.DefaultRegion, curr) - } +// PreCheckAlternateRegion checks that the alternate test region is one of the specified AWS Regions. +func PreCheckAlternateRegion(t *testing.T, regions ...string) { + t.Helper() + + if curr := AlternateRegion(); !slices.Contains(regions, curr) { + t.Skipf("skipping tests; %s (%s) not supported. Supported: [%s]", envvar.AlternateRegion, curr, strings.Join(regions, ", ")) } } -// PreCheckAlternateRegionIs checks that the alternate test region is the specified AWS Region. -func PreCheckAlternateRegionIs(t *testing.T, region string) { +// PreCheckThirdRegion checks that the third test region is one of the specified AWS Regions. +func PreCheckThirdRegion(t *testing.T, regions ...string) { t.Helper() - if curr := AlternateRegion(); curr != region { - t.Skipf("skipping tests; %s (%s) does not equal %s", envvar.AlternateRegion, curr, region) + if curr := ThirdRegion(); !slices.Contains(regions, curr) { + t.Skipf("skipping tests; %s (%s) not supported. Supported: [%s]", envvar.ThirdRegion, curr, strings.Join(regions, ", ")) } } @@ -1057,10 +1051,8 @@ func PreCheckPartition(t *testing.T, partition string) { func PreCheckPartitionNot(t *testing.T, partitions ...string) { t.Helper() - for _, partition := range partitions { - if curr := Partition(); curr == partition { - t.Skipf("skipping tests; current partition (%s) not supported", curr) - } + if curr := Partition(); slices.Contains(partitions, curr) { + t.Skipf("skipping tests; current partition (%s) not supported", curr) } } @@ -1122,6 +1114,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 +1276,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 +1288,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) } } @@ -1361,9 +1367,9 @@ func PreCheckWAFV2CloudFrontScope(ctx context.Context, t *testing.T) { switch Partition() { case endpoints.AwsPartitionID: - PreCheckRegion(t, names.USEast1RegionID) + PreCheckRegion(t, endpoints.UsEast1RegionID) case endpoints.AwsCnPartitionID: - PreCheckRegion(t, names.CNNorthwest1RegionID) + PreCheckRegion(t, endpoints.CnNorthwest1RegionID) } conn := Provider.Meta().(*conns.AWSClient).WAFV2Client(ctx) @@ -1556,7 +1562,7 @@ provider %[1]q { `, providerName, os.Getenv(envvar.AlternateAccessKeyId), os.Getenv(envvar.AlternateProfile), AlternateRegion(), os.Getenv(envvar.AlternateSecretAccessKey)) } -func RegionProviderFunc(region string, providers *[]*schema.Provider) ProviderFunc { +func RegionProviderFunc(ctx context.Context, region string, providers *[]*schema.Provider) ProviderFunc { return func() *schema.Provider { if region == "" { log.Println("[DEBUG] No region given") @@ -1582,7 +1588,7 @@ func RegionProviderFunc(region string, providers *[]*schema.Provider) ProviderFu continue } - clientRegion := client.Region + clientRegion := client.Region(ctx) log.Printf("[DEBUG] Checking AWS provider region %q against %q", clientRegion, region) if clientRegion == region { log.Printf("[DEBUG] Found AWS provider with region: %s", region) @@ -2611,14 +2617,14 @@ func CheckVPCExists(ctx context.Context, n string, v *ec2types.Vpc) resource.Tes } } -func CheckCallerIdentityAccountID(n string) resource.TestCheckFunc { +func CheckCallerIdentityAccountID(ctx context.Context, n string) resource.TestCheckFunc { return func(s *terraform.State) error { rs, ok := s.RootModule().Resources[n] if !ok { return fmt.Errorf("can't find AccountID resource: %s", n) } - expected := Provider.Meta().(*conns.AWSClient).AccountID + expected := Provider.Meta().(*conns.AWSClient).AccountID(ctx) if rs.Primary.Attributes["account_id"] != expected { return fmt.Errorf("incorrect Account ID: expected %q, got %q", expected, rs.Primary.Attributes["account_id"]) } diff --git a/internal/acctest/known_value.go b/internal/acctest/known_value.go index a93d0ba7c47c..8bf590572d69 100644 --- a/internal/acctest/known_value.go +++ b/internal/acctest/known_value.go @@ -4,6 +4,7 @@ package acctest import ( + "context" "fmt" "github.com/hashicorp/terraform-plugin-testing/knownvalue" @@ -23,7 +24,7 @@ func (v globalARNCheck) CheckValue(other any) error { return fmt.Errorf("expected string value for GlobalARN check, got: %T", other) } - arnValue := globalARNValue(v.arnService, v.arnResource) + arnValue := globalARNValue(context.Background(), v.arnService, v.arnResource) if otherVal != arnValue { return fmt.Errorf("expected value %s for GlobalARN check, got: %s", arnValue, otherVal) @@ -34,7 +35,7 @@ func (v globalARNCheck) CheckValue(other any) error { // String returns the string representation of the value. func (v globalARNCheck) String() string { - return globalARNValue(v.arnService, v.arnResource) + return globalARNValue(context.Background(), v.arnService, v.arnResource) } func GlobalARN(arnService, arnResource string) globalARNCheck { diff --git a/internal/acctest/knownvalue/stringable_value.go b/internal/acctest/knownvalue/stringable_value.go new file mode 100644 index 000000000000..53d828d0c13e --- /dev/null +++ b/internal/acctest/knownvalue/stringable_value.go @@ -0,0 +1,10 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +package statecheck + +import "github.com/hashicorp/terraform-plugin-testing/knownvalue" + +func StringExact[T ~string](value T) knownvalue.Check { + return knownvalue.StringExact(string(value)) +} diff --git a/internal/acctest/partition_test.go b/internal/acctest/partition_test.go index e9eb57ee1e1c..0d4de43ed9ca 100644 --- a/internal/acctest/partition_test.go +++ b/internal/acctest/partition_test.go @@ -8,7 +8,6 @@ import ( "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" "github.com/hashicorp/terraform-provider-aws/internal/acctest" - "github.com/hashicorp/terraform-provider-aws/names" ) func TestIsIsolatedPartition(t *testing.T) { @@ -67,27 +66,27 @@ func TestIsIsolatedRegion(t *testing.T) { expected bool }{ { - input: names.USEast1RegionID, + input: endpoints.UsEast1RegionID, expected: false, }, { - input: names.CNNorth1RegionID, + input: endpoints.CnNorth1RegionID, expected: false, }, { - input: names.USGovEast1RegionID, + input: endpoints.UsGovEast1RegionID, expected: false, }, { - input: names.USISOEast1RegionID, + input: endpoints.UsIsoEast1RegionID, expected: true, }, { - input: names.USISOBEast1RegionID, + input: endpoints.UsIsobEast1RegionID, expected: true, }, { - input: names.EUISOEWest1RegionID, + input: endpoints.EuIsoeWest1RegionID, expected: true, }, } @@ -159,27 +158,27 @@ func TestIsStandardRegion(t *testing.T) { expected bool }{ { - input: names.USEast1RegionID, + input: endpoints.UsEast1RegionID, expected: true, }, { - input: names.CNNorth1RegionID, + input: endpoints.CnNorth1RegionID, expected: false, }, { - input: names.USGovEast1RegionID, + input: endpoints.UsGovEast1RegionID, expected: false, }, { - input: names.USISOEast1RegionID, + input: endpoints.UsIsoEast1RegionID, expected: false, }, { - input: names.USISOBEast1RegionID, + input: endpoints.UsIsobEast1RegionID, expected: false, }, { - input: names.EUISOEWest1RegionID, + input: endpoints.EuIsoeWest1RegionID, expected: false, }, } diff --git a/internal/conns/awsclient.go b/internal/conns/awsclient.go index 8f0be7876497..14395a7413ce 100644 --- a/internal/conns/awsclient.go +++ b/internal/conns/awsclient.go @@ -26,20 +26,20 @@ import ( ) type AWSClient struct { - AccountID string - defaultTagsConfig *tftags.DefaultConfig - ignoreTagsConfig *tftags.IgnoreConfig - Region string - ServicePackages map[string]ServicePackage + ServicePackages map[string]ServicePackage + accountID string awsConfig *aws.Config clients map[string]any conns map[string]any + defaultTagsConfig *tftags.DefaultConfig endpoints map[string]string // From provider configuration. httpClient *http.Client + ignoreTagsConfig *tftags.IgnoreConfig lock sync.Mutex logger baselogging.Logger partition endpoints.Partition + region string session *session_sdkv1.Session s3ExpressClient *s3.Client s3UsePathStyle bool // From provider configuration. @@ -76,11 +76,21 @@ func (c *AWSClient) Endpoints(context.Context) map[string]string { return maps.Clone(c.endpoints) } +// AccountID returns the configured AWS account ID. +func (c *AWSClient) AccountID(context.Context) string { + return c.accountID +} + // Partition returns the ID of the configured AWS partition. func (c *AWSClient) Partition(context.Context) string { return c.partition.ID() } +// Region returns the ID of the configured AWS Region. +func (c *AWSClient) Region(context.Context) string { + return c.region +} + // PartitionHostname returns a hostname with the provider domain suffix for the partition // e.g. PREFIX.amazonaws.com // The prefix should not contain a trailing period. @@ -93,8 +103,8 @@ func (c *AWSClient) RegionalARN(ctx context.Context, service, resource string) s return arn.ARN{ Partition: c.Partition(ctx), Service: service, - Region: c.Region, - AccountID: c.AccountID, + Region: c.Region(ctx), + AccountID: c.AccountID(ctx), Resource: resource, }.String() } @@ -104,7 +114,7 @@ func (c *AWSClient) RegionalARNNoAccount(ctx context.Context, service, resource return arn.ARN{ Partition: c.Partition(ctx), Service: service, - Region: c.Region, + Region: c.Region(ctx), Resource: resource, }.String() } @@ -113,7 +123,7 @@ func (c *AWSClient) RegionalARNNoAccount(ctx context.Context, service, resource // e.g. PREFIX.us-west-2.amazonaws.com // The prefix should not contain a trailing period. func (c *AWSClient) RegionalHostname(ctx context.Context, prefix string) string { - return fmt.Sprintf("%s.%s.%s", prefix, c.Region, c.DNSSuffix(ctx)) + return fmt.Sprintf("%s.%s.%s", prefix, c.Region(ctx), c.DNSSuffix(ctx)) } // S3ExpressClient returns an AWS SDK for Go v2 S3 API client suitable for use with S3 Express (directory buckets). @@ -127,6 +137,7 @@ func (c *AWSClient) S3ExpressClient(ctx context.Context) *s3.Client { if c.s3ExpressClient == nil { if s3Client.Options().Region == endpoints.AwsGlobalRegionID { + // No global endpoint for S3 Express. c.s3ExpressClient = errs.Must(client[*s3.Client](ctx, c, names.S3, map[string]any{ "s3_us_east_1_regional_endpoint": "regional", })) @@ -209,7 +220,7 @@ func (c *AWSClient) DefaultKMSKeyPolicy(ctx context.Context) string { } ] } -`, c.Partition(ctx), c.AccountID) +`, c.Partition(ctx), c.AccountID(ctx)) } // GlobalAcceleratorHostedZoneID returns the Route 53 hosted zone ID @@ -234,8 +245,8 @@ func (c *AWSClient) ReverseDNSPrefix(ctx context.Context) string { } // EC2RegionalPrivateDNSSuffix returns the EC2 private DNS suffix for the configured AWS Region. -func (c *AWSClient) EC2RegionalPrivateDNSSuffix(context.Context) string { - region := c.Region +func (c *AWSClient) EC2RegionalPrivateDNSSuffix(ctx context.Context) string { + region := c.Region(ctx) if region == endpoints.UsEast1RegionID { return "ec2.internal" } @@ -244,8 +255,8 @@ func (c *AWSClient) EC2RegionalPrivateDNSSuffix(context.Context) string { } // EC2RegionalPublicDNSSuffix returns the EC2 public DNS suffix for the configured AWS Region. -func (c *AWSClient) EC2RegionalPublicDNSSuffix(context.Context) string { - region := c.Region +func (c *AWSClient) EC2RegionalPublicDNSSuffix(ctx context.Context) string { + region := c.Region(ctx) if region == endpoints.UsEast1RegionID { return "compute-1" } diff --git a/internal/conns/awsclient_gen.go b/internal/conns/awsclient_gen.go index 146a8982839f..1864dff48cd3 100644 --- a/internal/conns/awsclient_gen.go +++ b/internal/conns/awsclient_gen.go @@ -204,6 +204,7 @@ import ( "github.com/aws/aws-sdk-go-v2/service/s3" "github.com/aws/aws-sdk-go-v2/service/s3control" "github.com/aws/aws-sdk-go-v2/service/s3outposts" + "github.com/aws/aws-sdk-go-v2/service/s3tables" "github.com/aws/aws-sdk-go-v2/service/sagemaker" "github.com/aws/aws-sdk-go-v2/service/scheduler" "github.com/aws/aws-sdk-go-v2/service/schemas" @@ -1052,6 +1053,10 @@ func (c *AWSClient) S3OutpostsClient(ctx context.Context) *s3outposts.Client { return errs.Must(client[*s3outposts.Client](ctx, c, names.S3Outposts, make(map[string]any))) } +func (c *AWSClient) S3TablesClient(ctx context.Context) *s3tables.Client { + return errs.Must(client[*s3tables.Client](ctx, c, names.S3Tables, make(map[string]any))) +} + func (c *AWSClient) SESClient(ctx context.Context) *ses.Client { return errs.Must(client[*ses.Client](ctx, c, names.SES, make(map[string]any))) } diff --git a/internal/conns/awsclient_test.go b/internal/conns/awsclient_test.go index ed6bfe7a9681..fbadf5b6dcab 100644 --- a/internal/conns/awsclient_test.go +++ b/internal/conns/awsclient_test.go @@ -70,7 +70,7 @@ func TestAWSClientRegionalHostname(t *testing.T) { // nosemgrep:ci.aws-in-func-n Name: "AWS Commercial", AWSClient: &AWSClient{ partition: standardPartition, - Region: "us-west-2", //lintignore:AWSAT003 + region: "us-west-2", //lintignore:AWSAT003 }, Prefix: "test", Expected: "test.us-west-2.amazonaws.com", //lintignore:AWSAT003 @@ -79,7 +79,7 @@ func TestAWSClientRegionalHostname(t *testing.T) { // nosemgrep:ci.aws-in-func-n Name: "AWS China", AWSClient: &AWSClient{ partition: chinaPartition, - Region: "cn-northwest-1", //lintignore:AWSAT003 + region: "cn-northwest-1", //lintignore:AWSAT003 }, Prefix: "test", Expected: "test.cn-northwest-1.amazonaws.com.cn", //lintignore:AWSAT003 @@ -113,7 +113,7 @@ func TestAWSClientEC2PrivateDNSNameForIP(t *testing.T) { // nosemgrep:ci.aws-in- Name: "us-west-2", AWSClient: &AWSClient{ partition: standardPartition, - Region: "us-west-2", //lintignore:AWSAT003 + region: "us-west-2", //lintignore:AWSAT003 }, IP: "10.20.30.40", Expected: "ip-10-20-30-40.us-west-2.compute.internal", //lintignore:AWSAT003 @@ -122,7 +122,7 @@ func TestAWSClientEC2PrivateDNSNameForIP(t *testing.T) { // nosemgrep:ci.aws-in- Name: "us-east-1", AWSClient: &AWSClient{ partition: standardPartition, - Region: "us-east-1", //lintignore:AWSAT003 + region: "us-east-1", //lintignore:AWSAT003 }, IP: "10.20.30.40", Expected: "ip-10-20-30-40.ec2.internal", @@ -156,7 +156,7 @@ func TestAWSClientEC2PublicDNSNameForIP(t *testing.T) { // nosemgrep:ci.aws-in-f Name: "us-west-2", AWSClient: &AWSClient{ partition: standardPartition, - Region: "us-west-2", //lintignore:AWSAT003 + region: "us-west-2", //lintignore:AWSAT003 }, IP: "10.20.30.40", Expected: "ec2-10-20-30-40.us-west-2.compute.amazonaws.com", //lintignore:AWSAT003 @@ -165,7 +165,7 @@ func TestAWSClientEC2PublicDNSNameForIP(t *testing.T) { // nosemgrep:ci.aws-in-f Name: "us-east-1", AWSClient: &AWSClient{ partition: standardPartition, - Region: "us-east-1", //lintignore:AWSAT003 + region: "us-east-1", //lintignore:AWSAT003 }, IP: "10.20.30.40", Expected: "ec2-10-20-30-40.compute-1.amazonaws.com", diff --git a/internal/conns/config.go b/internal/conns/config.go index 7f7a5afc0efd..771456c71f7a 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.")) @@ -207,10 +207,10 @@ func (c *Config) ConfigureProvider(ctx context.Context, client *AWSClient) (*AWS } } - client.AccountID = accountID + client.accountID = accountID client.defaultTagsConfig = c.DefaultTagsConfig client.ignoreTagsConfig = c.IgnoreTagsConfig - client.Region = c.Region + client.region = c.Region client.SetHTTPClient(ctx, session.Config.HTTPClient) // Must be called while client.Session is nil. client.session = session diff --git a/internal/conns/config_test.go b/internal/conns/config_test.go index f7684e658ac3..843f68d1ac3e 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/framework/validators/prefix_none_of.go b/internal/framework/validators/prefix_none_of.go new file mode 100644 index 000000000000..f5a03bd4ddb3 --- /dev/null +++ b/internal/framework/validators/prefix_none_of.go @@ -0,0 +1,61 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +package validators + +import ( + "context" + "fmt" + "slices" + "strings" + + "github.com/hashicorp/terraform-plugin-framework-validators/helpers/validatordiag" + "github.com/hashicorp/terraform-plugin-framework/schema/validator" + tfslices "github.com/hashicorp/terraform-provider-aws/internal/slices" +) + +var _ validator.String = prefixNoneOfValidator{} + +type prefixNoneOfValidator struct { + values []string +} + +func (v prefixNoneOfValidator) Description(ctx context.Context) string { + return v.MarkdownDescription(ctx) +} + +func (v prefixNoneOfValidator) MarkdownDescription(_ context.Context) string { + return fmt.Sprintf("value must begin with none of: %s", tfslices.ApplyToAll(v.values, func(v string) string { + return `"` + v + `"` + })) +} + +func (v prefixNoneOfValidator) ValidateString(ctx context.Context, request validator.StringRequest, response *validator.StringResponse) { + if request.ConfigValue.IsNull() || request.ConfigValue.IsUnknown() { + return + } + + value := request.ConfigValue.ValueString() + + for _, otherValue := range v.values { + if !strings.HasPrefix(value, otherValue) { + continue + } + + response.Diagnostics.Append(validatordiag.InvalidAttributeValueMatchDiagnostic( + request.Path, + v.Description(ctx), + request.ConfigValue.String(), + )) + + break + } +} + +// PrefixNoneOf checks that the String held in the attribute +// begins with none of the given `values`. +func PrefixNoneOf(values ...string) prefixNoneOfValidator { + return prefixNoneOfValidator{ + values: slices.Clone(values), + } +} diff --git a/internal/framework/validators/prefix_none_of_test.go b/internal/framework/validators/prefix_none_of_test.go new file mode 100644 index 000000000000..69619e138e15 --- /dev/null +++ b/internal/framework/validators/prefix_none_of_test.go @@ -0,0 +1,118 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +package validators_test + +import ( + "context" + "fmt" + "testing" + + "github.com/google/go-cmp/cmp" + "github.com/hashicorp/terraform-plugin-framework/schema/validator" + "github.com/hashicorp/terraform-plugin-framework/types" + "github.com/hashicorp/terraform-provider-aws/internal/framework/validators" +) + +func TestPrefixNoneOfValidator(t *testing.T) { + t.Parallel() + + type testCase struct { + in types.String + prefixNoneOfValues []string + expectError bool + } + + testCases := map[string]testCase{ + "simple-match": { + in: types.StringValue("prefix"), + prefixNoneOfValues: []string{ + "pre", + "first", + "1st", + }, + expectError: true, + }, + "simple-mismatch-case-insensitive": { + in: types.StringValue("prefix"), + prefixNoneOfValues: []string{ + "PRE", + "first", + "1st", + }, + }, + "simple-mismatch": { + in: types.StringValue("prefix"), + prefixNoneOfValues: []string{ + "pri", + "first", + "1st", + }, + }, + "skip-validation-on-null": { + in: types.StringNull(), + prefixNoneOfValues: []string{ + "pre", + "first", + "1st", + }, + }, + "skip-validation-on-unknown": { + in: types.StringUnknown(), + prefixNoneOfValues: []string{ + "pre", + "first", + "1st", + }, + }, + } + + for name, test := range testCases { + t.Run(fmt.Sprintf("ValidateString - %s", name), func(t *testing.T) { + t.Parallel() + req := validator.StringRequest{ + ConfigValue: test.in, + } + res := validator.StringResponse{} + validators.PrefixNoneOf(test.prefixNoneOfValues...).ValidateString(context.TODO(), req, &res) + + if !res.Diagnostics.HasError() && test.expectError { + t.Fatal("expected error, got no error") + } + + if res.Diagnostics.HasError() && !test.expectError { + t.Fatalf("got unexpected error: %s", res.Diagnostics) + } + }) + } +} + +func TestPrefixNoneOfValidator_Description(t *testing.T) { + t.Parallel() + + type testCase struct { + in []string + expected string + } + + testCases := map[string]testCase{ + "quoted-once": { + in: []string{"foo", "bar", "baz"}, + expected: `value must begin with none of: ["foo" "bar" "baz"]`, + }, + } + + for name, test := range testCases { + t.Run(name, func(t *testing.T) { + t.Parallel() + + v := validators.PrefixNoneOf(test.in...) + + got := v.MarkdownDescription(context.Background()) + + if diff := cmp.Diff(got, test.expected); diff != "" { + t.Errorf("unexpected difference: %s", diff) + } + }) + } +} diff --git a/internal/framework/validators/suffix_none_of.go b/internal/framework/validators/suffix_none_of.go new file mode 100644 index 000000000000..5d96c7f6b0d2 --- /dev/null +++ b/internal/framework/validators/suffix_none_of.go @@ -0,0 +1,61 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +package validators + +import ( + "context" + "fmt" + "slices" + "strings" + + "github.com/hashicorp/terraform-plugin-framework-validators/helpers/validatordiag" + "github.com/hashicorp/terraform-plugin-framework/schema/validator" + tfslices "github.com/hashicorp/terraform-provider-aws/internal/slices" +) + +var _ validator.String = suffixNoneOfValidator{} + +type suffixNoneOfValidator struct { + values []string +} + +func (v suffixNoneOfValidator) Description(ctx context.Context) string { + return v.MarkdownDescription(ctx) +} + +func (v suffixNoneOfValidator) MarkdownDescription(_ context.Context) string { + return fmt.Sprintf("value must end with none of: %s", tfslices.ApplyToAll(v.values, func(v string) string { + return `"` + v + `"` + })) +} + +func (v suffixNoneOfValidator) ValidateString(ctx context.Context, request validator.StringRequest, response *validator.StringResponse) { + if request.ConfigValue.IsNull() || request.ConfigValue.IsUnknown() { + return + } + + value := request.ConfigValue.ValueString() + + for _, otherValue := range v.values { + if !strings.HasSuffix(value, otherValue) { + continue + } + + response.Diagnostics.Append(validatordiag.InvalidAttributeValueMatchDiagnostic( + request.Path, + v.Description(ctx), + request.ConfigValue.String(), + )) + + break + } +} + +// SuffixNoneOf checks that the String held in the attribute +// ends with none of the given `values`. +func SuffixNoneOf(values ...string) suffixNoneOfValidator { + return suffixNoneOfValidator{ + values: slices.Clone(values), + } +} diff --git a/internal/framework/validators/suffix_none_of_test.go b/internal/framework/validators/suffix_none_of_test.go new file mode 100644 index 000000000000..ace6792fb89b --- /dev/null +++ b/internal/framework/validators/suffix_none_of_test.go @@ -0,0 +1,113 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +package validators_test + +import ( + "context" + "fmt" + "testing" + + "github.com/google/go-cmp/cmp" + "github.com/hashicorp/terraform-plugin-framework/schema/validator" + "github.com/hashicorp/terraform-plugin-framework/types" + "github.com/hashicorp/terraform-provider-aws/internal/framework/validators" +) + +func TestSuffixNoneOfValidator(t *testing.T) { + t.Parallel() + + type testCase struct { + in types.String + suffixNoneOfValues []string + expectError bool + } + + testCases := map[string]testCase{ + "simple-match": { + in: types.StringValue("suffix"), + suffixNoneOfValues: []string{ + "fix", + "last", + }, + expectError: true, + }, + "simple-mismatch-case-insensitive": { + in: types.StringValue("suffix"), + suffixNoneOfValues: []string{ + "FIX", + "last", + }, + }, + "simple-mismatch": { + in: types.StringValue("suffix"), + suffixNoneOfValues: []string{ + "fax", + "last", + }, + }, + "skip-validation-on-null": { + in: types.StringNull(), + suffixNoneOfValues: []string{ + "fix", + "last", + }, + }, + "skip-validation-on-unknown": { + in: types.StringUnknown(), + suffixNoneOfValues: []string{ + "fix", + "last", + }, + }, + } + + for name, test := range testCases { + t.Run(fmt.Sprintf("ValidateString - %s", name), func(t *testing.T) { + t.Parallel() + req := validator.StringRequest{ + ConfigValue: test.in, + } + res := validator.StringResponse{} + validators.SuffixNoneOf(test.suffixNoneOfValues...).ValidateString(context.TODO(), req, &res) + + if !res.Diagnostics.HasError() && test.expectError { + t.Fatal("expected error, got no error") + } + + if res.Diagnostics.HasError() && !test.expectError { + t.Fatalf("got unexpected error: %s", res.Diagnostics) + } + }) + } +} + +func TestSuffixNoneOfValidator_Description(t *testing.T) { + t.Parallel() + + type testCase struct { + in []string + expected string + } + + testCases := map[string]testCase{ + "quoted-once": { + in: []string{"foo", "bar", "baz"}, + expected: `value must end with none of: ["foo" "bar" "baz"]`, + }, + } + + for name, test := range testCases { + t.Run(name, func(t *testing.T) { + t.Parallel() + + v := validators.SuffixNoneOf(test.in...) + + got := v.MarkdownDescription(context.Background()) + + if diff := cmp.Diff(got, test.expected); diff != "" { + t.Errorf("unexpected difference: %s", diff) + } + }) + } +} diff --git a/internal/generate/checknames/main.go b/internal/generate/checknames/main.go index f84da2a64b1b..b0556283813d 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 1e03e4eb331d..c179c917b55b 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/generate/tagstests/resource_test.go.gtpl b/internal/generate/tagstests/resource_test.go.gtpl index ce75bdecce36..b1ee6d1c24f6 100644 --- a/internal/generate/tagstests/resource_test.go.gtpl +++ b/internal/generate/tagstests/resource_test.go.gtpl @@ -56,10 +56,10 @@ plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), know {{ if gt (len .ImportStateID) 0 -}} ImportStateId: {{ .ImportStateID }}, {{ end -}} -{{ if .HasImportStateIDAttribute -}} - ImportStateIdFunc: acctest.AttrImportStateIdFunc(resourceName, {{ .ImportStateIDAttribute }}), -{{ else if gt (len .ImportStateIDFunc) 0 -}} +{{ if gt (len .ImportStateIDFunc) 0 -}} ImportStateIdFunc: {{ .ImportStateIDFunc }}(resourceName), +{{ else if .HasImportStateIDAttribute -}} + ImportStateIdFunc: acctest.AttrImportStateIdFunc(resourceName, {{ .ImportStateIDAttribute }}), {{ end -}} ImportStateVerify: true, {{ if .HasImportStateIDAttribute -}} diff --git a/internal/generate/teamcity/acceptance_tests.tmpl b/internal/generate/teamcity/acceptance_tests.tmpl index f56c31641a5c..d14b79128610 100644 --- a/internal/generate/teamcity/acceptance_tests.tmpl +++ b/internal/generate/teamcity/acceptance_tests.tmpl @@ -36,4 +36,4 @@ TF_ACC=1 go test \ {{- range . }} ./internal/{{ . }}/... \ {{- end }} - -json -v -count=1 -parallel "%ACCTEST_PARALLELISM%" -timeout=0 -run=TestAcc + -json -count=1 -parallel "%ACCTEST_PARALLELISM%" -timeout=0 -run=TestAcc diff --git a/internal/provider/fwprovider/provider_gen.go b/internal/provider/fwprovider/provider_gen.go index ddbd248dd9c2..7ac975cc8e0f 100644 --- a/internal/provider/fwprovider/provider_gen.go +++ b/internal/provider/fwprovider/provider_gen.go @@ -1620,6 +1620,13 @@ func endpointsBlock() schema.SetNestedBlock { Description: "Use this to override the default service endpoint URL", }, + // s3tables + + "s3tables": schema.StringAttribute{ + Optional: true, + Description: "Use this to override the default service endpoint URL", + }, + // sagemaker "sagemaker": schema.StringAttribute{ diff --git a/internal/provider/provider_acc_test.go b/internal/provider/provider_acc_test.go index 6648afe21f2a..31fbf4d51b7a 100644 --- a/internal/provider/provider_acc_test.go +++ b/internal/provider/provider_acc_test.go @@ -8,7 +8,6 @@ import ( "errors" "fmt" "reflect" - "strings" "testing" "github.com/aws/aws-sdk-go-v2/aws" @@ -159,32 +158,6 @@ func TestAccProvider_DefaultAndIgnoreTags_emptyBlocks(t *testing.T) { }) } -func TestAccProvider_endpoints(t *testing.T) { - ctx := acctest.Context(t) - var provider *schema.Provider - var endpoints strings.Builder - - // Initialize each endpoint configuration with matching name and value - for _, serviceKey := range names.ProviderPackages() { - endpoints.WriteString(fmt.Sprintf("%s = \"http://%s\"\n", serviceKey, serviceKey)) - } - - resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t), - ProtoV5ProviderFactories: testAccProtoV5ProviderFactoriesInternal(ctx, t, &provider), - CheckDestroy: nil, - Steps: []resource.TestStep{ - { - Config: testAccProviderConfig_endpoints(endpoints.String()), - Check: resource.ComposeTestCheckFunc( - testAccCheckEndpoints(ctx, &provider), - ), - }, - }, - }) -} - func TestAccProvider_customEndpoint(t *testing.T) { ctx := acctest.Context(t) rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) @@ -508,6 +481,9 @@ func TestAccProvider_IgnoreTagsKeyPrefixes_envVarMerged(t *testing.T) { } func TestAccProvider_Region_c2s(t *testing.T) { + // When using `AWS_PROFILE` for authentication, `skip_credentials_validation` is ignored + // https://github.com/hashicorp/aws-sdk-go-base/issues/453 + t.Skip() ctx := acctest.Context(t) var provider *schema.Provider @@ -518,7 +494,7 @@ func TestAccProvider_Region_c2s(t *testing.T) { CheckDestroy: nil, Steps: []resource.TestStep{ { - Config: testAccProviderConfig_region(names.USISOEast1RegionID), + Config: testAccProviderConfig_region(endpoints.UsIsoEast1RegionID), Check: resource.ComposeTestCheckFunc( testAccCheckDNSSuffix(ctx, t, &provider, "c2s.ic.gov"), testAccCheckPartition(ctx, t, &provider, endpoints.AwsIsoPartitionID), @@ -531,6 +507,9 @@ func TestAccProvider_Region_c2s(t *testing.T) { } func TestAccProvider_Region_china(t *testing.T) { + // When using `AWS_PROFILE` for authentication, `skip_credentials_validation` is ignored + // https://github.com/hashicorp/aws-sdk-go-base/issues/453 + t.Skip() ctx := acctest.Context(t) var provider *schema.Provider @@ -541,7 +520,7 @@ func TestAccProvider_Region_china(t *testing.T) { CheckDestroy: nil, Steps: []resource.TestStep{ { - Config: testAccProviderConfig_region(names.CNNorthwest1RegionID), + Config: testAccProviderConfig_region(endpoints.CnNorthwest1RegionID), Check: resource.ComposeTestCheckFunc( testAccCheckDNSSuffix(ctx, t, &provider, "amazonaws.com.cn"), testAccCheckPartition(ctx, t, &provider, endpoints.AwsCnPartitionID), @@ -554,6 +533,9 @@ func TestAccProvider_Region_china(t *testing.T) { } func TestAccProvider_Region_commercial(t *testing.T) { + // When using `AWS_PROFILE` for authentication, `skip_credentials_validation` is ignored + // https://github.com/hashicorp/aws-sdk-go-base/issues/453 + t.Skip() ctx := acctest.Context(t) var provider *schema.Provider @@ -564,7 +546,7 @@ func TestAccProvider_Region_commercial(t *testing.T) { CheckDestroy: nil, Steps: []resource.TestStep{ { - Config: testAccProviderConfig_region(names.USWest2RegionID), + Config: testAccProviderConfig_region(endpoints.UsWest2RegionID), Check: resource.ComposeTestCheckFunc( testAccCheckDNSSuffix(ctx, t, &provider, "amazonaws.com"), testAccCheckPartition(ctx, t, &provider, endpoints.AwsPartitionID), @@ -577,6 +559,9 @@ func TestAccProvider_Region_commercial(t *testing.T) { } func TestAccProvider_Region_govCloud(t *testing.T) { + // When using `AWS_PROFILE` for authentication, `skip_credentials_validation` is ignored + // https://github.com/hashicorp/aws-sdk-go-base/issues/453 + t.Skip() ctx := acctest.Context(t) var provider *schema.Provider @@ -587,7 +572,7 @@ func TestAccProvider_Region_govCloud(t *testing.T) { CheckDestroy: nil, Steps: []resource.TestStep{ { - Config: testAccProviderConfig_region(names.USGovWest1RegionID), + Config: testAccProviderConfig_region(endpoints.UsGovWest1RegionID), Check: resource.ComposeTestCheckFunc( testAccCheckDNSSuffix(ctx, t, &provider, "amazonaws.com"), testAccCheckPartition(ctx, t, &provider, endpoints.AwsUsGovPartitionID), @@ -600,6 +585,9 @@ func TestAccProvider_Region_govCloud(t *testing.T) { } func TestAccProvider_Region_sc2s(t *testing.T) { + // When using `AWS_PROFILE` for authentication, `skip_credentials_validation` is ignored + // https://github.com/hashicorp/aws-sdk-go-base/issues/453 + t.Skip() ctx := acctest.Context(t) var provider *schema.Provider @@ -610,7 +598,7 @@ func TestAccProvider_Region_sc2s(t *testing.T) { CheckDestroy: nil, Steps: []resource.TestStep{ { - Config: testAccProviderConfig_region(names.USISOBEast1RegionID), + Config: testAccProviderConfig_region(endpoints.UsIsobEast1RegionID), Check: resource.ComposeTestCheckFunc( testAccCheckDNSSuffix(ctx, t, &provider, "sc2s.sgov.gov"), testAccCheckPartition(ctx, t, &provider, endpoints.AwsIsoBPartitionID), @@ -623,6 +611,9 @@ func TestAccProvider_Region_sc2s(t *testing.T) { } func TestAccProvider_Region_stsRegion(t *testing.T) { + // When using `AWS_PROFILE` for authentication, `skip_credentials_validation` is ignored + // https://github.com/hashicorp/aws-sdk-go-base/issues/453 + t.Skip() ctx := acctest.Context(t) var provider *schema.Provider @@ -633,10 +624,10 @@ func TestAccProvider_Region_stsRegion(t *testing.T) { CheckDestroy: nil, Steps: []resource.TestStep{ { - Config: testAccProviderConfig_stsRegion(names.USEast1RegionID, names.USWest2RegionID), + Config: testAccProviderConfig_stsRegion(endpoints.UsEast1RegionID, endpoints.UsWest2RegionID), Check: resource.ComposeTestCheckFunc( - testAccCheckRegion(ctx, t, &provider, names.USEast1RegionID), - testAccCheckSTSRegion(ctx, t, &provider, names.USWest2RegionID), + testAccCheckRegion(ctx, t, &provider, endpoints.UsEast1RegionID), + testAccCheckSTSRegion(ctx, t, &provider, endpoints.UsWest2RegionID), ), PlanOnly: true, }, @@ -647,6 +638,7 @@ func TestAccProvider_Region_stsRegion(t *testing.T) { // For historical reasons, ignore a single empty `assume_role` block func TestAccProvider_AssumeRole_empty(t *testing.T) { ctx := acctest.Context(t) + resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t), @@ -656,7 +648,7 @@ func TestAccProvider_AssumeRole_empty(t *testing.T) { { Config: testAccProviderConfig_assumeRoleEmpty, Check: resource.ComposeTestCheckFunc( - acctest.CheckCallerIdentityAccountID("data.aws_caller_identity.current"), + acctest.CheckCallerIdentityAccountID(ctx, "data.aws_caller_identity.current"), ), }, }, @@ -718,7 +710,7 @@ func testAccCheckRegion(ctx context.Context, t *testing.T, p **schema.Provider, return fmt.Errorf("provider not initialized") } - if got := (*p).Meta().(*conns.AWSClient).Region; got != expectedRegion { + if got := (*p).Meta().(*conns.AWSClient).Region(ctx); got != expectedRegion { return fmt.Errorf("expected Region (%s), got: %s", expectedRegion, got) } @@ -982,55 +974,6 @@ func testAccCheckProviderDefaultTags_Tags(ctx context.Context, t *testing.T, p * } } -func testAccCheckEndpoints(_ context.Context, p **schema.Provider) resource.TestCheckFunc { - return func(s *terraform.State) error { - if p == nil || *p == nil || (*p).Meta() == nil || (*p).Meta().(*conns.AWSClient) == nil { - return fmt.Errorf("provider not initialized") - } - - providerClient := (*p).Meta().(*conns.AWSClient) - - for _, serviceKey := range names.Aliases() { - methodName := serviceClient(serviceKey) - method := reflect.ValueOf(providerClient).MethodByName(methodName) - if !method.IsValid() { - continue - } - if method.Kind() != reflect.Func { - return fmt.Errorf("value %q is not a function", methodName) - } - if !funcHasConnFuncSignature(method) { - return fmt.Errorf("function %q does not match expected signature", methodName) - } - - result := method.Call([]reflect.Value{ - reflect.ValueOf(context.Background()), - }) - if l := len(result); l != 1 { - return fmt.Errorf("expected 1 result, got %d", l) - } - providerClientField := result[0] - - if !providerClientField.IsValid() { - return fmt.Errorf("unable to match conns.AWSClient struct field name for endpoint name: %s", serviceKey) - } - - if !reflect.Indirect(providerClientField).FieldByName("Config").IsValid() { - continue // currently unknown how to do this check for v2 clients - } - - actualEndpoint := reflect.Indirect(reflect.Indirect(providerClientField).FieldByName("Config").FieldByName("Endpoint")).String() - expectedEndpoint := fmt.Sprintf("http://%s", serviceKey) - - if actualEndpoint != expectedEndpoint { - return fmt.Errorf("expected endpoint (%s) value (%s), got: %s", serviceKey, expectedEndpoint, actualEndpoint) - } - } - - return nil - } -} - func testAccCheckUnusualEndpoints(_ context.Context, p **schema.Provider, unusual unusualEndpoint) resource.TestCheckFunc { return func(s *terraform.State) error { if p == nil || *p == nil || (*p).Meta() == nil || (*p).Meta().(*conns.AWSClient) == nil { @@ -1116,21 +1059,6 @@ data "aws_service" "provider_test" { } ` -func testAccProviderConfig_endpoints(endpoints string) string { - //lintignore:AT004 - return acctest.ConfigCompose(testAccProviderConfig_base, fmt.Sprintf(` -provider "aws" { - skip_credentials_validation = true - skip_metadata_api_check = true - skip_requesting_account_id = true - - endpoints { - %[1]s - } -} -`, endpoints)) -} - func testAccProviderConfig_customS3Endpoint(endpoint, rName string) string { //lintignore:AT004 return acctest.ConfigCompose(testAccProviderConfig_base, fmt.Sprintf(` diff --git a/internal/provider/provider_config_test.go b/internal/provider/provider_config_test.go index ca31f974b141..3295d7e5db0f 100644 --- a/internal/provider/provider_config_test.go +++ b/internal/provider/provider_config_test.go @@ -28,6 +28,7 @@ import ( // * https://github.com/aws/aws-sdk-go-v2/issues/2363: leading whitespace // * https://github.com/aws/aws-sdk-go-v2/issues/2369: trailing `#` in, e.g. SSO Start URLs func TestSharedConfigFileParsing(t *testing.T) { //nolint:paralleltest + ctx := context.TODO() testcases := map[string]struct { Config map[string]any SharedConfigurationFile string @@ -40,7 +41,7 @@ region = us-west-2 `, //lintignore:AWSAT003 Check: func(t *testing.T, meta *conns.AWSClient) { //lintignore:AWSAT003 - if a, e := meta.Region, "us-west-2"; a != e { + if a, e := meta.Region(ctx), "us-west-2"; a != e { t.Errorf("expected region %q, got %q", e, a) } }, @@ -53,7 +54,7 @@ region = us-west-2 `, //lintignore:AWSAT003 Check: func(t *testing.T, meta *conns.AWSClient) { //lintignore:AWSAT003 - if a, e := meta.Region, "us-west-2"; a != e { + if a, e := meta.Region(ctx), "us-west-2"; a != e { t.Errorf("expected region %q, got %q", e, a) } }, @@ -67,7 +68,7 @@ region = us-west-2 `, //lintignore:AWSAT003 Check: func(t *testing.T, meta *conns.AWSClient) { //lintignore:AWSAT003 - if a, e := meta.Region, "us-west-2"; a != e { + if a, e := meta.Region(ctx), "us-west-2"; a != e { t.Errorf("expected region %q, got %q", e, a) } }, @@ -87,7 +88,7 @@ region = us-west-2 `, //lintignore:AWSAT003 Check: func(t *testing.T, meta *conns.AWSClient) { //lintignore:AWSAT003 - if a, e := meta.Region, "us-east-1"; a != e { + if a, e := meta.Region(ctx), "us-east-1"; a != e { t.Errorf("expected region %q, got %q", e, a) } }, @@ -106,7 +107,7 @@ region = us-east-1 `, //lintignore:AWSAT003 Check: func(t *testing.T, meta *conns.AWSClient) { //lintignore:AWSAT003 - if a, e := meta.Region, "us-east-1"; a != e { + if a, e := meta.Region(ctx), "us-east-1"; a != e { t.Errorf("expected region %q, got %q", e, a) } }, @@ -181,14 +182,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 +276,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 +608,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/provider/provider_gen.go b/internal/provider/provider_gen.go index aaf869c168f5..a7ffa17d8b52 100644 --- a/internal/provider/provider_gen.go +++ b/internal/provider/provider_gen.go @@ -1871,6 +1871,14 @@ func endpointsSchema() *schema.Schema { Description: "Use this to override the default service endpoint URL", }, + // s3tables + + "s3tables": { + Type: schema.TypeString, + Optional: true, + Description: "Use this to override the default service endpoint URL", + }, + // sagemaker "sagemaker": { diff --git a/internal/provider/service_packages_gen.go b/internal/provider/service_packages_gen.go index 78084c4e207c..cae6f19a26c9 100644 --- a/internal/provider/service_packages_gen.go +++ b/internal/provider/service_packages_gen.go @@ -208,6 +208,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/service/s3" "github.com/hashicorp/terraform-provider-aws/internal/service/s3control" "github.com/hashicorp/terraform-provider-aws/internal/service/s3outposts" + "github.com/hashicorp/terraform-provider-aws/internal/service/s3tables" "github.com/hashicorp/terraform-provider-aws/internal/service/sagemaker" "github.com/hashicorp/terraform-provider-aws/internal/service/scheduler" "github.com/hashicorp/terraform-provider-aws/internal/service/schemas" @@ -458,6 +459,7 @@ func servicePackages(ctx context.Context) []conns.ServicePackage { s3.ServicePackage(ctx), s3control.ServicePackage(ctx), s3outposts.ServicePackage(ctx), + s3tables.ServicePackage(ctx), sagemaker.ServicePackage(ctx), scheduler.ServicePackage(ctx), schemas.ServicePackage(ctx), diff --git a/internal/service/accessanalyzer/analyzer_test.go b/internal/service/accessanalyzer/analyzer_test.go index d6f7e1e1eda0..4048106cc4bb 100644 --- a/internal/service/accessanalyzer/analyzer_test.go +++ b/internal/service/accessanalyzer/analyzer_test.go @@ -37,7 +37,7 @@ func testAccAnalyzer_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckAnalyzerExists(ctx, resourceName, &analyzer), resource.TestCheckResourceAttr(resourceName, "analyzer_name", rName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "access-analyzer", fmt.Sprintf("analyzer/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "access-analyzer", fmt.Sprintf("analyzer/%s", rName)), resource.TestCheckResourceAttr(resourceName, "configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttr(resourceName, names.AttrType, string(types.TypeAccount)), diff --git a/internal/service/accessanalyzer/service_endpoints_gen_test.go b/internal/service/accessanalyzer/service_endpoints_gen_test.go index 3492eed5f790..73a007c055dd 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/region_test.go b/internal/service/account/region_test.go index ccb1fcf9a297..545a85b08024 100644 --- a/internal/service/account/region_test.go +++ b/internal/service/account/region_test.go @@ -9,6 +9,7 @@ import ( "testing" "github.com/aws/aws-sdk-go-v2/service/account/types" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-provider-aws/internal/acctest" "github.com/hashicorp/terraform-provider-aws/internal/conns" @@ -19,7 +20,7 @@ import ( func testAccRegion_basic(t *testing.T) { ctx := acctest.Context(t) resourceName := "aws_account_region.test" - regionName := names.APSoutheast3RegionID + regionName := endpoints.ApSoutheast3RegionID resource.Test(t, resource.TestCase{ PreCheck: func() { @@ -61,7 +62,7 @@ func testAccRegion_basic(t *testing.T) { func testAccRegion_accountID(t *testing.T) { // nosemgrep:ci.account-in-func-name ctx := acctest.Context(t) resourceName := "aws_account_region.test" - regionName := names.APSoutheast3RegionID + regionName := endpoints.ApSoutheast3RegionID resource.Test(t, resource.TestCase{ PreCheck: func() { diff --git a/internal/service/account/service_endpoints_gen_test.go b/internal/service/account/service_endpoints_gen_test.go index 4607523fa197..a0e60a840e0c 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/certificate_test.go b/internal/service/acm/certificate_test.go index 4c4efe2c1c4e..22ee7ea41dc6 100644 --- a/internal/service/acm/certificate_test.go +++ b/internal/service/acm/certificate_test.go @@ -45,7 +45,7 @@ func TestAccACMCertificate_emailValidation(t *testing.T) { Config: testAccCertificateConfig_basic(domain, types.ValidationMethodEmail), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckCertificateExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "acm", regexache.MustCompile("certificate/.+$")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "acm", regexache.MustCompile("certificate/.+$")), resource.TestCheckResourceAttr(resourceName, names.AttrDomainName, domain), resource.TestCheckResourceAttr(resourceName, "domain_validation_options.#", "0"), resource.TestCheckResourceAttr(resourceName, "early_renewal_duration", ""), @@ -90,7 +90,7 @@ func TestAccACMCertificate_dnsValidation(t *testing.T) { Config: testAccCertificateConfig_basic(domain, types.ValidationMethodDns), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckCertificateExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "acm", regexache.MustCompile("certificate/.+$")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "acm", regexache.MustCompile("certificate/.+$")), resource.TestCheckResourceAttr(resourceName, names.AttrDomainName, domain), resource.TestCheckResourceAttr(resourceName, "domain_validation_options.#", "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "domain_validation_options.*", map[string]string{ @@ -137,7 +137,7 @@ func TestAccACMCertificate_root(t *testing.T) { Config: testAccCertificateConfig_basic(rootDomain, types.ValidationMethodDns), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckCertificateExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "acm", regexache.MustCompile("certificate/.+$")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "acm", regexache.MustCompile("certificate/.+$")), resource.TestCheckResourceAttr(resourceName, names.AttrDomainName, rootDomain), resource.TestCheckResourceAttr(resourceName, "domain_validation_options.#", "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "domain_validation_options.*", map[string]string{ @@ -178,7 +178,7 @@ func TestAccACMCertificate_validationOptions(t *testing.T) { Config: testAccCertificateConfig_validationOptions(rootDomain, domain), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckCertificateExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "acm", regexache.MustCompile("certificate/.+$")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "acm", regexache.MustCompile("certificate/.+$")), resource.TestCheckResourceAttr(resourceName, names.AttrDomainName, domain), resource.TestCheckResourceAttr(resourceName, "domain_validation_options.#", "0"), resource.TestCheckResourceAttr(resourceName, names.AttrStatus, string(types.CertificateStatusPendingValidation)), @@ -218,7 +218,7 @@ func TestAccACMCertificate_privateCertificate_renewable(t *testing.T) { Config: testAccCertificateConfig_privateCertificate_renewable(commonName.String(), certificateDomainName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckCertificateExists(ctx, resourceName, &v1), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "acm", regexache.MustCompile("certificate/.+$")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "acm", regexache.MustCompile("certificate/.+$")), resource.TestCheckResourceAttrPair(resourceName, "certificate_authority_arn", certificateAuthorityResourceName, names.AttrARN), resource.TestCheckResourceAttr(resourceName, names.AttrDomainName, certificateDomainName), resource.TestCheckResourceAttr(resourceName, "domain_validation_options.#", "0"), @@ -344,7 +344,7 @@ func TestAccACMCertificate_privateCertificate_noRenewalPermission(t *testing.T) Config: testAccCertificateConfig_privateCertificate_noRenewalPermission(commonName.String(), certificateDomainName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckCertificateExists(ctx, resourceName, &v1), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "acm", regexache.MustCompile("certificate/.+$")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "acm", regexache.MustCompile("certificate/.+$")), resource.TestCheckResourceAttrPair(resourceName, "certificate_authority_arn", certificateAuthorityResourceName, names.AttrARN), resource.TestCheckResourceAttr(resourceName, names.AttrDomainName, certificateDomainName), resource.TestCheckResourceAttr(resourceName, "domain_validation_options.#", "0"), @@ -462,7 +462,7 @@ func TestAccACMCertificate_privateCertificate_pendingRenewalGoDuration(t *testin Config: testAccCertificateConfig_privateCertificate_pendingRenewal(commonName.String(), certificateDomainName, duration), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckCertificateExists(ctx, resourceName, &v1), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "acm", regexache.MustCompile("certificate/.+$")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "acm", regexache.MustCompile("certificate/.+$")), resource.TestCheckResourceAttr(resourceName, "early_renewal_duration", duration), resource.TestCheckResourceAttr(resourceName, "pending_renewal", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "renewal_eligibility", string(types.RenewalEligibilityIneligible)), @@ -536,7 +536,7 @@ func TestAccACMCertificate_privateCertificate_pendingRenewalRFC3339Duration(t *t Config: testAccCertificateConfig_privateCertificate_pendingRenewal(commonName.String(), certificateDomainName, duration), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckCertificateExists(ctx, resourceName, &v1), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "acm", regexache.MustCompile("certificate/.+$")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "acm", regexache.MustCompile("certificate/.+$")), resource.TestCheckResourceAttr(resourceName, "early_renewal_duration", duration), resource.TestCheckResourceAttr(resourceName, "pending_renewal", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "renewal_eligibility", string(types.RenewalEligibilityIneligible)), @@ -610,7 +610,7 @@ func TestAccACMCertificate_privateCertificate_addEarlyRenewalPast(t *testing.T) Config: testAccCertificateConfig_privateCertificate_renewable(commonName.String(), certificateDomainName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckCertificateExists(ctx, resourceName, &v1), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "acm", regexache.MustCompile("certificate/.+$")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "acm", regexache.MustCompile("certificate/.+$")), resource.TestCheckResourceAttr(resourceName, "early_renewal_duration", ""), resource.TestCheckResourceAttr(resourceName, "pending_renewal", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "renewal_eligibility", string(types.RenewalEligibilityIneligible)), @@ -698,7 +698,7 @@ func TestAccACMCertificate_privateCertificate_addEarlyRenewalPastIneligible(t *t Config: testAccCertificateConfig_privateCertificate_renewable(commonName.String(), certificateDomainName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckCertificateExists(ctx, resourceName, &v1), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "acm", regexache.MustCompile("certificate/.+$")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "acm", regexache.MustCompile("certificate/.+$")), resource.TestCheckResourceAttr(resourceName, "early_renewal_duration", ""), resource.TestCheckResourceAttr(resourceName, "pending_renewal", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "renewal_eligibility", string(types.RenewalEligibilityIneligible)), @@ -751,7 +751,7 @@ func TestAccACMCertificate_privateCertificate_addEarlyRenewalFuture(t *testing.T Config: testAccCertificateConfig_privateCertificate_renewable(commonName.String(), certificateDomainName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckCertificateExists(ctx, resourceName, &v1), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "acm", regexache.MustCompile("certificate/.+$")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "acm", regexache.MustCompile("certificate/.+$")), resource.TestCheckResourceAttr(resourceName, "early_renewal_duration", ""), resource.TestCheckResourceAttr(resourceName, "pending_renewal", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "renewal_eligibility", string(types.RenewalEligibilityIneligible)), @@ -837,7 +837,7 @@ func TestAccACMCertificate_privateCertificate_updateEarlyRenewalFuture(t *testin Config: testAccCertificateConfig_privateCertificate_pendingRenewal(commonName.String(), certificateDomainName, duration), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckCertificateExists(ctx, resourceName, &v1), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "acm", regexache.MustCompile("certificate/.+$")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "acm", regexache.MustCompile("certificate/.+$")), resource.TestCheckResourceAttr(resourceName, "early_renewal_duration", duration), resource.TestCheckResourceAttr(resourceName, "pending_renewal", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "renewal_eligibility", string(types.RenewalEligibilityIneligible)), @@ -907,7 +907,7 @@ func TestAccACMCertificate_privateCertificate_removeEarlyRenewal(t *testing.T) { Config: testAccCertificateConfig_privateCertificate_pendingRenewal(commonName.String(), certificateDomainName, duration), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckCertificateExists(ctx, resourceName, &v1), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "acm", regexache.MustCompile("certificate/.+$")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "acm", regexache.MustCompile("certificate/.+$")), resource.TestCheckResourceAttr(resourceName, "early_renewal_duration", duration), resource.TestCheckResourceAttr(resourceName, "pending_renewal", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "renewal_eligibility", string(types.RenewalEligibilityIneligible)), @@ -997,7 +997,7 @@ func TestAccACMCertificate_rootAndWildcardSan(t *testing.T) { Config: testAccCertificateConfig_subjectAlternativeNames(rootDomain, strconv.Quote(wildcardDomain), types.ValidationMethodDns), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckCertificateExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "acm", regexache.MustCompile("certificate/.+$")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "acm", regexache.MustCompile("certificate/.+$")), resource.TestCheckResourceAttr(resourceName, names.AttrDomainName, rootDomain), resource.TestCheckResourceAttr(resourceName, "domain_validation_options.#", "2"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "domain_validation_options.*", map[string]string{ @@ -1062,7 +1062,7 @@ func TestAccACMCertificate_San_single(t *testing.T) { Config: testAccCertificateConfig_subjectAlternativeNames(domain, strconv.Quote(sanDomain), types.ValidationMethodDns), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckCertificateExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "acm", regexache.MustCompile("certificate/.+$")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "acm", regexache.MustCompile("certificate/.+$")), resource.TestCheckResourceAttr(resourceName, names.AttrDomainName, domain), resource.TestCheckResourceAttr(resourceName, "domain_validation_options.#", "2"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "domain_validation_options.*", map[string]string{ @@ -1109,7 +1109,7 @@ func TestAccACMCertificate_San_multiple(t *testing.T) { Config: testAccCertificateConfig_subjectAlternativeNames(domain, fmt.Sprintf("%q, %q", sanDomain1, sanDomain2), types.ValidationMethodDns), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckCertificateExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "acm", regexache.MustCompile("certificate/.+$")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "acm", regexache.MustCompile("certificate/.+$")), resource.TestCheckResourceAttr(resourceName, names.AttrDomainName, domain), resource.TestCheckResourceAttr(resourceName, "domain_validation_options.#", "3"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "domain_validation_options.*", map[string]string{ @@ -1160,7 +1160,7 @@ func TestAccACMCertificate_San_trailingPeriod(t *testing.T) { Config: testAccCertificateConfig_subjectAlternativeNames(domain, strconv.Quote(sanDomain), types.ValidationMethodDns), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckCertificateExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "acm", regexache.MustCompile(`certificate/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "acm", regexache.MustCompile(`certificate/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrDomainName, domain), resource.TestCheckResourceAttr(resourceName, "domain_validation_options.#", "2"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "domain_validation_options.*", map[string]string{ @@ -1206,7 +1206,7 @@ func TestAccACMCertificate_San_matches_domain(t *testing.T) { Config: testAccCertificateConfig_subjectAlternativeNames(domain, strconv.Quote(sanDomain), types.ValidationMethodDns), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckCertificateExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "acm", regexache.MustCompile(`certificate/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "acm", regexache.MustCompile(`certificate/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrDomainName, domain), resource.TestCheckResourceAttr(resourceName, "domain_validation_options.#", "2"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "domain_validation_options.*", map[string]string{ @@ -1251,7 +1251,7 @@ func TestAccACMCertificate_wildcard(t *testing.T) { Config: testAccCertificateConfig_basic(wildcardDomain, types.ValidationMethodDns), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckCertificateExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "acm", regexache.MustCompile("certificate/.+$")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "acm", regexache.MustCompile("certificate/.+$")), resource.TestCheckResourceAttr(resourceName, names.AttrDomainName, wildcardDomain), resource.TestCheckResourceAttr(resourceName, "domain_validation_options.#", "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "domain_validation_options.*", map[string]string{ @@ -1291,7 +1291,7 @@ func TestAccACMCertificate_wildcardAndRootSan(t *testing.T) { Config: testAccCertificateConfig_subjectAlternativeNames(wildcardDomain, strconv.Quote(rootDomain), types.ValidationMethodDns), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckCertificateExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "acm", regexache.MustCompile("certificate/.+$")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "acm", regexache.MustCompile("certificate/.+$")), resource.TestCheckResourceAttr(resourceName, names.AttrDomainName, wildcardDomain), resource.TestCheckResourceAttr(resourceName, "domain_validation_options.#", "2"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "domain_validation_options.*", map[string]string{ @@ -1335,7 +1335,7 @@ func TestAccACMCertificate_keyAlgorithm(t *testing.T) { Config: testAccCertificateConfig_keyAlgorithm(rootDomain, types.ValidationMethodDns, types.KeyAlgorithmEcPrime256v1), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckCertificateExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "acm", regexache.MustCompile("certificate/.+$")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "acm", regexache.MustCompile("certificate/.+$")), resource.TestCheckResourceAttr(resourceName, names.AttrDomainName, rootDomain), resource.TestCheckResourceAttr(resourceName, "domain_validation_options.#", "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "domain_validation_options.*", map[string]string{ @@ -1375,7 +1375,7 @@ func TestAccACMCertificate_disableCTLogging(t *testing.T) { Config: testAccCertificateConfig_disableCTLogging(rootDomain, types.ValidationMethodDns), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckCertificateExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "acm", regexache.MustCompile("certificate/.+$")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "acm", regexache.MustCompile("certificate/.+$")), resource.TestCheckResourceAttr(resourceName, names.AttrDomainName, rootDomain), resource.TestCheckResourceAttr(resourceName, "domain_validation_options.#", "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "domain_validation_options.*", map[string]string{ @@ -1421,7 +1421,7 @@ func TestAccACMCertificate_disableReenableCTLogging(t *testing.T) { Config: testAccCertificateConfig_optionsWithValidation(rootDomain, types.ValidationMethodDns, "ENABLED"), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckCertificateExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "acm", regexache.MustCompile("certificate/.+$")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "acm", regexache.MustCompile("certificate/.+$")), resource.TestCheckResourceAttr(resourceName, names.AttrDomainName, rootDomain), resource.TestCheckResourceAttr(resourceName, "domain_validation_options.#", "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "domain_validation_options.*", map[string]string{ @@ -1446,7 +1446,7 @@ func TestAccACMCertificate_disableReenableCTLogging(t *testing.T) { Config: testAccCertificateConfig_optionsWithValidation(rootDomain, types.ValidationMethodDns, "DISABLED"), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckCertificateExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "acm", regexache.MustCompile("certificate/.+$")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "acm", regexache.MustCompile("certificate/.+$")), resource.TestCheckResourceAttr(resourceName, names.AttrDomainName, rootDomain), resource.TestCheckResourceAttr(resourceName, "domain_validation_options.#", "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "domain_validation_options.*", map[string]string{ @@ -1471,7 +1471,7 @@ func TestAccACMCertificate_disableReenableCTLogging(t *testing.T) { Config: testAccCertificateConfig_optionsWithValidation(rootDomain, types.ValidationMethodDns, "ENABLED"), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckCertificateExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "acm", regexache.MustCompile("certificate/.+$")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "acm", regexache.MustCompile("certificate/.+$")), resource.TestCheckResourceAttr(resourceName, names.AttrDomainName, rootDomain), resource.TestCheckResourceAttr(resourceName, "domain_validation_options.#", "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "domain_validation_options.*", map[string]string{ diff --git a/internal/service/acm/service_endpoints_gen_test.go b/internal/service/acm/service_endpoints_gen_test.go index 2ba1986e91cf..99ddffe93107 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/certificate_authority_test.go b/internal/service/acmpca/certificate_authority_test.go index 944ebbb3bb01..a45edd9fc5d5 100644 --- a/internal/service/acmpca/certificate_authority_test.go +++ b/internal/service/acmpca/certificate_authority_test.go @@ -10,6 +10,7 @@ import ( "github.com/YakDriver/regexache" awstypes "github.com/aws/aws-sdk-go-v2/service/acmpca/types" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-plugin-testing/terraform" @@ -38,7 +39,7 @@ func TestAccACMPCACertificateAuthority_basic(t *testing.T) { Config: testAccCertificateAuthorityConfig_required(commonName), Check: resource.ComposeTestCheckFunc( testAccCheckCertificateAuthorityExists(ctx, resourceName, &certificateAuthority), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "acm-pca", regexache.MustCompile(`certificate-authority/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "acm-pca", regexache.MustCompile(`certificate-authority/.+`)), resource.TestCheckResourceAttr(resourceName, "certificate_authority_configuration.#", "1"), resource.TestCheckResourceAttr(resourceName, "certificate_authority_configuration.0.key_algorithm", "RSA_4096"), resource.TestCheckResourceAttr(resourceName, "certificate_authority_configuration.0.signing_algorithm", "SHA512WITHRSA"), @@ -183,7 +184,7 @@ func TestAccACMPCACertificateAuthority_keyStorageSecurityStandard(t *testing.T) PreCheck: func() { acctest.PreCheck(ctx, t) // See https://docs.aws.amazon.com/privateca/latest/userguide/data-protection.html#private-keys. - acctest.PreCheckRegion(t, names.APSouth2RegionID, names.APSoutheast3RegionID, names.APSoutheast4RegionID, names.EUCentral2RegionID, names.EUSouth2RegionID, names.MECentral1RegionID) + acctest.PreCheckRegion(t, endpoints.ApSouth2RegionID, endpoints.ApSoutheast3RegionID, endpoints.ApSoutheast4RegionID, endpoints.EuCentral2RegionID, endpoints.EuSouth2RegionID, endpoints.MeCentral1RegionID) }, ErrorCheck: acctest.ErrorCheck(t, names.ACMPCAServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, @@ -248,7 +249,7 @@ func TestAccACMPCACertificateAuthority_RevocationConfiguration_empty(t *testing. Config: testAccCertificateAuthorityConfig_revocationConfigurationEmpty(commonName), Check: resource.ComposeTestCheckFunc( testAccCheckCertificateAuthorityExists(ctx, resourceName, &certificateAuthority), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "acm-pca", regexache.MustCompile(`certificate-authority/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "acm-pca", regexache.MustCompile(`certificate-authority/.+`)), resource.TestCheckResourceAttr(resourceName, "certificate_authority_configuration.#", "1"), resource.TestCheckResourceAttr(resourceName, "certificate_authority_configuration.0.key_algorithm", "RSA_4096"), resource.TestCheckResourceAttr(resourceName, "certificate_authority_configuration.0.signing_algorithm", "SHA512WITHRSA"), diff --git a/internal/service/acmpca/certificate_test.go b/internal/service/acmpca/certificate_test.go index bb8bd8aac92b..a26934a1fc32 100644 --- a/internal/service/acmpca/certificate_test.go +++ b/internal/service/acmpca/certificate_test.go @@ -40,7 +40,7 @@ func TestAccACMPCACertificate_rootCertificate(t *testing.T) { Config: testAccCertificateConfig_root(domain), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckCertificateExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "acm-pca", regexache.MustCompile(`certificate-authority/.+/certificate/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "acm-pca", regexache.MustCompile(`certificate-authority/.+/certificate/.+$`)), resource.TestCheckResourceAttrSet(resourceName, names.AttrCertificate), resource.TestCheckResourceAttr(resourceName, names.AttrCertificateChain, ""), resource.TestCheckResourceAttrPair(resourceName, "certificate_authority_arn", certificateAuthorityResourceName, names.AttrARN), @@ -85,7 +85,7 @@ func TestAccACMPCACertificate_rootCertificateWithAPIPassthrough(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckCertificateExists(ctx, resourceName), testAccCheckCertificateExtension(resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "acm-pca", regexache.MustCompile(`certificate-authority/.+/certificate/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "acm-pca", regexache.MustCompile(`certificate-authority/.+/certificate/.+$`)), resource.TestCheckResourceAttrSet(resourceName, names.AttrCertificate), resource.TestCheckResourceAttr(resourceName, names.AttrCertificateChain, ""), resource.TestCheckResourceAttrPair(resourceName, "certificate_authority_arn", certificateAuthorityResourceName, names.AttrARN), @@ -129,7 +129,7 @@ func TestAccACMPCACertificate_subordinateCertificate(t *testing.T) { Config: testAccCertificateConfig_subordinate(domain), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckCertificateExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "acm-pca", regexache.MustCompile(`certificate-authority/.+/certificate/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "acm-pca", regexache.MustCompile(`certificate-authority/.+/certificate/.+$`)), resource.TestCheckResourceAttrSet(resourceName, names.AttrCertificate), resource.TestCheckResourceAttrSet(resourceName, names.AttrCertificateChain), resource.TestCheckResourceAttrPair(resourceName, "certificate_authority_arn", rootCertificateAuthorityResourceName, names.AttrARN), @@ -173,7 +173,7 @@ func TestAccACMPCACertificate_endEntityCertificate(t *testing.T) { Config: testAccCertificateConfig_endEntity(domain, acctest.TLSPEMEscapeNewlines(csr)), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckCertificateExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "acm-pca", regexache.MustCompile(`certificate-authority/.+/certificate/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "acm-pca", regexache.MustCompile(`certificate-authority/.+/certificate/.+$`)), resource.TestCheckResourceAttrSet(resourceName, names.AttrCertificate), resource.TestCheckResourceAttrSet(resourceName, names.AttrCertificateChain), resource.TestCheckResourceAttr(resourceName, "certificate_signing_request", csr), @@ -217,7 +217,7 @@ func TestAccACMPCACertificate_Validity_endDate(t *testing.T) { Config: testAccCertificateConfig_validityEndDate(domain, acctest.TLSPEMEscapeNewlines(csr), later), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckCertificateExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "acm-pca", regexache.MustCompile(`certificate-authority/.+/certificate/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "acm-pca", regexache.MustCompile(`certificate-authority/.+/certificate/.+$`)), resource.TestCheckResourceAttrSet(resourceName, names.AttrCertificate), resource.TestCheckResourceAttrSet(resourceName, names.AttrCertificateChain), resource.TestCheckResourceAttr(resourceName, "certificate_signing_request", csr), @@ -261,7 +261,7 @@ func TestAccACMPCACertificate_Validity_absolute(t *testing.T) { Config: testAccCertificateConfig_validityAbsolute(domain, acctest.TLSPEMEscapeNewlines(csr), later), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckCertificateExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "acm-pca", regexache.MustCompile(`certificate-authority/.+/certificate/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "acm-pca", regexache.MustCompile(`certificate-authority/.+/certificate/.+$`)), resource.TestCheckResourceAttrSet(resourceName, names.AttrCertificate), resource.TestCheckResourceAttrSet(resourceName, names.AttrCertificateChain), resource.TestCheckResourceAttr(resourceName, "certificate_signing_request", csr), diff --git a/internal/service/acmpca/permission_test.go b/internal/service/acmpca/permission_test.go index 93daef315bbc..e7a2f88f0adc 100644 --- a/internal/service/acmpca/permission_test.go +++ b/internal/service/acmpca/permission_test.go @@ -40,7 +40,7 @@ func TestAccACMPCAPermission_basic(t *testing.T) { resource.TestCheckTypeSetElemAttr(resourceName, "actions.*", "ListPermissions"), resource.TestCheckResourceAttrSet(resourceName, names.AttrPolicy), resource.TestCheckResourceAttr(resourceName, names.AttrPrincipal, "acm.amazonaws.com"), - acctest.CheckResourceAttrAccountID(resourceName, "source_account"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "source_account"), ), }, }, @@ -87,7 +87,7 @@ func TestAccACMPCAPermission_sourceAccount(t *testing.T) { Config: testAccPermissionConfig_sourceAccount(commonName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckPermissionExists(ctx, resourceName, &permission), - acctest.CheckResourceAttrAccountID(resourceName, "source_account"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "source_account"), ), }, }, diff --git a/internal/service/acmpca/service_endpoints_gen_test.go b/internal/service/acmpca/service_endpoints_gen_test.go index 8a4981b8fe65..a115689e0899 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 0d8e8290dee6..bc1dc256aba7 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/amp/workspaces_data_source.go b/internal/service/amp/workspaces_data_source.go index 79a7299a28e5..8a6c936c2fea 100644 --- a/internal/service/amp/workspaces_data_source.go +++ b/internal/service/amp/workspaces_data_source.go @@ -63,7 +63,7 @@ func dataSourceWorkspacesRead(ctx context.Context, d *schema.ResourceData, meta workspaceIDs = append(workspaceIDs, aws.ToString(w.WorkspaceId)) } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) d.Set("aliases", aliases) d.Set(names.AttrARNs, arns) d.Set("workspace_ids", workspaceIDs) diff --git a/internal/service/amplify/app_test.go b/internal/service/amplify/app_test.go index 7b6b5600d8ea..798c7b6c03b1 100644 --- a/internal/service/amplify/app_test.go +++ b/internal/service/amplify/app_test.go @@ -41,7 +41,7 @@ func testAccApp_basic(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckAppExists(ctx, resourceName, &app), resource.TestCheckNoResourceAttr(resourceName, "access_token"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "amplify", regexache.MustCompile(`apps/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "amplify", regexache.MustCompile(`apps/.+`)), resource.TestCheckResourceAttr(resourceName, "auto_branch_creation_config.#", "0"), resource.TestCheckResourceAttr(resourceName, "auto_branch_creation_patterns.#", "0"), resource.TestCheckResourceAttr(resourceName, "basic_auth_credentials", ""), diff --git a/internal/service/amplify/backend_environment_test.go b/internal/service/amplify/backend_environment_test.go index cdba1aee3081..956d407f9bbf 100644 --- a/internal/service/amplify/backend_environment_test.go +++ b/internal/service/amplify/backend_environment_test.go @@ -38,7 +38,7 @@ func testAccBackendEnvironment_basic(t *testing.T) { Config: testAccBackendEnvironmentConfig_basic(rName, environmentName), Check: resource.ComposeTestCheckFunc( testAccCheckBackendEnvironmentExists(ctx, resourceName, &env), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "amplify", regexache.MustCompile(`apps/[^/]+/backendenvironments/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "amplify", regexache.MustCompile(`apps/[^/]+/backendenvironments/.+`)), resource.TestCheckResourceAttrSet(resourceName, "deployment_artifacts"), resource.TestCheckResourceAttr(resourceName, "environment_name", environmentName), resource.TestCheckResourceAttrSet(resourceName, "stack_name"), @@ -97,7 +97,7 @@ func testAccBackendEnvironment_DeploymentArtifacts_StackName(t *testing.T) { Config: testAccBackendEnvironmentConfig_deploymentArtifactsAndStackName(rName, environmentName), Check: resource.ComposeTestCheckFunc( testAccCheckBackendEnvironmentExists(ctx, resourceName, &env), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "amplify", regexache.MustCompile(`apps/[^/]+/backendenvironments/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "amplify", regexache.MustCompile(`apps/[^/]+/backendenvironments/.+`)), resource.TestCheckResourceAttr(resourceName, "deployment_artifacts", rName), resource.TestCheckResourceAttr(resourceName, "environment_name", environmentName), resource.TestCheckResourceAttr(resourceName, "stack_name", rName), diff --git a/internal/service/amplify/branch_test.go b/internal/service/amplify/branch_test.go index 19bf45e1487a..a8e2863b3331 100644 --- a/internal/service/amplify/branch_test.go +++ b/internal/service/amplify/branch_test.go @@ -37,7 +37,7 @@ func testAccBranch_basic(t *testing.T) { Config: testAccBranchConfig_name(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckBranchExists(ctx, resourceName, &branch), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "amplify", regexache.MustCompile(`apps/.+/branches/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "amplify", regexache.MustCompile(`apps/.+/branches/.+`)), resource.TestCheckResourceAttr(resourceName, "associated_resources.#", "0"), resource.TestCheckResourceAttr(resourceName, "backend_environment_arn", ""), resource.TestCheckResourceAttr(resourceName, "basic_auth_credentials", ""), diff --git a/internal/service/amplify/domain_association_test.go b/internal/service/amplify/domain_association_test.go index 933e9424f788..cbe655d7017c 100644 --- a/internal/service/amplify/domain_association_test.go +++ b/internal/service/amplify/domain_association_test.go @@ -43,7 +43,7 @@ func testAccDomainAssociation_basic(t *testing.T) { Config: testAccDomainAssociationConfig_basic(rName, domainName, false, false), Check: resource.ComposeTestCheckFunc( testAccCheckDomainAssociationExists(ctx, resourceName, &domain), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "amplify", regexache.MustCompile(`apps/.+/domains/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "amplify", regexache.MustCompile(`apps/.+/domains/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrDomainName, domainName), resource.TestCheckResourceAttr(resourceName, "enable_auto_sub_domain", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "sub_domain.#", "1"), @@ -116,7 +116,7 @@ func testAccDomainAssociation_update(t *testing.T) { Config: testAccDomainAssociationConfig_basic(rName, domainName, false, true), Check: resource.ComposeTestCheckFunc( testAccCheckDomainAssociationExists(ctx, resourceName, &domain), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "amplify", regexache.MustCompile(`apps/.+/domains/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "amplify", regexache.MustCompile(`apps/.+/domains/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrDomainName, domainName), resource.TestCheckResourceAttr(resourceName, "enable_auto_sub_domain", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "sub_domain.#", "1"), @@ -137,7 +137,7 @@ func testAccDomainAssociation_update(t *testing.T) { Config: testAccDomainAssociationConfig_updated(rName, domainName, true, true), Check: resource.ComposeTestCheckFunc( testAccCheckDomainAssociationExists(ctx, resourceName, &domain), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "amplify", regexache.MustCompile(`apps/.+/domains/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "amplify", regexache.MustCompile(`apps/.+/domains/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrDomainName, domainName), resource.TestCheckResourceAttr(resourceName, "enable_auto_sub_domain", acctest.CtTrue), resource.TestCheckResourceAttr(resourceName, "sub_domain.#", "2"), @@ -178,7 +178,7 @@ func testAccDomainAssociation_certificateSettings(t *testing.T) { Config: testAccDomainAssociationConfig_certificateSettings(rName, domainName, false, false), Check: resource.ComposeTestCheckFunc( testAccCheckDomainAssociationExists(ctx, resourceName, &domain), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "amplify", regexache.MustCompile(`apps/.+/domains/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "amplify", regexache.MustCompile(`apps/.+/domains/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrDomainName, domainName), resource.TestCheckResourceAttr(resourceName, "certificate_settings.#", "1"), resource.TestCheckResourceAttr(resourceName, "certificate_settings.0.type", "AMPLIFY_MANAGED"), diff --git a/internal/service/amplify/service_endpoints_gen_test.go b/internal/service/amplify/service_endpoints_gen_test.go index 489787ff1c38..02dad53c5e07 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/amplify/webhook_test.go b/internal/service/amplify/webhook_test.go index 054aa9ad6c98..f666a949472d 100644 --- a/internal/service/amplify/webhook_test.go +++ b/internal/service/amplify/webhook_test.go @@ -36,7 +36,7 @@ func testAccWebhook_basic(t *testing.T) { Config: testAccWebhookConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckWebhookExists(ctx, resourceName, &webhook), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "amplify", regexache.MustCompile(`apps/.+/webhooks/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "amplify", regexache.MustCompile(`apps/.+/webhooks/.+`)), resource.TestCheckResourceAttr(resourceName, "branch_name", rName), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), resource.TestMatchResourceAttr(resourceName, names.AttrURL, regexache.MustCompile(fmt.Sprintf(`^https://webhooks.amplify.%s.%s/.+$`, acctest.Region(), acctest.PartitionDNSSuffix()))), diff --git a/internal/service/apigateway/client_certificate.go b/internal/service/apigateway/client_certificate.go index 0fb8cd2b7c63..63cdfa58e1c9 100644 --- a/internal/service/apigateway/client_certificate.go +++ b/internal/service/apigateway/client_certificate.go @@ -109,7 +109,7 @@ func resourceClientCertificateRead(ctx context.Context, d *schema.ResourceData, arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "apigateway", - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), Resource: fmt.Sprintf("/clientcertificates/%s", d.Id()), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/apigateway/deployment.go b/internal/service/apigateway/deployment.go index 1a101fba8fe9..f20e12e0c01f 100644 --- a/internal/service/apigateway/deployment.go +++ b/internal/service/apigateway/deployment.go @@ -178,8 +178,8 @@ func resourceDeploymentRead(ctx context.Context, d *schema.ResourceData, meta in executionARN := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "execute-api", - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("%s/%s", restAPIID, stageName), }.String() d.Set("execution_arn", executionARN) diff --git a/internal/service/apigateway/deployment_test.go b/internal/service/apigateway/deployment_test.go index 02d252bf0b19..e1de547945a5 100644 --- a/internal/service/apigateway/deployment_test.go +++ b/internal/service/apigateway/deployment_test.go @@ -40,7 +40,7 @@ func TestAccAPIGatewayDeployment_basic(t *testing.T) { testAccCheckDeploymentExists(ctx, resourceName, &deployment), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), - acctest.MatchResourceAttrRegionalARN(resourceName, "execution_arn", "execute-api", regexache.MustCompile(".+/")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, "execution_arn", "execute-api", regexache.MustCompile(".+/")), resource.TestMatchResourceAttr(resourceName, "invoke_url", regexache.MustCompile(fmt.Sprintf("https://.+\\.execute-api\\.%s.amazonaws\\.com/", acctest.Region()))), resource.TestCheckResourceAttrPair(resourceName, "rest_api_id", restApiResourceName, names.AttrID), resource.TestCheckNoResourceAttr(resourceName, "stage_description"), @@ -244,7 +244,7 @@ func TestAccAPIGatewayDeployment_stageName(t *testing.T) { testAccCheckDeploymentExists(ctx, resourceName, &deployment), testAccCheckStageExists(ctx, resourceName, &stage), resource.TestCheckResourceAttr(resourceName, "stage_name", stageName), - acctest.MatchResourceAttrRegionalARN(resourceName, "execution_arn", "execute-api", regexache.MustCompile(fmt.Sprintf(".+/%s", stageName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, "execution_arn", "execute-api", regexache.MustCompile(fmt.Sprintf(".+/%s", stageName))), resource.TestMatchResourceAttr(resourceName, "invoke_url", regexache.MustCompile(fmt.Sprintf("https://.+\\.execute-api\\.%s.amazonaws\\.com/%s", acctest.Region(), stageName))), ), }, @@ -252,7 +252,7 @@ func TestAccAPIGatewayDeployment_stageName(t *testing.T) { Config: testAccDeploymentConfig_required(rName), Check: resource.ComposeTestCheckFunc( resource.TestCheckNoResourceAttr(resourceName, "stage_name"), - acctest.MatchResourceAttrRegionalARN(resourceName, "execution_arn", "execute-api", regexache.MustCompile(".+/")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, "execution_arn", "execute-api", regexache.MustCompile(".+/")), resource.TestMatchResourceAttr(resourceName, "invoke_url", regexache.MustCompile(fmt.Sprintf("https://.+\\.execute-api\\.%s.amazonaws\\.com/", acctest.Region()))), ), }, diff --git a/internal/service/apigateway/domain_name_test.go b/internal/service/apigateway/domain_name_test.go index d90b3a369ba8..eefc9073fd32 100644 --- a/internal/service/apigateway/domain_name_test.go +++ b/internal/service/apigateway/domain_name_test.go @@ -13,6 +13,7 @@ import ( "github.com/aws/aws-sdk-go-v2/aws/arn" "github.com/aws/aws-sdk-go-v2/service/apigateway" "github.com/aws/aws-sdk-go-v2/service/apigateway/types" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-plugin-testing/terraform" @@ -32,7 +33,7 @@ func TestAccAPIGatewayDomainName_certificateARN(t *testing.T) { resourceName := "aws_api_gateway_domain_name.test" resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckRegion(t, names.USEast1RegionID) }, + PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckRegion(t, endpoints.UsEast1RegionID) }, ErrorCheck: acctest.ErrorCheck(t, names.APIGatewayServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckDomainNameDestroy(ctx), diff --git a/internal/service/apigateway/rest_api_test.go b/internal/service/apigateway/rest_api_test.go index 5edda5c3fa74..6375d4eb0829 100644 --- a/internal/service/apigateway/rest_api_test.go +++ b/internal/service/apigateway/rest_api_test.go @@ -50,7 +50,7 @@ func TestAccAPIGatewayRestAPI_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "endpoint_configuration.0.types.#", "1"), resource.TestCheckResourceAttr(resourceName, "endpoint_configuration.0.types.0", "EDGE"), resource.TestCheckResourceAttr(resourceName, "endpoint_configuration.0.vpc_endpoint_ids.#", "0"), - acctest.MatchResourceAttrRegionalARN(resourceName, "execution_arn", "execute-api", regexache.MustCompile(`[0-9a-z]+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, "execution_arn", "execute-api", regexache.MustCompile(`[0-9a-z]+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "parameters.%", "0"), resource.TestMatchResourceAttr(resourceName, "root_resource_id", regexache.MustCompile(`^[0-9a-z]+$`)), diff --git a/internal/service/apigateway/service_endpoints_gen_test.go b/internal/service/apigateway/service_endpoints_gen_test.go index 8e711a643e87..5c68a80ff84d 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/apigateway/usage_plan.go b/internal/service/apigateway/usage_plan.go index 0d3772bb44d8..3084f5353ae0 100644 --- a/internal/service/apigateway/usage_plan.go +++ b/internal/service/apigateway/usage_plan.go @@ -240,7 +240,7 @@ func resourceUsagePlanRead(ctx context.Context, d *schema.ResourceData, meta int arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "apigateway", - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), Resource: fmt.Sprintf("/usageplans/%s", d.Id()), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/apigatewayv2/api_test.go b/internal/service/apigatewayv2/api_test.go index b90daeacd2da..d5d28f29fdbb 100644 --- a/internal/service/apigatewayv2/api_test.go +++ b/internal/service/apigatewayv2/api_test.go @@ -44,7 +44,7 @@ func TestAccAPIGatewayV2API_basicWebSocket(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "cors_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), resource.TestCheckResourceAttr(resourceName, "disable_execute_api_endpoint", acctest.CtFalse), - acctest.MatchResourceAttrRegionalARN(resourceName, "execution_arn", "execute-api", regexache.MustCompile(`.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, "execution_arn", "execute-api", regexache.MustCompile(`.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "protocol_type", string(awstypes.ProtocolTypeWebsocket)), resource.TestCheckResourceAttr(resourceName, "route_selection_expression", "$request.body.action"), @@ -83,7 +83,7 @@ func TestAccAPIGatewayV2API_basicHTTP(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "cors_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), resource.TestCheckResourceAttr(resourceName, "disable_execute_api_endpoint", acctest.CtFalse), - acctest.MatchResourceAttrRegionalARN(resourceName, "execution_arn", "execute-api", regexache.MustCompile(`.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, "execution_arn", "execute-api", regexache.MustCompile(`.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "protocol_type", string(awstypes.ProtocolTypeHttp)), resource.TestCheckResourceAttr(resourceName, "route_selection_expression", "$request.method $request.path"), @@ -147,7 +147,7 @@ func TestAccAPIGatewayV2API_allAttributesWebSocket(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "cors_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "test description"), resource.TestCheckResourceAttr(resourceName, "disable_execute_api_endpoint", acctest.CtTrue), - acctest.MatchResourceAttrRegionalARN(resourceName, "execution_arn", "execute-api", regexache.MustCompile(`.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, "execution_arn", "execute-api", regexache.MustCompile(`.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName1), resource.TestCheckResourceAttr(resourceName, "protocol_type", string(awstypes.ProtocolTypeWebsocket)), resource.TestCheckResourceAttr(resourceName, "route_selection_expression", "$request.body.service"), @@ -230,7 +230,7 @@ func TestAccAPIGatewayV2API_allAttributesHTTP(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "cors_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "test description"), resource.TestCheckResourceAttr(resourceName, "disable_execute_api_endpoint", acctest.CtTrue), - acctest.MatchResourceAttrRegionalARN(resourceName, "execution_arn", "execute-api", regexache.MustCompile(`.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, "execution_arn", "execute-api", regexache.MustCompile(`.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName1), resource.TestCheckResourceAttr(resourceName, "protocol_type", string(awstypes.ProtocolTypeHttp)), resource.TestCheckResourceAttr(resourceName, "route_selection_expression", "$request.method $request.path"), @@ -616,7 +616,7 @@ func TestAccAPIGatewayV2API_cors(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "cors_configuration.0.expose_headers.#", "0"), resource.TestCheckResourceAttr(resourceName, "cors_configuration.0.max_age", "0"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), - acctest.MatchResourceAttrRegionalARN(resourceName, "execution_arn", "execute-api", regexache.MustCompile(`.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, "execution_arn", "execute-api", regexache.MustCompile(`.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "protocol_type", string(awstypes.ProtocolTypeHttp)), resource.TestCheckResourceAttr(resourceName, "route_selection_expression", "$request.method $request.path"), @@ -649,7 +649,7 @@ func TestAccAPIGatewayV2API_cors(t *testing.T) { resource.TestCheckTypeSetElemAttr(resourceName, "cors_configuration.0.expose_headers.*", "X-Api-Id"), resource.TestCheckResourceAttr(resourceName, "cors_configuration.0.max_age", "500"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), - acctest.MatchResourceAttrRegionalARN(resourceName, "execution_arn", "execute-api", regexache.MustCompile(`.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, "execution_arn", "execute-api", regexache.MustCompile(`.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "protocol_type", string(awstypes.ProtocolTypeHttp)), resource.TestCheckResourceAttr(resourceName, "route_selection_expression", "$request.method $request.path"), @@ -666,7 +666,7 @@ func TestAccAPIGatewayV2API_cors(t *testing.T) { acctest.MatchResourceAttrRegionalARNNoAccount(resourceName, names.AttrARN, "apigateway", regexache.MustCompile(`/apis/.+`)), resource.TestCheckResourceAttr(resourceName, "cors_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), - acctest.MatchResourceAttrRegionalARN(resourceName, "execution_arn", "execute-api", regexache.MustCompile(`.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, "execution_arn", "execute-api", regexache.MustCompile(`.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "protocol_type", string(awstypes.ProtocolTypeHttp)), resource.TestCheckResourceAttr(resourceName, "route_selection_expression", "$request.method $request.path"), @@ -702,7 +702,7 @@ func TestAccAPIGatewayV2API_quickCreate(t *testing.T) { acctest.MatchResourceAttrRegionalARNNoAccount(resourceName, names.AttrARN, "apigateway", regexache.MustCompile(`/apis/.+`)), resource.TestCheckResourceAttr(resourceName, "cors_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), - acctest.MatchResourceAttrRegionalARN(resourceName, "execution_arn", "execute-api", regexache.MustCompile(`.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, "execution_arn", "execute-api", regexache.MustCompile(`.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "protocol_type", string(awstypes.ProtocolTypeHttp)), resource.TestCheckResourceAttr(resourceName, "route_key", "GET /pets"), diff --git a/internal/service/apigatewayv2/apis_data_source.go b/internal/service/apigatewayv2/apis_data_source.go index 321732c11c13..36f75e790111 100644 --- a/internal/service/apigatewayv2/apis_data_source.go +++ b/internal/service/apigatewayv2/apis_data_source.go @@ -74,7 +74,7 @@ func dataSourceAPIsRead(ctx context.Context, d *schema.ResourceData, meta interf ids = append(ids, api.ApiId) } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) if err := d.Set(names.AttrIDs, flex.FlattenStringSet(ids)); err != nil { return sdkdiag.AppendErrorf(diags, "setting ids: %s", err) diff --git a/internal/service/apigatewayv2/domain_name.go b/internal/service/apigatewayv2/domain_name.go index c4e1c2e70c39..a6c389e0a82f 100644 --- a/internal/service/apigatewayv2/domain_name.go +++ b/internal/service/apigatewayv2/domain_name.go @@ -175,7 +175,7 @@ func resourceDomainNameRead(ctx context.Context, d *schema.ResourceData, meta in arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "apigateway", - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), Resource: "/domainnames/" + d.Id(), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/apigatewayv2/service_endpoints_gen_test.go b/internal/service/apigatewayv2/service_endpoints_gen_test.go index 9d11714f2204..6f0d69bb1eee 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/apigatewayv2/stage_test.go b/internal/service/apigatewayv2/stage_test.go index 0c9fc991d06c..d9daa7c4fae2 100644 --- a/internal/service/apigatewayv2/stage_test.go +++ b/internal/service/apigatewayv2/stage_test.go @@ -53,7 +53,7 @@ func TestAccAPIGatewayV2Stage_basicWebSocket(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "default_route_settings.0.throttling_rate_limit", "0"), resource.TestCheckResourceAttr(resourceName, "deployment_id", ""), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), - testAccCheckStageExecutionARN(resourceName, "execution_arn", &api, &v), + testAccCheckStageExecutionARN(ctx, resourceName, "execution_arn", &api, &v), resource.TestMatchResourceAttr(resourceName, "invoke_url", regexache.MustCompile(fmt.Sprintf("wss://.+\\.execute-api\\.%s.amazonaws\\.com/%s", acctest.Region(), rName))), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "route_settings.#", "0"), @@ -102,7 +102,7 @@ func TestAccAPIGatewayV2Stage_basicHTTP(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "default_route_settings.0.throttling_rate_limit", "0"), resource.TestCheckResourceAttr(resourceName, "deployment_id", ""), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), - testAccCheckStageExecutionARN(resourceName, "execution_arn", &api, &v), + testAccCheckStageExecutionARN(ctx, resourceName, "execution_arn", &api, &v), resource.TestMatchResourceAttr(resourceName, "invoke_url", regexache.MustCompile(fmt.Sprintf("https://.+\\.execute-api\\.%s.amazonaws\\.com/%s", acctest.Region(), rName))), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "route_settings.#", "0"), @@ -151,7 +151,7 @@ func TestAccAPIGatewayV2Stage_defaultHTTPStage(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "default_route_settings.0.throttling_rate_limit", "0"), resource.TestCheckResourceAttr(resourceName, "deployment_id", ""), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), - testAccCheckStageExecutionARN(resourceName, "execution_arn", &api, &v), + testAccCheckStageExecutionARN(ctx, resourceName, "execution_arn", &api, &v), resource.TestMatchResourceAttr(resourceName, "invoke_url", regexache.MustCompile(fmt.Sprintf("https://.+\\.execute-api\\.%s.amazonaws\\.com/", acctest.Region()))), resource.TestCheckResourceAttr(resourceName, names.AttrName, "$default"), resource.TestCheckResourceAttr(resourceName, "route_settings.#", "0"), @@ -200,7 +200,7 @@ func TestAccAPIGatewayV2Stage_autoDeployHTTP(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "default_route_settings.0.throttling_rate_limit", "0"), resource.TestCheckResourceAttr(resourceName, "deployment_id", ""), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), - testAccCheckStageExecutionARN(resourceName, "execution_arn", &api, &v), + testAccCheckStageExecutionARN(ctx, resourceName, "execution_arn", &api, &v), resource.TestMatchResourceAttr(resourceName, "invoke_url", regexache.MustCompile(fmt.Sprintf("https://.+\\.execute-api\\.%s.amazonaws\\.com/%s", acctest.Region(), rName))), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "route_settings.#", "0"), @@ -226,7 +226,7 @@ func TestAccAPIGatewayV2Stage_autoDeployHTTP(t *testing.T) { // The stage's DeploymentId attribute will be set asynchronously as deployments are done automatically. // resource.TestCheckResourceAttrSet(resourceName, "deployment_id"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), - testAccCheckStageExecutionARN(resourceName, "execution_arn", &api, &v), + testAccCheckStageExecutionARN(ctx, resourceName, "execution_arn", &api, &v), resource.TestMatchResourceAttr(resourceName, "invoke_url", regexache.MustCompile(fmt.Sprintf("https://.+\\.execute-api\\.%s.amazonaws\\.com/%s", acctest.Region(), rName))), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "route_settings.#", "0"), @@ -306,7 +306,7 @@ func TestAccAPIGatewayV2Stage_accessLogSettings(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "default_route_settings.0.throttling_rate_limit", "0"), resource.TestCheckResourceAttr(resourceName, "deployment_id", ""), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), - testAccCheckStageExecutionARN(resourceName, "execution_arn", &api, &v), + testAccCheckStageExecutionARN(ctx, resourceName, "execution_arn", &api, &v), resource.TestMatchResourceAttr(resourceName, "invoke_url", regexache.MustCompile(fmt.Sprintf("wss://.+\\.execute-api\\.%s.amazonaws\\.com/%s", acctest.Region(), rName))), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "route_settings.#", "0"), @@ -380,7 +380,7 @@ func TestAccAPIGatewayV2Stage_clientCertificateIdAndDescription(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "default_route_settings.0.throttling_rate_limit", "0"), resource.TestCheckResourceAttr(resourceName, "deployment_id", ""), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "Test stage"), - testAccCheckStageExecutionARN(resourceName, "execution_arn", &api, &v), + testAccCheckStageExecutionARN(ctx, resourceName, "execution_arn", &api, &v), resource.TestMatchResourceAttr(resourceName, "invoke_url", regexache.MustCompile(fmt.Sprintf("wss://.+\\.execute-api\\.%s.amazonaws\\.com/%s", acctest.Region(), rName))), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "route_settings.#", "0"), @@ -411,7 +411,7 @@ func TestAccAPIGatewayV2Stage_clientCertificateIdAndDescription(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "default_route_settings.0.throttling_rate_limit", "0"), resource.TestCheckResourceAttr(resourceName, "deployment_id", ""), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "Test stage updated"), - testAccCheckStageExecutionARN(resourceName, "execution_arn", &api, &v), + testAccCheckStageExecutionARN(ctx, resourceName, "execution_arn", &api, &v), resource.TestMatchResourceAttr(resourceName, "invoke_url", regexache.MustCompile(fmt.Sprintf("wss://.+\\.execute-api\\.%s.amazonaws\\.com/%s", acctest.Region(), rName))), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "route_settings.#", "0"), @@ -454,7 +454,7 @@ func TestAccAPIGatewayV2Stage_defaultRouteSettingsWebSocket(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "default_route_settings.0.throttling_rate_limit", "8888"), resource.TestCheckResourceAttr(resourceName, "deployment_id", ""), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), - testAccCheckStageExecutionARN(resourceName, "execution_arn", &api, &v), + testAccCheckStageExecutionARN(ctx, resourceName, "execution_arn", &api, &v), resource.TestMatchResourceAttr(resourceName, "invoke_url", regexache.MustCompile(fmt.Sprintf("wss://.+\\.execute-api\\.%s.amazonaws\\.com/%s", acctest.Region(), rName))), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "route_settings.#", "0"), @@ -479,7 +479,7 @@ func TestAccAPIGatewayV2Stage_defaultRouteSettingsWebSocket(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "default_route_settings.0.throttling_rate_limit", "9999"), resource.TestCheckResourceAttr(resourceName, "deployment_id", ""), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), - testAccCheckStageExecutionARN(resourceName, "execution_arn", &api, &v), + testAccCheckStageExecutionARN(ctx, resourceName, "execution_arn", &api, &v), resource.TestMatchResourceAttr(resourceName, "invoke_url", regexache.MustCompile(fmt.Sprintf("wss://.+\\.execute-api\\.%s.amazonaws\\.com/%s", acctest.Region(), rName))), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "route_settings.#", "0"), @@ -550,7 +550,7 @@ func TestAccAPIGatewayV2Stage_defaultRouteSettingsHTTP(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "default_route_settings.0.throttling_rate_limit", "8888"), resource.TestCheckResourceAttr(resourceName, "deployment_id", ""), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), - testAccCheckStageExecutionARN(resourceName, "execution_arn", &api, &v), + testAccCheckStageExecutionARN(ctx, resourceName, "execution_arn", &api, &v), resource.TestMatchResourceAttr(resourceName, "invoke_url", regexache.MustCompile(fmt.Sprintf("https://.+\\.execute-api\\.%s.amazonaws\\.com/%s", acctest.Region(), rName))), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "route_settings.#", "0"), @@ -575,7 +575,7 @@ func TestAccAPIGatewayV2Stage_defaultRouteSettingsHTTP(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "default_route_settings.0.throttling_rate_limit", "9999"), resource.TestCheckResourceAttr(resourceName, "deployment_id", ""), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), - testAccCheckStageExecutionARN(resourceName, "execution_arn", &api, &v), + testAccCheckStageExecutionARN(ctx, resourceName, "execution_arn", &api, &v), resource.TestMatchResourceAttr(resourceName, "invoke_url", regexache.MustCompile(fmt.Sprintf("https://.+\\.execute-api\\.%s.amazonaws\\.com/%s", acctest.Region(), rName))), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "route_settings.#", "0"), @@ -647,7 +647,7 @@ func TestAccAPIGatewayV2Stage_deployment(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "default_route_settings.0.throttling_rate_limit", "0"), resource.TestCheckResourceAttrPair(resourceName, "deployment_id", deploymentResourceName, names.AttrID), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), - testAccCheckStageExecutionARN(resourceName, "execution_arn", &api, &v), + testAccCheckStageExecutionARN(ctx, resourceName, "execution_arn", &api, &v), resource.TestMatchResourceAttr(resourceName, "invoke_url", regexache.MustCompile(fmt.Sprintf("wss://.+\\.execute-api\\.%s.amazonaws\\.com/%s", acctest.Region(), rName))), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "route_settings.#", "0"), @@ -696,7 +696,7 @@ func TestAccAPIGatewayV2Stage_routeSettingsWebSocket(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "default_route_settings.0.throttling_rate_limit", "0"), resource.TestCheckResourceAttr(resourceName, "deployment_id", ""), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), - testAccCheckStageExecutionARN(resourceName, "execution_arn", &api, &v), + testAccCheckStageExecutionARN(ctx, resourceName, "execution_arn", &api, &v), resource.TestMatchResourceAttr(resourceName, "invoke_url", regexache.MustCompile(fmt.Sprintf("wss://.+\\.execute-api\\.%s.amazonaws\\.com/%s", acctest.Region(), rName))), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "route_settings.#", "2"), @@ -736,7 +736,7 @@ func TestAccAPIGatewayV2Stage_routeSettingsWebSocket(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "default_route_settings.0.throttling_rate_limit", "0"), resource.TestCheckResourceAttr(resourceName, "deployment_id", ""), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), - testAccCheckStageExecutionARN(resourceName, "execution_arn", &api, &v), + testAccCheckStageExecutionARN(ctx, resourceName, "execution_arn", &api, &v), resource.TestMatchResourceAttr(resourceName, "invoke_url", regexache.MustCompile(fmt.Sprintf("wss://.+\\.execute-api\\.%s.amazonaws\\.com/%s", acctest.Region(), rName))), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "route_settings.#", "3"), @@ -829,7 +829,7 @@ func TestAccAPIGatewayV2Stage_routeSettingsHTTP(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "default_route_settings.0.throttling_rate_limit", "0"), resource.TestCheckResourceAttr(resourceName, "deployment_id", ""), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), - testAccCheckStageExecutionARN(resourceName, "execution_arn", &api, &v), + testAccCheckStageExecutionARN(ctx, resourceName, "execution_arn", &api, &v), resource.TestMatchResourceAttr(resourceName, "invoke_url", regexache.MustCompile(fmt.Sprintf("https://.+\\.execute-api\\.%s.amazonaws\\.com/%s", acctest.Region(), rName))), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "route_settings.#", "1"), @@ -861,7 +861,7 @@ func TestAccAPIGatewayV2Stage_routeSettingsHTTP(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "default_route_settings.0.throttling_rate_limit", "0"), resource.TestCheckResourceAttr(resourceName, "deployment_id", ""), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), - testAccCheckStageExecutionARN(resourceName, "execution_arn", &api, &v), + testAccCheckStageExecutionARN(ctx, resourceName, "execution_arn", &api, &v), resource.TestMatchResourceAttr(resourceName, "invoke_url", regexache.MustCompile(fmt.Sprintf("https://.+\\.execute-api\\.%s.amazonaws\\.com/%s", acctest.Region(), rName))), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "route_settings.#", "1"), @@ -939,7 +939,7 @@ func TestAccAPIGatewayV2Stage_RouteSettingsHTTP_withRoute(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "default_route_settings.0.throttling_rate_limit", "0"), resource.TestCheckResourceAttr(resourceName, "deployment_id", ""), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), - testAccCheckStageExecutionARN(resourceName, "execution_arn", &api, &v), + testAccCheckStageExecutionARN(ctx, resourceName, "execution_arn", &api, &v), resource.TestMatchResourceAttr(resourceName, "invoke_url", regexache.MustCompile(fmt.Sprintf("https://.+\\.execute-api\\.%s.amazonaws\\.com/%s", acctest.Region(), rName))), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "route_settings.#", "1"), @@ -971,7 +971,7 @@ func TestAccAPIGatewayV2Stage_RouteSettingsHTTP_withRoute(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "default_route_settings.0.throttling_rate_limit", "0"), resource.TestCheckResourceAttr(resourceName, "deployment_id", ""), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), - testAccCheckStageExecutionARN(resourceName, "execution_arn", &api, &v), + testAccCheckStageExecutionARN(ctx, resourceName, "execution_arn", &api, &v), resource.TestMatchResourceAttr(resourceName, "invoke_url", regexache.MustCompile(fmt.Sprintf("https://.+\\.execute-api\\.%s.amazonaws\\.com/%s", acctest.Region(), rName))), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "route_settings.#", "1"), @@ -1027,7 +1027,7 @@ func TestAccAPIGatewayV2Stage_stageVariables(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "default_route_settings.0.throttling_burst_limit", "0"), resource.TestCheckResourceAttr(resourceName, "default_route_settings.0.throttling_rate_limit", "0"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), - testAccCheckStageExecutionARN(resourceName, "execution_arn", &api, &v), + testAccCheckStageExecutionARN(ctx, resourceName, "execution_arn", &api, &v), resource.TestMatchResourceAttr(resourceName, "invoke_url", regexache.MustCompile(fmt.Sprintf("wss://.+\\.execute-api\\.%s.amazonaws\\.com/%s", acctest.Region(), rName))), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "route_settings.#", "0"), @@ -1121,9 +1121,9 @@ func testAccCheckStageARN(resourceName, attributeName string, api *apigatewayv2. } } -func testAccCheckStageExecutionARN(resourceName, attributeName string, api *apigatewayv2.GetApiOutput, v *apigatewayv2.GetStageOutput) resource.TestCheckFunc { +func testAccCheckStageExecutionARN(ctx context.Context, resourceName, attributeName string, api *apigatewayv2.GetApiOutput, v *apigatewayv2.GetStageOutput) resource.TestCheckFunc { return func(s *terraform.State) error { - return acctest.CheckResourceAttrRegionalARN(resourceName, attributeName, "execute-api", fmt.Sprintf("%s/%s", aws.ToString(api.ApiId), aws.ToString(v.StageName)))(s) + return acctest.CheckResourceAttrRegionalARN(ctx, resourceName, attributeName, "execute-api", fmt.Sprintf("%s/%s", aws.ToString(api.ApiId), aws.ToString(v.StageName)))(s) } } diff --git a/internal/service/appautoscaling/scheduled_action_test.go b/internal/service/appautoscaling/scheduled_action_test.go index fe16665b61ca..76cba5620294 100644 --- a/internal/service/appautoscaling/scheduled_action_test.go +++ b/internal/service/appautoscaling/scheduled_action_test.go @@ -51,7 +51,7 @@ func TestAccAppAutoScalingScheduledAction_dynamoDB(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "scalable_target_action.0.min_capacity", "1"), resource.TestCheckResourceAttr(resourceName, "scalable_target_action.0.max_capacity", "10"), resource.TestCheckResourceAttr(resourceName, "timezone", "UTC"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "autoscaling", regexache.MustCompile(fmt.Sprintf("scheduledAction:.+:scheduledActionName/%s$", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "autoscaling", regexache.MustCompile(fmt.Sprintf("scheduledAction:.+:scheduledActionName/%s$", rName))), resource.TestCheckNoResourceAttr(resourceName, names.AttrStartTime), resource.TestCheckNoResourceAttr(resourceName, "end_time"), ), @@ -70,7 +70,7 @@ func TestAccAppAutoScalingScheduledAction_dynamoDB(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "scalable_target_action.0.min_capacity", "2"), resource.TestCheckResourceAttr(resourceName, "scalable_target_action.0.max_capacity", "9"), resource.TestCheckResourceAttr(resourceName, "timezone", updatedTimezone), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "autoscaling", regexache.MustCompile(fmt.Sprintf("scheduledAction:.+:scheduledActionName/%s$", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "autoscaling", regexache.MustCompile(fmt.Sprintf("scheduledAction:.+:scheduledActionName/%s$", rName))), resource.TestCheckNoResourceAttr(resourceName, names.AttrStartTime), resource.TestCheckNoResourceAttr(resourceName, "end_time"), ), @@ -132,7 +132,7 @@ func TestAccAppAutoScalingScheduledAction_ecs(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "scalable_target_action.0.min_capacity", "1"), resource.TestCheckResourceAttr(resourceName, "scalable_target_action.0.max_capacity", "5"), resource.TestCheckResourceAttr(resourceName, "timezone", "UTC"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "autoscaling", regexache.MustCompile(fmt.Sprintf("scheduledAction:.+:scheduledActionName/%s$", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "autoscaling", regexache.MustCompile(fmt.Sprintf("scheduledAction:.+:scheduledActionName/%s$", rName))), ), }, }, @@ -171,7 +171,7 @@ func TestAccAppAutoScalingScheduledAction_ecsUpdateScheduleRetainStartAndEndTime resource.TestCheckResourceAttr(resourceName, "timezone", "UTC"), resource.TestCheckResourceAttr(resourceName, names.AttrStartTime, startTime), resource.TestCheckResourceAttr(resourceName, "end_time", endTime), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "autoscaling", regexache.MustCompile(fmt.Sprintf("scheduledAction:.+:scheduledActionName/%s$", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "autoscaling", regexache.MustCompile(fmt.Sprintf("scheduledAction:.+:scheduledActionName/%s$", rName))), ), }, { @@ -187,7 +187,7 @@ func TestAccAppAutoScalingScheduledAction_ecsUpdateScheduleRetainStartAndEndTime resource.TestCheckResourceAttr(resourceName, "scalable_target_action.0.min_capacity", "1"), resource.TestCheckResourceAttr(resourceName, "scalable_target_action.0.max_capacity", "5"), resource.TestCheckResourceAttr(resourceName, "timezone", "UTC"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "autoscaling", regexache.MustCompile(fmt.Sprintf("scheduledAction:.+:scheduledActionName/%s$", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "autoscaling", regexache.MustCompile(fmt.Sprintf("scheduledAction:.+:scheduledActionName/%s$", rName))), ), }, }, @@ -228,7 +228,7 @@ func TestAccAppAutoScalingScheduledAction_ecsUpdateStartAndEndTime(t *testing.T) resource.TestCheckResourceAttr(resourceName, "timezone", "UTC"), resource.TestCheckResourceAttr(resourceName, names.AttrStartTime, startTime), resource.TestCheckResourceAttr(resourceName, "end_time", endTime), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "autoscaling", regexache.MustCompile(fmt.Sprintf("scheduledAction:.+:scheduledActionName/%s$", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "autoscaling", regexache.MustCompile(fmt.Sprintf("scheduledAction:.+:scheduledActionName/%s$", rName))), ), }, { @@ -246,7 +246,7 @@ func TestAccAppAutoScalingScheduledAction_ecsUpdateStartAndEndTime(t *testing.T) resource.TestCheckResourceAttr(resourceName, "timezone", "UTC"), resource.TestCheckResourceAttr(resourceName, names.AttrStartTime, startTimeUpdate), resource.TestCheckResourceAttr(resourceName, "end_time", endTimeUpdate), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "autoscaling", regexache.MustCompile(fmt.Sprintf("scheduledAction:.+:scheduledActionName/%s$", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "autoscaling", regexache.MustCompile(fmt.Sprintf("scheduledAction:.+:scheduledActionName/%s$", rName))), ), }, }, @@ -285,7 +285,7 @@ func TestAccAppAutoScalingScheduledAction_ecsAddStartTimeAndEndTimeAfterResource resource.TestCheckResourceAttr(resourceName, "timezone", "UTC"), resource.TestCheckNoResourceAttr(resourceName, names.AttrStartTime), resource.TestCheckNoResourceAttr(resourceName, "end_time"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "autoscaling", regexache.MustCompile(fmt.Sprintf("scheduledAction:.+:scheduledActionName/%s$", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "autoscaling", regexache.MustCompile(fmt.Sprintf("scheduledAction:.+:scheduledActionName/%s$", rName))), ), }, { @@ -303,7 +303,7 @@ func TestAccAppAutoScalingScheduledAction_ecsAddStartTimeAndEndTimeAfterResource resource.TestCheckResourceAttr(resourceName, "timezone", "UTC"), resource.TestCheckResourceAttr(resourceName, names.AttrStartTime, startTime), resource.TestCheckResourceAttr(resourceName, "end_time", endTime), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "autoscaling", regexache.MustCompile(fmt.Sprintf("scheduledAction:.+:scheduledActionName/%s$", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "autoscaling", regexache.MustCompile(fmt.Sprintf("scheduledAction:.+:scheduledActionName/%s$", rName))), ), }, }, @@ -337,7 +337,7 @@ func TestAccAppAutoScalingScheduledAction_emr(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "scalable_target_action.0.min_capacity", "1"), resource.TestCheckResourceAttr(resourceName, "scalable_target_action.0.max_capacity", "5"), resource.TestCheckResourceAttr(resourceName, "timezone", "UTC"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "autoscaling", regexache.MustCompile(fmt.Sprintf("scheduledAction:.+:scheduledActionName/%s$", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "autoscaling", regexache.MustCompile(fmt.Sprintf("scheduledAction:.+:scheduledActionName/%s$", rName))), ), }, }, @@ -396,7 +396,7 @@ func TestAccAppAutoScalingScheduledAction_spotFleet(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "scalable_target_action.0.min_capacity", "1"), resource.TestCheckResourceAttr(resourceName, "scalable_target_action.0.max_capacity", "3"), resource.TestCheckResourceAttr(resourceName, "timezone", "UTC"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "autoscaling", regexache.MustCompile(fmt.Sprintf("scheduledAction:.+:scheduledActionName/%s$", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "autoscaling", regexache.MustCompile(fmt.Sprintf("scheduledAction:.+:scheduledActionName/%s$", rName))), ), }, }, @@ -434,7 +434,7 @@ func TestAccAppAutoScalingScheduledAction_ScheduleAtExpression_timezone(t *testi resource.TestCheckResourceAttr(resourceName, "scalable_target_action.0.min_capacity", "1"), resource.TestCheckResourceAttr(resourceName, "scalable_target_action.0.max_capacity", "10"), resource.TestCheckResourceAttr(resourceName, "timezone", timezone), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "autoscaling", regexache.MustCompile(fmt.Sprintf("scheduledAction:.+:scheduledActionName/%s$", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "autoscaling", regexache.MustCompile(fmt.Sprintf("scheduledAction:.+:scheduledActionName/%s$", rName))), resource.TestCheckResourceAttr(resourceName, names.AttrStartTime, startTime), resource.TestCheckResourceAttr(resourceName, "end_time", endTime), ), @@ -470,7 +470,7 @@ func TestAccAppAutoScalingScheduledAction_ScheduleCronExpression_basic(t *testin resource.TestCheckResourceAttr(resourceName, "scalable_target_action.0.min_capacity", "1"), resource.TestCheckResourceAttr(resourceName, "scalable_target_action.0.max_capacity", "10"), resource.TestCheckResourceAttr(resourceName, "timezone", "UTC"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "autoscaling", regexache.MustCompile(fmt.Sprintf("scheduledAction:.+:scheduledActionName/%s$", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "autoscaling", regexache.MustCompile(fmt.Sprintf("scheduledAction:.+:scheduledActionName/%s$", rName))), resource.TestCheckNoResourceAttr(resourceName, names.AttrStartTime), resource.TestCheckNoResourceAttr(resourceName, "end_time"), ), @@ -509,7 +509,7 @@ func TestAccAppAutoScalingScheduledAction_ScheduleCronExpression_timezone(t *tes resource.TestCheckResourceAttr(resourceName, "scalable_target_action.0.min_capacity", "1"), resource.TestCheckResourceAttr(resourceName, "scalable_target_action.0.max_capacity", "10"), resource.TestCheckResourceAttr(resourceName, "timezone", timezone), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "autoscaling", regexache.MustCompile(fmt.Sprintf("scheduledAction:.+:scheduledActionName/%s$", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "autoscaling", regexache.MustCompile(fmt.Sprintf("scheduledAction:.+:scheduledActionName/%s$", rName))), resource.TestCheckResourceAttr(resourceName, names.AttrStartTime, startTime), resource.TestCheckResourceAttr(resourceName, "end_time", endTime), ), @@ -552,7 +552,7 @@ func TestAccAppAutoScalingScheduledAction_ScheduleCronExpression_startEndTimeTim resource.TestCheckResourceAttr(resourceName, "scalable_target_action.0.min_capacity", "1"), resource.TestCheckResourceAttr(resourceName, "scalable_target_action.0.max_capacity", "10"), resource.TestCheckResourceAttr(resourceName, "timezone", scheduleTimezone), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "autoscaling", regexache.MustCompile(fmt.Sprintf("scheduledAction:.+:scheduledActionName/%s$", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "autoscaling", regexache.MustCompile(fmt.Sprintf("scheduledAction:.+:scheduledActionName/%s$", rName))), resource.TestCheckResourceAttr(resourceName, names.AttrStartTime, startTimeUtc.Format(time.RFC3339)), resource.TestCheckResourceAttr(resourceName, "end_time", endTimeUtc.Format(time.RFC3339)), ), @@ -570,7 +570,7 @@ func TestAccAppAutoScalingScheduledAction_ScheduleCronExpression_startEndTimeTim resource.TestCheckResourceAttr(resourceName, "scalable_target_action.0.min_capacity", "1"), resource.TestCheckResourceAttr(resourceName, "scalable_target_action.0.max_capacity", "10"), resource.TestCheckResourceAttr(resourceName, "timezone", "UTC"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "autoscaling", regexache.MustCompile(fmt.Sprintf("scheduledAction:.+:scheduledActionName/%s$", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "autoscaling", regexache.MustCompile(fmt.Sprintf("scheduledAction:.+:scheduledActionName/%s$", rName))), resource.TestCheckResourceAttr(resourceName, names.AttrStartTime, ""), resource.TestCheckResourceAttr(resourceName, "end_time", ""), ), @@ -606,7 +606,7 @@ func TestAccAppAutoScalingScheduledAction_ScheduleRateExpression_basic(t *testin resource.TestCheckResourceAttr(resourceName, "scalable_target_action.0.min_capacity", "1"), resource.TestCheckResourceAttr(resourceName, "scalable_target_action.0.max_capacity", "10"), resource.TestCheckResourceAttr(resourceName, "timezone", "UTC"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "autoscaling", regexache.MustCompile(fmt.Sprintf("scheduledAction:.+:scheduledActionName/%s$", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "autoscaling", regexache.MustCompile(fmt.Sprintf("scheduledAction:.+:scheduledActionName/%s$", rName))), resource.TestCheckNoResourceAttr(resourceName, names.AttrStartTime), resource.TestCheckNoResourceAttr(resourceName, "end_time"), ), @@ -645,7 +645,7 @@ func TestAccAppAutoScalingScheduledAction_ScheduleRateExpression_timezone(t *tes resource.TestCheckResourceAttr(resourceName, "scalable_target_action.0.min_capacity", "1"), resource.TestCheckResourceAttr(resourceName, "scalable_target_action.0.max_capacity", "10"), resource.TestCheckResourceAttr(resourceName, "timezone", timezone), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "autoscaling", regexache.MustCompile(fmt.Sprintf("scheduledAction:.+:scheduledActionName/%s$", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "autoscaling", regexache.MustCompile(fmt.Sprintf("scheduledAction:.+:scheduledActionName/%s$", rName))), resource.TestCheckResourceAttr(resourceName, names.AttrStartTime, startTime), resource.TestCheckResourceAttr(resourceName, "end_time", endTime), ), @@ -681,7 +681,7 @@ func TestAccAppAutoScalingScheduledAction_minCapacity(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "scalable_target_action.0.min_capacity", "1"), resource.TestCheckResourceAttr(resourceName, "scalable_target_action.0.max_capacity", ""), resource.TestCheckResourceAttr(resourceName, "timezone", "UTC"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "autoscaling", regexache.MustCompile(fmt.Sprintf("scheduledAction:.+:scheduledActionName/%s$", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "autoscaling", regexache.MustCompile(fmt.Sprintf("scheduledAction:.+:scheduledActionName/%s$", rName))), resource.TestCheckNoResourceAttr(resourceName, names.AttrStartTime), resource.TestCheckNoResourceAttr(resourceName, "end_time"), ), @@ -737,7 +737,7 @@ func TestAccAppAutoScalingScheduledAction_maxCapacity(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "scalable_target_action.0.min_capacity", ""), resource.TestCheckResourceAttr(resourceName, "scalable_target_action.0.max_capacity", "10"), resource.TestCheckResourceAttr(resourceName, "timezone", "UTC"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "autoscaling", regexache.MustCompile(fmt.Sprintf("scheduledAction:.+:scheduledActionName/%s$", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "autoscaling", regexache.MustCompile(fmt.Sprintf("scheduledAction:.+:scheduledActionName/%s$", rName))), resource.TestCheckNoResourceAttr(resourceName, names.AttrStartTime), resource.TestCheckNoResourceAttr(resourceName, "end_time"), ), diff --git a/internal/service/appautoscaling/service_endpoints_gen_test.go b/internal/service/appautoscaling/service_endpoints_gen_test.go index 20fbb93c7c5f..a73925ee5993 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/appautoscaling/target_test.go b/internal/service/appautoscaling/target_test.go index 01436dc3aca1..0f3d9fce6128 100644 --- a/internal/service/appautoscaling/target_test.go +++ b/internal/service/appautoscaling/target_test.go @@ -201,7 +201,7 @@ func TestAccAppAutoScalingTarget_optionalRoleARN(t *testing.T) { Config: testAccTargetConfig_optionalRoleARN(rName), Check: resource.ComposeTestCheckFunc( testAccCheckTargetExists(ctx, resourceName, &readTarget), - acctest.CheckResourceAttrGlobalARN(resourceName, names.AttrRoleARN, "iam", "role/aws-service-role/dynamodb.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_DynamoDBTable"), + acctest.CheckResourceAttrGlobalARN(ctx, resourceName, names.AttrRoleARN, "iam", "role/aws-service-role/dynamodb.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_DynamoDBTable"), ), }, }, diff --git a/internal/service/appconfig/application.go b/internal/service/appconfig/application.go index 4243e2dd1d38..691e008a8ee3 100644 --- a/internal/service/appconfig/application.go +++ b/internal/service/appconfig/application.go @@ -111,9 +111,9 @@ func resourceApplicationRead(ctx context.Context, d *schema.ResourceData, meta i } arn := arn.ARN{ - AccountID: meta.(*conns.AWSClient).AccountID, + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Partition: meta.(*conns.AWSClient).Partition(ctx), - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), Resource: fmt.Sprintf("application/%s", aws.ToString(output.Id)), Service: "appconfig", }.String() diff --git a/internal/service/appconfig/application_test.go b/internal/service/appconfig/application_test.go index 79aa1e6782db..cb2816bf1c08 100644 --- a/internal/service/appconfig/application_test.go +++ b/internal/service/appconfig/application_test.go @@ -37,7 +37,7 @@ func TestAccAppConfigApplication_basic(t *testing.T) { Config: testAccApplicationConfig_name(rName), Check: resource.ComposeTestCheckFunc( testAccCheckApplicationExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "appconfig", regexache.MustCompile(`application/[0-9a-z]{4,7}`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appconfig", regexache.MustCompile(`application/[0-9a-z]{4,7}`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), diff --git a/internal/service/appconfig/configuration_profile.go b/internal/service/appconfig/configuration_profile.go index 0894f711f9ff..2797a8bcd101 100644 --- a/internal/service/appconfig/configuration_profile.go +++ b/internal/service/appconfig/configuration_profile.go @@ -212,9 +212,9 @@ func resourceConfigurationProfileRead(ctx context.Context, d *schema.ResourceDat } arn := arn.ARN{ - AccountID: meta.(*conns.AWSClient).AccountID, + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Partition: meta.(*conns.AWSClient).Partition(ctx), - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), Resource: fmt.Sprintf("application/%s/configurationprofile/%s", appID, confProfID), Service: "appconfig", }.String() diff --git a/internal/service/appconfig/configuration_profile_data_source.go b/internal/service/appconfig/configuration_profile_data_source.go index b8317e741734..8cd8f20cdcb8 100644 --- a/internal/service/appconfig/configuration_profile_data_source.go +++ b/internal/service/appconfig/configuration_profile_data_source.go @@ -108,9 +108,9 @@ func dataSourceConfigurationProfileRead(ctx context.Context, d *schema.ResourceD d.Set(names.AttrApplicationID, appId) arn := arn.ARN{ - AccountID: meta.(*conns.AWSClient).AccountID, + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Partition: meta.(*conns.AWSClient).Partition(ctx), - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), Resource: fmt.Sprintf("application/%s/configurationprofile/%s", appId, profileId), Service: "appconfig", }.String() diff --git a/internal/service/appconfig/configuration_profile_test.go b/internal/service/appconfig/configuration_profile_test.go index e6e04b4bfa64..a714aaff69bd 100644 --- a/internal/service/appconfig/configuration_profile_test.go +++ b/internal/service/appconfig/configuration_profile_test.go @@ -39,7 +39,7 @@ func TestAccAppConfigConfigurationProfile_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckConfigurationProfileExists(ctx, resourceName), resource.TestCheckResourceAttrPair(resourceName, names.AttrApplicationID, appResourceName, names.AttrID), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "appconfig", regexache.MustCompile(`application/[0-9a-z]{4,7}/configurationprofile/[0-9a-z]{4,7}`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appconfig", regexache.MustCompile(`application/[0-9a-z]{4,7}/configurationprofile/[0-9a-z]{4,7}`)), resource.TestMatchResourceAttr(resourceName, "configuration_profile_id", regexache.MustCompile(`[0-9a-z]{4,7}`)), resource.TestCheckResourceAttr(resourceName, "location_uri", "hosted"), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), diff --git a/internal/service/appconfig/deployment.go b/internal/service/appconfig/deployment.go index 0420e247d54a..8e2a51dac9ae 100644 --- a/internal/service/appconfig/deployment.go +++ b/internal/service/appconfig/deployment.go @@ -181,9 +181,9 @@ func resourceDeploymentRead(ctx context.Context, d *schema.ResourceData, meta in } arn := arn.ARN{ - AccountID: meta.(*conns.AWSClient).AccountID, + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Partition: meta.(*conns.AWSClient).Partition(ctx), - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), Resource: fmt.Sprintf("application/%s/environment/%s/deployment/%d", aws.ToString(output.ApplicationId), aws.ToString(output.EnvironmentId), output.DeploymentNumber), Service: "appconfig", }.String() diff --git a/internal/service/appconfig/deployment_strategy.go b/internal/service/appconfig/deployment_strategy.go index dbfabb2ee9dc..b3c72d1ebba4 100644 --- a/internal/service/appconfig/deployment_strategy.go +++ b/internal/service/appconfig/deployment_strategy.go @@ -152,9 +152,9 @@ func resourceDeploymentStrategyRead(ctx context.Context, d *schema.ResourceData, d.Set("replicate_to", output.ReplicateTo) arn := arn.ARN{ - AccountID: meta.(*conns.AWSClient).AccountID, + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Partition: meta.(*conns.AWSClient).Partition(ctx), - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), Resource: fmt.Sprintf("deploymentstrategy/%s", d.Id()), Service: "appconfig", }.String() diff --git a/internal/service/appconfig/deployment_strategy_test.go b/internal/service/appconfig/deployment_strategy_test.go index fed581672cce..74832847a220 100644 --- a/internal/service/appconfig/deployment_strategy_test.go +++ b/internal/service/appconfig/deployment_strategy_test.go @@ -37,7 +37,7 @@ func TestAccAppConfigDeploymentStrategy_basic(t *testing.T) { Config: testAccDeploymentStrategyConfig_name(rName), Check: resource.ComposeTestCheckFunc( testAccCheckDeploymentStrategyExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "appconfig", regexache.MustCompile(`deploymentstrategy/[0-9a-z]{4,7}`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appconfig", regexache.MustCompile(`deploymentstrategy/[0-9a-z]{4,7}`)), resource.TestCheckResourceAttr(resourceName, "deployment_duration_in_minutes", "3"), resource.TestCheckResourceAttr(resourceName, "growth_factor", "10"), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), diff --git a/internal/service/appconfig/deployment_test.go b/internal/service/appconfig/deployment_test.go index 688b4406c528..0e106193406f 100644 --- a/internal/service/appconfig/deployment_test.go +++ b/internal/service/appconfig/deployment_test.go @@ -40,7 +40,7 @@ func TestAccAppConfigDeployment_basic(t *testing.T) { Config: testAccDeploymentConfig_name(rName), Check: resource.ComposeTestCheckFunc( testAccCheckDeploymentExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "appconfig", regexache.MustCompile(`application/[0-9a-z]{4,7}/environment/[0-9a-z]{4,7}/deployment/1`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appconfig", regexache.MustCompile(`application/[0-9a-z]{4,7}/environment/[0-9a-z]{4,7}/deployment/1`)), resource.TestCheckResourceAttrPair(resourceName, names.AttrApplicationID, appResourceName, names.AttrID), resource.TestCheckResourceAttrPair(resourceName, "configuration_profile_id", confProfResourceName, "configuration_profile_id"), resource.TestCheckResourceAttrPair(resourceName, "configuration_version", confVersionResourceName, "version_number"), @@ -81,7 +81,7 @@ func TestAccAppConfigDeployment_kms(t *testing.T) { Config: testAccDeploymentConfig_kms(rName), Check: resource.ComposeTestCheckFunc( testAccCheckDeploymentExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "appconfig", regexache.MustCompile(`application/[0-9a-z]{4,7}/environment/[0-9a-z]{4,7}/deployment/1`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appconfig", regexache.MustCompile(`application/[0-9a-z]{4,7}/environment/[0-9a-z]{4,7}/deployment/1`)), resource.TestCheckResourceAttrPair(resourceName, names.AttrApplicationID, appResourceName, names.AttrID), resource.TestCheckResourceAttrPair(resourceName, "configuration_profile_id", confProfResourceName, "configuration_profile_id"), resource.TestCheckResourceAttrPair(resourceName, "configuration_version", confVersionResourceName, "version_number"), diff --git a/internal/service/appconfig/environment_test.go b/internal/service/appconfig/environment_test.go index 534d851eb227..ea097d2f26cc 100644 --- a/internal/service/appconfig/environment_test.go +++ b/internal/service/appconfig/environment_test.go @@ -38,7 +38,7 @@ func TestAccAppConfigEnvironment_basic(t *testing.T) { Config: testAccEnvironmentConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckEnvironmentExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "appconfig", regexache.MustCompile(`application/[0-9a-z]{4,7}/environment/[0-9a-z]{4,7}`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appconfig", regexache.MustCompile(`application/[0-9a-z]{4,7}/environment/[0-9a-z]{4,7}`)), resource.TestCheckResourceAttrPair(resourceName, names.AttrApplicationID, appResourceName, names.AttrID), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), resource.TestCheckResourceAttr(resourceName, "monitor.#", "0"), diff --git a/internal/service/appconfig/extension_test.go b/internal/service/appconfig/extension_test.go index 03d7acebad37..1cd62171237b 100644 --- a/internal/service/appconfig/extension_test.go +++ b/internal/service/appconfig/extension_test.go @@ -37,7 +37,7 @@ func TestAccAppConfigExtension_basic(t *testing.T) { Config: testAccExtensionConfig_name(rName), Check: resource.ComposeTestCheckFunc( testAccCheckExtensionExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "appconfig", regexache.MustCompile(`extension/*`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appconfig", regexache.MustCompile(`extension/*`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "action_point.0.point", "ON_DEPLOYMENT_COMPLETE"), resource.TestCheckResourceAttr(resourceName, "action_point.0.action.0.name", "test"), diff --git a/internal/service/appconfig/extenstion_association_test.go b/internal/service/appconfig/extenstion_association_test.go index f5ea78514f9b..1c74722804e2 100644 --- a/internal/service/appconfig/extenstion_association_test.go +++ b/internal/service/appconfig/extenstion_association_test.go @@ -37,8 +37,8 @@ func TestAccAppConfigExtensionAssociation_basic(t *testing.T) { Config: testAccExtensionAssociationConfig_name(rName), Check: resource.ComposeTestCheckFunc( testAccCheckExtensionAssociationExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, "extension_arn", "appconfig", regexache.MustCompile(`extension/*`)), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrResourceARN, "appconfig", regexache.MustCompile(`application/*`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, "extension_arn", "appconfig", regexache.MustCompile(`extension/*`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrResourceARN, "appconfig", regexache.MustCompile(`application/*`)), ), }, { diff --git a/internal/service/appconfig/hosted_configuration_version.go b/internal/service/appconfig/hosted_configuration_version.go index 769c70c3a0fb..73711eb3f429 100644 --- a/internal/service/appconfig/hosted_configuration_version.go +++ b/internal/service/appconfig/hosted_configuration_version.go @@ -146,9 +146,9 @@ func resourceHostedConfigurationVersionRead(ctx context.Context, d *schema.Resou d.Set("version_number", output.VersionNumber) arn := arn.ARN{ - AccountID: meta.(*conns.AWSClient).AccountID, + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Partition: meta.(*conns.AWSClient).Partition(ctx), - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), Resource: fmt.Sprintf("application/%s/configurationprofile/%s/hostedconfigurationversion/%d", appID, confProfID, versionNumber), Service: "appconfig", }.String() diff --git a/internal/service/appconfig/hosted_configuration_version_test.go b/internal/service/appconfig/hosted_configuration_version_test.go index 465f763ba7d4..6e8f093c5acc 100644 --- a/internal/service/appconfig/hosted_configuration_version_test.go +++ b/internal/service/appconfig/hosted_configuration_version_test.go @@ -37,7 +37,7 @@ func TestAccAppConfigHostedConfigurationVersion_basic(t *testing.T) { Config: testAccHostedConfigurationVersionConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckHostedConfigurationVersionExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "appconfig", regexache.MustCompile(`application/[0-9a-z]{4,7}/configurationprofile/[0-9a-z]{4,7}/hostedconfigurationversion/[0-9]+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appconfig", regexache.MustCompile(`application/[0-9a-z]{4,7}/configurationprofile/[0-9a-z]{4,7}/hostedconfigurationversion/[0-9]+`)), resource.TestCheckResourceAttrPair(resourceName, names.AttrApplicationID, "aws_appconfig_application.test", names.AttrID), resource.TestCheckResourceAttrPair(resourceName, "configuration_profile_id", "aws_appconfig_configuration_profile.test", "configuration_profile_id"), resource.TestCheckResourceAttr(resourceName, names.AttrContent, "{\"foo\":\"bar\"}"), diff --git a/internal/service/appconfig/service_endpoints_gen_test.go b/internal/service/appconfig/service_endpoints_gen_test.go index 13fb79a7ec2b..64aa8f1e741d 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/app_authorization_connection_test.go b/internal/service/appfabric/app_authorization_connection_test.go index dff658087a79..b6e9e2aeff04 100644 --- a/internal/service/appfabric/app_authorization_connection_test.go +++ b/internal/service/appfabric/app_authorization_connection_test.go @@ -8,6 +8,7 @@ import ( "fmt" "testing" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-plugin-testing/terraform" @@ -30,7 +31,7 @@ func testAccAppAuthorizationConnection_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckRegion(t, names.USEast1RegionID, names.APNortheast1RegionID, names.EUWest1RegionID) + acctest.PreCheckRegion(t, endpoints.UsEast1RegionID, endpoints.ApNortheast1RegionID, endpoints.EuWest1RegionID) testAccPreCheck(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, names.AppFabricServiceID), @@ -65,7 +66,7 @@ func testAccAppAuthorizationConnection_OAuth2(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckRegion(t, names.USEast1RegionID, names.APNortheast1RegionID, names.EUWest1RegionID) + acctest.PreCheckRegion(t, endpoints.UsEast1RegionID, endpoints.ApNortheast1RegionID, endpoints.EuWest1RegionID) testAccPreCheck(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, names.AppFabricServiceID), diff --git a/internal/service/appfabric/app_authorization_test.go b/internal/service/appfabric/app_authorization_test.go index 98008caa1665..f926e3cbe6d0 100644 --- a/internal/service/appfabric/app_authorization_test.go +++ b/internal/service/appfabric/app_authorization_test.go @@ -9,6 +9,7 @@ import ( "testing" "github.com/aws/aws-sdk-go-v2/service/appfabric/types" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-plugin-testing/terraform" @@ -28,7 +29,7 @@ func testAccAppAuthorization_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckRegion(t, names.USEast1RegionID, names.APNortheast1RegionID, names.EUWest1RegionID) + acctest.PreCheckRegion(t, endpoints.UsEast1RegionID, endpoints.ApNortheast1RegionID, endpoints.EuWest1RegionID) testAccPreCheck(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, names.AppFabricServiceID), @@ -68,7 +69,7 @@ func testAccAppAuthorization_disappears(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckRegion(t, names.USEast1RegionID, names.APNortheast1RegionID, names.EUWest1RegionID) + acctest.PreCheckRegion(t, endpoints.UsEast1RegionID, endpoints.ApNortheast1RegionID, endpoints.EuWest1RegionID) testAccPreCheck(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, names.AppFabricServiceID), @@ -104,7 +105,7 @@ func testAccAppAuthorization_apiKeyUpdate(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckRegion(t, names.USEast1RegionID, names.APNortheast1RegionID, names.EUWest1RegionID) + acctest.PreCheckRegion(t, endpoints.UsEast1RegionID, endpoints.ApNortheast1RegionID, endpoints.EuWest1RegionID) testAccPreCheck(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, names.AppFabricServiceID), @@ -164,7 +165,7 @@ func testAccAppAuthorization_oath2Update(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckRegion(t, names.USEast1RegionID, names.APNortheast1RegionID, names.EUWest1RegionID) + acctest.PreCheckRegion(t, endpoints.UsEast1RegionID, endpoints.ApNortheast1RegionID, endpoints.EuWest1RegionID) testAccPreCheck(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, names.AppFabricServiceID), diff --git a/internal/service/appfabric/app_bundle_test.go b/internal/service/appfabric/app_bundle_test.go index 26eb7a6848bd..c0956928182c 100644 --- a/internal/service/appfabric/app_bundle_test.go +++ b/internal/service/appfabric/app_bundle_test.go @@ -9,6 +9,7 @@ import ( "testing" awstypes "github.com/aws/aws-sdk-go-v2/service/appfabric/types" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-plugin-testing/terraform" @@ -27,7 +28,7 @@ func testAccAppBundle_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckRegion(t, names.USEast1RegionID, names.APNortheast1RegionID, names.EUWest1RegionID) + acctest.PreCheckRegion(t, endpoints.UsEast1RegionID, endpoints.ApNortheast1RegionID, endpoints.EuWest1RegionID) testAccPreCheck(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, names.AppFabricServiceID), @@ -59,7 +60,7 @@ func testAccAppBundle_disappears(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckRegion(t, names.USEast1RegionID, names.APNortheast1RegionID, names.EUWest1RegionID) + acctest.PreCheckRegion(t, endpoints.UsEast1RegionID, endpoints.ApNortheast1RegionID, endpoints.EuWest1RegionID) testAccPreCheck(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, names.AppFabricServiceID), @@ -87,7 +88,7 @@ func testAccAppBundle_cmk(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckRegion(t, names.USEast1RegionID, names.APNortheast1RegionID, names.EUWest1RegionID) + acctest.PreCheckRegion(t, endpoints.UsEast1RegionID, endpoints.ApNortheast1RegionID, endpoints.EuWest1RegionID) testAccPreCheck(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, names.AppFabricServiceID), diff --git a/internal/service/appfabric/ingestion_destination_test.go b/internal/service/appfabric/ingestion_destination_test.go index 43a8551e422b..1b0e998e387d 100644 --- a/internal/service/appfabric/ingestion_destination_test.go +++ b/internal/service/appfabric/ingestion_destination_test.go @@ -9,6 +9,7 @@ import ( "testing" awstypes "github.com/aws/aws-sdk-go-v2/service/appfabric/types" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-plugin-testing/terraform" @@ -31,7 +32,7 @@ func testAccIngestionDestination_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckRegion(t, names.USEast1RegionID, names.APNortheast1RegionID, names.EUWest1RegionID) + acctest.PreCheckRegion(t, endpoints.UsEast1RegionID, endpoints.ApNortheast1RegionID, endpoints.EuWest1RegionID) testAccPreCheck(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, names.AppFabricServiceID), @@ -80,7 +81,7 @@ func testAccIngestionDestination_disappears(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckRegion(t, names.USEast1RegionID, names.APNortheast1RegionID, names.EUWest1RegionID) + acctest.PreCheckRegion(t, endpoints.UsEast1RegionID, endpoints.ApNortheast1RegionID, endpoints.EuWest1RegionID) testAccPreCheck(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, names.AppFabricServiceID), @@ -111,7 +112,7 @@ func testAccIngestionDestination_tags(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckRegion(t, names.USEast1RegionID, names.APNortheast1RegionID, names.EUWest1RegionID) + acctest.PreCheckRegion(t, endpoints.UsEast1RegionID, endpoints.ApNortheast1RegionID, endpoints.EuWest1RegionID) testAccPreCheck(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, names.AppFabricServiceID), @@ -164,7 +165,7 @@ func testAccIngestionDestination_update(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckRegion(t, names.USEast1RegionID, names.APNortheast1RegionID, names.EUWest1RegionID) + acctest.PreCheckRegion(t, endpoints.UsEast1RegionID, endpoints.ApNortheast1RegionID, endpoints.EuWest1RegionID) testAccPreCheck(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, names.AppFabricServiceID), @@ -218,7 +219,7 @@ func testAccIngestionDestination_firehose(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckRegion(t, names.USEast1RegionID, names.APNortheast1RegionID, names.EUWest1RegionID) + acctest.PreCheckRegion(t, endpoints.UsEast1RegionID, endpoints.ApNortheast1RegionID, endpoints.EuWest1RegionID) testAccPreCheck(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, names.AppFabricServiceID), diff --git a/internal/service/appfabric/ingestion_test.go b/internal/service/appfabric/ingestion_test.go index ec58dec6e2ec..7f8686e78f0c 100644 --- a/internal/service/appfabric/ingestion_test.go +++ b/internal/service/appfabric/ingestion_test.go @@ -9,6 +9,7 @@ import ( "testing" awstypes "github.com/aws/aws-sdk-go-v2/service/appfabric/types" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-plugin-testing/terraform" @@ -31,7 +32,7 @@ func testAccIngestion_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckRegion(t, names.USEast1RegionID, names.APNortheast1RegionID, names.EUWest1RegionID) + acctest.PreCheckRegion(t, endpoints.UsEast1RegionID, endpoints.ApNortheast1RegionID, endpoints.EuWest1RegionID) testAccPreCheck(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, names.AppFabricServiceID), @@ -69,7 +70,7 @@ func testAccIngestion_disappears(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckRegion(t, names.USEast1RegionID, names.APNortheast1RegionID, names.EUWest1RegionID) + acctest.PreCheckRegion(t, endpoints.UsEast1RegionID, endpoints.ApNortheast1RegionID, endpoints.EuWest1RegionID) testAccPreCheck(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, names.AppFabricServiceID), @@ -100,7 +101,7 @@ func testAccIngestion_tags(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckRegion(t, names.USEast1RegionID, names.APNortheast1RegionID, names.EUWest1RegionID) + acctest.PreCheckRegion(t, endpoints.UsEast1RegionID, endpoints.ApNortheast1RegionID, endpoints.EuWest1RegionID) testAccPreCheck(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, names.AppFabricServiceID), diff --git a/internal/service/appfabric/service_endpoints_gen_test.go b/internal/service/appfabric/service_endpoints_gen_test.go index fd69829f6b26..185696124b88 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/connector_profile_test.go b/internal/service/appflow/connector_profile_test.go index 86ca4355d66e..d882ef22c0b1 100644 --- a/internal/service/appflow/connector_profile_test.go +++ b/internal/service/appflow/connector_profile_test.go @@ -41,7 +41,7 @@ func TestAccAppFlowConnectorProfile_basic(t *testing.T) { Config: testAccConnectorProfileConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckConnectorProfileExists(ctx, resourceName, &connectorProfiles), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "appflow", regexache.MustCompile(`connectorprofile/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appflow", regexache.MustCompile(`connectorprofile/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttrSet(resourceName, "connection_mode"), resource.TestCheckResourceAttrSet(resourceName, "connector_profile_config.#"), diff --git a/internal/service/appflow/flow_test.go b/internal/service/appflow/flow_test.go index 940d549f9e02..375b7b96df36 100644 --- a/internal/service/appflow/flow_test.go +++ b/internal/service/appflow/flow_test.go @@ -38,7 +38,7 @@ func TestAccAppFlowFlow_basic(t *testing.T) { Config: testAccFlowConfig_basic(rName, scheduleStartTime), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckFlowExists(ctx, resourceName, &flowOutput), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "appflow", regexache.MustCompile(`flow/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appflow", regexache.MustCompile(`flow/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttrSet(resourceName, "destination_flow_config.#"), resource.TestCheckResourceAttrSet(resourceName, "destination_flow_config.0.connector_type"), diff --git a/internal/service/appflow/service_endpoints_gen_test.go b/internal/service/appflow/service_endpoints_gen_test.go index d32279f6e761..43173ea79e10 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 a3c1cd5a619d..736953c2e9c0 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/application.go b/internal/service/applicationinsights/application.go index 6331f1f78d8f..d13013536928 100644 --- a/internal/service/applicationinsights/application.go +++ b/internal/service/applicationinsights/application.go @@ -142,8 +142,8 @@ func resourceApplicationRead(ctx context.Context, d *schema.ResourceData, meta i arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "applicationinsights", - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: "application/resource-group/" + rgName, }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/applicationinsights/application_test.go b/internal/service/applicationinsights/application_test.go index e8ab4e15b36e..7bc028b4a1bc 100644 --- a/internal/service/applicationinsights/application_test.go +++ b/internal/service/applicationinsights/application_test.go @@ -36,7 +36,7 @@ func TestAccApplicationInsightsApplication_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckApplicationExists(ctx, resourceName, &app), resource.TestCheckResourceAttr(resourceName, "resource_group_name", rName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "applicationinsights", fmt.Sprintf("application/resource-group/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "applicationinsights", fmt.Sprintf("application/resource-group/%s", rName)), resource.TestCheckResourceAttr(resourceName, "auto_config_enabled", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "cwe_monitor_enabled", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "ops_center_enabled", acctest.CtFalse), @@ -53,7 +53,7 @@ func TestAccApplicationInsightsApplication_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckApplicationExists(ctx, resourceName, &app), resource.TestCheckResourceAttr(resourceName, "resource_group_name", rName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "applicationinsights", fmt.Sprintf("application/resource-group/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "applicationinsights", fmt.Sprintf("application/resource-group/%s", rName)), resource.TestCheckResourceAttr(resourceName, "auto_config_enabled", acctest.CtTrue), resource.TestCheckResourceAttr(resourceName, "cwe_monitor_enabled", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "ops_center_enabled", acctest.CtFalse), @@ -81,7 +81,7 @@ func TestAccApplicationInsightsApplication_autoConfig(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckApplicationExists(ctx, resourceName, &app), resource.TestCheckResourceAttr(resourceName, "resource_group_name", rName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "applicationinsights", fmt.Sprintf("application/resource-group/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "applicationinsights", fmt.Sprintf("application/resource-group/%s", rName)), resource.TestCheckResourceAttr(resourceName, "auto_config_enabled", acctest.CtTrue), resource.TestCheckResourceAttr(resourceName, "cwe_monitor_enabled", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "ops_center_enabled", acctest.CtFalse), diff --git a/internal/service/applicationinsights/service_endpoints_gen_test.go b/internal/service/applicationinsights/service_endpoints_gen_test.go index 45651ead4af5..46449132469d 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 42948cb0c997..88fdc2b45068 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/gateway_route_data_source.go b/internal/service/appmesh/gateway_route_data_source.go index 8a22d6963fc4..55022fe5a6ae 100644 --- a/internal/service/appmesh/gateway_route_data_source.go +++ b/internal/service/appmesh/gateway_route_data_source.go @@ -98,7 +98,7 @@ func dataSourceGatewayRouteRead(ctx context.Context, d *schema.ResourceData, met // They can't list tags and tag/untag resources in a mesh that aren't created by the account. var tags tftags.KeyValueTags - if meshOwner == meta.(*conns.AWSClient).AccountID { + if meshOwner == meta.(*conns.AWSClient).AccountID(ctx) { tags, err = listTags(ctx, conn, arn) if err != nil { diff --git a/internal/service/appmesh/gateway_route_test.go b/internal/service/appmesh/gateway_route_test.go index ce1f72b51864..e3f58685ea15 100644 --- a/internal/service/appmesh/gateway_route_test.go +++ b/internal/service/appmesh/gateway_route_test.go @@ -39,7 +39,7 @@ func testAccGatewayRoute_basic(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckGatewayRouteExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, names.AttrName, grName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "0"), @@ -60,8 +60,8 @@ func testAccGatewayRoute_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "virtual_gateway_name", vgName), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s/gatewayRoute/%s", meshName, vgName, grName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s/gatewayRoute/%s", meshName, vgName, grName)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -122,7 +122,7 @@ func testAccGatewayRoute_grpcRoute(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckGatewayRouteExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, names.AttrName, grName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "1"), @@ -138,8 +138,8 @@ func testAccGatewayRoute_grpcRoute(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "virtual_gateway_name", vgName), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s/gatewayRoute/%s", meshName, vgName, grName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s/gatewayRoute/%s", meshName, vgName, grName)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -148,7 +148,7 @@ func testAccGatewayRoute_grpcRoute(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckGatewayRouteExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, names.AttrName, grName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "1"), @@ -164,8 +164,8 @@ func testAccGatewayRoute_grpcRoute(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "virtual_gateway_name", vgName), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s/gatewayRoute/%s", meshName, vgName, grName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s/gatewayRoute/%s", meshName, vgName, grName)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -200,7 +200,7 @@ func testAccGatewayRoute_grpcRouteWithPort(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckGatewayRouteExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, names.AttrName, grName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "1"), @@ -216,8 +216,8 @@ func testAccGatewayRoute_grpcRouteWithPort(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "virtual_gateway_name", vgName), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s/gatewayRoute/%s", meshName, vgName, grName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s/gatewayRoute/%s", meshName, vgName, grName)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -226,7 +226,7 @@ func testAccGatewayRoute_grpcRouteWithPort(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckGatewayRouteExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, names.AttrName, grName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "1"), @@ -242,8 +242,8 @@ func testAccGatewayRoute_grpcRouteWithPort(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "virtual_gateway_name", vgName), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s/gatewayRoute/%s", meshName, vgName, grName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s/gatewayRoute/%s", meshName, vgName, grName)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -277,7 +277,7 @@ func testAccGatewayRoute_grpcRouteTargetPort(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckGatewayRouteExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, names.AttrName, grName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "1"), @@ -293,8 +293,8 @@ func testAccGatewayRoute_grpcRouteTargetPort(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "virtual_gateway_name", vgName), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s/gatewayRoute/%s", meshName, vgName, grName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s/gatewayRoute/%s", meshName, vgName, grName)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -303,7 +303,7 @@ func testAccGatewayRoute_grpcRouteTargetPort(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckGatewayRouteExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, names.AttrName, grName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "1"), @@ -319,8 +319,8 @@ func testAccGatewayRoute_grpcRouteTargetPort(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "virtual_gateway_name", vgName), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s/gatewayRoute/%s", meshName, vgName, grName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s/gatewayRoute/%s", meshName, vgName, grName)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -355,7 +355,7 @@ func testAccGatewayRoute_httpRoute(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckGatewayRouteExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, names.AttrName, grName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "0"), @@ -375,8 +375,8 @@ func testAccGatewayRoute_httpRoute(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "virtual_gateway_name", vgName), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s/gatewayRoute/%s", meshName, vgName, grName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s/gatewayRoute/%s", meshName, vgName, grName)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -385,7 +385,7 @@ func testAccGatewayRoute_httpRoute(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckGatewayRouteExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, names.AttrName, grName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "0"), @@ -405,8 +405,8 @@ func testAccGatewayRoute_httpRoute(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "virtual_gateway_name", vgName), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s/gatewayRoute/%s", meshName, vgName, grName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s/gatewayRoute/%s", meshName, vgName, grName)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -415,7 +415,7 @@ func testAccGatewayRoute_httpRoute(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckGatewayRouteExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, names.AttrName, grName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "0"), @@ -431,8 +431,8 @@ func testAccGatewayRoute_httpRoute(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "virtual_gateway_name", vgName), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s/gatewayRoute/%s", meshName, vgName, grName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s/gatewayRoute/%s", meshName, vgName, grName)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -441,7 +441,7 @@ func testAccGatewayRoute_httpRoute(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckGatewayRouteExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, names.AttrName, grName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "0"), @@ -461,8 +461,8 @@ func testAccGatewayRoute_httpRoute(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "virtual_gateway_name", vgName), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s/gatewayRoute/%s", meshName, vgName, grName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s/gatewayRoute/%s", meshName, vgName, grName)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -471,7 +471,7 @@ func testAccGatewayRoute_httpRoute(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckGatewayRouteExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, names.AttrName, grName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "0"), @@ -492,8 +492,8 @@ func testAccGatewayRoute_httpRoute(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "virtual_gateway_name", vgName), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s/gatewayRoute/%s", meshName, vgName, grName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s/gatewayRoute/%s", meshName, vgName, grName)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -527,7 +527,7 @@ func testAccGatewayRoute_httpRouteTargetPort(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckGatewayRouteExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, names.AttrName, grName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "0"), @@ -543,8 +543,8 @@ func testAccGatewayRoute_httpRouteTargetPort(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "virtual_gateway_name", vgName), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s/gatewayRoute/%s", meshName, vgName, grName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s/gatewayRoute/%s", meshName, vgName, grName)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -553,7 +553,7 @@ func testAccGatewayRoute_httpRouteTargetPort(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckGatewayRouteExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, names.AttrName, grName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "0"), @@ -569,8 +569,8 @@ func testAccGatewayRoute_httpRouteTargetPort(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "virtual_gateway_name", vgName), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s/gatewayRoute/%s", meshName, vgName, grName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s/gatewayRoute/%s", meshName, vgName, grName)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -604,7 +604,7 @@ func testAccGatewayRoute_httpRouteWithPath(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckGatewayRouteExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, names.AttrName, grName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "0"), @@ -626,8 +626,8 @@ func testAccGatewayRoute_httpRouteWithPath(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "virtual_gateway_name", vgName), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s/gatewayRoute/%s", meshName, vgName, grName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s/gatewayRoute/%s", meshName, vgName, grName)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -662,7 +662,7 @@ func testAccGatewayRoute_httpRouteWithPort(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckGatewayRouteExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, names.AttrName, grName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "0"), @@ -678,8 +678,8 @@ func testAccGatewayRoute_httpRouteWithPort(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "virtual_gateway_name", vgName), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s/gatewayRoute/%s", meshName, vgName, grName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s/gatewayRoute/%s", meshName, vgName, grName)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -688,7 +688,7 @@ func testAccGatewayRoute_httpRouteWithPort(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckGatewayRouteExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, names.AttrName, grName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "0"), @@ -704,8 +704,8 @@ func testAccGatewayRoute_httpRouteWithPort(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "virtual_gateway_name", vgName), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s/gatewayRoute/%s", meshName, vgName, grName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s/gatewayRoute/%s", meshName, vgName, grName)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -714,7 +714,7 @@ func testAccGatewayRoute_httpRouteWithPort(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckGatewayRouteExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, names.AttrName, grName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "0"), @@ -730,8 +730,8 @@ func testAccGatewayRoute_httpRouteWithPort(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "virtual_gateway_name", vgName), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s/gatewayRoute/%s", meshName, vgName, grName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s/gatewayRoute/%s", meshName, vgName, grName)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -740,7 +740,7 @@ func testAccGatewayRoute_httpRouteWithPort(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckGatewayRouteExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, names.AttrName, grName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "0"), @@ -760,8 +760,8 @@ func testAccGatewayRoute_httpRouteWithPort(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "virtual_gateway_name", vgName), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s/gatewayRoute/%s", meshName, vgName, grName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s/gatewayRoute/%s", meshName, vgName, grName)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -770,7 +770,7 @@ func testAccGatewayRoute_httpRouteWithPort(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckGatewayRouteExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, names.AttrName, grName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "0"), @@ -791,8 +791,8 @@ func testAccGatewayRoute_httpRouteWithPort(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "virtual_gateway_name", vgName), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s/gatewayRoute/%s", meshName, vgName, grName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s/gatewayRoute/%s", meshName, vgName, grName)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -827,7 +827,7 @@ func testAccGatewayRoute_http2Route(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckGatewayRouteExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, names.AttrName, grName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "0"), @@ -852,8 +852,8 @@ func testAccGatewayRoute_http2Route(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "virtual_gateway_name", vgName), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s/gatewayRoute/%s", meshName, vgName, grName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s/gatewayRoute/%s", meshName, vgName, grName)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -862,7 +862,7 @@ func testAccGatewayRoute_http2Route(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckGatewayRouteExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, names.AttrName, grName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "0"), @@ -895,8 +895,8 @@ func testAccGatewayRoute_http2Route(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "virtual_gateway_name", vgName), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s/gatewayRoute/%s", meshName, vgName, grName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s/gatewayRoute/%s", meshName, vgName, grName)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -905,7 +905,7 @@ func testAccGatewayRoute_http2Route(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckGatewayRouteExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, names.AttrName, grName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "0"), @@ -921,8 +921,8 @@ func testAccGatewayRoute_http2Route(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "virtual_gateway_name", vgName), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s/gatewayRoute/%s", meshName, vgName, grName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s/gatewayRoute/%s", meshName, vgName, grName)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -931,7 +931,7 @@ func testAccGatewayRoute_http2Route(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckGatewayRouteExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, names.AttrName, grName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "0"), @@ -951,8 +951,8 @@ func testAccGatewayRoute_http2Route(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "virtual_gateway_name", vgName), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s/gatewayRoute/%s", meshName, vgName, grName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s/gatewayRoute/%s", meshName, vgName, grName)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -961,7 +961,7 @@ func testAccGatewayRoute_http2Route(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckGatewayRouteExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, names.AttrName, grName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "0"), @@ -982,8 +982,8 @@ func testAccGatewayRoute_http2Route(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "virtual_gateway_name", vgName), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s/gatewayRoute/%s", meshName, vgName, grName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s/gatewayRoute/%s", meshName, vgName, grName)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -1017,7 +1017,7 @@ func testAccGatewayRoute_http2RouteTargetPort(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckGatewayRouteExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, names.AttrName, grName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "0"), @@ -1033,8 +1033,8 @@ func testAccGatewayRoute_http2RouteTargetPort(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "virtual_gateway_name", vgName), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s/gatewayRoute/%s", meshName, vgName, grName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s/gatewayRoute/%s", meshName, vgName, grName)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -1043,7 +1043,7 @@ func testAccGatewayRoute_http2RouteTargetPort(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckGatewayRouteExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, names.AttrName, grName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "0"), @@ -1059,8 +1059,8 @@ func testAccGatewayRoute_http2RouteTargetPort(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "virtual_gateway_name", vgName), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s/gatewayRoute/%s", meshName, vgName, grName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s/gatewayRoute/%s", meshName, vgName, grName)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -1095,7 +1095,7 @@ func testAccGatewayRoute_http2RouteWithPort(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckGatewayRouteExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, names.AttrName, grName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "0"), @@ -1111,8 +1111,8 @@ func testAccGatewayRoute_http2RouteWithPort(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "virtual_gateway_name", vgName), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s/gatewayRoute/%s", meshName, vgName, grName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s/gatewayRoute/%s", meshName, vgName, grName)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -1121,7 +1121,7 @@ func testAccGatewayRoute_http2RouteWithPort(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckGatewayRouteExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, names.AttrName, grName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "0"), @@ -1137,8 +1137,8 @@ func testAccGatewayRoute_http2RouteWithPort(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "virtual_gateway_name", vgName), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s/gatewayRoute/%s", meshName, vgName, grName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s/gatewayRoute/%s", meshName, vgName, grName)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -1147,7 +1147,7 @@ func testAccGatewayRoute_http2RouteWithPort(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckGatewayRouteExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, names.AttrName, grName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "0"), @@ -1163,8 +1163,8 @@ func testAccGatewayRoute_http2RouteWithPort(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "virtual_gateway_name", vgName), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s/gatewayRoute/%s", meshName, vgName, grName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s/gatewayRoute/%s", meshName, vgName, grName)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -1173,7 +1173,7 @@ func testAccGatewayRoute_http2RouteWithPort(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckGatewayRouteExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, names.AttrName, grName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "0"), @@ -1193,8 +1193,8 @@ func testAccGatewayRoute_http2RouteWithPort(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "virtual_gateway_name", vgName), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s/gatewayRoute/%s", meshName, vgName, grName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s/gatewayRoute/%s", meshName, vgName, grName)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -1203,7 +1203,7 @@ func testAccGatewayRoute_http2RouteWithPort(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckGatewayRouteExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, names.AttrName, grName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "0"), @@ -1224,8 +1224,8 @@ func testAccGatewayRoute_http2RouteWithPort(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "virtual_gateway_name", vgName), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s/gatewayRoute/%s", meshName, vgName, grName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s/gatewayRoute/%s", meshName, vgName, grName)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -1259,7 +1259,7 @@ func testAccGatewayRoute_http2RouteWithQueryParameter(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckGatewayRouteExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, names.AttrName, grName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "0"), @@ -1284,8 +1284,8 @@ func testAccGatewayRoute_http2RouteWithQueryParameter(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "virtual_gateway_name", vgName), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s/gatewayRoute/%s", meshName, vgName, grName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s/gatewayRoute/%s", meshName, vgName, grName)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, diff --git a/internal/service/appmesh/mesh_data_source.go b/internal/service/appmesh/mesh_data_source.go index e22bb4215596..49bdcc46af8e 100644 --- a/internal/service/appmesh/mesh_data_source.go +++ b/internal/service/appmesh/mesh_data_source.go @@ -87,7 +87,7 @@ func dataSourceMeshRead(ctx context.Context, d *schema.ResourceData, meta interf // They can't list tags and tag/untag resources in a mesh that aren't created by the account. var tags tftags.KeyValueTags - if meshOwner == meta.(*conns.AWSClient).AccountID { + if meshOwner == meta.(*conns.AWSClient).AccountID(ctx) { tags, err = listTags(ctx, conn, arn) if err != nil { diff --git a/internal/service/appmesh/mesh_test.go b/internal/service/appmesh/mesh_test.go index d0525b306423..63a0eea1cff4 100644 --- a/internal/service/appmesh/mesh_test.go +++ b/internal/service/appmesh/mesh_test.go @@ -36,12 +36,12 @@ func testAccMesh_basic(t *testing.T) { Config: testAccMeshConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckServiceMeshExists(ctx, resourceName, &mesh), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", regexache.MustCompile(`mesh/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", regexache.MustCompile(`mesh/.+`)), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), ), }, diff --git a/internal/service/appmesh/route_data_source.go b/internal/service/appmesh/route_data_source.go index d6e1718775ee..dcb3b2e1bab8 100644 --- a/internal/service/appmesh/route_data_source.go +++ b/internal/service/appmesh/route_data_source.go @@ -98,7 +98,7 @@ func dataSourceRouteRead(ctx context.Context, d *schema.ResourceData, meta inter // They can't list tags and tag/untag resources in a mesh that aren't created by the account. var tags tftags.KeyValueTags - if meshOwner == meta.(*conns.AWSClient).AccountID { + if meshOwner == meta.(*conns.AWSClient).AccountID(ctx) { tags, err = listTags(ctx, conn, arn) if err != nil { diff --git a/internal/service/appmesh/route_test.go b/internal/service/appmesh/route_test.go index 314d88533540..6ac09bb5343c 100644 --- a/internal/service/appmesh/route_test.go +++ b/internal/service/appmesh/route_test.go @@ -41,7 +41,7 @@ func testAccRoute_grpcRoute(t *testing.T) { testAccCheckRouteExists(ctx, resourceName, &r), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "virtual_router_name", vrName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "1"), @@ -74,8 +74,8 @@ func testAccRoute_grpcRoute(t *testing.T) { resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), ), }, { @@ -84,7 +84,7 @@ func testAccRoute_grpcRoute(t *testing.T) { testAccCheckRouteExists(ctx, resourceName, &r), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "virtual_router_name", vrName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "1"), @@ -126,8 +126,8 @@ func testAccRoute_grpcRoute(t *testing.T) { resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), ), }, { @@ -136,7 +136,7 @@ func testAccRoute_grpcRoute(t *testing.T) { testAccCheckRouteExists(ctx, resourceName, &r), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "virtual_router_name", vrName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "1"), @@ -178,8 +178,8 @@ func testAccRoute_grpcRoute(t *testing.T) { resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), ), }, { @@ -188,7 +188,7 @@ func testAccRoute_grpcRoute(t *testing.T) { testAccCheckRouteExists(ctx, resourceName, &r), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "virtual_router_name", vrName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "1"), @@ -221,8 +221,8 @@ func testAccRoute_grpcRoute(t *testing.T) { resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), ), }, { @@ -257,7 +257,7 @@ func testAccRoute_grpcRouteWithPortMatch(t *testing.T) { testAccCheckRouteExists(ctx, resourceName, &r), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "virtual_router_name", vrName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "1"), @@ -292,8 +292,8 @@ func testAccRoute_grpcRouteWithPortMatch(t *testing.T) { resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), ), }, { @@ -302,7 +302,7 @@ func testAccRoute_grpcRouteWithPortMatch(t *testing.T) { testAccCheckRouteExists(ctx, resourceName, &r), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "virtual_router_name", vrName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "1"), @@ -347,8 +347,8 @@ func testAccRoute_grpcRouteWithPortMatch(t *testing.T) { resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), ), }, { @@ -357,7 +357,7 @@ func testAccRoute_grpcRouteWithPortMatch(t *testing.T) { testAccCheckRouteExists(ctx, resourceName, &r), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "virtual_router_name", vrName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "1"), @@ -399,8 +399,8 @@ func testAccRoute_grpcRouteWithPortMatch(t *testing.T) { resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), ), }, { @@ -409,7 +409,7 @@ func testAccRoute_grpcRouteWithPortMatch(t *testing.T) { testAccCheckRouteExists(ctx, resourceName, &r), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "virtual_router_name", vrName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "1"), @@ -442,8 +442,8 @@ func testAccRoute_grpcRouteWithPortMatch(t *testing.T) { resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), ), }, { @@ -478,7 +478,7 @@ func testAccRoute_grpcRouteTimeout(t *testing.T) { testAccCheckRouteExists(ctx, resourceName, &r), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "virtual_router_name", vrName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "1"), @@ -504,8 +504,8 @@ func testAccRoute_grpcRouteTimeout(t *testing.T) { resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), ), }, { @@ -514,7 +514,7 @@ func testAccRoute_grpcRouteTimeout(t *testing.T) { testAccCheckRouteExists(ctx, resourceName, &r), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "virtual_router_name", vrName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "1"), @@ -542,8 +542,8 @@ func testAccRoute_grpcRouteTimeout(t *testing.T) { resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), ), }, { @@ -578,7 +578,7 @@ func testAccRoute_grpcRouteEmptyMatch(t *testing.T) { testAccCheckRouteExists(ctx, resourceName, &r), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "virtual_router_name", vrName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "1"), @@ -596,8 +596,8 @@ func testAccRoute_grpcRouteEmptyMatch(t *testing.T) { resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), ), }, { @@ -632,7 +632,7 @@ func testAccRoute_http2Route(t *testing.T) { testAccCheckRouteExists(ctx, resourceName, &r), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "virtual_router_name", vrName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "0"), @@ -666,8 +666,8 @@ func testAccRoute_http2Route(t *testing.T) { resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), ), }, { @@ -676,7 +676,7 @@ func testAccRoute_http2Route(t *testing.T) { testAccCheckRouteExists(ctx, resourceName, &r), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "virtual_router_name", vrName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "0"), @@ -717,8 +717,8 @@ func testAccRoute_http2Route(t *testing.T) { resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), ), }, { @@ -753,7 +753,7 @@ func testAccRoute_http2RouteWithPathMatch(t *testing.T) { testAccCheckRouteExists(ctx, resourceName, &r), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "virtual_router_name", vrName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "0"), @@ -784,8 +784,8 @@ func testAccRoute_http2RouteWithPathMatch(t *testing.T) { resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), ), }, { @@ -820,7 +820,7 @@ func testAccRoute_http2RouteWithPortMatch(t *testing.T) { testAccCheckRouteExists(ctx, resourceName, &r), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "virtual_router_name", vrName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "0"), @@ -853,8 +853,8 @@ func testAccRoute_http2RouteWithPortMatch(t *testing.T) { resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), ), }, { @@ -863,7 +863,7 @@ func testAccRoute_http2RouteWithPortMatch(t *testing.T) { testAccCheckRouteExists(ctx, resourceName, &r), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "virtual_router_name", vrName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "0"), @@ -906,8 +906,8 @@ func testAccRoute_http2RouteWithPortMatch(t *testing.T) { resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), ), }, { @@ -942,7 +942,7 @@ func testAccRoute_http2RouteTimeout(t *testing.T) { testAccCheckRouteExists(ctx, resourceName, &r), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "virtual_router_name", vrName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "0"), @@ -970,8 +970,8 @@ func testAccRoute_http2RouteTimeout(t *testing.T) { resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), ), }, { @@ -980,7 +980,7 @@ func testAccRoute_http2RouteTimeout(t *testing.T) { testAccCheckRouteExists(ctx, resourceName, &r), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "virtual_router_name", vrName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "0"), @@ -1010,8 +1010,8 @@ func testAccRoute_http2RouteTimeout(t *testing.T) { resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), ), }, { @@ -1046,7 +1046,7 @@ func testAccRoute_httpRoute(t *testing.T) { testAccCheckRouteExists(ctx, resourceName, &r), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "virtual_router_name", vrName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "0"), @@ -1069,8 +1069,8 @@ func testAccRoute_httpRoute(t *testing.T) { resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), ), }, { @@ -1079,7 +1079,7 @@ func testAccRoute_httpRoute(t *testing.T) { testAccCheckRouteExists(ctx, resourceName, &r), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "virtual_router_name", vrName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "0"), @@ -1100,8 +1100,8 @@ func testAccRoute_httpRoute(t *testing.T) { resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), ), }, { @@ -1110,7 +1110,7 @@ func testAccRoute_httpRoute(t *testing.T) { testAccCheckRouteExists(ctx, resourceName, &r), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "virtual_router_name", vrName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.http_route.#", "1"), @@ -1127,8 +1127,8 @@ func testAccRoute_httpRoute(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "spec.0.tcp_route.#", "0"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), ), }, { @@ -1163,7 +1163,7 @@ func testAccRoute_httpRouteWithPortMatch(t *testing.T) { testAccCheckRouteExists(ctx, resourceName, &r), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "virtual_router_name", vrName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "0"), @@ -1185,8 +1185,8 @@ func testAccRoute_httpRouteWithPortMatch(t *testing.T) { resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), ), }, { @@ -1195,7 +1195,7 @@ func testAccRoute_httpRouteWithPortMatch(t *testing.T) { testAccCheckRouteExists(ctx, resourceName, &r), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "virtual_router_name", vrName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "0"), @@ -1218,8 +1218,8 @@ func testAccRoute_httpRouteWithPortMatch(t *testing.T) { resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), ), }, { @@ -1228,7 +1228,7 @@ func testAccRoute_httpRouteWithPortMatch(t *testing.T) { testAccCheckRouteExists(ctx, resourceName, &r), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "virtual_router_name", vrName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.http_route.#", "1"), @@ -1244,8 +1244,8 @@ func testAccRoute_httpRouteWithPortMatch(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "spec.0.tcp_route.#", "0"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), ), }, { @@ -1280,7 +1280,7 @@ func testAccRoute_httpRouteWithQueryParameterMatch(t *testing.T) { testAccCheckRouteExists(ctx, resourceName, &r), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "virtual_router_name", vrName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "0"), @@ -1308,8 +1308,8 @@ func testAccRoute_httpRouteWithQueryParameterMatch(t *testing.T) { resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), ), }, { @@ -1344,7 +1344,7 @@ func testAccRoute_httpRouteTimeout(t *testing.T) { testAccCheckRouteExists(ctx, resourceName, &r), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "virtual_router_name", vrName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "0"), @@ -1368,8 +1368,8 @@ func testAccRoute_httpRouteTimeout(t *testing.T) { resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), ), }, { @@ -1378,7 +1378,7 @@ func testAccRoute_httpRouteTimeout(t *testing.T) { testAccCheckRouteExists(ctx, resourceName, &r), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "virtual_router_name", vrName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "0"), @@ -1404,8 +1404,8 @@ func testAccRoute_httpRouteTimeout(t *testing.T) { resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), ), }, { @@ -1440,7 +1440,7 @@ func testAccRoute_tcpRoute(t *testing.T) { testAccCheckRouteExists(ctx, resourceName, &r), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "virtual_router_name", vrName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "0"), @@ -1454,8 +1454,8 @@ func testAccRoute_tcpRoute(t *testing.T) { resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), ), }, { @@ -1464,7 +1464,7 @@ func testAccRoute_tcpRoute(t *testing.T) { testAccCheckRouteExists(ctx, resourceName, &r), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "virtual_router_name", vrName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "0"), @@ -1478,8 +1478,8 @@ func testAccRoute_tcpRoute(t *testing.T) { resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), ), }, { @@ -1488,7 +1488,7 @@ func testAccRoute_tcpRoute(t *testing.T) { testAccCheckRouteExists(ctx, resourceName, &r), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "virtual_router_name", vrName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.http_route.#", "0"), @@ -1499,8 +1499,8 @@ func testAccRoute_tcpRoute(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "spec.0.tcp_route.0.timeout.#", "0"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), ), }, { @@ -1535,7 +1535,7 @@ func testAccRoute_tcpRouteWithPortMatch(t *testing.T) { testAccCheckRouteExists(ctx, resourceName, &r), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "virtual_router_name", vrName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "0"), @@ -1552,8 +1552,8 @@ func testAccRoute_tcpRouteWithPortMatch(t *testing.T) { resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), ), }, { @@ -1562,7 +1562,7 @@ func testAccRoute_tcpRouteWithPortMatch(t *testing.T) { testAccCheckRouteExists(ctx, resourceName, &r), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "virtual_router_name", vrName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "0"), @@ -1580,8 +1580,8 @@ func testAccRoute_tcpRouteWithPortMatch(t *testing.T) { resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), ), }, { @@ -1590,7 +1590,7 @@ func testAccRoute_tcpRouteWithPortMatch(t *testing.T) { testAccCheckRouteExists(ctx, resourceName, &r), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "virtual_router_name", vrName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.http_route.#", "0"), @@ -1601,8 +1601,8 @@ func testAccRoute_tcpRouteWithPortMatch(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "spec.0.tcp_route.0.timeout.#", "0"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), ), }, { @@ -1637,7 +1637,7 @@ func testAccRoute_tcpRouteTimeout(t *testing.T) { testAccCheckRouteExists(ctx, resourceName, &r), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "virtual_router_name", vrName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "0"), @@ -1654,8 +1654,8 @@ func testAccRoute_tcpRouteTimeout(t *testing.T) { resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), ), }, { @@ -1664,7 +1664,7 @@ func testAccRoute_tcpRouteTimeout(t *testing.T) { testAccCheckRouteExists(ctx, resourceName, &r), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "virtual_router_name", vrName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "0"), @@ -1681,8 +1681,8 @@ func testAccRoute_tcpRouteTimeout(t *testing.T) { resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), ), }, { @@ -1717,7 +1717,7 @@ func testAccRoute_httpHeader(t *testing.T) { testAccCheckRouteExists(ctx, resourceName, &r), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "virtual_router_name", vrName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "0"), @@ -1740,8 +1740,8 @@ func testAccRoute_httpHeader(t *testing.T) { resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), ), }, { @@ -1750,7 +1750,7 @@ func testAccRoute_httpHeader(t *testing.T) { testAccCheckRouteExists(ctx, resourceName, &r), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "virtual_router_name", vrName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "0"), @@ -1781,8 +1781,8 @@ func testAccRoute_httpHeader(t *testing.T) { resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), ), }, { @@ -1817,7 +1817,7 @@ func testAccRoute_routePriority(t *testing.T) { testAccCheckRouteExists(ctx, resourceName, &r), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "virtual_router_name", vrName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "0"), @@ -1836,8 +1836,8 @@ func testAccRoute_routePriority(t *testing.T) { resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), ), }, { @@ -1846,7 +1846,7 @@ func testAccRoute_routePriority(t *testing.T) { testAccCheckRouteExists(ctx, resourceName, &r), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "virtual_router_name", vrName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "0"), @@ -1865,8 +1865,8 @@ func testAccRoute_routePriority(t *testing.T) { resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), ), }, { @@ -1901,7 +1901,7 @@ func testAccRoute_httpRetryPolicy(t *testing.T) { testAccCheckRouteExists(ctx, resourceName, &r), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "virtual_router_name", vrName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "0"), @@ -1926,8 +1926,8 @@ func testAccRoute_httpRetryPolicy(t *testing.T) { resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), ), }, { @@ -1936,7 +1936,7 @@ func testAccRoute_httpRetryPolicy(t *testing.T) { testAccCheckRouteExists(ctx, resourceName, &r), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "virtual_router_name", vrName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "0"), @@ -1961,8 +1961,8 @@ func testAccRoute_httpRetryPolicy(t *testing.T) { resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), ), }, { @@ -1971,7 +1971,7 @@ func testAccRoute_httpRetryPolicy(t *testing.T) { testAccCheckRouteExists(ctx, resourceName, &r), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "virtual_router_name", vrName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.grpc_route.#", "0"), @@ -1998,8 +1998,8 @@ func testAccRoute_httpRetryPolicy(t *testing.T) { resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s/route/%s", meshName, vrName, rName)), ), }, { diff --git a/internal/service/appmesh/service_endpoints_gen_test.go b/internal/service/appmesh/service_endpoints_gen_test.go index 0cf8492581fe..18c7e1d36c1a 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/appmesh/virtual_gateway_data_source.go b/internal/service/appmesh/virtual_gateway_data_source.go index 60db97ddf221..fa4b53826805 100644 --- a/internal/service/appmesh/virtual_gateway_data_source.go +++ b/internal/service/appmesh/virtual_gateway_data_source.go @@ -92,7 +92,7 @@ func dataSourceVirtualGatewayRead(ctx context.Context, d *schema.ResourceData, m // They can't list tags and tag/untag resources in a mesh that aren't created by the account. var tags tftags.KeyValueTags - if meshOwner == meta.(*conns.AWSClient).AccountID { + if meshOwner == meta.(*conns.AWSClient).AccountID(ctx) { tags, err = listTags(ctx, conn, arn) if err != nil { diff --git a/internal/service/appmesh/virtual_gateway_test.go b/internal/service/appmesh/virtual_gateway_test.go index 7998176ef738..8f4fd2395771 100644 --- a/internal/service/appmesh/virtual_gateway_test.go +++ b/internal/service/appmesh/virtual_gateway_test.go @@ -38,7 +38,7 @@ func testAccVirtualGateway_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckVirtualGatewayExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, names.AttrName, vgName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.backend_defaults.#", "0"), @@ -52,8 +52,8 @@ func testAccVirtualGateway_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "spec.0.logging.#", "0"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s", meshName, vgName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s", meshName, vgName)), ), }, { @@ -109,7 +109,7 @@ func testAccVirtualGateway_BackendDefaults(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckVirtualGatewayExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, names.AttrName, vgName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.backend_defaults.#", "1"), @@ -135,8 +135,8 @@ func testAccVirtualGateway_BackendDefaults(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "spec.0.logging.#", "0"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s", meshName, vgName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s", meshName, vgName)), ), }, { @@ -144,7 +144,7 @@ func testAccVirtualGateway_BackendDefaults(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckVirtualGatewayExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, names.AttrName, vgName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.backend_defaults.#", "1"), @@ -171,8 +171,8 @@ func testAccVirtualGateway_BackendDefaults(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "spec.0.logging.#", "0"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s", meshName, vgName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s", meshName, vgName)), ), }, { @@ -203,7 +203,7 @@ func testAccVirtualGateway_BackendDefaultsCertificate(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckVirtualGatewayExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, names.AttrName, vgName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.backend_defaults.#", "1"), @@ -236,8 +236,8 @@ func testAccVirtualGateway_BackendDefaultsCertificate(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "spec.0.logging.#", "0"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s", meshName, vgName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s", meshName, vgName)), ), }, { @@ -268,7 +268,7 @@ func testAccVirtualGateway_ListenerConnectionPool(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckVirtualGatewayExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, names.AttrName, vgName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.backend_defaults.#", "0"), @@ -286,8 +286,8 @@ func testAccVirtualGateway_ListenerConnectionPool(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "spec.0.logging.#", "0"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s", meshName, vgName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s", meshName, vgName)), ), }, { @@ -295,7 +295,7 @@ func testAccVirtualGateway_ListenerConnectionPool(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckVirtualGatewayExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, names.AttrName, vgName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.backend_defaults.#", "0"), @@ -314,8 +314,8 @@ func testAccVirtualGateway_ListenerConnectionPool(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "spec.0.logging.#", "0"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s", meshName, vgName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s", meshName, vgName)), ), }, { @@ -346,7 +346,7 @@ func testAccVirtualGateway_ListenerHealthChecks(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckVirtualGatewayExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, names.AttrName, vgName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.backend_defaults.#", "0"), @@ -367,8 +367,8 @@ func testAccVirtualGateway_ListenerHealthChecks(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "spec.0.logging.#", "0"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s", meshName, vgName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s", meshName, vgName)), ), }, { @@ -376,7 +376,7 @@ func testAccVirtualGateway_ListenerHealthChecks(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckVirtualGatewayExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, names.AttrName, vgName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.backend_defaults.#", "0"), @@ -397,8 +397,8 @@ func testAccVirtualGateway_ListenerHealthChecks(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "spec.0.logging.#", "0"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s", meshName, vgName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s", meshName, vgName)), ), }, { @@ -434,7 +434,7 @@ func testAccVirtualGateway_ListenerTLS(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckVirtualGatewayExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, names.AttrName, vgName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.backend_defaults.#", "0"), @@ -456,8 +456,8 @@ func testAccVirtualGateway_ListenerTLS(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "spec.0.logging.#", "0"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s", meshName, vgName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s", meshName, vgName)), ), }, { @@ -479,7 +479,7 @@ func testAccVirtualGateway_ListenerTLS(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckVirtualGatewayExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, names.AttrName, vgName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.backend_defaults.#", "0"), @@ -499,8 +499,8 @@ func testAccVirtualGateway_ListenerTLS(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "spec.0.logging.#", "0"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s", meshName, vgName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s", meshName, vgName)), ), }, { @@ -539,7 +539,7 @@ func testAccVirtualGateway_ListenerValidation(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckVirtualGatewayExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, names.AttrName, vgName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.backend_defaults.#", "0"), @@ -570,8 +570,8 @@ func testAccVirtualGateway_ListenerValidation(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "spec.0.logging.#", "0"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s", meshName, vgName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s", meshName, vgName)), ), }, { @@ -585,7 +585,7 @@ func testAccVirtualGateway_ListenerValidation(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckVirtualGatewayExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, names.AttrName, vgName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.backend_defaults.#", "0"), @@ -612,8 +612,8 @@ func testAccVirtualGateway_ListenerValidation(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "spec.0.logging.#", "0"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s", meshName, vgName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s", meshName, vgName)), ), }, }, @@ -638,7 +638,7 @@ func testAccVirtualGateway_MultiListenerValidation(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckVirtualGatewayExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, names.AttrName, vgName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.backend_defaults.#", "0"), @@ -692,8 +692,8 @@ func testAccVirtualGateway_MultiListenerValidation(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "spec.0.logging.#", "0"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s", meshName, vgName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s", meshName, vgName)), ), }, { @@ -707,7 +707,7 @@ func testAccVirtualGateway_MultiListenerValidation(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckVirtualGatewayExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, names.AttrName, vgName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.backend_defaults.#", "0"), @@ -761,8 +761,8 @@ func testAccVirtualGateway_MultiListenerValidation(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "spec.0.logging.#", "0"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s", meshName, vgName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s", meshName, vgName)), ), }, }, @@ -787,7 +787,7 @@ func testAccVirtualGateway_Logging(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckVirtualGatewayExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, names.AttrName, vgName), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.backend_defaults.#", "0"), @@ -805,8 +805,8 @@ func testAccVirtualGateway_Logging(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "spec.0.logging.0.access_log.0.file.0.path", "/dev/stdout"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s", meshName, vgName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s", meshName, vgName)), ), }, { @@ -820,7 +820,7 @@ func testAccVirtualGateway_Logging(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckVirtualGatewayExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, names.AttrName, vgName), resource.TestCheckResourceAttr(resourceName, "spec.0.backend_defaults.#", "0"), resource.TestCheckResourceAttr(resourceName, "spec.0.listener.#", "1"), @@ -836,8 +836,8 @@ func testAccVirtualGateway_Logging(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "spec.0.logging.0.access_log.0.file.0.path", "/tmp/access.log"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s", meshName, vgName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s", meshName, vgName)), ), }, { @@ -845,7 +845,7 @@ func testAccVirtualGateway_Logging(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckVirtualGatewayExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, names.AttrName, vgName), resource.TestCheckResourceAttr(resourceName, "spec.0.backend_defaults.#", "0"), resource.TestCheckResourceAttr(resourceName, "spec.0.listener.#", "1"), @@ -865,8 +865,8 @@ func testAccVirtualGateway_Logging(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "spec.0.logging.0.access_log.0.file.0.path", "/tmp/access.log"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s", meshName, vgName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualGateway/%s", meshName, vgName)), ), }, }, diff --git a/internal/service/appmesh/virtual_node_data_source.go b/internal/service/appmesh/virtual_node_data_source.go index fb3485ea05c9..81d72a17392f 100644 --- a/internal/service/appmesh/virtual_node_data_source.go +++ b/internal/service/appmesh/virtual_node_data_source.go @@ -93,7 +93,7 @@ func dataSourceVirtualNodeRead(ctx context.Context, d *schema.ResourceData, meta // They can't list tags and tag/untag resources in a mesh that aren't created by the account. var tags tftags.KeyValueTags - if meshOwner == meta.(*conns.AWSClient).AccountID { + if meshOwner == meta.(*conns.AWSClient).AccountID(ctx) { tags, err = listTags(ctx, conn, arn) if err != nil { diff --git a/internal/service/appmesh/virtual_node_test.go b/internal/service/appmesh/virtual_node_test.go index 5daa6a1c76c5..a4e2364a5019 100644 --- a/internal/service/appmesh/virtual_node_test.go +++ b/internal/service/appmesh/virtual_node_test.go @@ -39,7 +39,7 @@ func testAccVirtualNode_basic(t *testing.T) { testAccCheckVirtualNodeExists(ctx, resourceName, &vn), resource.TestCheckResourceAttr(resourceName, names.AttrName, vnName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.backend.#", "0"), resource.TestCheckResourceAttr(resourceName, "spec.0.backend_defaults.#", "0"), @@ -48,8 +48,8 @@ func testAccVirtualNode_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "spec.0.service_discovery.#", "0"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualNode/%s", meshName, vnName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualNode/%s", meshName, vnName)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -119,7 +119,7 @@ func testAccVirtualNode_backendClientPolicyACM(t *testing.T) { testAccCheckVirtualNodeExists(ctx, resourceName, &vn), resource.TestCheckResourceAttr(resourceName, names.AttrName, vnName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.backend.#", "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "spec.0.backend.*", map[string]string{ @@ -154,8 +154,8 @@ func testAccVirtualNode_backendClientPolicyACM(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "spec.0.service_discovery.0.dns.0.hostname", "serviceb.simpleapp.local"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualNode/%s", meshName, vnName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualNode/%s", meshName, vnName)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -196,7 +196,7 @@ func testAccVirtualNode_backendClientPolicyFile(t *testing.T) { testAccCheckVirtualNodeExists(ctx, resourceName, &vn), resource.TestCheckResourceAttr(resourceName, names.AttrName, vnName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.backend.#", "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "spec.0.backend.*", map[string]string{ @@ -231,8 +231,8 @@ func testAccVirtualNode_backendClientPolicyFile(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "spec.0.service_discovery.0.dns.0.hostname", "serviceb.simpleapp.local"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualNode/%s", meshName, vnName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualNode/%s", meshName, vnName)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -242,7 +242,7 @@ func testAccVirtualNode_backendClientPolicyFile(t *testing.T) { testAccCheckVirtualNodeExists(ctx, resourceName, &vn), resource.TestCheckResourceAttr(resourceName, names.AttrName, vnName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.backend.#", "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "spec.0.backend.*", map[string]string{ @@ -279,8 +279,8 @@ func testAccVirtualNode_backendClientPolicyFile(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "spec.0.service_discovery.0.dns.0.hostname", "serviceb.simpleapp.local"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualNode/%s", meshName, vnName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualNode/%s", meshName, vnName)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -313,7 +313,7 @@ func testAccVirtualNode_backendDefaults(t *testing.T) { testAccCheckVirtualNodeExists(ctx, resourceName, &vn), resource.TestCheckResourceAttr(resourceName, names.AttrName, vnName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.backend.#", "0"), resource.TestCheckResourceAttr(resourceName, "spec.0.backend_defaults.#", "1"), @@ -335,8 +335,8 @@ func testAccVirtualNode_backendDefaults(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "spec.0.service_discovery.#", "0"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualNode/%s", meshName, vnName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualNode/%s", meshName, vnName)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -346,7 +346,7 @@ func testAccVirtualNode_backendDefaults(t *testing.T) { testAccCheckVirtualNodeExists(ctx, resourceName, &vn), resource.TestCheckResourceAttr(resourceName, names.AttrName, vnName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.backend.#", "0"), resource.TestCheckResourceAttr(resourceName, "spec.0.backend_defaults.#", "1"), @@ -369,8 +369,8 @@ func testAccVirtualNode_backendDefaults(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "spec.0.service_discovery.#", "0"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualNode/%s", meshName, vnName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualNode/%s", meshName, vnName)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -403,7 +403,7 @@ func testAccVirtualNode_backendDefaultsCertificate(t *testing.T) { testAccCheckVirtualNodeExists(ctx, resourceName, &vn), resource.TestCheckResourceAttr(resourceName, names.AttrName, vnName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.backend.#", "0"), resource.TestCheckResourceAttr(resourceName, "spec.0.backend_defaults.#", "1"), @@ -432,8 +432,8 @@ func testAccVirtualNode_backendDefaultsCertificate(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "spec.0.service_discovery.#", "0"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualNode/%s", meshName, vnName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualNode/%s", meshName, vnName)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -522,7 +522,7 @@ func testAccVirtualNode_listenerConnectionPool(t *testing.T) { testAccCheckVirtualNodeExists(ctx, resourceName, &vn), resource.TestCheckResourceAttr(resourceName, names.AttrName, vnName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.backend.#", "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "spec.0.backend.*", map[string]string{ @@ -547,8 +547,8 @@ func testAccVirtualNode_listenerConnectionPool(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "spec.0.service_discovery.0.dns.0.response_type", ""), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualNode/%s", meshName, vnName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualNode/%s", meshName, vnName)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -558,7 +558,7 @@ func testAccVirtualNode_listenerConnectionPool(t *testing.T) { testAccCheckVirtualNodeExists(ctx, resourceName, &vn), resource.TestCheckResourceAttr(resourceName, names.AttrName, vnName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.backend.#", "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "spec.0.backend.*", map[string]string{ @@ -584,8 +584,8 @@ func testAccVirtualNode_listenerConnectionPool(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "spec.0.service_discovery.0.dns.0.response_type", "ENDPOINTS"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualNode/%s", meshName, vnName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualNode/%s", meshName, vnName)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -618,7 +618,7 @@ func testAccVirtualNode_listenerHealthChecks(t *testing.T) { testAccCheckVirtualNodeExists(ctx, resourceName, &vn), resource.TestCheckResourceAttr(resourceName, names.AttrName, vnName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.backend.#", "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "spec.0.backend.*", map[string]string{ @@ -649,8 +649,8 @@ func testAccVirtualNode_listenerHealthChecks(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "spec.0.service_discovery.0.dns.0.hostname", "serviceb.simpleapp.local"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualNode/%s", meshName, vnName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualNode/%s", meshName, vnName)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -660,7 +660,7 @@ func testAccVirtualNode_listenerHealthChecks(t *testing.T) { testAccCheckVirtualNodeExists(ctx, resourceName, &vn), resource.TestCheckResourceAttr(resourceName, names.AttrName, vnName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.backend.#", "2"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "spec.0.backend.*", map[string]string{ @@ -695,8 +695,8 @@ func testAccVirtualNode_listenerHealthChecks(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "spec.0.service_discovery.0.dns.0.hostname", "serviceb1.simpleapp.local"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualNode/%s", meshName, vnName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualNode/%s", meshName, vnName)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -729,7 +729,7 @@ func testAccVirtualNode_listenerOutlierDetection(t *testing.T) { testAccCheckVirtualNodeExists(ctx, resourceName, &vn), resource.TestCheckResourceAttr(resourceName, names.AttrName, vnName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.backend.#", "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "spec.0.backend.*", map[string]string{ @@ -755,8 +755,8 @@ func testAccVirtualNode_listenerOutlierDetection(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "spec.0.service_discovery.0.dns.0.hostname", "serviceb.simpleapp.local"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualNode/%s", meshName, vnName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualNode/%s", meshName, vnName)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -766,7 +766,7 @@ func testAccVirtualNode_listenerOutlierDetection(t *testing.T) { testAccCheckVirtualNodeExists(ctx, resourceName, &vn), resource.TestCheckResourceAttr(resourceName, names.AttrName, vnName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.backend.#", "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "spec.0.backend.*", map[string]string{ @@ -792,8 +792,8 @@ func testAccVirtualNode_listenerOutlierDetection(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "spec.0.service_discovery.0.dns.0.hostname", "serviceb.simpleapp.local"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualNode/%s", meshName, vnName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualNode/%s", meshName, vnName)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -826,7 +826,7 @@ func testAccVirtualNode_listenerTimeout(t *testing.T) { testAccCheckVirtualNodeExists(ctx, resourceName, &vn), resource.TestCheckResourceAttr(resourceName, names.AttrName, vnName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.backend.#", "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "spec.0.backend.*", map[string]string{ @@ -851,8 +851,8 @@ func testAccVirtualNode_listenerTimeout(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "spec.0.service_discovery.0.dns.0.hostname", "serviceb.simpleapp.local"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualNode/%s", meshName, vnName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualNode/%s", meshName, vnName)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -862,7 +862,7 @@ func testAccVirtualNode_listenerTimeout(t *testing.T) { testAccCheckVirtualNodeExists(ctx, resourceName, &vn), resource.TestCheckResourceAttr(resourceName, names.AttrName, vnName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.backend.#", "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "spec.0.backend.*", map[string]string{ @@ -890,8 +890,8 @@ func testAccVirtualNode_listenerTimeout(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "spec.0.service_discovery.0.dns.0.hostname", "serviceb.simpleapp.local"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualNode/%s", meshName, vnName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualNode/%s", meshName, vnName)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -929,7 +929,7 @@ func testAccVirtualNode_listenerTLS(t *testing.T) { testAccCheckVirtualNodeExists(ctx, resourceName, &vn), resource.TestCheckResourceAttr(resourceName, names.AttrName, vnName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.backend.#", "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "spec.0.backend.*", map[string]string{ @@ -960,8 +960,8 @@ func testAccVirtualNode_listenerTLS(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "spec.0.service_discovery.0.dns.0.hostname", "serviceb.simpleapp.local"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualNode/%s", meshName, vnName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualNode/%s", meshName, vnName)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -985,7 +985,7 @@ func testAccVirtualNode_listenerTLS(t *testing.T) { testAccCheckVirtualNodeExists(ctx, resourceName, &vn), resource.TestCheckResourceAttr(resourceName, names.AttrName, vnName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.backend.#", "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "spec.0.backend.*", map[string]string{ @@ -1015,8 +1015,8 @@ func testAccVirtualNode_listenerTLS(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "spec.0.service_discovery.0.dns.0.hostname", "serviceb.simpleapp.local"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualNode/%s", meshName, vnName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualNode/%s", meshName, vnName)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -1057,7 +1057,7 @@ func testAccVirtualNode_listenerValidation(t *testing.T) { testAccCheckVirtualNodeExists(ctx, resourceName, &vn), resource.TestCheckResourceAttr(resourceName, names.AttrName, vnName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.backend.#", "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "spec.0.backend.*", map[string]string{ @@ -1097,8 +1097,8 @@ func testAccVirtualNode_listenerValidation(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "spec.0.service_discovery.0.dns.0.hostname", "serviceb.simpleapp.local"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualNode/%s", meshName, vnName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualNode/%s", meshName, vnName)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -1114,7 +1114,7 @@ func testAccVirtualNode_listenerValidation(t *testing.T) { testAccCheckVirtualNodeExists(ctx, resourceName, &vn), resource.TestCheckResourceAttr(resourceName, names.AttrName, vnName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.backend.#", "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "spec.0.backend.*", map[string]string{ @@ -1150,8 +1150,8 @@ func testAccVirtualNode_listenerValidation(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "spec.0.service_discovery.0.dns.0.hostname", "serviceb.simpleapp.local"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualNode/%s", meshName, vnName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualNode/%s", meshName, vnName)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -1178,7 +1178,7 @@ func testAccVirtualNode_multiListenerValidation(t *testing.T) { testAccCheckVirtualNodeExists(ctx, resourceName, &vn), resource.TestCheckResourceAttr(resourceName, names.AttrName, vnName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.backend.#", "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "spec.0.backend.*", map[string]string{ @@ -1242,8 +1242,8 @@ func testAccVirtualNode_multiListenerValidation(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "spec.0.service_discovery.0.dns.0.hostname", "serviceb.simpleapp.local"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualNode/%s", meshName, vnName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualNode/%s", meshName, vnName)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -1259,7 +1259,7 @@ func testAccVirtualNode_multiListenerValidation(t *testing.T) { testAccCheckVirtualNodeExists(ctx, resourceName, &vn), resource.TestCheckResourceAttr(resourceName, names.AttrName, vnName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.backend.#", "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "spec.0.backend.*", map[string]string{ @@ -1335,8 +1335,8 @@ func testAccVirtualNode_multiListenerValidation(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "spec.0.service_discovery.0.dns.0.hostname", "serviceb.simpleapp.local"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualNode/%s", meshName, vnName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualNode/%s", meshName, vnName)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -1363,7 +1363,7 @@ func testAccVirtualNode_logging(t *testing.T) { testAccCheckVirtualNodeExists(ctx, resourceName, &vn), resource.TestCheckResourceAttr(resourceName, names.AttrName, vnName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.logging.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.logging.0.access_log.#", "1"), @@ -1384,7 +1384,7 @@ func testAccVirtualNode_logging(t *testing.T) { testAccCheckVirtualNodeExists(ctx, resourceName, &vn), resource.TestCheckResourceAttr(resourceName, names.AttrName, vnName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "spec.0.logging.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.logging.0.access_log.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.logging.0.access_log.0.file.#", "1"), @@ -1398,7 +1398,7 @@ func testAccVirtualNode_logging(t *testing.T) { testAccCheckVirtualNodeExists(ctx, resourceName, &vn), resource.TestCheckResourceAttr(resourceName, names.AttrName, vnName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "spec.0.logging.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.logging.0.access_log.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.logging.0.access_log.0.file.#", "1"), diff --git a/internal/service/appmesh/virtual_router_data_source.go b/internal/service/appmesh/virtual_router_data_source.go index fd56b9fb71af..28762d46d68f 100644 --- a/internal/service/appmesh/virtual_router_data_source.go +++ b/internal/service/appmesh/virtual_router_data_source.go @@ -93,7 +93,7 @@ func dataSourceVirtualRouterRead(ctx context.Context, d *schema.ResourceData, me // They can't list tags and tag/untag resources in a mesh that aren't created by the account. var tags tftags.KeyValueTags - if meshOwner == meta.(*conns.AWSClient).AccountID { + if meshOwner == meta.(*conns.AWSClient).AccountID(ctx) { tags, err = listTags(ctx, conn, arn) if err != nil { diff --git a/internal/service/appmesh/virtual_router_test.go b/internal/service/appmesh/virtual_router_test.go index 205f97d68d81..b773f835c59d 100644 --- a/internal/service/appmesh/virtual_router_test.go +++ b/internal/service/appmesh/virtual_router_test.go @@ -38,7 +38,7 @@ func testAccVirtualRouter_basic(t *testing.T) { testAccCheckVirtualRouterExists(ctx, resourceName, &vr), resource.TestCheckResourceAttr(resourceName, names.AttrName, vrName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.listener.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.listener.0.port_mapping.#", "1"), @@ -46,8 +46,8 @@ func testAccVirtualRouter_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "spec.0.listener.0.port_mapping.0.protocol", "http"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s", meshName, vrName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s", meshName, vrName)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -57,7 +57,7 @@ func testAccVirtualRouter_basic(t *testing.T) { testAccCheckVirtualRouterExists(ctx, resourceName, &vr), resource.TestCheckResourceAttr(resourceName, names.AttrName, vrName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.listener.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.listener.0.port_mapping.#", "1"), @@ -95,7 +95,7 @@ func testAccVirtualRouter_multiListener(t *testing.T) { testAccCheckVirtualRouterExists(ctx, resourceName, &vr), resource.TestCheckResourceAttr(resourceName, names.AttrName, vrName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.listener.#", "2"), resource.TestCheckResourceAttr(resourceName, "spec.0.listener.0.port_mapping.#", "1"), @@ -106,8 +106,8 @@ func testAccVirtualRouter_multiListener(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "spec.0.listener.1.port_mapping.0.protocol", "http2"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s", meshName, vrName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualRouter/%s", meshName, vrName)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -117,7 +117,7 @@ func testAccVirtualRouter_multiListener(t *testing.T) { testAccCheckVirtualRouterExists(ctx, resourceName, &vr), resource.TestCheckResourceAttr(resourceName, names.AttrName, vrName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.listener.#", "3"), resource.TestCheckResourceAttr(resourceName, "spec.0.listener.0.port_mapping.#", "1"), diff --git a/internal/service/appmesh/virtual_service_data_source.go b/internal/service/appmesh/virtual_service_data_source.go index 3932f352d22a..d68dd2136c67 100644 --- a/internal/service/appmesh/virtual_service_data_source.go +++ b/internal/service/appmesh/virtual_service_data_source.go @@ -93,7 +93,7 @@ func dataSourceVirtualServiceRead(ctx context.Context, d *schema.ResourceData, m // They can't list tags and tag/untag resources in a mesh that aren't created by the account. var tags tftags.KeyValueTags - if meshOwner == meta.(*conns.AWSClient).AccountID { + if meshOwner == meta.(*conns.AWSClient).AccountID(ctx) { tags, err = listTags(ctx, conn, arn) if err != nil { diff --git a/internal/service/appmesh/virtual_service_test.go b/internal/service/appmesh/virtual_service_test.go index 817b0bcf476e..e3fed27749c0 100644 --- a/internal/service/appmesh/virtual_service_test.go +++ b/internal/service/appmesh/virtual_service_test.go @@ -40,15 +40,15 @@ func testAccVirtualService_virtualNode(t *testing.T) { testAccCheckVirtualServiceExists(ctx, resourceName, &vs), resource.TestCheckResourceAttr(resourceName, names.AttrName, vsName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.provider.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.provider.0.virtual_node.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.provider.0.virtual_node.0.virtual_node_name", vnName1), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualService/%s", meshName, vsName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualService/%s", meshName, vsName)), ), }, { @@ -57,7 +57,7 @@ func testAccVirtualService_virtualNode(t *testing.T) { testAccCheckVirtualServiceExists(ctx, resourceName, &vs), resource.TestCheckResourceAttr(resourceName, names.AttrName, vsName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.provider.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.provider.0.virtual_node.#", "1"), @@ -95,15 +95,15 @@ func testAccVirtualService_virtualRouter(t *testing.T) { testAccCheckVirtualServiceExists(ctx, resourceName, &vs), resource.TestCheckResourceAttr(resourceName, names.AttrName, vsName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.provider.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.provider.0.virtual_router.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.provider.0.virtual_router.0.virtual_router_name", vrName1), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedDate), - acctest.CheckResourceAttrAccountID(resourceName, acctest.CtResourceOwner), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualService/%s", meshName, vsName))), + acctest.CheckResourceAttrAccountID(ctx, resourceName, acctest.CtResourceOwner), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appmesh", fmt.Sprintf("mesh/%s/virtualService/%s", meshName, vsName))), }, { Config: testAccVirtualServiceConfig_virtualRouter(meshName, vrName1, vrName2, vsName, "aws_appmesh_virtual_router.test2"), @@ -111,7 +111,7 @@ func testAccVirtualService_virtualRouter(t *testing.T) { testAccCheckVirtualServiceExists(ctx, resourceName, &vs), resource.TestCheckResourceAttr(resourceName, names.AttrName, vsName), resource.TestCheckResourceAttr(resourceName, "mesh_name", meshName), - acctest.CheckResourceAttrAccountID(resourceName, "mesh_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "mesh_owner"), resource.TestCheckResourceAttr(resourceName, "spec.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.provider.#", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.provider.0.virtual_router.#", "1"), diff --git a/internal/service/apprunner/auto_scaling_configuration_version_test.go b/internal/service/apprunner/auto_scaling_configuration_version_test.go index 27c27d00dbf1..845bc7df6163 100644 --- a/internal/service/apprunner/auto_scaling_configuration_version_test.go +++ b/internal/service/apprunner/auto_scaling_configuration_version_test.go @@ -34,7 +34,7 @@ func TestAccAppRunnerAutoScalingConfigurationVersion_basic(t *testing.T) { Config: testAccAutoScalingConfigurationVersionConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckAutoScalingConfigurationVersionExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "apprunner", regexache.MustCompile(fmt.Sprintf(`autoscalingconfiguration/%s/1/.+`, rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "apprunner", regexache.MustCompile(fmt.Sprintf(`autoscalingconfiguration/%s/1/.+`, rName))), resource.TestCheckResourceAttr(resourceName, "auto_scaling_configuration_name", rName), resource.TestCheckResourceAttr(resourceName, "auto_scaling_configuration_revision", "1"), resource.TestCheckResourceAttr(resourceName, "has_associated_service", acctest.CtFalse), @@ -70,7 +70,7 @@ func TestAccAppRunnerAutoScalingConfigurationVersion_complex(t *testing.T) { Config: testAccAutoScalingConfigurationVersionConfig_nonDefaults(rName, 50, 10, 2), Check: resource.ComposeTestCheckFunc( testAccCheckAutoScalingConfigurationVersionExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "apprunner", regexache.MustCompile(fmt.Sprintf(`autoscalingconfiguration/%s/1/.+`, rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "apprunner", regexache.MustCompile(fmt.Sprintf(`autoscalingconfiguration/%s/1/.+`, rName))), resource.TestCheckResourceAttr(resourceName, "auto_scaling_configuration_name", rName), resource.TestCheckResourceAttr(resourceName, "auto_scaling_configuration_revision", "1"), resource.TestCheckResourceAttr(resourceName, "latest", acctest.CtTrue), @@ -90,7 +90,7 @@ func TestAccAppRunnerAutoScalingConfigurationVersion_complex(t *testing.T) { Config: testAccAutoScalingConfigurationVersionConfig_nonDefaults(rName, 150, 20, 5), Check: resource.ComposeTestCheckFunc( testAccCheckAutoScalingConfigurationVersionExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "apprunner", regexache.MustCompile(fmt.Sprintf(`autoscalingconfiguration/%s/1/.+`, rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "apprunner", regexache.MustCompile(fmt.Sprintf(`autoscalingconfiguration/%s/1/.+`, rName))), resource.TestCheckResourceAttr(resourceName, "auto_scaling_configuration_name", rName), resource.TestCheckResourceAttr(resourceName, "auto_scaling_configuration_revision", "1"), resource.TestCheckResourceAttr(resourceName, "latest", acctest.CtTrue), @@ -110,7 +110,7 @@ func TestAccAppRunnerAutoScalingConfigurationVersion_complex(t *testing.T) { Config: testAccAutoScalingConfigurationVersionConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckAutoScalingConfigurationVersionExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "apprunner", regexache.MustCompile(fmt.Sprintf(`autoscalingconfiguration/%s/1/.+`, rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "apprunner", regexache.MustCompile(fmt.Sprintf(`autoscalingconfiguration/%s/1/.+`, rName))), resource.TestCheckResourceAttr(resourceName, "auto_scaling_configuration_name", rName), resource.TestCheckResourceAttr(resourceName, "auto_scaling_configuration_revision", "1"), resource.TestCheckResourceAttr(resourceName, "latest", acctest.CtTrue), @@ -141,7 +141,7 @@ func TestAccAppRunnerAutoScalingConfigurationVersion_multipleVersions(t *testing Check: resource.ComposeTestCheckFunc( testAccCheckAutoScalingConfigurationVersionExists(ctx, resourceName), testAccCheckAutoScalingConfigurationVersionExists(ctx, otherResourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "apprunner", regexache.MustCompile(fmt.Sprintf(`autoscalingconfiguration/%s/1/.+`, rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "apprunner", regexache.MustCompile(fmt.Sprintf(`autoscalingconfiguration/%s/1/.+`, rName))), resource.TestCheckResourceAttr(resourceName, "auto_scaling_configuration_name", rName), resource.TestCheckResourceAttr(resourceName, "auto_scaling_configuration_revision", "1"), resource.TestCheckResourceAttr(resourceName, "latest", acctest.CtTrue), @@ -149,7 +149,7 @@ func TestAccAppRunnerAutoScalingConfigurationVersion_multipleVersions(t *testing resource.TestCheckResourceAttr(resourceName, "max_size", "25"), resource.TestCheckResourceAttr(resourceName, "min_size", "1"), resource.TestCheckResourceAttr(resourceName, names.AttrStatus, "active"), - acctest.MatchResourceAttrRegionalARN(otherResourceName, names.AttrARN, "apprunner", regexache.MustCompile(fmt.Sprintf(`autoscalingconfiguration/%s/2/.+`, rName))), + acctest.MatchResourceAttrRegionalARN(ctx, otherResourceName, names.AttrARN, "apprunner", regexache.MustCompile(fmt.Sprintf(`autoscalingconfiguration/%s/2/.+`, rName))), resource.TestCheckResourceAttr(otherResourceName, "auto_scaling_configuration_name", rName), resource.TestCheckResourceAttr(otherResourceName, "auto_scaling_configuration_revision", "2"), resource.TestCheckResourceAttr(otherResourceName, "latest", acctest.CtTrue), @@ -207,7 +207,7 @@ func TestAccAppRunnerAutoScalingConfigurationVersion_updateMultipleVersions(t *t Check: resource.ComposeTestCheckFunc( testAccCheckAutoScalingConfigurationVersionExists(ctx, resourceName), testAccCheckAutoScalingConfigurationVersionExists(ctx, otherResourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "apprunner", regexache.MustCompile(fmt.Sprintf(`autoscalingconfiguration/%s/1/.+`, rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "apprunner", regexache.MustCompile(fmt.Sprintf(`autoscalingconfiguration/%s/1/.+`, rName))), resource.TestCheckResourceAttr(resourceName, "auto_scaling_configuration_name", rName), resource.TestCheckResourceAttr(resourceName, "auto_scaling_configuration_revision", "1"), resource.TestCheckResourceAttr(resourceName, "latest", acctest.CtFalse), @@ -215,7 +215,7 @@ func TestAccAppRunnerAutoScalingConfigurationVersion_updateMultipleVersions(t *t resource.TestCheckResourceAttr(resourceName, "max_size", "25"), resource.TestCheckResourceAttr(resourceName, "min_size", "1"), resource.TestCheckResourceAttr(resourceName, names.AttrStatus, "active"), - acctest.MatchResourceAttrRegionalARN(otherResourceName, names.AttrARN, "apprunner", regexache.MustCompile(fmt.Sprintf(`autoscalingconfiguration/%s/2/.+`, rName))), + acctest.MatchResourceAttrRegionalARN(ctx, otherResourceName, names.AttrARN, "apprunner", regexache.MustCompile(fmt.Sprintf(`autoscalingconfiguration/%s/2/.+`, rName))), resource.TestCheckResourceAttr(otherResourceName, "auto_scaling_configuration_name", rName), resource.TestCheckResourceAttr(otherResourceName, "auto_scaling_configuration_revision", "2"), resource.TestCheckResourceAttr(otherResourceName, "latest", acctest.CtTrue), diff --git a/internal/service/apprunner/connection_test.go b/internal/service/apprunner/connection_test.go index 867868b191e2..17332533d425 100644 --- a/internal/service/apprunner/connection_test.go +++ b/internal/service/apprunner/connection_test.go @@ -35,7 +35,7 @@ func TestAccAppRunnerConnection_basic(t *testing.T) { Config: testAccConnectionConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckConnectionExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "apprunner", regexache.MustCompile(fmt.Sprintf(`connection/%s/.+`, rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "apprunner", regexache.MustCompile(fmt.Sprintf(`connection/%s/.+`, rName))), resource.TestCheckResourceAttr(resourceName, "connection_name", rName), resource.TestCheckResourceAttr(resourceName, "provider_type", string(types.ProviderTypeGithub)), resource.TestCheckResourceAttr(resourceName, names.AttrStatus, string(types.ConnectionStatusPendingHandshake)), diff --git a/internal/service/apprunner/default_auto_scaling_configuration_version.go b/internal/service/apprunner/default_auto_scaling_configuration_version.go index 34ac49fcfaa3..1b30b1706fc5 100644 --- a/internal/service/apprunner/default_auto_scaling_configuration_version.go +++ b/internal/service/apprunner/default_auto_scaling_configuration_version.go @@ -66,7 +66,7 @@ func (r *defaultAutoScalingConfigurationVersionResource) Create(ctx context.Cont } // Set values for unknowns. - data.ID = flex.StringValueToFramework(ctx, r.Meta().AccountID) + data.ID = flex.StringValueToFramework(ctx, r.Meta().AccountID(ctx)) response.Diagnostics.Append(response.State.Set(ctx, &data)...) } diff --git a/internal/service/apprunner/hosted_zone_id_data_source.go b/internal/service/apprunner/hosted_zone_id_data_source.go index 20e65370764b..8f7225f2534c 100644 --- a/internal/service/apprunner/hosted_zone_id_data_source.go +++ b/internal/service/apprunner/hosted_zone_id_data_source.go @@ -7,6 +7,7 @@ import ( "context" "fmt" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" "github.com/hashicorp/terraform-plugin-framework/datasource" "github.com/hashicorp/terraform-plugin-framework/datasource/schema" "github.com/hashicorp/terraform-plugin-framework/types" @@ -17,17 +18,17 @@ import ( // See https://docs.aws.amazon.com/general/latest/gr/apprunner.html var hostedZoneIDPerRegionMap = map[string]string{ - names.USEast2RegionID: "Z0224347AD7KVHMLOX31", - names.USEast1RegionID: "Z01915732ZBZKC8D32TPT", - names.USWest2RegionID: "Z02243383FTQ64HJ5772Q", - names.APSouth1RegionID: "Z00855883LBHKTIC4ODF2", - names.APSoutheast1RegionID: "Z09819469CZ3KQ8PWMCL", - names.APSoutheast2RegionID: "Z03657752RA8799S0TI5I", - names.APNortheast1RegionID: "Z08491812XW6IPYLR6CCA", - names.EUCentral1RegionID: "Z0334911C2FDI2Q9M4FZ", - names.EUWest1RegionID: "Z087551914Z2PCAU0QHMW", - names.EUWest2RegionID: "Z098228427VC6B3IX76ON", - names.EUWest3RegionID: "Z087117439MBKHYM69QS6", + endpoints.UsEast2RegionID: "Z0224347AD7KVHMLOX31", + endpoints.UsEast1RegionID: "Z01915732ZBZKC8D32TPT", + endpoints.UsWest2RegionID: "Z02243383FTQ64HJ5772Q", + endpoints.ApSouth1RegionID: "Z00855883LBHKTIC4ODF2", + endpoints.ApSoutheast1RegionID: "Z09819469CZ3KQ8PWMCL", + endpoints.ApSoutheast2RegionID: "Z03657752RA8799S0TI5I", + endpoints.ApNortheast1RegionID: "Z08491812XW6IPYLR6CCA", + endpoints.EuCentral1RegionID: "Z0334911C2FDI2Q9M4FZ", + endpoints.EuWest1RegionID: "Z087551914Z2PCAU0QHMW", + endpoints.EuWest2RegionID: "Z098228427VC6B3IX76ON", + endpoints.EuWest3RegionID: "Z087117439MBKHYM69QS6", } // @FrameworkDataSource("aws_apprunner_hosted_zone_id", name="Hosted Zone ID") @@ -64,7 +65,7 @@ func (d *hostedZoneIDDataSource) Read(ctx context.Context, request datasource.Re var region string if data.Region.IsNull() { - region = d.Meta().Region + region = d.Meta().Region(ctx) } else { region = data.Region.ValueString() } diff --git a/internal/service/apprunner/hosted_zone_id_data_source_test.go b/internal/service/apprunner/hosted_zone_id_data_source_test.go index 11f03ade0659..a6a1db621e7b 100644 --- a/internal/service/apprunner/hosted_zone_id_data_source_test.go +++ b/internal/service/apprunner/hosted_zone_id_data_source_test.go @@ -7,6 +7,7 @@ import ( "fmt" "testing" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-provider-aws/internal/acctest" "github.com/hashicorp/terraform-provider-aws/names" @@ -32,7 +33,7 @@ func TestAccAppRunnerHostedZoneIDDataSource_basic(t *testing.T) { ), }, { - Config: testAccHostedZoneIDDataSourceConfig_explicitRegion(names.APNortheast1RegionID), + Config: testAccHostedZoneIDDataSourceConfig_explicitRegion(endpoints.ApNortheast1RegionID), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttr(datasourceName, names.AttrID, "Z08491812XW6IPYLR6CCA"), ), diff --git a/internal/service/apprunner/observability_configuration_test.go b/internal/service/apprunner/observability_configuration_test.go index 9f5922ee7773..adbd2df01283 100644 --- a/internal/service/apprunner/observability_configuration_test.go +++ b/internal/service/apprunner/observability_configuration_test.go @@ -35,7 +35,7 @@ func TestAccAppRunnerObservabilityConfiguration_basic(t *testing.T) { Config: testAccObservabilityConfigurationConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckObservabilityConfigurationExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "apprunner", regexache.MustCompile(fmt.Sprintf(`observabilityconfiguration/%s/1/.+`, rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "apprunner", regexache.MustCompile(fmt.Sprintf(`observabilityconfiguration/%s/1/.+`, rName))), resource.TestCheckResourceAttr(resourceName, "observability_configuration_name", rName), resource.TestCheckResourceAttr(resourceName, "observability_configuration_revision", "1"), resource.TestCheckResourceAttr(resourceName, names.AttrStatus, string(types.ObservabilityConfigurationStatusActive)), @@ -65,7 +65,7 @@ func TestAccAppRunnerObservabilityConfiguration_traceConfiguration(t *testing.T) Config: testAccObservabilityConfigurationConfig_traceConfiguration(rName), Check: resource.ComposeTestCheckFunc( testAccCheckObservabilityConfigurationExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "apprunner", regexache.MustCompile(fmt.Sprintf(`observabilityconfiguration/%s/1/.+`, rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "apprunner", regexache.MustCompile(fmt.Sprintf(`observabilityconfiguration/%s/1/.+`, rName))), resource.TestCheckResourceAttr(resourceName, "observability_configuration_name", rName), resource.TestCheckResourceAttr(resourceName, "observability_configuration_revision", "1"), resource.TestCheckResourceAttr(resourceName, names.AttrStatus, string(types.ObservabilityConfigurationStatusActive)), diff --git a/internal/service/apprunner/service_endpoints_gen_test.go b/internal/service/apprunner/service_endpoints_gen_test.go index d941d44fef9f..c0c5e503885d 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/apprunner/service_test.go b/internal/service/apprunner/service_test.go index c8828bf419c3..efcdeef45fcf 100644 --- a/internal/service/apprunner/service_test.go +++ b/internal/service/apprunner/service_test.go @@ -37,8 +37,8 @@ func TestAccAppRunnerService_ImageRepository_basic(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckServiceExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, names.AttrServiceName, rName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "apprunner", regexache.MustCompile(fmt.Sprintf(`service/%s/.+`, rName))), - acctest.MatchResourceAttrRegionalARN(resourceName, "auto_scaling_configuration_arn", "apprunner", regexache.MustCompile(`autoscalingconfiguration/DefaultConfiguration/1/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "apprunner", regexache.MustCompile(fmt.Sprintf(`service/%s/.+`, rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, "auto_scaling_configuration_arn", "apprunner", regexache.MustCompile(`autoscalingconfiguration/DefaultConfiguration/1/.+`)), resource.TestCheckResourceAttr(resourceName, "encryption_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "health_check_configuration.#", "1"), resource.TestCheckResourceAttr(resourceName, "health_check_configuration.0.protocol", string(types.HealthCheckProtocolTcp)), diff --git a/internal/service/apprunner/vpc_connector_test.go b/internal/service/apprunner/vpc_connector_test.go index 184a44c31762..f2839134458e 100644 --- a/internal/service/apprunner/vpc_connector_test.go +++ b/internal/service/apprunner/vpc_connector_test.go @@ -35,7 +35,7 @@ func TestAccAppRunnerVPCConnector_basic(t *testing.T) { Config: testAccVPCConnectorConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckVPCConnectorExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "apprunner", regexache.MustCompile(fmt.Sprintf(`vpcconnector/%s/1/.+`, rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "apprunner", regexache.MustCompile(fmt.Sprintf(`vpcconnector/%s/1/.+`, rName))), resource.TestCheckResourceAttr(resourceName, "vpc_connector_name", rName), resource.TestCheckResourceAttr(resourceName, "subnets.#", "1"), resource.TestCheckResourceAttr(resourceName, "security_groups.#", "1"), diff --git a/internal/service/apprunner/vpc_ingress_connection_test.go b/internal/service/apprunner/vpc_ingress_connection_test.go index d059ca64c49f..db17da6f5646 100644 --- a/internal/service/apprunner/vpc_ingress_connection_test.go +++ b/internal/service/apprunner/vpc_ingress_connection_test.go @@ -38,7 +38,7 @@ func TestAccAppRunnerVPCIngressConnection_basic(t *testing.T) { Config: testAccVPCIngressConnectionConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckVPCIngressConnectionExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "apprunner", regexache.MustCompile(fmt.Sprintf(`vpcingressconnection/%s/.+`, rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "apprunner", regexache.MustCompile(fmt.Sprintf(`vpcingressconnection/%s/.+`, rName))), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, names.AttrStatus, string(types.VpcIngressConnectionStatusAvailable)), resource.TestCheckResourceAttrSet(resourceName, names.AttrDomainName), diff --git a/internal/service/appstream/service_endpoints_gen_test.go b/internal/service/appstream/service_endpoints_gen_test.go index a4daf567c526..dcba070f77f1 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/appstream/sweep.go b/internal/service/appstream/sweep.go index d3b67b1a57de..97a946bb2560 100644 --- a/internal/service/appstream/sweep.go +++ b/internal/service/appstream/sweep.go @@ -9,10 +9,10 @@ import ( "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/service/appstream" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-provider-aws/internal/sweep" "github.com/hashicorp/terraform-provider-aws/internal/sweep/awsv2" - "github.com/hashicorp/terraform-provider-aws/names" ) func RegisterSweepers() { @@ -39,7 +39,7 @@ func RegisterSweepers() { func sweepDirectoryConfigs(region string) error { ctx := sweep.Context(region) - if region == names.USWest1RegionID { + if region == endpoints.UsWest1RegionID { log.Printf("[WARN] Skipping AppStream Directory Config sweep for region: %s", region) return nil } @@ -87,7 +87,7 @@ func sweepDirectoryConfigs(region string) error { func sweepFleets(region string) error { ctx := sweep.Context(region) - if region == names.USWest1RegionID { + if region == endpoints.UsWest1RegionID { log.Printf("[WARN] Skipping AppStream Fleet sweep for region: %s", region) return nil } @@ -135,7 +135,7 @@ func sweepFleets(region string) error { func sweepImageBuilders(region string) error { ctx := sweep.Context(region) - if region == names.USWest1RegionID { + if region == endpoints.UsWest1RegionID { log.Printf("[WARN] Skipping AppStream Image Builder sweep for region: %s", region) return nil } @@ -183,7 +183,7 @@ func sweepImageBuilders(region string) error { func sweepStacks(region string) error { ctx := sweep.Context(region) - if region == names.USWest1RegionID { + if region == endpoints.UsWest1RegionID { log.Printf("[WARN] Skipping AppStream Stack sweep for region: %s", region) return nil } diff --git a/internal/service/appsync/datasource.go b/internal/service/appsync/datasource.go index b520af2976fd..1d92ae5c93a0 100644 --- a/internal/service/appsync/datasource.go +++ b/internal/service/appsync/datasource.go @@ -284,7 +284,7 @@ func resourceDataSource() *schema.Resource { func resourceDataSourceCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics conn := meta.(*conns.AWSClient).AppSyncClient(ctx) - region := meta.(*conns.AWSClient).Region + region := meta.(*conns.AWSClient).Region(ctx) apiID := d.Get("api_id").(string) name := d.Get(names.AttrName).(string) @@ -397,7 +397,7 @@ func resourceDataSourceRead(ctx context.Context, d *schema.ResourceData, meta in func resourceDataSourceUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics conn := meta.(*conns.AWSClient).AppSyncClient(ctx) - region := meta.(*conns.AWSClient).Region + region := meta.(*conns.AWSClient).Region(ctx) apiID, name, err := dataSourceParseResourceID(d.Id()) if err != nil { diff --git a/internal/service/appsync/datasource_test.go b/internal/service/appsync/datasource_test.go index 832a03e4917a..40b68fa510a6 100644 --- a/internal/service/appsync/datasource_test.go +++ b/internal/service/appsync/datasource_test.go @@ -35,7 +35,7 @@ func testAccDataSource_basic(t *testing.T) { Config: testAccDataSourceConfig_typeNone(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckExistsDataSource(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "appsync", regexache.MustCompile(fmt.Sprintf("apis/.+/datasources/%s", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appsync", regexache.MustCompile(fmt.Sprintf("apis/.+/datasources/%s", rName))), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), resource.TestCheckResourceAttr(resourceName, "dynamodb_config.#", "0"), resource.TestCheckResourceAttr(resourceName, "elasticsearch_config.#", "0"), diff --git a/internal/service/appsync/function_test.go b/internal/service/appsync/function_test.go index a944ecb13d10..9162e44053fe 100644 --- a/internal/service/appsync/function_test.go +++ b/internal/service/appsync/function_test.go @@ -38,7 +38,7 @@ func testAccFunction_basic(t *testing.T) { Config: testAccFunctionConfig_basic(rName1, rName2, acctest.Region()), Check: resource.ComposeTestCheckFunc( testAccCheckFunctionExists(ctx, resourceName, &config), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "appsync", regexache.MustCompile("apis/.+/functions/.+")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appsync", regexache.MustCompile("apis/.+/functions/.+")), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName2), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), resource.TestCheckResourceAttr(resourceName, "max_batch_size", "0"), diff --git a/internal/service/appsync/graphql_api.go b/internal/service/appsync/graphql_api.go index fa6b51f329dc..4fe10975da4c 100644 --- a/internal/service/appsync/graphql_api.go +++ b/internal/service/appsync/graphql_api.go @@ -337,7 +337,7 @@ func resourceGraphQLAPICreate(ctx context.Context, d *schema.ResourceData, meta } if v, ok := d.GetOk("additional_authentication_provider"); ok { - input.AdditionalAuthenticationProviders = expandAdditionalAuthenticationProviders(v.([]interface{}), meta.(*conns.AWSClient).Region) + input.AdditionalAuthenticationProviders = expandAdditionalAuthenticationProviders(v.([]interface{}), meta.(*conns.AWSClient).Region(ctx)) } if v, ok := d.GetOk("api_type"); ok { @@ -377,7 +377,7 @@ func resourceGraphQLAPICreate(ctx context.Context, d *schema.ResourceData, meta } if v, ok := d.GetOk("user_pool_config"); ok { - input.UserPoolConfig = expandUserPoolConfig(v.([]interface{}), meta.(*conns.AWSClient).Region) + input.UserPoolConfig = expandUserPoolConfig(v.([]interface{}), meta.(*conns.AWSClient).Region(ctx)) } if v, ok := d.GetOk("xray_enabled"); ok { @@ -468,7 +468,7 @@ func resourceGraphQLAPIUpdate(ctx context.Context, d *schema.ResourceData, meta } if v, ok := d.GetOk("additional_authentication_provider"); ok { - input.AdditionalAuthenticationProviders = expandAdditionalAuthenticationProviders(v.([]interface{}), meta.(*conns.AWSClient).Region) + input.AdditionalAuthenticationProviders = expandAdditionalAuthenticationProviders(v.([]interface{}), meta.(*conns.AWSClient).Region(ctx)) } if v, ok := d.GetOk("enhanced_metrics_config"); ok { @@ -504,7 +504,7 @@ func resourceGraphQLAPIUpdate(ctx context.Context, d *schema.ResourceData, meta } if v, ok := d.GetOk("user_pool_config"); ok { - input.UserPoolConfig = expandUserPoolConfig(v.([]interface{}), meta.(*conns.AWSClient).Region) + input.UserPoolConfig = expandUserPoolConfig(v.([]interface{}), meta.(*conns.AWSClient).Region(ctx)) } if v, ok := d.GetOk("xray_enabled"); ok { diff --git a/internal/service/appsync/graphql_api_test.go b/internal/service/appsync/graphql_api_test.go index 6a9de08c872e..de439e4857bc 100644 --- a/internal/service/appsync/graphql_api_test.go +++ b/internal/service/appsync/graphql_api_test.go @@ -37,7 +37,7 @@ func testAccGraphQLAPI_basic(t *testing.T) { Config: testAccGraphQLAPIConfig_authenticationType(rName, "API_KEY"), Check: resource.ComposeTestCheckFunc( testAccCheckGraphQLAPIExists(ctx, resourceName, &api1), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "appsync", regexache.MustCompile(`apis/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appsync", regexache.MustCompile(`apis/.+`)), resource.TestCheckResourceAttr(resourceName, "authentication_type", "API_KEY"), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "log_config.#", "0"), @@ -104,7 +104,7 @@ func testAccGraphQLAPI_schema(t *testing.T) { Config: testAccGraphQLAPIConfig_schema(rName), Check: resource.ComposeTestCheckFunc( testAccCheckGraphQLAPIExists(ctx, resourceName, &api1), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "appsync", regexache.MustCompile(`apis/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appsync", regexache.MustCompile(`apis/.+`)), resource.TestCheckResourceAttr(resourceName, "authentication_type", "API_KEY"), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "log_config.#", "0"), @@ -186,7 +186,7 @@ func testAccGraphQLAPI_AuthenticationType_apiKey(t *testing.T) { Config: testAccGraphQLAPIConfig_authenticationType(rName, "API_KEY"), Check: resource.ComposeTestCheckFunc( testAccCheckGraphQLAPIExists(ctx, resourceName, &api1), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "appsync", regexache.MustCompile(`apis/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appsync", regexache.MustCompile(`apis/.+`)), resource.TestCheckResourceAttr(resourceName, "authentication_type", "API_KEY"), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), ), @@ -216,7 +216,7 @@ func testAccGraphQLAPI_AuthenticationType_iam(t *testing.T) { Config: testAccGraphQLAPIConfig_authenticationType(rName, "AWS_IAM"), Check: resource.ComposeTestCheckFunc( testAccCheckGraphQLAPIExists(ctx, resourceName, &api1), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "appsync", regexache.MustCompile(`apis/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appsync", regexache.MustCompile(`apis/.+`)), resource.TestCheckResourceAttr(resourceName, "authentication_type", "AWS_IAM"), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), ), @@ -981,7 +981,7 @@ func testAccGraphQLAPI_AdditionalAuthentication_apiKey(t *testing.T) { Config: testAccGraphQLAPIConfig_additionalAuthAuthType(rName, "AWS_IAM", "API_KEY"), Check: resource.ComposeTestCheckFunc( testAccCheckGraphQLAPIExists(ctx, resourceName, &api1), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "appsync", regexache.MustCompile(`apis/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appsync", regexache.MustCompile(`apis/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "authentication_type", "AWS_IAM"), resource.TestCheckResourceAttr(resourceName, "additional_authentication_provider.#", "1"), @@ -1016,7 +1016,7 @@ func testAccGraphQLAPI_AdditionalAuthentication_iam(t *testing.T) { Config: testAccGraphQLAPIConfig_additionalAuthAuthType(rName, "API_KEY", "AWS_IAM"), Check: resource.ComposeTestCheckFunc( testAccCheckGraphQLAPIExists(ctx, resourceName, &api1), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "appsync", regexache.MustCompile(`apis/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appsync", regexache.MustCompile(`apis/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "authentication_type", "API_KEY"), resource.TestCheckResourceAttr(resourceName, "additional_authentication_provider.#", "1"), @@ -1052,7 +1052,7 @@ func testAccGraphQLAPI_AdditionalAuthentication_cognitoUserPools(t *testing.T) { Config: testAccGraphQLAPIConfig_additionalAuthUserPool(rName), Check: resource.ComposeTestCheckFunc( testAccCheckGraphQLAPIExists(ctx, resourceName, &api1), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "appsync", regexache.MustCompile(`apis/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appsync", regexache.MustCompile(`apis/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "authentication_type", "API_KEY"), resource.TestCheckResourceAttr(resourceName, "additional_authentication_provider.#", "1"), @@ -1088,7 +1088,7 @@ func testAccGraphQLAPI_AdditionalAuthentication_openIDConnect(t *testing.T) { Config: testAccGraphQLAPIConfig_additionalAuthOpenIdConnect(rName, "https://example.com"), Check: resource.ComposeTestCheckFunc( testAccCheckGraphQLAPIExists(ctx, resourceName, &api1), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "appsync", regexache.MustCompile(`apis/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appsync", regexache.MustCompile(`apis/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "authentication_type", "API_KEY"), resource.TestCheckResourceAttr(resourceName, "additional_authentication_provider.#", "1"), @@ -1125,7 +1125,7 @@ func testAccGraphQLAPI_AdditionalAuthentication_lambda(t *testing.T) { Config: testAccGraphQLAPIConfig_additionalAuthLambda(rName), Check: resource.ComposeTestCheckFunc( testAccCheckGraphQLAPIExists(ctx, resourceName, &api1), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "appsync", regexache.MustCompile(`apis/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appsync", regexache.MustCompile(`apis/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "authentication_type", "API_KEY"), resource.TestCheckResourceAttr(resourceName, "additional_authentication_provider.#", "1"), @@ -1165,7 +1165,7 @@ func testAccGraphQLAPI_AdditionalAuthentication_multiple(t *testing.T) { Config: testAccGraphQLAPIConfig_additionalAuthMultiple(rName, "https://example.com"), Check: resource.ComposeTestCheckFunc( testAccCheckGraphQLAPIExists(ctx, resourceName, &api1), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "appsync", regexache.MustCompile(`apis/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appsync", regexache.MustCompile(`apis/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "authentication_type", "API_KEY"), resource.TestCheckResourceAttr(resourceName, "additional_authentication_provider.#", "4"), diff --git a/internal/service/appsync/resolver_test.go b/internal/service/appsync/resolver_test.go index 4f0825136265..91074bc76f50 100644 --- a/internal/service/appsync/resolver_test.go +++ b/internal/service/appsync/resolver_test.go @@ -36,7 +36,7 @@ func testAccResolver_basic(t *testing.T) { Config: testAccResolverConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckResolverExists(ctx, resourceName, &resolver1), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "appsync", regexache.MustCompile("apis/.+/types/.+/resolvers/.+")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appsync", regexache.MustCompile("apis/.+/types/.+/resolvers/.+")), resource.TestCheckResourceAttr(resourceName, "data_source", rName), resource.TestCheckResourceAttrSet(resourceName, "request_template"), resource.TestCheckResourceAttr(resourceName, "max_batch_size", "0"), diff --git a/internal/service/appsync/service_endpoints_gen_test.go b/internal/service/appsync/service_endpoints_gen_test.go index 24404b45c8cc..864c9e759a18 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/appsync/source_api_association_test.go b/internal/service/appsync/source_api_association_test.go index 84f99f7e3f73..2ccb8a3b7628 100644 --- a/internal/service/appsync/source_api_association_test.go +++ b/internal/service/appsync/source_api_association_test.go @@ -48,7 +48,7 @@ func testAccAppSyncSourceAPIAssociation_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckSourceAPIAssociationExists(ctx, resourceName, &sourceapiassociation), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, rName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "appsync", regexache.MustCompile(`apis/.+/sourceApiAssociations/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appsync", regexache.MustCompile(`apis/.+/sourceApiAssociations/.+`)), ), }, { @@ -87,7 +87,7 @@ func testAccAppSyncSourceAPIAssociation_update(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckSourceAPIAssociationExists(ctx, resourceName, &sourceapiassociation), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, rName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "appsync", regexache.MustCompile(`apis/.+/sourceApiAssociations/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appsync", regexache.MustCompile(`apis/.+/sourceApiAssociations/.+`)), ), }, { @@ -96,7 +96,7 @@ func testAccAppSyncSourceAPIAssociation_update(t *testing.T) { testAccCheckSourceAPIAssociationExists(ctx, resourceName, &sourceapiassociationUpdated), testAccCheckSourceAPIAssociationNotRecreated(&sourceapiassociation, &sourceapiassociationUpdated), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, updateDesc), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "appsync", regexache.MustCompile(`apis/.+/sourceApiAssociations/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appsync", regexache.MustCompile(`apis/.+/sourceApiAssociations/.+`)), ), }, { diff --git a/internal/service/appsync/type_test.go b/internal/service/appsync/type_test.go index 4decf95f45da..05c7ce1acf20 100644 --- a/internal/service/appsync/type_test.go +++ b/internal/service/appsync/type_test.go @@ -36,7 +36,7 @@ func testAccType_basic(t *testing.T) { Config: testAccTypeConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckTypeExists(ctx, resourceName, &typ), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "appsync", regexache.MustCompile("apis/.+/types/.+")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "appsync", regexache.MustCompile("apis/.+/types/.+")), resource.TestCheckResourceAttrPair(resourceName, "api_id", "aws_appsync_graphql_api.test", names.AttrID), resource.TestCheckResourceAttr(resourceName, names.AttrFormat, "SDL"), resource.TestCheckResourceAttr(resourceName, names.AttrName, "Mutation"), diff --git a/internal/service/athena/data_catalog.go b/internal/service/athena/data_catalog.go index ef38bb1be740..d54c5d1d3a6f 100644 --- a/internal/service/athena/data_catalog.go +++ b/internal/service/athena/data_catalog.go @@ -128,9 +128,9 @@ func resourceDataCatalogRead(ctx context.Context, d *schema.ResourceData, meta i arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), Service: "athena", - AccountID: meta.(*conns.AWSClient).AccountID, + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("datacatalog/%s", d.Id()), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/athena/data_catalog_test.go b/internal/service/athena/data_catalog_test.go index e564aa7ddfab..e84079e72a20 100644 --- a/internal/service/athena/data_catalog_test.go +++ b/internal/service/athena/data_catalog_test.go @@ -33,7 +33,7 @@ func TestAccAthenaDataCatalog_basic(t *testing.T) { Config: testAccDataCatalogConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckDataCatalogExists(ctx, resourceName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "athena", fmt.Sprintf("datacatalog/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "athena", fmt.Sprintf("datacatalog/%s", rName)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, names.AttrType, "LAMBDA"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "A test data catalog"), diff --git a/internal/service/athena/service_endpoints_gen_test.go b/internal/service/athena/service_endpoints_gen_test.go index 3131e21d2e2d..97532e94cf21 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/athena/workgroup.go b/internal/service/athena/workgroup.go index 5006c9edf06d..7a417943ab7a 100644 --- a/internal/service/athena/workgroup.go +++ b/internal/service/athena/workgroup.go @@ -241,9 +241,9 @@ func resourceWorkGroupRead(ctx context.Context, d *schema.ResourceData, meta int arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), Service: "athena", - AccountID: meta.(*conns.AWSClient).AccountID, + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("workgroup/%s", d.Id()), } d.Set(names.AttrARN, arn.String()) diff --git a/internal/service/athena/workgroup_test.go b/internal/service/athena/workgroup_test.go index 9f867739895a..e367ac473243 100644 --- a/internal/service/athena/workgroup_test.go +++ b/internal/service/athena/workgroup_test.go @@ -37,7 +37,7 @@ func TestAccAthenaWorkGroup_basic(t *testing.T) { Config: testAccWorkGroupConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckWorkGroupExists(ctx, resourceName, &workgroup1), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "athena", fmt.Sprintf("workgroup/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "athena", fmt.Sprintf("workgroup/%s", rName)), resource.TestCheckResourceAttr(resourceName, "configuration.#", "1"), resource.TestCheckResourceAttr(resourceName, "configuration.0.bytes_scanned_cutoff_per_query", "0"), resource.TestCheckResourceAttr(resourceName, "configuration.0.enforce_workgroup_configuration", acctest.CtTrue), @@ -80,7 +80,7 @@ func TestAccAthenaWorkGroup_aclConfig(t *testing.T) { Config: testAccWorkGroupConfig_configurationResultConfigurationACL(rName), Check: resource.ComposeTestCheckFunc( testAccCheckWorkGroupExists(ctx, resourceName, &workgroup1), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "athena", fmt.Sprintf("workgroup/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "athena", fmt.Sprintf("workgroup/%s", rName)), resource.TestCheckResourceAttr(resourceName, "configuration.#", "1"), resource.TestCheckResourceAttr(resourceName, "configuration.0.result_configuration.#", "1"), resource.TestCheckResourceAttr(resourceName, "configuration.0.result_configuration.0.acl_configuration.#", "1"), @@ -456,7 +456,7 @@ func TestAccAthenaWorkGroup_requesterPaysEnabled(t *testing.T) { Config: testAccWorkGroupConfig_configurationRequesterPaysEnabled(rName), Check: resource.ComposeTestCheckFunc( testAccCheckWorkGroupExists(ctx, resourceName, &workgroup1), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "athena", fmt.Sprintf("workgroup/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "athena", fmt.Sprintf("workgroup/%s", rName)), resource.TestCheckResourceAttr(resourceName, "configuration.#", "1"), resource.TestCheckResourceAttr(resourceName, "configuration.0.requester_pays_enabled", acctest.CtTrue), ), @@ -471,7 +471,7 @@ func TestAccAthenaWorkGroup_requesterPaysEnabled(t *testing.T) { Config: testAccWorkGroupConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckWorkGroupExists(ctx, resourceName, &workgroup1), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "athena", fmt.Sprintf("workgroup/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "athena", fmt.Sprintf("workgroup/%s", rName)), resource.TestCheckResourceAttr(resourceName, "configuration.#", "1"), resource.TestCheckResourceAttr(resourceName, "configuration.0.requester_pays_enabled", acctest.CtFalse), ), diff --git a/internal/service/auditmanager/account_registration.go b/internal/service/auditmanager/account_registration.go index bb17e323cf29..f43e59dda7fa 100644 --- a/internal/service/auditmanager/account_registration.go +++ b/internal/service/auditmanager/account_registration.go @@ -58,7 +58,7 @@ func (r *resourceAccountRegistration) Schema(ctx context.Context, req resource.S func (r *resourceAccountRegistration) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) { conn := r.Meta().AuditManagerClient(ctx) // Registration is applied per region, so use this as the ID - id := r.Meta().Region + id := r.Meta().Region(ctx) var plan resourceAccountRegistrationData resp.Diagnostics.Append(req.Plan.Get(ctx, &plan)...) diff --git a/internal/service/auditmanager/assessment_test.go b/internal/service/auditmanager/assessment_test.go index 78c3d0e7efd6..e64132bb7a43 100644 --- a/internal/service/auditmanager/assessment_test.go +++ b/internal/service/auditmanager/assessment_test.go @@ -47,7 +47,7 @@ func TestAccAuditManagerAssessment_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "scope.#", "1"), resource.TestCheckResourceAttr(resourceName, "scope.0.aws_accounts.#", "1"), resource.TestCheckResourceAttr(resourceName, "scope.0.aws_services.#", "1"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "auditmanager", regexache.MustCompile(`assessment/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "auditmanager", regexache.MustCompile(`assessment/.+$`)), ), }, { diff --git a/internal/service/auditmanager/control_test.go b/internal/service/auditmanager/control_test.go index 18086418c334..23ea5d73ca7b 100644 --- a/internal/service/auditmanager/control_test.go +++ b/internal/service/auditmanager/control_test.go @@ -45,7 +45,7 @@ func TestAccAuditManagerControl_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "control_mapping_sources.0.source_name", rName), resource.TestCheckResourceAttr(resourceName, "control_mapping_sources.0.source_set_up_option", string(types.SourceSetUpOptionProceduralControlsMapping)), resource.TestCheckResourceAttr(resourceName, "control_mapping_sources.0.source_type", string(types.SourceTypeManual)), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "auditmanager", regexache.MustCompile(`control/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "auditmanager", regexache.MustCompile(`control/.+$`)), ), }, { diff --git a/internal/service/auditmanager/framework_test.go b/internal/service/auditmanager/framework_test.go index 6dbf8f3d2510..b87dd96c676a 100644 --- a/internal/service/auditmanager/framework_test.go +++ b/internal/service/auditmanager/framework_test.go @@ -44,7 +44,7 @@ func TestAccAuditManagerFramework_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "control_sets.#", "1"), resource.TestCheckResourceAttr(resourceName, "control_sets.0.name", rName), resource.TestCheckResourceAttr(resourceName, "control_sets.0.controls.#", "1"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "auditmanager", regexache.MustCompile(`assessmentFramework/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "auditmanager", regexache.MustCompile(`assessmentFramework/.+$`)), ), }, { diff --git a/internal/service/auditmanager/service_endpoints_gen_test.go b/internal/service/auditmanager/service_endpoints_gen_test.go index 5bc33b782696..e898e8d07e97 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/group_test.go b/internal/service/autoscaling/group_test.go index 46b28442347c..7f507d9ab9ba 100644 --- a/internal/service/autoscaling/group_test.go +++ b/internal/service/autoscaling/group_test.go @@ -73,7 +73,7 @@ func TestAccAutoScalingGroup_basic(t *testing.T) { Config: testAccGroupConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckGroupExists(ctx, resourceName, &group), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "autoscaling", regexache.MustCompile(fmt.Sprintf(`autoScalingGroup:.+:autoScalingGroupName/%s`, rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "autoscaling", regexache.MustCompile(fmt.Sprintf(`autoScalingGroup:.+:autoScalingGroupName/%s`, rName))), resource.TestCheckResourceAttr(resourceName, "availability_zones.#", "1"), resource.TestCheckTypeSetElemAttrPair(resourceName, "availability_zones.*", "data.aws_availability_zones.available", "names.0"), resource.TestCheckResourceAttr(resourceName, "capacity_rebalance", acctest.CtFalse), @@ -104,7 +104,7 @@ func TestAccAutoScalingGroup_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "placement_group", ""), resource.TestCheckResourceAttr(resourceName, "predicted_capacity", "0"), resource.TestCheckResourceAttr(resourceName, "protect_from_scale_in", acctest.CtFalse), - acctest.CheckResourceAttrGlobalARN(resourceName, "service_linked_role_arn", "iam", "role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling"), + acctest.CheckResourceAttrGlobalARN(ctx, resourceName, "service_linked_role_arn", "iam", "role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling"), resource.TestCheckResourceAttr(resourceName, "tag.#", "0"), resource.TestCheckNoResourceAttr(resourceName, "tags.#"), // "tags" removed at v5.0.0. resource.TestCheckResourceAttr(resourceName, "target_group_arns.#", "0"), @@ -301,7 +301,7 @@ func TestAccAutoScalingGroup_simple(t *testing.T) { Config: testAccGroupConfig_simple(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckGroupExists(ctx, resourceName, &group), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "autoscaling", regexache.MustCompile(fmt.Sprintf(`autoScalingGroup:.+:autoScalingGroupName/%s`, rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "autoscaling", regexache.MustCompile(fmt.Sprintf(`autoScalingGroup:.+:autoScalingGroupName/%s`, rName))), resource.TestCheckResourceAttr(resourceName, "availability_zones.#", "1"), resource.TestCheckTypeSetElemAttrPair(resourceName, "availability_zones.*", "data.aws_availability_zones.available", "names.0"), resource.TestCheckResourceAttr(resourceName, "capacity_rebalance", acctest.CtFalse), @@ -328,7 +328,7 @@ func TestAccAutoScalingGroup_simple(t *testing.T) { resource.TestCheckResourceAttr(resourceName, names.AttrNamePrefix, ""), resource.TestCheckResourceAttr(resourceName, "placement_group", ""), resource.TestCheckResourceAttr(resourceName, "protect_from_scale_in", acctest.CtFalse), - acctest.CheckResourceAttrGlobalARN(resourceName, "service_linked_role_arn", "iam", "role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling"), + acctest.CheckResourceAttrGlobalARN(ctx, resourceName, "service_linked_role_arn", "iam", "role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling"), resource.TestCheckResourceAttr(resourceName, "suspended_processes.#", "0"), resource.TestCheckResourceAttr(resourceName, "tag.#", "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "tag.*", map[string]string{ @@ -352,7 +352,7 @@ func TestAccAutoScalingGroup_simple(t *testing.T) { Config: testAccGroupConfig_simpleUpdated(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckGroupExists(ctx, resourceName, &group), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "autoscaling", regexache.MustCompile(fmt.Sprintf(`autoScalingGroup:.+:autoScalingGroupName/%s`, rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "autoscaling", regexache.MustCompile(fmt.Sprintf(`autoScalingGroup:.+:autoScalingGroupName/%s`, rName))), resource.TestCheckResourceAttr(resourceName, "availability_zones.#", "1"), resource.TestCheckTypeSetElemAttrPair(resourceName, "availability_zones.*", "data.aws_availability_zones.available", "names.0"), resource.TestCheckResourceAttr(resourceName, "capacity_rebalance", acctest.CtFalse), @@ -379,7 +379,7 @@ func TestAccAutoScalingGroup_simple(t *testing.T) { resource.TestCheckResourceAttr(resourceName, names.AttrNamePrefix, ""), resource.TestCheckResourceAttr(resourceName, "placement_group", ""), resource.TestCheckResourceAttr(resourceName, "protect_from_scale_in", acctest.CtTrue), - acctest.CheckResourceAttrGlobalARN(resourceName, "service_linked_role_arn", "iam", "role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling"), + acctest.CheckResourceAttrGlobalARN(ctx, resourceName, "service_linked_role_arn", "iam", "role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling"), resource.TestCheckResourceAttr(resourceName, "suspended_processes.#", "0"), resource.TestCheckResourceAttr(resourceName, "tag.#", "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "tag.*", map[string]string{ diff --git a/internal/service/autoscaling/groups_data_source.go b/internal/service/autoscaling/groups_data_source.go index bb435feb5c74..2e987d42093f 100644 --- a/internal/service/autoscaling/groups_data_source.go +++ b/internal/service/autoscaling/groups_data_source.go @@ -113,7 +113,7 @@ func dataSourceGroupsRead(ctx context.Context, d *schema.ResourceData, meta inte slices.Sort(arns) slices.Sort(nms) - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) d.Set(names.AttrARNs, arns) d.Set(names.AttrNames, nms) diff --git a/internal/service/autoscaling/launch_configuration_test.go b/internal/service/autoscaling/launch_configuration_test.go index 65d95e9e1146..9ebb5cd84f1d 100644 --- a/internal/service/autoscaling/launch_configuration_test.go +++ b/internal/service/autoscaling/launch_configuration_test.go @@ -39,7 +39,7 @@ func TestAccAutoScalingLaunchConfiguration_basic(t *testing.T) { Config: testAccLaunchConfigurationConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckLaunchConfigurationExists(ctx, resourceName, &conf), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "autoscaling", regexache.MustCompile(`launchConfiguration:.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "autoscaling", regexache.MustCompile(`launchConfiguration:.+`)), resource.TestCheckResourceAttr(resourceName, "associate_public_ip_address", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "ebs_block_device.#", "0"), resource.TestCheckResourceAttr(resourceName, "ebs_optimized", acctest.CtFalse), diff --git a/internal/service/autoscaling/service_endpoints_gen_test.go b/internal/service/autoscaling/service_endpoints_gen_test.go index 2053b0290636..61b5c4eb08d5 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 255cb6b423b0..4530d9f3a52b 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/global_settings.go b/internal/service/backup/global_settings.go index 8841be1cbb03..d92b211a8646 100644 --- a/internal/service/backup/global_settings.go +++ b/internal/service/backup/global_settings.go @@ -53,7 +53,7 @@ func resourceGlobalSettingsUpdate(ctx context.Context, d *schema.ResourceData, m } if d.IsNewResource() { - d.SetId(meta.(*conns.AWSClient).AccountID) + d.SetId(meta.(*conns.AWSClient).AccountID(ctx)) } return append(diags, resourceGlobalSettingsRead(ctx, d, meta)...) diff --git a/internal/service/backup/plan_test.go b/internal/service/backup/plan_test.go index 14a23b5bb060..122ed8ddf3b1 100644 --- a/internal/service/backup/plan_test.go +++ b/internal/service/backup/plan_test.go @@ -36,7 +36,7 @@ func TestAccBackupPlan_basic(t *testing.T) { Config: testAccPlanConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckPlanExists(ctx, resourceName, &plan), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "backup", regexache.MustCompile(`backup-plan:.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "backup", regexache.MustCompile(`backup-plan:.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ @@ -598,7 +598,7 @@ func TestAccBackupPlan_enableContinuousBackup(t *testing.T) { Config: testAccPlanConfig_enableContinuous(rName), Check: resource.ComposeTestCheckFunc( testAccCheckPlanExists(ctx, resourceName, &plan), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "backup", regexache.MustCompile(`backup-plan:.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "backup", regexache.MustCompile(`backup-plan:.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ diff --git a/internal/service/backup/region_settings.go b/internal/service/backup/region_settings.go index 181fb63eae73..acc556b082d0 100644 --- a/internal/service/backup/region_settings.go +++ b/internal/service/backup/region_settings.go @@ -65,7 +65,7 @@ func resourceRegionSettingsUpdate(ctx context.Context, d *schema.ResourceData, m } if d.IsNewResource() { - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) } return append(diags, resourceRegionSettingsRead(ctx, d, meta)...) diff --git a/internal/service/backup/restore_testing_plan_test.go b/internal/service/backup/restore_testing_plan_test.go index 4ec41fea99be..5338075b9dfe 100644 --- a/internal/service/backup/restore_testing_plan_test.go +++ b/internal/service/backup/restore_testing_plan_test.go @@ -158,7 +158,7 @@ func TestAccBackupRestoreTestingPlan_includeVaults(t *testing.T) { resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "recovery_point_selection.0.algorithm", "LATEST_WITHIN_WINDOW"), resource.TestCheckResourceAttr(resourceName, "recovery_point_selection.0.include_vaults.#", "1"), - acctest.CheckResourceAttrRegionalARN(resourceName, "recovery_point_selection.0.include_vaults.0", "backup", fmt.Sprintf("backup-vault:%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, "recovery_point_selection.0.include_vaults.0", "backup", fmt.Sprintf("backup-vault:%s", rName)), resource.TestCheckResourceAttr(resourceName, "recovery_point_selection.0.recovery_point_types.#", "1"), resource.TestCheckResourceAttr(resourceName, names.AttrScheduleExpression, "cron(0 12 ? * * *)"), ), @@ -196,7 +196,7 @@ func TestAccBackupRestoreTestingPlan_excludeVaults(t *testing.T) { resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "recovery_point_selection.0.algorithm", "LATEST_WITHIN_WINDOW"), resource.TestCheckResourceAttr(resourceName, "recovery_point_selection.0.exclude_vaults.#", "1"), - acctest.CheckResourceAttrRegionalARN(resourceName, "recovery_point_selection.0.exclude_vaults.0", "backup", fmt.Sprintf("backup-vault:%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, "recovery_point_selection.0.exclude_vaults.0", "backup", fmt.Sprintf("backup-vault:%s", rName)), resource.TestCheckResourceAttr(resourceName, "recovery_point_selection.0.recovery_point_types.#", "1"), resource.TestCheckResourceAttr(resourceName, names.AttrScheduleExpression, "cron(0 12 ? * * *)"), ), diff --git a/internal/service/backup/service_endpoints_gen_test.go b/internal/service/backup/service_endpoints_gen_test.go index a233c7cb97bb..bcf3977da01f 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/backup/vault_test.go b/internal/service/backup/vault_test.go index 012a9b9ac650..0ee8906635f6 100644 --- a/internal/service/backup/vault_test.go +++ b/internal/service/backup/vault_test.go @@ -43,7 +43,7 @@ func TestAccBackupVault_basic(t *testing.T) { Config: testAccVaultConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckVaultExists(ctx, resourceName, &v), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "backup", fmt.Sprintf("backup-vault:%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "backup", fmt.Sprintf("backup-vault:%s", rName)), resource.TestCheckResourceAttrSet(resourceName, names.AttrKMSKeyARN), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "recovery_points", "0"), @@ -233,14 +233,14 @@ func testAccCheckRunDynamoDBTableBackupJob(ctx context.Context, rName string) re iamRoleARN := arn.ARN{ Partition: client.Partition(ctx), Service: "iam", - AccountID: client.AccountID, + AccountID: client.AccountID(ctx), Resource: "role/service-role/AWSBackupDefaultServiceRole", }.String() resourceARN := arn.ARN{ Partition: client.Partition(ctx), Service: "dynamodb", - Region: client.Region, - AccountID: client.AccountID, + Region: client.Region(ctx), + AccountID: client.AccountID(ctx), Resource: fmt.Sprintf("table/%s", rName), }.String() output, err := conn.StartBackupJob(ctx, &backup.StartBackupJobInput{ diff --git a/internal/service/batch/compute_environment_test.go b/internal/service/batch/compute_environment_test.go index 93943799861e..e92062aabdae 100644 --- a/internal/service/batch/compute_environment_test.go +++ b/internal/service/batch/compute_environment_test.go @@ -182,7 +182,7 @@ func TestAccBatchComputeEnvironment_basic(t *testing.T) { Config: testAccComputeEnvironmentConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckComputeEnvironmentExists(ctx, resourceName, &ce), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "batch", fmt.Sprintf("compute-environment/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "batch", fmt.Sprintf("compute-environment/%s", rName)), resource.TestCheckResourceAttr(resourceName, "compute_environment_name", rName), resource.TestCheckResourceAttr(resourceName, "compute_environment_name_prefix", ""), resource.TestCheckResourceAttr(resourceName, "compute_resources.#", "0"), @@ -334,7 +334,7 @@ func TestAccBatchComputeEnvironment_createEC2(t *testing.T) { Config: testAccComputeEnvironmentConfig_ec2(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckComputeEnvironmentExists(ctx, resourceName, &ce), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "batch", fmt.Sprintf("compute-environment/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "batch", fmt.Sprintf("compute-environment/%s", rName)), resource.TestCheckResourceAttr(resourceName, "compute_environment_name", rName), resource.TestCheckResourceAttr(resourceName, "compute_environment_name_prefix", ""), resource.TestCheckResourceAttr(resourceName, "compute_resources.#", "1"), @@ -393,7 +393,7 @@ func TestAccBatchComputeEnvironment_updatePolicyCreate(t *testing.T) { Config: testAccComputeEnvironmentConfig_ec2UpdatePolicyCreate(rName, 30, false), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckComputeEnvironmentExists(ctx, resourceName, &ce), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "batch", fmt.Sprintf("compute-environment/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "batch", fmt.Sprintf("compute-environment/%s", rName)), resource.TestCheckResourceAttr(resourceName, "compute_environment_name", rName), resource.TestCheckResourceAttr(resourceName, "compute_resources.0.max_vcpus", "4"), resource.TestCheckResourceAttr(resourceName, "compute_resources.0.allocation_strategy", "BEST_FIT_PROGRESSIVE"), @@ -412,7 +412,7 @@ func TestAccBatchComputeEnvironment_updatePolicyCreate(t *testing.T) { Config: testAccComputeEnvironmentConfig_ec2UpdatePolicyCreate(rName, 60, true), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckComputeEnvironmentExists(ctx, resourceName, &ce), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "batch", fmt.Sprintf("compute-environment/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "batch", fmt.Sprintf("compute-environment/%s", rName)), resource.TestCheckResourceAttr(resourceName, "compute_environment_name", rName), resource.TestCheckResourceAttr(resourceName, "compute_resources.0.max_vcpus", "4"), resource.TestCheckResourceAttr(resourceName, "compute_resources.0.allocation_strategy", "BEST_FIT_PROGRESSIVE"), @@ -442,7 +442,7 @@ func TestAccBatchComputeEnvironment_updatePolicyUpdate(t *testing.T) { Config: testAccComputeEnvironmentConfig_ec2UpdatePolicyOmitted(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckComputeEnvironmentExists(ctx, resourceName, &ce), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "batch", fmt.Sprintf("compute-environment/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "batch", fmt.Sprintf("compute-environment/%s", rName)), resource.TestCheckResourceAttr(resourceName, "compute_environment_name", rName), resource.TestCheckResourceAttr(resourceName, "compute_resources.0.max_vcpus", "4"), resource.TestCheckResourceAttr(resourceName, "compute_resources.0.allocation_strategy", "BEST_FIT_PROGRESSIVE"), @@ -458,7 +458,7 @@ func TestAccBatchComputeEnvironment_updatePolicyUpdate(t *testing.T) { Config: testAccComputeEnvironmentConfig_ec2UpdatePolicyCreate(rName, 60, true), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckComputeEnvironmentExists(ctx, resourceName, &ce), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "batch", fmt.Sprintf("compute-environment/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "batch", fmt.Sprintf("compute-environment/%s", rName)), resource.TestCheckResourceAttr(resourceName, "compute_environment_name", rName), resource.TestCheckResourceAttr(resourceName, "compute_resources.0.max_vcpus", "4"), resource.TestCheckResourceAttr(resourceName, "compute_resources.0.allocation_strategy", "BEST_FIT_PROGRESSIVE"), @@ -499,7 +499,7 @@ func TestAccBatchComputeEnvironment_CreateEC2DesiredVCPUsEC2KeyPairImageID_compu Config: testAccComputeEnvironmentConfig_ec2DesiredVCPUsEC2KeyPairImageIDAndResourcesTags(rName, publicKey), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckComputeEnvironmentExists(ctx, resourceName, &ce), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "batch", fmt.Sprintf("compute-environment/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "batch", fmt.Sprintf("compute-environment/%s", rName)), resource.TestCheckResourceAttr(resourceName, "compute_environment_name", rName), resource.TestCheckResourceAttr(resourceName, "compute_environment_name_prefix", ""), resource.TestCheckResourceAttr(resourceName, "compute_resources.#", "1"), @@ -561,7 +561,7 @@ func TestAccBatchComputeEnvironment_createSpot(t *testing.T) { Config: testAccComputeEnvironmentConfig_spot(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckComputeEnvironmentExists(ctx, resourceName, &ce), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "batch", fmt.Sprintf("compute-environment/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "batch", fmt.Sprintf("compute-environment/%s", rName)), resource.TestCheckResourceAttr(resourceName, "compute_environment_name", rName), resource.TestCheckResourceAttr(resourceName, "compute_environment_name_prefix", ""), resource.TestCheckResourceAttr(resourceName, "compute_resources.#", "1"), @@ -622,7 +622,7 @@ func TestAccBatchComputeEnvironment_CreateSpotAllocationStrategy_bidPercentage(t Config: testAccComputeEnvironmentConfig_spotAllocationStrategyAndBidPercentage(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckComputeEnvironmentExists(ctx, resourceName, &ce), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "batch", fmt.Sprintf("compute-environment/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "batch", fmt.Sprintf("compute-environment/%s", rName)), resource.TestCheckResourceAttr(resourceName, "compute_environment_name", rName), resource.TestCheckResourceAttr(resourceName, "compute_environment_name_prefix", ""), resource.TestCheckResourceAttr(resourceName, "compute_resources.#", "1"), @@ -681,7 +681,7 @@ func TestAccBatchComputeEnvironment_createFargate(t *testing.T) { Config: testAccComputeEnvironmentConfig_fargate(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckComputeEnvironmentExists(ctx, resourceName, &ce), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "batch", fmt.Sprintf("compute-environment/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "batch", fmt.Sprintf("compute-environment/%s", rName)), resource.TestCheckResourceAttr(resourceName, "compute_environment_name", rName), resource.TestCheckResourceAttr(resourceName, "compute_environment_name_prefix", ""), resource.TestCheckResourceAttr(resourceName, "compute_resources.#", "1"), @@ -739,7 +739,7 @@ func TestAccBatchComputeEnvironment_createFargateSpot(t *testing.T) { Config: testAccComputeEnvironmentConfig_fargateSpot(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckComputeEnvironmentExists(ctx, resourceName, &ce), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "batch", fmt.Sprintf("compute-environment/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "batch", fmt.Sprintf("compute-environment/%s", rName)), resource.TestCheckResourceAttr(resourceName, "compute_environment_name", rName), resource.TestCheckResourceAttr(resourceName, "compute_environment_name_prefix", ""), resource.TestCheckResourceAttr(resourceName, "compute_resources.#", "1"), @@ -795,7 +795,7 @@ func TestAccBatchComputeEnvironment_updateState(t *testing.T) { Config: testAccComputeEnvironmentConfig_state(rName, "ENABLED"), Check: resource.ComposeTestCheckFunc( testAccCheckComputeEnvironmentExists(ctx, resourceName, &ce), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "batch", fmt.Sprintf("compute-environment/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "batch", fmt.Sprintf("compute-environment/%s", rName)), resource.TestCheckResourceAttr(resourceName, "compute_environment_name", rName), resource.TestCheckResourceAttr(resourceName, "compute_environment_name_prefix", ""), resource.TestCheckResourceAttr(resourceName, "compute_resources.#", "0"), @@ -812,7 +812,7 @@ func TestAccBatchComputeEnvironment_updateState(t *testing.T) { Config: testAccComputeEnvironmentConfig_state(rName, "disabled"), Check: resource.ComposeTestCheckFunc( testAccCheckComputeEnvironmentExists(ctx, resourceName, &ce), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "batch", fmt.Sprintf("compute-environment/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "batch", fmt.Sprintf("compute-environment/%s", rName)), resource.TestCheckResourceAttr(resourceName, "compute_environment_name", rName), resource.TestCheckResourceAttr(resourceName, "compute_environment_name_prefix", ""), resource.TestCheckResourceAttr(resourceName, "compute_resources.#", "0"), @@ -854,7 +854,7 @@ func TestAccBatchComputeEnvironment_updateServiceRole(t *testing.T) { Config: testAccComputeEnvironmentConfig_fargate(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckComputeEnvironmentExists(ctx, resourceName, &ce), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "batch", fmt.Sprintf("compute-environment/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "batch", fmt.Sprintf("compute-environment/%s", rName)), resource.TestCheckResourceAttr(resourceName, "compute_environment_name", rName), resource.TestCheckResourceAttr(resourceName, "compute_environment_name_prefix", ""), resource.TestCheckResourceAttr(resourceName, "compute_resources.#", "1"), @@ -888,7 +888,7 @@ func TestAccBatchComputeEnvironment_updateServiceRole(t *testing.T) { Config: testAccComputeEnvironmentConfig_fargateUpdatedServiceRole(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckComputeEnvironmentExists(ctx, resourceName, &ce), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "batch", fmt.Sprintf("compute-environment/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "batch", fmt.Sprintf("compute-environment/%s", rName)), resource.TestCheckResourceAttr(resourceName, "compute_environment_name", rName), resource.TestCheckResourceAttr(resourceName, "compute_environment_name_prefix", ""), resource.TestCheckResourceAttr(resourceName, "compute_resources.#", "1"), @@ -949,7 +949,7 @@ func TestAccBatchComputeEnvironment_defaultServiceRole(t *testing.T) { Config: testAccComputeEnvironmentConfig_fargateDefaultServiceRole(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckComputeEnvironmentExists(ctx, resourceName, &ce), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "batch", fmt.Sprintf("compute-environment/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "batch", fmt.Sprintf("compute-environment/%s", rName)), resource.TestCheckResourceAttr(resourceName, "compute_environment_name", rName), resource.TestCheckResourceAttr(resourceName, "compute_environment_name_prefix", ""), resource.TestCheckResourceAttr(resourceName, "compute_resources.#", "1"), @@ -971,7 +971,7 @@ func TestAccBatchComputeEnvironment_defaultServiceRole(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "compute_resources.0.tags.%", "0"), resource.TestCheckResourceAttr(resourceName, "compute_resources.0.type", "FARGATE"), resource.TestCheckResourceAttrSet(resourceName, "ecs_cluster_arn"), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrServiceRole, "iam", regexache.MustCompile(`role/aws-service-role/batch`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrServiceRole, "iam", regexache.MustCompile(`role/aws-service-role/batch`)), resource.TestCheckResourceAttr(resourceName, names.AttrState, "ENABLED"), resource.TestCheckResourceAttrSet(resourceName, names.AttrStatus), resource.TestCheckResourceAttrSet(resourceName, names.AttrStatusReason), @@ -1008,7 +1008,7 @@ func TestAccBatchComputeEnvironment_ComputeResources_minVCPUs(t *testing.T) { Config: testAccComputeEnvironmentConfig_resourcesMaxVCPUsMinVCPUs(rName, 4, 0), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckComputeEnvironmentExists(ctx, resourceName, &ce), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "batch", fmt.Sprintf("compute-environment/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "batch", fmt.Sprintf("compute-environment/%s", rName)), resource.TestCheckResourceAttr(resourceName, "compute_environment_name", rName), resource.TestCheckResourceAttr(resourceName, "compute_environment_name_prefix", ""), resource.TestCheckResourceAttr(resourceName, "compute_resources.#", "1"), @@ -1043,7 +1043,7 @@ func TestAccBatchComputeEnvironment_ComputeResources_minVCPUs(t *testing.T) { Config: testAccComputeEnvironmentConfig_resourcesMaxVCPUsMinVCPUs(rName, 4, 4), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckComputeEnvironmentExists(ctx, resourceName, &ce), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "batch", fmt.Sprintf("compute-environment/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "batch", fmt.Sprintf("compute-environment/%s", rName)), resource.TestCheckResourceAttr(resourceName, "compute_environment_name", rName), resource.TestCheckResourceAttr(resourceName, "compute_environment_name_prefix", ""), resource.TestCheckResourceAttr(resourceName, "compute_resources.#", "1"), @@ -1078,7 +1078,7 @@ func TestAccBatchComputeEnvironment_ComputeResources_minVCPUs(t *testing.T) { Config: testAccComputeEnvironmentConfig_resourcesMaxVCPUsMinVCPUs(rName, 4, 2), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckComputeEnvironmentExists(ctx, resourceName, &ce), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "batch", fmt.Sprintf("compute-environment/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "batch", fmt.Sprintf("compute-environment/%s", rName)), resource.TestCheckResourceAttr(resourceName, "compute_environment_name", rName), resource.TestCheckResourceAttr(resourceName, "compute_environment_name_prefix", ""), resource.TestCheckResourceAttr(resourceName, "compute_resources.#", "1"), @@ -1138,7 +1138,7 @@ func TestAccBatchComputeEnvironment_ComputeResources_maxVCPUs(t *testing.T) { Config: testAccComputeEnvironmentConfig_resourcesMaxVCPUsMinVCPUs(rName, 4, 0), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckComputeEnvironmentExists(ctx, resourceName, &ce), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "batch", fmt.Sprintf("compute-environment/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "batch", fmt.Sprintf("compute-environment/%s", rName)), resource.TestCheckResourceAttr(resourceName, "compute_environment_name", rName), resource.TestCheckResourceAttr(resourceName, "compute_environment_name_prefix", ""), resource.TestCheckResourceAttr(resourceName, "compute_resources.#", "1"), @@ -1173,7 +1173,7 @@ func TestAccBatchComputeEnvironment_ComputeResources_maxVCPUs(t *testing.T) { Config: testAccComputeEnvironmentConfig_resourcesMaxVCPUsMinVCPUs(rName, 8, 0), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckComputeEnvironmentExists(ctx, resourceName, &ce), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "batch", fmt.Sprintf("compute-environment/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "batch", fmt.Sprintf("compute-environment/%s", rName)), resource.TestCheckResourceAttr(resourceName, "compute_environment_name", rName), resource.TestCheckResourceAttr(resourceName, "compute_environment_name_prefix", ""), resource.TestCheckResourceAttr(resourceName, "compute_resources.#", "1"), @@ -1208,7 +1208,7 @@ func TestAccBatchComputeEnvironment_ComputeResources_maxVCPUs(t *testing.T) { Config: testAccComputeEnvironmentConfig_resourcesMaxVCPUsMinVCPUs(rName, 2, 0), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckComputeEnvironmentExists(ctx, resourceName, &ce), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "batch", fmt.Sprintf("compute-environment/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "batch", fmt.Sprintf("compute-environment/%s", rName)), resource.TestCheckResourceAttr(resourceName, "compute_environment_name", rName), resource.TestCheckResourceAttr(resourceName, "compute_environment_name_prefix", ""), resource.TestCheckResourceAttr(resourceName, "compute_resources.#", "1"), @@ -1269,7 +1269,7 @@ func TestAccBatchComputeEnvironment_ec2Configuration(t *testing.T) { Config: testAccComputeEnvironmentConfig_ec2Configuration(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckComputeEnvironmentExists(ctx, resourceName, &ce), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "batch", fmt.Sprintf("compute-environment/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "batch", fmt.Sprintf("compute-environment/%s", rName)), resource.TestCheckResourceAttr(resourceName, "compute_environment_name", rName), resource.TestCheckResourceAttr(resourceName, "compute_environment_name_prefix", ""), resource.TestCheckResourceAttr(resourceName, "compute_resources.#", "1"), @@ -1334,7 +1334,7 @@ func TestAccBatchComputeEnvironment_ec2ConfigurationPlacementGroup(t *testing.T) Config: testAccComputeEnvironmentConfig_ec2ConfigurationPlacementGroup(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckComputeEnvironmentExists(ctx, resourceName, &ce), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "batch", fmt.Sprintf("compute-environment/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "batch", fmt.Sprintf("compute-environment/%s", rName)), resource.TestCheckResourceAttr(resourceName, "compute_environment_name", rName), resource.TestCheckResourceAttr(resourceName, "compute_environment_name_prefix", ""), resource.TestCheckResourceAttr(resourceName, "compute_resources.#", "1"), @@ -1400,7 +1400,7 @@ func TestAccBatchComputeEnvironment_launchTemplate(t *testing.T) { Config: testAccComputeEnvironmentConfig_launchTemplate(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckComputeEnvironmentExists(ctx, resourceName, &ce), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "batch", fmt.Sprintf("compute-environment/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "batch", fmt.Sprintf("compute-environment/%s", rName)), resource.TestCheckResourceAttr(resourceName, "compute_environment_name", rName), resource.TestCheckResourceAttr(resourceName, "compute_environment_name_prefix", ""), resource.TestCheckResourceAttr(resourceName, "compute_resources.#", "1"), @@ -1464,7 +1464,7 @@ func TestAccBatchComputeEnvironment_updateLaunchTemplate(t *testing.T) { Config: testAccComputeEnvironmentConfig_updateLaunchTemplateInExisting(rName, "$Default"), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckComputeEnvironmentExists(ctx, resourceName, &ce), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "batch", fmt.Sprintf("compute-environment/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "batch", fmt.Sprintf("compute-environment/%s", rName)), resource.TestCheckResourceAttr(resourceName, "compute_environment_name", rName), resource.TestCheckResourceAttr(resourceName, "compute_environment_name_prefix", ""), resource.TestCheckResourceAttr(resourceName, "compute_resources.#", "1"), @@ -1502,7 +1502,7 @@ func TestAccBatchComputeEnvironment_updateLaunchTemplate(t *testing.T) { Config: testAccComputeEnvironmentConfig_updateLaunchTemplateInExisting(rName, "$Latest"), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckComputeEnvironmentExists(ctx, resourceName, &ce), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "batch", fmt.Sprintf("compute-environment/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "batch", fmt.Sprintf("compute-environment/%s", rName)), resource.TestCheckResourceAttr(resourceName, "compute_environment_name", rName), resource.TestCheckResourceAttr(resourceName, "compute_environment_name_prefix", ""), resource.TestCheckResourceAttr(resourceName, "compute_resources.#", "1"), @@ -1567,7 +1567,7 @@ func TestAccBatchComputeEnvironment_UpdateSecurityGroupsAndSubnets_fargate(t *te Config: testAccComputeEnvironmentConfig_fargate(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckComputeEnvironmentExists(ctx, resourceName, &ce), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "batch", fmt.Sprintf("compute-environment/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "batch", fmt.Sprintf("compute-environment/%s", rName)), resource.TestCheckResourceAttr(resourceName, "compute_environment_name", rName), resource.TestCheckResourceAttr(resourceName, "compute_environment_name_prefix", ""), resource.TestCheckResourceAttr(resourceName, "compute_resources.#", "1"), @@ -1601,7 +1601,7 @@ func TestAccBatchComputeEnvironment_UpdateSecurityGroupsAndSubnets_fargate(t *te Config: testAccComputeEnvironmentConfig_fargateUpdatedSecurityGroupsAndSubnets(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckComputeEnvironmentExists(ctx, resourceName, &ce), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "batch", fmt.Sprintf("compute-environment/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "batch", fmt.Sprintf("compute-environment/%s", rName)), resource.TestCheckResourceAttr(resourceName, "compute_environment_name", rName), resource.TestCheckResourceAttr(resourceName, "compute_environment_name_prefix", ""), resource.TestCheckResourceAttr(resourceName, "compute_resources.#", "1"), @@ -1688,7 +1688,7 @@ func TestAccBatchComputeEnvironment_updateEC2(t *testing.T) { Config: testAccComputeenvironmentConfig_ec2PreUpdate(rName, publicKey), Check: resource.ComposeTestCheckFunc( testAccCheckComputeEnvironmentExists(ctx, resourceName, &ce), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "batch", fmt.Sprintf("compute-environment/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "batch", fmt.Sprintf("compute-environment/%s", rName)), resource.TestCheckResourceAttr(resourceName, "compute_environment_name", rName), resource.TestCheckResourceAttr(resourceName, "compute_environment_name_prefix", ""), resource.TestCheckResourceAttr(resourceName, "compute_resources.#", "1"), @@ -1724,7 +1724,7 @@ func TestAccBatchComputeEnvironment_updateEC2(t *testing.T) { Config: testAccComputeenvironmentConfig_ec2Update(rName, publicKey), Check: resource.ComposeTestCheckFunc( testAccCheckComputeEnvironmentExists(ctx, resourceName, &ce), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "batch", fmt.Sprintf("compute-environment/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "batch", fmt.Sprintf("compute-environment/%s", rName)), resource.TestCheckResourceAttr(resourceName, "compute_environment_name", rName), resource.TestCheckResourceAttr(resourceName, "compute_environment_name_prefix", ""), resource.TestCheckResourceAttr(resourceName, "compute_resources.#", "1"), @@ -1764,7 +1764,7 @@ func TestAccBatchComputeEnvironment_updateEC2(t *testing.T) { Config: testAccComputeenvironmentConfig_ec2PreUpdate(rName, publicKey), Check: resource.ComposeTestCheckFunc( testAccCheckComputeEnvironmentExists(ctx, resourceName, &ce), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "batch", fmt.Sprintf("compute-environment/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "batch", fmt.Sprintf("compute-environment/%s", rName)), resource.TestCheckResourceAttr(resourceName, "compute_environment_name", rName), resource.TestCheckResourceAttr(resourceName, "compute_environment_name_prefix", ""), resource.TestCheckResourceAttr(resourceName, "compute_resources.#", "1"), diff --git a/internal/service/batch/eks_properties.go b/internal/service/batch/eks_properties.go new file mode 100644 index 000000000000..71e94def5d1f --- /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 000000000000..f8633cf400ac --- /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 76b02713eb39..15efdbeb9044 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 0823b3b0f766..ed591698a200 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_data_source_test.go b/internal/service/batch/job_definition_data_source_test.go index e64f0795008d..ef4a258cf336 100644 --- a/internal/service/batch/job_definition_data_source_test.go +++ b/internal/service/batch/job_definition_data_source_test.go @@ -67,7 +67,7 @@ func TestAccBatchJobDefinitionDataSource_basicARN(t *testing.T) { resource.TestCheckResourceAttr(dataSourceName, "retry_strategy.0.attempts", "10"), resource.TestCheckResourceAttr(dataSourceName, "revision", "1"), resource.TestCheckResourceAttr(dataSourceName, "revision", "1"), - acctest.MatchResourceAttrRegionalARN(dataSourceName, names.AttrARN, "batch", regexache.MustCompile(fmt.Sprintf(`job-definition/%s:\d+`, rName))), + acctest.MatchResourceAttrRegionalARN(ctx, dataSourceName, names.AttrARN, "batch", regexache.MustCompile(fmt.Sprintf(`job-definition/%s:\d+`, rName))), ), }, { diff --git a/internal/service/batch/job_definition_test.go b/internal/service/batch/job_definition_test.go index 07bada9a3b35..6e04bd9ece5e 100644 --- a/internal/service/batch/job_definition_test.go +++ b/internal/service/batch/job_definition_test.go @@ -44,8 +44,8 @@ func TestAccBatchJobDefinition_basic(t *testing.T) { Config: testAccJobDefinitionConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckJobDefinitionExists(ctx, resourceName, &jd), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "batch", regexache.MustCompile(fmt.Sprintf(`job-definition/%s:\d+`, rName))), - acctest.MatchResourceAttrRegionalARN(resourceName, "arn_prefix", "batch", regexache.MustCompile(fmt.Sprintf(`job-definition/%s`, rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "batch", regexache.MustCompile(fmt.Sprintf(`job-definition/%s:\d+`, rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, "arn_prefix", "batch", regexache.MustCompile(fmt.Sprintf(`job-definition/%s`, rName))), acctest.CheckResourceAttrEquivalentJSON(resourceName, "container_properties", `{ "command": ["echo", "test"], "image": "busybox", @@ -99,8 +99,8 @@ func TestAccBatchJobDefinition_attributes(t *testing.T) { Config: testAccJobDefinitionConfig_attributes(rName, 2, true, 3, 120, false), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckJobDefinitionExists(ctx, resourceName, &jd), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "batch", regexache.MustCompile(fmt.Sprintf(`job-definition/%s:1`, rName))), - acctest.MatchResourceAttrRegionalARN(resourceName, "arn_prefix", "batch", regexache.MustCompile(fmt.Sprintf(`job-definition/%s`, rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "batch", regexache.MustCompile(fmt.Sprintf(`job-definition/%s:1`, rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, "arn_prefix", "batch", regexache.MustCompile(fmt.Sprintf(`job-definition/%s`, rName))), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "parameters.%", "0"), resource.TestCheckResourceAttr(resourceName, "platform_capabilities.#", "1"), @@ -120,7 +120,7 @@ func TestAccBatchJobDefinition_attributes(t *testing.T) { Config: testAccJobDefinitionConfig_attributes(rName, 2, true, 4, 120, false), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckJobDefinitionExists(ctx, resourceName, &jd), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "batch", regexache.MustCompile(fmt.Sprintf(`job-definition/%s:2`, rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "batch", regexache.MustCompile(fmt.Sprintf(`job-definition/%s:2`, rName))), testAccCheckJobDefinitionPreviousRegistered(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, "revision", "2"), ), @@ -130,8 +130,8 @@ func TestAccBatchJobDefinition_attributes(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckJobDefinitionExists(ctx, resourceName, &jd), testAccCheckJobDefinitionPreviousDeregistered(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "batch", regexache.MustCompile(fmt.Sprintf(`job-definition/%s:3`, rName))), - acctest.MatchResourceAttrRegionalARN(resourceName, "arn_prefix", "batch", regexache.MustCompile(fmt.Sprintf(`job-definition/%s`, rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "batch", regexache.MustCompile(fmt.Sprintf(`job-definition/%s:3`, rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, "arn_prefix", "batch", regexache.MustCompile(fmt.Sprintf(`job-definition/%s`, rName))), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "parameters.%", "0"), resource.TestCheckResourceAttr(resourceName, "platform_capabilities.#", "0"), @@ -155,8 +155,8 @@ func TestAccBatchJobDefinition_attributes(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckJobDefinitionExists(ctx, resourceName, &jd), testAccCheckJobDefinitionPreviousDeregistered(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "batch", regexache.MustCompile(fmt.Sprintf(`job-definition/%s:\d+`, rName))), - acctest.MatchResourceAttrRegionalARN(resourceName, "arn_prefix", "batch", regexache.MustCompile(fmt.Sprintf(`job-definition/%s`, rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "batch", regexache.MustCompile(fmt.Sprintf(`job-definition/%s:\d+`, rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, "arn_prefix", "batch", regexache.MustCompile(fmt.Sprintf(`job-definition/%s`, rName))), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "parameters.%", "0"), resource.TestCheckResourceAttr(resourceName, "platform_capabilities.#", "1"), @@ -216,7 +216,7 @@ func TestAccBatchJobDefinition_PlatformCapabilities_ec2(t *testing.T) { Config: testAccJobDefinitionConfig_capabilitiesEC2(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckJobDefinitionExists(ctx, resourceName, &jd), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "batch", regexache.MustCompile(fmt.Sprintf(`job-definition/%s:\d+`, rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "batch", regexache.MustCompile(fmt.Sprintf(`job-definition/%s:\d+`, rName))), acctest.CheckResourceAttrEquivalentJSON(resourceName, "container_properties", `{ "command": ["echo", "test"], "image": "busybox", @@ -269,7 +269,7 @@ func TestAccBatchJobDefinition_PlatformCapabilitiesFargate_containerPropertiesDe Config: testAccJobDefinitionConfig_capabilitiesFargateContainerPropertiesDefaults(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckJobDefinitionExists(ctx, resourceName, &jd), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "batch", regexache.MustCompile(fmt.Sprintf(`job-definition/%s:\d+`, rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "batch", regexache.MustCompile(fmt.Sprintf(`job-definition/%s:\d+`, rName))), acctest.CheckResourceAttrJMES(resourceName, "container_properties", "length(command)", "0"), acctest.CheckResourceAttrJMESPair(resourceName, "container_properties", "executionRoleArn", "aws_iam_role.ecs_task_execution_role", names.AttrARN), acctest.CheckResourceAttrJMES(resourceName, "container_properties", "fargatePlatformConfiguration.platformVersion", "LATEST"), @@ -316,7 +316,7 @@ func TestAccBatchJobDefinition_PlatformCapabilities_fargate(t *testing.T) { Config: testAccJobDefinitionConfig_capabilitiesFargate(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckJobDefinitionExists(ctx, resourceName, &jd), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "batch", regexache.MustCompile(fmt.Sprintf(`job-definition/%s:\d+`, rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "batch", regexache.MustCompile(fmt.Sprintf(`job-definition/%s:\d+`, rName))), acctest.CheckResourceAttrJMESPair(resourceName, "container_properties", "executionRoleArn", "aws_iam_role.ecs_task_execution_role", names.AttrARN), acctest.CheckResourceAttrJMES(resourceName, "container_properties", "fargatePlatformConfiguration.platformVersion", "LATEST"), acctest.CheckResourceAttrJMES(resourceName, "container_properties", "networkConfiguration.assignPublicIp", "DISABLED"), @@ -476,14 +476,14 @@ func TestAccBatchJobDefinition_ContainerProperties_minorUpdate(t *testing.T) { Config: testAccJobDefinitionConfig_containerProperties(rName, "-la"), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckJobDefinitionExists(ctx, resourceName, &jd), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "batch", regexache.MustCompile(fmt.Sprintf(`job-definition/%s:1`, rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "batch", regexache.MustCompile(fmt.Sprintf(`job-definition/%s:1`, rName))), ), }, { Config: testAccJobDefinitionConfig_containerProperties(rName, "-lah"), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckJobDefinitionExists(ctx, resourceName, &jd), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "batch", regexache.MustCompile(fmt.Sprintf(`job-definition/%s:2`, rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "batch", regexache.MustCompile(fmt.Sprintf(`job-definition/%s:2`, rName))), testAccCheckJobDefinitionPreviousDeregistered(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, "revision", "2"), ), @@ -492,7 +492,7 @@ func TestAccBatchJobDefinition_ContainerProperties_minorUpdate(t *testing.T) { Config: testAccJobDefinitionConfig_containerProperties(rName, "-hal"), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckJobDefinitionExists(ctx, resourceName, &jd), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "batch", regexache.MustCompile(fmt.Sprintf(`job-definition/%s:3`, rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "batch", regexache.MustCompile(fmt.Sprintf(`job-definition/%s:3`, rName))), testAccCheckJobDefinitionPreviousDeregistered(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, "revision", "3"), ), @@ -517,7 +517,7 @@ func TestAccBatchJobDefinition_propagateTags(t *testing.T) { Config: testAccJobDefinitionConfig_propagateTags(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckJobDefinitionExists(ctx, resourceName, &jd), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "batch", regexache.MustCompile(fmt.Sprintf(`job-definition/%s:\d+`, rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "batch", regexache.MustCompile(fmt.Sprintf(`job-definition/%s:\d+`, rName))), acctest.CheckResourceAttrEquivalentJSON(resourceName, "container_properties", `{ "command": ["echo", "test"], "image": "busybox", @@ -596,7 +596,7 @@ func TestAccBatchJobDefinition_NodeProperties_basic(t *testing.T) { Config: testAccJobDefinitionConfig_nodeProperties(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckJobDefinitionExists(ctx, resourceName, &jd), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "batch", regexache.MustCompile(fmt.Sprintf(`job-definition/%s:\d+`, rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "batch", regexache.MustCompile(fmt.Sprintf(`job-definition/%s:\d+`, rName))), acctest.CheckResourceAttrEquivalentJSON(resourceName, "node_properties", `{ "mainNode": 0, "nodeRangeProperties": [ @@ -675,7 +675,7 @@ func TestAccBatchJobDefinition_NodeProperties_advanced(t *testing.T) { Config: testAccJobDefinitionConfig_nodePropertiesAdvanced(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckJobDefinitionExists(ctx, resourceName, &jd), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "batch", regexache.MustCompile(fmt.Sprintf(`job-definition/%s:\d+`, rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "batch", regexache.MustCompile(fmt.Sprintf(`job-definition/%s:\d+`, rName))), acctest.CheckResourceAttrEquivalentJSON(resourceName, "node_properties", `{ "mainNode": 1, "nodeRangeProperties": [ @@ -728,7 +728,7 @@ func TestAccBatchJobDefinition_NodeProperties_advanced(t *testing.T) { Config: testAccJobDefinitionConfig_nodePropertiesAdvancedUpdate(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckJobDefinitionExists(ctx, resourceName, &jd), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "batch", regexache.MustCompile(fmt.Sprintf(`job-definition/%s:\d+`, rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "batch", regexache.MustCompile(fmt.Sprintf(`job-definition/%s:\d+`, rName))), acctest.CheckResourceAttrEquivalentJSON(resourceName, "node_properties", `{ "mainNode": 1, "nodeRangeProperties": [ @@ -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(ctx, 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(ctx, 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 @@ -1007,7 +1104,7 @@ func TestAccBatchJobDefinition_emptyRetryStrategy(t *testing.T) { Config: testAccJobDefinitionConfig_emptyRetryStrategy(rName), Check: resource.ComposeTestCheckFunc( testAccCheckJobDefinitionExists(ctx, resourceName, &jd), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "batch", regexache.MustCompile(fmt.Sprintf(`job-definition/%s:\d+`, rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "batch", regexache.MustCompile(fmt.Sprintf(`job-definition/%s:\d+`, rName))), ), ExpectNonEmptyPlan: true, }, @@ -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/job_queue_test.go b/internal/service/batch/job_queue_test.go index 2bf9e450bb8d..9f120ef20cc9 100644 --- a/internal/service/batch/job_queue_test.go +++ b/internal/service/batch/job_queue_test.go @@ -49,7 +49,7 @@ func TestAccBatchJobQueue_basic(t *testing.T) { Config: testAccJobQueueConfig_state(rName, string(awstypes.JQStateEnabled)), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckJobQueueExists(ctx, resourceName, &jobQueue1), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "batch", fmt.Sprintf("job-queue/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "batch", fmt.Sprintf("job-queue/%s", rName)), resource.TestCheckResourceAttr(resourceName, "compute_environments.#", "1"), resource.TestCheckResourceAttrPair(resourceName, "compute_environments.0", "aws_batch_compute_environment.test", names.AttrARN), resource.TestCheckResourceAttr(resourceName, "job_state_time_limit_action.#", "0"), @@ -84,7 +84,7 @@ func TestAccBatchJobQueue_basicCEO(t *testing.T) { Config: testAccJobQueueConfig_stateCEO(rName, string(awstypes.JQStateEnabled)), Check: resource.ComposeTestCheckFunc( testAccCheckJobQueueExists(ctx, resourceName, &jobQueue1), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "batch", fmt.Sprintf("job-queue/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "batch", fmt.Sprintf("job-queue/%s", rName)), resource.TestCheckResourceAttr(resourceName, "compute_environment_order.#", "1"), resource.TestCheckResourceAttrPair(resourceName, "compute_environment_order.0.compute_environment", "aws_batch_compute_environment.test", names.AttrARN), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), @@ -172,7 +172,7 @@ func TestAccBatchJobQueue_MigrateFromPluginSDK(t *testing.T) { Config: testAccJobQueueConfig_state(rName, string(awstypes.JQStateEnabled)), Check: resource.ComposeTestCheckFunc( testAccCheckJobQueueExists(ctx, resourceName, &jobQueue1), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "batch", fmt.Sprintf("job-queue/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "batch", fmt.Sprintf("job-queue/%s", rName)), ), }, { diff --git a/internal/service/batch/node_properties.go b/internal/service/batch/node_properties.go index db18d4734661..95201a367a6a 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 67a6c3eb35cd..1a8a4f9267c6 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 764f65d68098..4f010a53f8d6 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 0800718081ba..0a1b5923cc6f 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/bedrock_test.go b/internal/service/bedrock/bedrock_test.go index 6dadacdc1616..c84fcb6e0460 100644 --- a/internal/service/bedrock/bedrock_test.go +++ b/internal/service/bedrock/bedrock_test.go @@ -17,7 +17,7 @@ func TestAccBedrock_serial(t *testing.T) { "CustomModel": { acctest.CtBasic: testAccCustomModel_basic, acctest.CtDisappears: testAccCustomModel_disappears, - "tags": testAccCustomModel_tags, + "tags": testAccBedrockCustomModel_tagsSerial, "kmsKey": testAccCustomModel_kmsKey, "validationDataConfig": testAccCustomModel_validationDataConfig, "validationDataConfigWaitForCompletion": testAccCustomModel_validationDataConfigWaitForCompletion, diff --git a/internal/service/bedrock/custom_model.go b/internal/service/bedrock/custom_model.go index daba31c85d15..7d1bbff33280 100644 --- a/internal/service/bedrock/custom_model.go +++ b/internal/service/bedrock/custom_model.go @@ -41,8 +41,11 @@ import ( "github.com/hashicorp/terraform-provider-aws/names" ) -// @FrameworkResource(name="Custom Model") +// @FrameworkResource("aws_bedrock_custom_model", name="Custom Model") // @Tags(identifierAttribute="job_arn") +// @Testing(existsType="github.com/aws/aws-sdk-go-v2/service/bedrock;bedrock.GetModelCustomizationJobOutput") +// @Testing(serialize=true) +// @Testing(importIgnore="base_model_identifier") func newCustomModelResource(context.Context) (resource.ResourceWithConfigure, error) { r := &customModelResource{} diff --git a/internal/service/bedrock/custom_model_data_source.go b/internal/service/bedrock/custom_model_data_source.go index b8fab10e1d58..84e06a7d0176 100644 --- a/internal/service/bedrock/custom_model_data_source.go +++ b/internal/service/bedrock/custom_model_data_source.go @@ -19,7 +19,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/names" ) -// @FrameworkDataSource(name="Custom Model") +// @FrameworkDataSource("aws_bedrock_custom_model", name="Custom Model") func newCustomModelDataSource(context.Context) (datasource.DataSourceWithConfigure, error) { return &customModelDataSource{}, nil } diff --git a/internal/service/bedrock/custom_model_tags_gen_test.go b/internal/service/bedrock/custom_model_tags_gen_test.go new file mode 100644 index 000000000000..e58ef7492a5f --- /dev/null +++ b/internal/service/bedrock/custom_model_tags_gen_test.go @@ -0,0 +1,2373 @@ +// Code generated by internal/generate/tagstests/main.go; DO NOT EDIT. + +package bedrock_test + +import ( + "testing" + + "github.com/aws/aws-sdk-go-v2/service/bedrock" + "github.com/hashicorp/terraform-plugin-testing/config" + sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/knownvalue" + "github.com/hashicorp/terraform-plugin-testing/plancheck" + "github.com/hashicorp/terraform-plugin-testing/statecheck" + "github.com/hashicorp/terraform-plugin-testing/tfjsonpath" + "github.com/hashicorp/terraform-provider-aws/internal/acctest" + "github.com/hashicorp/terraform-provider-aws/names" +) + +func testAccBedrockCustomModel_tagsSerial(t *testing.T) { + t.Helper() + + testCases := map[string]func(t *testing.T){ + acctest.CtBasic: testAccBedrockCustomModel_tags, + "null": testAccBedrockCustomModel_tags_null, + "EmptyMap": testAccBedrockCustomModel_tags_EmptyMap, + "AddOnUpdate": testAccBedrockCustomModel_tags_AddOnUpdate, + "EmptyTag_OnCreate": testAccBedrockCustomModel_tags_EmptyTag_OnCreate, + "EmptyTag_OnUpdate_Add": testAccBedrockCustomModel_tags_EmptyTag_OnUpdate_Add, + "EmptyTag_OnUpdate_Replace": testAccBedrockCustomModel_tags_EmptyTag_OnUpdate_Replace, + "DefaultTags_providerOnly": testAccBedrockCustomModel_tags_DefaultTags_providerOnly, + "DefaultTags_nonOverlapping": testAccBedrockCustomModel_tags_DefaultTags_nonOverlapping, + "DefaultTags_overlapping": testAccBedrockCustomModel_tags_DefaultTags_overlapping, + "DefaultTags_updateToProviderOnly": testAccBedrockCustomModel_tags_DefaultTags_updateToProviderOnly, + "DefaultTags_updateToResourceOnly": testAccBedrockCustomModel_tags_DefaultTags_updateToResourceOnly, + "DefaultTags_emptyResourceTag": testAccBedrockCustomModel_tags_DefaultTags_emptyResourceTag, + "DefaultTags_nullOverlappingResourceTag": testAccBedrockCustomModel_tags_DefaultTags_nullOverlappingResourceTag, + "DefaultTags_nullNonOverlappingResourceTag": testAccBedrockCustomModel_tags_DefaultTags_nullNonOverlappingResourceTag, + "ComputedTag_OnCreate": testAccBedrockCustomModel_tags_ComputedTag_OnCreate, + "ComputedTag_OnUpdate_Add": testAccBedrockCustomModel_tags_ComputedTag_OnUpdate_Add, + "ComputedTag_OnUpdate_Replace": testAccBedrockCustomModel_tags_ComputedTag_OnUpdate_Replace, + "IgnoreTags_Overlap_DefaultTag": testAccBedrockCustomModel_tags_IgnoreTags_Overlap_DefaultTag, + "IgnoreTags_Overlap_ResourceTag": testAccBedrockCustomModel_tags_IgnoreTags_Overlap_ResourceTag, + } + + acctest.RunSerialTests1Level(t, testCases, 0) +} + +func testAccBedrockCustomModel_tags(t *testing.T) { + ctx := acctest.Context(t) + var v bedrock.GetModelCustomizationJobOutput + resourceName := "aws_bedrock_custom_model.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.BedrockServiceID), + CheckDestroy: testAccCheckCustomModelDestroy(ctx), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + Steps: []resource.TestStep{ + { + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1), + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckCustomModelExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + }, + }, + { + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1), + }), + }, + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + ImportStateVerifyIgnore: []string{ + "base_model_identifier", + }, + }, + { + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1Updated), + acctest.CtKey2: config.StringVariable(acctest.CtValue2), + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckCustomModelExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1Updated), + acctest.CtKey2: knownvalue.StringExact(acctest.CtValue2), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1Updated), + acctest.CtKey2: knownvalue.StringExact(acctest.CtValue2), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1Updated), + acctest.CtKey2: knownvalue.StringExact(acctest.CtValue2), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1Updated), + acctest.CtKey2: knownvalue.StringExact(acctest.CtValue2), + })), + }, + }, + }, + { + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1Updated), + acctest.CtKey2: config.StringVariable(acctest.CtValue2), + }), + }, + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + ImportStateVerifyIgnore: []string{ + "base_model_identifier", + }, + }, + { + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey2: config.StringVariable(acctest.CtValue2), + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckCustomModelExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey2: knownvalue.StringExact(acctest.CtValue2), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey2: knownvalue.StringExact(acctest.CtValue2), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey2: knownvalue.StringExact(acctest.CtValue2), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey2: knownvalue.StringExact(acctest.CtValue2), + })), + }, + }, + }, + { + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey2: config.StringVariable(acctest.CtValue2), + }), + }, + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + ImportStateVerifyIgnore: []string{ + "base_model_identifier", + }, + }, + { + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: nil, + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckCustomModelExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{})), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{})), + }, + }, + }, + { + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: nil, + }, + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + ImportStateVerifyIgnore: []string{ + "base_model_identifier", + }, + }, + }, + }) +} + +func testAccBedrockCustomModel_tags_null(t *testing.T) { + ctx := acctest.Context(t) + var v bedrock.GetModelCustomizationJobOutput + resourceName := "aws_bedrock_custom_model.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.BedrockServiceID), + CheckDestroy: testAccCheckCustomModelDestroy(ctx), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + Steps: []resource.TestStep{ + { + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: nil, + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckCustomModelExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.Null(), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(""), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.Null(), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(""), + })), + }, + }, + }, + { + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: nil, + }), + }, + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + ImportStateVerifyIgnore: []string{ + acctest.CtTagsKey1, // The canonical value returned by the AWS API is "" + "base_model_identifier", + }, + }, + }, + }) +} + +func testAccBedrockCustomModel_tags_EmptyMap(t *testing.T) { + ctx := acctest.Context(t) + var v bedrock.GetModelCustomizationJobOutput + resourceName := "aws_bedrock_custom_model.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.BedrockServiceID), + CheckDestroy: testAccCheckCustomModelDestroy(ctx), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + Steps: []resource.TestStep{ + { + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{}), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckCustomModelExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{})), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{})), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{})), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{})), + }, + }, + }, + { + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{}), + }, + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + ImportStateVerifyIgnore: []string{ + acctest.CtTagsKey1, // The canonical value returned by the AWS API is "" + "base_model_identifier", + }, + }, + }, + }) +} + +func testAccBedrockCustomModel_tags_AddOnUpdate(t *testing.T) { + ctx := acctest.Context(t) + var v bedrock.GetModelCustomizationJobOutput + resourceName := "aws_bedrock_custom_model.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.BedrockServiceID), + CheckDestroy: testAccCheckCustomModelDestroy(ctx), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + Steps: []resource.TestStep{ + { + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: nil, + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckCustomModelExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{})), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{})), + }, + }, + }, + { + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1), + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckCustomModelExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + }, + }, + { + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1), + }), + }, + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + ImportStateVerifyIgnore: []string{ + "base_model_identifier", + }, + }, + }, + }) +} + +func testAccBedrockCustomModel_tags_EmptyTag_OnCreate(t *testing.T) { + ctx := acctest.Context(t) + var v bedrock.GetModelCustomizationJobOutput + resourceName := "aws_bedrock_custom_model.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.BedrockServiceID), + CheckDestroy: testAccCheckCustomModelDestroy(ctx), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + Steps: []resource.TestStep{ + { + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(""), + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckCustomModelExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(""), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(""), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(""), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(""), + })), + }, + }, + }, + { + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(""), + }), + }, + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + ImportStateVerifyIgnore: []string{ + "base_model_identifier", + }, + }, + { + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: nil, + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckCustomModelExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{})), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{})), + }, + }, + }, + { + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: nil, + }, + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + ImportStateVerifyIgnore: []string{ + "base_model_identifier", + }, + }, + }, + }) +} + +func testAccBedrockCustomModel_tags_EmptyTag_OnUpdate_Add(t *testing.T) { + ctx := acctest.Context(t) + var v bedrock.GetModelCustomizationJobOutput + resourceName := "aws_bedrock_custom_model.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.BedrockServiceID), + CheckDestroy: testAccCheckCustomModelDestroy(ctx), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + Steps: []resource.TestStep{ + { + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1), + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckCustomModelExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + }, + }, + { + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1), + acctest.CtKey2: config.StringVariable(""), + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckCustomModelExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + acctest.CtKey2: knownvalue.StringExact(""), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + acctest.CtKey2: knownvalue.StringExact(""), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + acctest.CtKey2: knownvalue.StringExact(""), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + acctest.CtKey2: knownvalue.StringExact(""), + })), + }, + }, + }, + { + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1), + acctest.CtKey2: config.StringVariable(""), + }), + }, + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + ImportStateVerifyIgnore: []string{ + "base_model_identifier", + }, + }, + { + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1), + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckCustomModelExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + }, + }, + { + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1), + }), + }, + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + ImportStateVerifyIgnore: []string{ + "base_model_identifier", + }, + }, + }, + }) +} + +func testAccBedrockCustomModel_tags_EmptyTag_OnUpdate_Replace(t *testing.T) { + ctx := acctest.Context(t) + var v bedrock.GetModelCustomizationJobOutput + resourceName := "aws_bedrock_custom_model.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.BedrockServiceID), + CheckDestroy: testAccCheckCustomModelDestroy(ctx), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + Steps: []resource.TestStep{ + { + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1), + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckCustomModelExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + }, + }, + { + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(""), + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckCustomModelExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(""), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(""), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(""), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(""), + })), + }, + }, + }, + { + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(""), + }), + }, + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + ImportStateVerifyIgnore: []string{ + "base_model_identifier", + }, + }, + }, + }) +} + +func testAccBedrockCustomModel_tags_DefaultTags_providerOnly(t *testing.T) { + ctx := acctest.Context(t) + var v bedrock.GetModelCustomizationJobOutput + resourceName := "aws_bedrock_custom_model.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.BedrockServiceID), + CheckDestroy: testAccCheckCustomModelDestroy(ctx), + Steps: []resource.TestStep{ + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1), + }), + acctest.CtResourceTags: nil, + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckCustomModelExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1), + }), + acctest.CtResourceTags: nil, + }, + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + ImportStateVerifyIgnore: []string{ + "base_model_identifier", + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1Updated), + acctest.CtKey2: config.StringVariable(acctest.CtValue2), + }), + acctest.CtResourceTags: nil, + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckCustomModelExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1Updated), + acctest.CtKey2: knownvalue.StringExact(acctest.CtValue2), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1Updated), + acctest.CtKey2: knownvalue.StringExact(acctest.CtValue2), + })), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1Updated), + acctest.CtKey2: config.StringVariable(acctest.CtValue2), + }), + acctest.CtResourceTags: nil, + }, + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + ImportStateVerifyIgnore: []string{ + "base_model_identifier", + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey2: config.StringVariable(acctest.CtValue2), + }), + acctest.CtResourceTags: nil, + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckCustomModelExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey2: knownvalue.StringExact(acctest.CtValue2), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey2: knownvalue.StringExact(acctest.CtValue2), + })), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey2: config.StringVariable(acctest.CtValue2), + }), + acctest.CtResourceTags: nil, + }, + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + ImportStateVerifyIgnore: []string{ + "base_model_identifier", + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: nil, + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckCustomModelExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{})), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{})), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: nil, + }, + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + ImportStateVerifyIgnore: []string{ + "base_model_identifier", + }, + }, + }, + }) +} + +func testAccBedrockCustomModel_tags_DefaultTags_nonOverlapping(t *testing.T) { + ctx := acctest.Context(t) + var v bedrock.GetModelCustomizationJobOutput + resourceName := "aws_bedrock_custom_model.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.BedrockServiceID), + CheckDestroy: testAccCheckCustomModelDestroy(ctx), + Steps: []resource.TestStep{ + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtProviderKey1: config.StringVariable(acctest.CtProviderValue1), + }), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtResourceKey1: config.StringVariable(acctest.CtResourceValue1), + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckCustomModelExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtProviderKey1: knownvalue.StringExact(acctest.CtProviderValue1), + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtProviderKey1: knownvalue.StringExact(acctest.CtProviderValue1), + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1), + })), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtProviderKey1: config.StringVariable(acctest.CtProviderValue1), + }), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtResourceKey1: config.StringVariable(acctest.CtResourceValue1), + }), + }, + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + ImportStateVerifyIgnore: []string{ + "base_model_identifier", + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtProviderKey1: config.StringVariable(acctest.CtProviderValue1Updated), + }), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtResourceKey1: config.StringVariable(acctest.CtResourceValue1Updated), + acctest.CtResourceKey2: config.StringVariable(acctest.CtResourceValue2), + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckCustomModelExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1Updated), + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtProviderKey1: knownvalue.StringExact(acctest.CtProviderValue1Updated), + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1Updated), + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1Updated), + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtProviderKey1: knownvalue.StringExact(acctest.CtProviderValue1Updated), + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1Updated), + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2), + })), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtProviderKey1: config.StringVariable(acctest.CtProviderValue1Updated), + }), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtResourceKey1: config.StringVariable(acctest.CtResourceValue1Updated), + acctest.CtResourceKey2: config.StringVariable(acctest.CtResourceValue2), + }), + }, + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + ImportStateVerifyIgnore: []string{ + "base_model_identifier", + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: nil, + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckCustomModelExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{})), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{})), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: nil, + }, + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + ImportStateVerifyIgnore: []string{ + "base_model_identifier", + }, + }, + }, + }) +} + +func testAccBedrockCustomModel_tags_DefaultTags_overlapping(t *testing.T) { + ctx := acctest.Context(t) + var v bedrock.GetModelCustomizationJobOutput + resourceName := "aws_bedrock_custom_model.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.BedrockServiceID), + CheckDestroy: testAccCheckCustomModelDestroy(ctx), + Steps: []resource.TestStep{ + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtOverlapKey1: config.StringVariable(acctest.CtProviderValue1), + }), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtOverlapKey1: config.StringVariable(acctest.CtResourceValue1), + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckCustomModelExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtOverlapKey1: knownvalue.StringExact(acctest.CtResourceValue1), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtOverlapKey1: knownvalue.StringExact(acctest.CtResourceValue1), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtOverlapKey1: knownvalue.StringExact(acctest.CtResourceValue1), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtOverlapKey1: knownvalue.StringExact(acctest.CtResourceValue1), + })), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtOverlapKey1: config.StringVariable(acctest.CtProviderValue1), + }), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtOverlapKey1: config.StringVariable(acctest.CtResourceValue1), + }), + }, + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + ImportStateVerifyIgnore: []string{ + "base_model_identifier", + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtOverlapKey1: config.StringVariable(acctest.CtProviderValue1), + acctest.CtOverlapKey2: config.StringVariable("providervalue2"), + }), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtOverlapKey1: config.StringVariable(acctest.CtResourceValue1), + acctest.CtOverlapKey2: config.StringVariable(acctest.CtResourceValue2), + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckCustomModelExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtOverlapKey1: knownvalue.StringExact(acctest.CtResourceValue1), + acctest.CtOverlapKey2: knownvalue.StringExact(acctest.CtResourceValue2), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtOverlapKey1: knownvalue.StringExact(acctest.CtResourceValue1), + acctest.CtOverlapKey2: knownvalue.StringExact(acctest.CtResourceValue2), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtOverlapKey1: knownvalue.StringExact(acctest.CtResourceValue1), + acctest.CtOverlapKey2: knownvalue.StringExact(acctest.CtResourceValue2), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtOverlapKey1: knownvalue.StringExact(acctest.CtResourceValue1), + acctest.CtOverlapKey2: knownvalue.StringExact(acctest.CtResourceValue2), + })), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtOverlapKey1: config.StringVariable(acctest.CtProviderValue1), + acctest.CtOverlapKey2: config.StringVariable("providervalue2"), + }), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtOverlapKey1: config.StringVariable(acctest.CtResourceValue1), + acctest.CtOverlapKey2: config.StringVariable(acctest.CtResourceValue2), + }), + }, + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + ImportStateVerifyIgnore: []string{ + "base_model_identifier", + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtOverlapKey1: config.StringVariable(acctest.CtProviderValue1), + }), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtOverlapKey1: config.StringVariable(acctest.CtResourceValue2), + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckCustomModelExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtOverlapKey1: knownvalue.StringExact(acctest.CtResourceValue2), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtOverlapKey1: knownvalue.StringExact(acctest.CtResourceValue2), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtOverlapKey1: knownvalue.StringExact(acctest.CtResourceValue2), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtOverlapKey1: knownvalue.StringExact(acctest.CtResourceValue2), + })), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtOverlapKey1: config.StringVariable(acctest.CtProviderValue1), + }), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtOverlapKey1: config.StringVariable(acctest.CtResourceValue2), + }), + }, + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + ImportStateVerifyIgnore: []string{ + "base_model_identifier", + }, + }, + }, + }) +} + +func testAccBedrockCustomModel_tags_DefaultTags_updateToProviderOnly(t *testing.T) { + ctx := acctest.Context(t) + var v bedrock.GetModelCustomizationJobOutput + resourceName := "aws_bedrock_custom_model.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.BedrockServiceID), + CheckDestroy: testAccCheckCustomModelDestroy(ctx), + Steps: []resource.TestStep{ + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1), + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckCustomModelExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1), + }), + acctest.CtResourceTags: nil, + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckCustomModelExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1), + }), + acctest.CtResourceTags: nil, + }, + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + ImportStateVerifyIgnore: []string{ + "base_model_identifier", + }, + }, + }, + }) +} + +func testAccBedrockCustomModel_tags_DefaultTags_updateToResourceOnly(t *testing.T) { + ctx := acctest.Context(t) + var v bedrock.GetModelCustomizationJobOutput + resourceName := "aws_bedrock_custom_model.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.BedrockServiceID), + CheckDestroy: testAccCheckCustomModelDestroy(ctx), + Steps: []resource.TestStep{ + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1), + }), + acctest.CtResourceTags: nil, + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckCustomModelExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1), + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckCustomModelExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1), + }), + }, + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + ImportStateVerifyIgnore: []string{ + "base_model_identifier", + }, + }, + }, + }) +} + +func testAccBedrockCustomModel_tags_DefaultTags_emptyResourceTag(t *testing.T) { + ctx := acctest.Context(t) + var v bedrock.GetModelCustomizationJobOutput + resourceName := "aws_bedrock_custom_model.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.BedrockServiceID), + CheckDestroy: testAccCheckCustomModelDestroy(ctx), + Steps: []resource.TestStep{ + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1), + }), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(""), + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckCustomModelExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(""), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(""), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(""), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(""), + })), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1), + }), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(""), + }), + }, + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + ImportStateVerifyIgnore: []string{ + "base_model_identifier", + }, + }, + }, + }) +} + +func testAccBedrockCustomModel_tags_DefaultTags_emptyProviderOnlyTag(t *testing.T) { + ctx := acctest.Context(t) + var v bedrock.GetModelCustomizationJobOutput + resourceName := "aws_bedrock_custom_model.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.BedrockServiceID), + CheckDestroy: testAccCheckCustomModelDestroy(ctx), + Steps: []resource.TestStep{ + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(""), + }), + acctest.CtResourceTags: nil, + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckCustomModelExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(""), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(""), + })), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(""), + }), + acctest.CtResourceTags: nil, + }, + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + ImportStateVerifyIgnore: []string{ + "base_model_identifier", + }, + }, + }, + }) +} + +func testAccBedrockCustomModel_tags_DefaultTags_nullOverlappingResourceTag(t *testing.T) { + ctx := acctest.Context(t) + var v bedrock.GetModelCustomizationJobOutput + resourceName := "aws_bedrock_custom_model.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.BedrockServiceID), + CheckDestroy: testAccCheckCustomModelDestroy(ctx), + Steps: []resource.TestStep{ + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtProviderValue1), + }), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: nil, + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckCustomModelExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.Null(), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(""), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.Null(), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(""), + })), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtProviderValue1), + }), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: nil, + }), + }, + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + ImportStateVerifyIgnore: []string{ + acctest.CtTagsKey1, // The canonical value returned by the AWS API is "" + "base_model_identifier", + }, + }, + }, + }) +} + +func testAccBedrockCustomModel_tags_DefaultTags_nullNonOverlappingResourceTag(t *testing.T) { + ctx := acctest.Context(t) + var v bedrock.GetModelCustomizationJobOutput + resourceName := "aws_bedrock_custom_model.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.BedrockServiceID), + CheckDestroy: testAccCheckCustomModelDestroy(ctx), + Steps: []resource.TestStep{ + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtProviderKey1: config.StringVariable(acctest.CtProviderValue1), + }), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtResourceKey1: nil, + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckCustomModelExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.Null(), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(""), + acctest.CtProviderKey1: knownvalue.StringExact(acctest.CtProviderValue1), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.Null(), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(""), + acctest.CtProviderKey1: knownvalue.StringExact(acctest.CtProviderValue1), + })), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtProviderKey1: config.StringVariable(acctest.CtProviderValue1), + }), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtResourceKey1: nil, + }), + }, + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + ImportStateVerifyIgnore: []string{ + "tags.resourcekey1", // The canonical value returned by the AWS API is "" + "base_model_identifier", + }, + }, + }, + }) +} + +func testAccBedrockCustomModel_tags_ComputedTag_OnCreate(t *testing.T) { + ctx := acctest.Context(t) + var v bedrock.GetModelCustomizationJobOutput + resourceName := "aws_bedrock_custom_model.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.BedrockServiceID), + CheckDestroy: testAccCheckCustomModelDestroy(ctx), + Steps: []resource.TestStep{ + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tagsComputed1/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + "unknownTagKey": config.StringVariable("computedkey1"), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckCustomModelExists(ctx, resourceName, &v), + resource.TestCheckResourceAttrPair(resourceName, "tags.computedkey1", "null_resource.test", names.AttrID), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapSizeExact(1)), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapSizeExact(1)), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + plancheck.ExpectUnknownValue(resourceName, tfjsonpath.New(names.AttrTags).AtMapKey("computedkey1")), + plancheck.ExpectUnknownValue(resourceName, tfjsonpath.New(names.AttrTagsAll)), + }, + PostApplyPreRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tagsComputed1/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + "unknownTagKey": config.StringVariable("computedkey1"), + }, + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + ImportStateVerifyIgnore: []string{ + "base_model_identifier", + }, + }, + }, + }) +} + +func testAccBedrockCustomModel_tags_ComputedTag_OnUpdate_Add(t *testing.T) { + ctx := acctest.Context(t) + var v bedrock.GetModelCustomizationJobOutput + resourceName := "aws_bedrock_custom_model.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.BedrockServiceID), + CheckDestroy: testAccCheckCustomModelDestroy(ctx), + Steps: []resource.TestStep{ + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1), + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckCustomModelExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tagsComputed2/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + "unknownTagKey": config.StringVariable("computedkey1"), + "knownTagKey": config.StringVariable(acctest.CtKey1), + "knownTagValue": config.StringVariable(acctest.CtValue1), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckCustomModelExists(ctx, resourceName, &v), + resource.TestCheckResourceAttrPair(resourceName, "tags.computedkey1", "null_resource.test", names.AttrID), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapSizeExact(2)), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapPartial(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapSizeExact(2)), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapPartial(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectUnknownValue(resourceName, tfjsonpath.New(names.AttrTags).AtMapKey("computedkey1")), + plancheck.ExpectUnknownValue(resourceName, tfjsonpath.New(names.AttrTagsAll)), + }, + PostApplyPreRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tagsComputed2/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + "unknownTagKey": config.StringVariable("computedkey1"), + "knownTagKey": config.StringVariable(acctest.CtKey1), + "knownTagValue": config.StringVariable(acctest.CtValue1), + }, + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + ImportStateVerifyIgnore: []string{ + "base_model_identifier", + }, + }, + }, + }) +} + +func testAccBedrockCustomModel_tags_ComputedTag_OnUpdate_Replace(t *testing.T) { + ctx := acctest.Context(t) + var v bedrock.GetModelCustomizationJobOutput + resourceName := "aws_bedrock_custom_model.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.BedrockServiceID), + CheckDestroy: testAccCheckCustomModelDestroy(ctx), + Steps: []resource.TestStep{ + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1), + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckCustomModelExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tagsComputed1/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + "unknownTagKey": config.StringVariable(acctest.CtKey1), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckCustomModelExists(ctx, resourceName, &v), + resource.TestCheckResourceAttrPair(resourceName, acctest.CtTagsKey1, "null_resource.test", names.AttrID), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapSizeExact(1)), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapSizeExact(1)), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectUnknownValue(resourceName, tfjsonpath.New(names.AttrTags).AtMapKey(acctest.CtKey1)), + plancheck.ExpectUnknownValue(resourceName, tfjsonpath.New(names.AttrTagsAll)), + }, + PostApplyPreRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tagsComputed1/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + "unknownTagKey": config.StringVariable(acctest.CtKey1), + }, + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + ImportStateVerifyIgnore: []string{ + "base_model_identifier", + }, + }, + }, + }) +} + +func testAccBedrockCustomModel_tags_IgnoreTags_Overlap_DefaultTag(t *testing.T) { + ctx := acctest.Context(t) + var v bedrock.GetModelCustomizationJobOutput + resourceName := "aws_bedrock_custom_model.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.BedrockServiceID), + CheckDestroy: testAccCheckCustomModelDestroy(ctx), + Steps: []resource.TestStep{ + // 1: Create + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags_ignore/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtProviderKey1: config.StringVariable(acctest.CtProviderValue1), + }), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtResourceKey1: config.StringVariable(acctest.CtResourceValue1), + }), + "ignore_tag_keys": config.SetVariable( + config.StringVariable(acctest.CtProviderKey1), + ), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckCustomModelExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1), + })), + expectFullResourceTags(resourceName, knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtProviderKey1: knownvalue.StringExact(acctest.CtProviderValue1), // TODO: Should not be set + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1), + })), + }, + PostApplyPreRefresh: []plancheck.PlanCheck{ + plancheck.ExpectEmptyPlan(), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectEmptyPlan(), + }, + }, + }, + // 2: Update ignored tag only + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags_ignore/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtProviderKey1: config.StringVariable(acctest.CtProviderValue1Updated), + }), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtResourceKey1: config.StringVariable(acctest.CtResourceValue1), + }), + "ignore_tag_keys": config.SetVariable( + config.StringVariable(acctest.CtProviderKey1), + ), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckCustomModelExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1), + })), + expectFullResourceTags(resourceName, knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtProviderKey1: knownvalue.StringExact(acctest.CtProviderValue1), // TODO: Should not be set + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1), + })), + }, + PostApplyPreRefresh: []plancheck.PlanCheck{ + plancheck.ExpectEmptyPlan(), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectEmptyPlan(), + }, + }, + }, + // 3: Update both tags + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags_ignore/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtProviderKey1: config.StringVariable(acctest.CtProviderValue1Again), + }), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtResourceKey1: config.StringVariable(acctest.CtResourceValue1Updated), + }), + "ignore_tag_keys": config.SetVariable( + config.StringVariable(acctest.CtProviderKey1), + ), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckCustomModelExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1Updated), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1Updated), + })), + expectFullResourceTags(resourceName, knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtProviderKey1: knownvalue.StringExact(acctest.CtProviderValue1), // TODO: Should not be set + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1Updated), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1Updated), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1Updated), + })), + }, + PostApplyPreRefresh: []plancheck.PlanCheck{ + plancheck.ExpectEmptyPlan(), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectEmptyPlan(), + }, + }, + }, + }, + }) +} + +func testAccBedrockCustomModel_tags_IgnoreTags_Overlap_ResourceTag(t *testing.T) { + ctx := acctest.Context(t) + var v bedrock.GetModelCustomizationJobOutput + resourceName := "aws_bedrock_custom_model.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.BedrockServiceID), + CheckDestroy: testAccCheckCustomModelDestroy(ctx), + Steps: []resource.TestStep{ + // 1: Create + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags_ignore/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtResourceKey1: config.StringVariable(acctest.CtResourceValue1), + acctest.CtResourceKey2: config.StringVariable(acctest.CtResourceValue2), + }), + "ignore_tag_keys": config.SetVariable( + config.StringVariable(acctest.CtResourceKey1), + ), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckCustomModelExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1), + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2), + })), + expectFullResourceTags(resourceName, knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1), // TODO: Should not be set + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1), + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2), + })), + }, + PostApplyPreRefresh: []plancheck.PlanCheck{ + plancheck.ExpectEmptyPlan(), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), // TODO: Should be NoOp + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1), + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2), + })), + }, + }, + ExpectNonEmptyPlan: true, + }, + // 2: Update ignored tag + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags_ignore/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtResourceKey1: config.StringVariable(acctest.CtResourceValue1Updated), + acctest.CtResourceKey2: config.StringVariable(acctest.CtResourceValue2), + }), + "ignore_tag_keys": config.SetVariable( + config.StringVariable(acctest.CtResourceKey1), + ), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckCustomModelExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1Updated), + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2), + })), + expectFullResourceTags(resourceName, knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1), // TODO: Should not be set + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1Updated), + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2), + })), + }, + PostApplyPreRefresh: []plancheck.PlanCheck{ + plancheck.ExpectEmptyPlan(), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), // TODO: Should be NoOp + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1Updated), + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2), + })), + }, + }, + ExpectNonEmptyPlan: true, + }, + // 3: Update both tags + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/CustomModel/tags_ignore/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtResourceKey1: config.StringVariable(acctest.CtResourceValue1Again), + acctest.CtResourceKey2: config.StringVariable(acctest.CtResourceValue2Updated), + }), + "ignore_tag_keys": config.SetVariable( + config.StringVariable(acctest.CtResourceKey1), + ), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckCustomModelExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1Again), + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2Updated), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2Updated), + })), + expectFullResourceTags(resourceName, knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1), // TODO: Should not be set + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2Updated), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1Again), + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2Updated), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2Updated), + })), + }, + PostApplyPreRefresh: []plancheck.PlanCheck{ + plancheck.ExpectEmptyPlan(), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), // TODO: Should be NoOp + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1Again), + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2Updated), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2Updated), + })), + }, + }, + ExpectNonEmptyPlan: true, + }, + }, + }) +} diff --git a/internal/service/bedrock/custom_model_test.go b/internal/service/bedrock/custom_model_test.go index a6f6a7ce806f..cc1303c0d087 100644 --- a/internal/service/bedrock/custom_model_test.go +++ b/internal/service/bedrock/custom_model_test.go @@ -96,53 +96,6 @@ func testAccCustomModel_disappears(t *testing.T) { }) } -func testAccCustomModel_tags(t *testing.T) { - ctx := acctest.Context(t) - rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) - resourceName := "aws_bedrock_custom_model.test" - var v bedrock.GetModelCustomizationJobOutput - - resource.Test(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckPartitionHasService(t, names.BedrockEndpointID) }, - ErrorCheck: acctest.ErrorCheck(t, names.BedrockServiceID), - ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, - CheckDestroy: testAccCheckCustomModelDestroy(ctx), - Steps: []resource.TestStep{ - { - Config: testAccCustomModelConfig_tags1(rName, acctest.CtKey1, acctest.CtValue1), - Check: resource.ComposeTestCheckFunc( - testAccCheckCustomModelExists(ctx, resourceName, &v), - resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "1"), - resource.TestCheckResourceAttr(resourceName, acctest.CtTagsKey1, acctest.CtValue1), - ), - }, - { - ResourceName: resourceName, - ImportState: true, - ImportStateVerify: true, - ImportStateVerifyIgnore: []string{"base_model_identifier"}, - }, - { - Config: testAccCustomModelConfig_tags2(rName, acctest.CtKey1, acctest.CtValue1Updated, acctest.CtKey2, acctest.CtValue2), - Check: resource.ComposeTestCheckFunc( - testAccCheckCustomModelExists(ctx, resourceName, &v), - resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "2"), - resource.TestCheckResourceAttr(resourceName, acctest.CtTagsKey1, acctest.CtValue1Updated), - resource.TestCheckResourceAttr(resourceName, acctest.CtTagsKey2, acctest.CtValue2), - ), - }, - { - Config: testAccCustomModelConfig_tags1(rName, acctest.CtKey2, acctest.CtValue2), - Check: resource.ComposeTestCheckFunc( - testAccCheckCustomModelExists(ctx, resourceName, &v), - resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "1"), - resource.TestCheckResourceAttr(resourceName, acctest.CtTagsKey2, acctest.CtValue2), - ), - }, - }, - }) -} - func testAccCustomModel_kmsKey(t *testing.T) { ctx := acctest.Context(t) rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) @@ -497,67 +450,6 @@ resource "aws_bedrock_custom_model" "test" { `, rName)) } -func testAccCustomModelConfig_tags1(rName, tagKey1, tagValue1 string) string { - return acctest.ConfigCompose(testAccCustomModelConfig_base(rName), fmt.Sprintf(` -resource "aws_bedrock_custom_model" "test" { - custom_model_name = %[1]q - job_name = %[1]q - base_model_identifier = data.aws_bedrock_foundation_model.test.model_arn - role_arn = aws_iam_role.test.arn - - hyperparameters = { - "epochCount" = "1" - "batchSize" = "1" - "learningRate" = "0.005" - "learningRateWarmupSteps" = "0" - } - - output_data_config { - s3_uri = "s3://${aws_s3_bucket.output.id}/data/" - } - - training_data_config { - s3_uri = "s3://${aws_s3_bucket.training.id}/data/train.jsonl" - } - - tags = { - %[2]q = %[3]q - } -} -`, rName, tagKey1, tagValue1)) -} - -func testAccCustomModelConfig_tags2(rName, tagKey1, tagValue1, tagKey2, tagValue2 string) string { - return acctest.ConfigCompose(testAccCustomModelConfig_base(rName), fmt.Sprintf(` -resource "aws_bedrock_custom_model" "test" { - custom_model_name = %[1]q - job_name = %[1]q - base_model_identifier = data.aws_bedrock_foundation_model.test.model_arn - role_arn = aws_iam_role.test.arn - - hyperparameters = { - "epochCount" = "1" - "batchSize" = "1" - "learningRate" = "0.005" - "learningRateWarmupSteps" = "0" - } - - output_data_config { - s3_uri = "s3://${aws_s3_bucket.output.id}/data/" - } - - training_data_config { - s3_uri = "s3://${aws_s3_bucket.training.id}/data/train.jsonl" - } - - tags = { - %[2]q = %[3]q - %[4]q = %[5]q - } -} -`, rName, tagKey1, tagValue1, tagKey2, tagValue2)) -} - func testAccCustomModelConfig_kmsKey(rName string) string { return acctest.ConfigCompose(testAccCustomModelConfig_base(rName), fmt.Sprintf(` resource "aws_kms_key" "test" { diff --git a/internal/service/bedrock/custom_models_data_source.go b/internal/service/bedrock/custom_models_data_source.go index fde2ccb18c22..a917a87723ca 100644 --- a/internal/service/bedrock/custom_models_data_source.go +++ b/internal/service/bedrock/custom_models_data_source.go @@ -18,7 +18,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/names" ) -// @FrameworkDataSource(name="Custom Models") +// @FrameworkDataSource("aws_bedrock_custom_models", name="Custom Models") func newCustomModelsDataSource(context.Context) (datasource.DataSourceWithConfigure, error) { return &customModelsDataSource{}, nil } @@ -72,7 +72,7 @@ func (d *customModelsDataSource) Read(ctx context.Context, request datasource.Re return } - data.ID = types.StringValue(d.Meta().Region) + data.ID = types.StringValue(d.Meta().Region(ctx)) response.Diagnostics.Append(response.State.Set(ctx, &data)...) } diff --git a/internal/service/bedrock/foundation_model_data_source.go b/internal/service/bedrock/foundation_model_data_source.go index 060351bb3d5b..d2c1045acfdf 100644 --- a/internal/service/bedrock/foundation_model_data_source.go +++ b/internal/service/bedrock/foundation_model_data_source.go @@ -17,7 +17,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/names" ) -// @FrameworkDataSource(name="Foundation Model") +// @FrameworkDataSource("aws_bedrock_foundation_model", name="Foundation Model") func newFoundationModelDataSource(context.Context) (datasource.DataSourceWithConfigure, error) { return &foundationModelDataSource{}, nil } diff --git a/internal/service/bedrock/foundation_models_data_source.go b/internal/service/bedrock/foundation_models_data_source.go index f18606b06415..66fda1dbd624 100644 --- a/internal/service/bedrock/foundation_models_data_source.go +++ b/internal/service/bedrock/foundation_models_data_source.go @@ -20,7 +20,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/names" ) -// @FrameworkDataSource(name="Foundation Models") +// @FrameworkDataSource("aws_bedrock_foundation_models", name="Foundation Models") func newFoundationModelsDataSource(context.Context) (datasource.DataSourceWithConfigure, error) { return &foundationModelsDataSource{}, nil } @@ -88,7 +88,7 @@ func (d *foundationModelsDataSource) Read(ctx context.Context, request datasourc return } - data.ID = types.StringValue(d.Meta().Region) + data.ID = types.StringValue(d.Meta().Region(ctx)) response.Diagnostics.Append(response.State.Set(ctx, &data)...) } diff --git a/internal/service/bedrock/generate.go b/internal/service/bedrock/generate.go index 46f71f92f2ea..c6ec041d8e15 100644 --- a/internal/service/bedrock/generate.go +++ b/internal/service/bedrock/generate.go @@ -3,6 +3,7 @@ //go:generate go run ../../generate/servicepackage/main.go //go:generate go run ../../generate/tags/main.go -ServiceTagsSlice -ListTags -ListTagsInIDElem=ResourceARN -UpdateTags -TagInIDElem=ResourceARN +//go:generate go run ../../generate/tagstests/main.go // ONLY generate directives and package declaration! Do not add anything else to this file. package bedrock diff --git a/internal/service/bedrock/guardrail.go b/internal/service/bedrock/guardrail.go index 04e3c61c219b..7d83ca812a61 100644 --- a/internal/service/bedrock/guardrail.go +++ b/internal/service/bedrock/guardrail.go @@ -39,8 +39,11 @@ import ( "github.com/hashicorp/terraform-provider-aws/names" ) -// @FrameworkResource(name="Guardrail") +// @FrameworkResource("aws_bedrock_guardrail", name="Guardrail") // @Tags(identifierAttribute="guardrail_arn") +// @Testing(existsType="github.com/aws/aws-sdk-go-v2/service/bedrock;bedrock.GetGuardrailOutput") +// @Testing(importStateIdFunc="testAccGuardrailImportStateIDFunc") +// @Testing(importStateIdAttribute="guardrail_id") func newResourceGuardrail(_ context.Context) (resource.ResourceWithConfigure, error) { r := &resourceGuardrail{} @@ -135,8 +138,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 +670,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_tags_gen_test.go b/internal/service/bedrock/guardrail_tags_gen_test.go new file mode 100644 index 000000000000..45869a5d7d6e --- /dev/null +++ b/internal/service/bedrock/guardrail_tags_gen_test.go @@ -0,0 +1,2321 @@ +// Code generated by internal/generate/tagstests/main.go; DO NOT EDIT. + +package bedrock_test + +import ( + "testing" + + "github.com/aws/aws-sdk-go-v2/service/bedrock" + "github.com/hashicorp/terraform-plugin-testing/config" + sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/knownvalue" + "github.com/hashicorp/terraform-plugin-testing/plancheck" + "github.com/hashicorp/terraform-plugin-testing/statecheck" + "github.com/hashicorp/terraform-plugin-testing/tfjsonpath" + "github.com/hashicorp/terraform-provider-aws/internal/acctest" + "github.com/hashicorp/terraform-provider-aws/names" +) + +func TestAccBedrockGuardrail_tags(t *testing.T) { + ctx := acctest.Context(t) + var v bedrock.GetGuardrailOutput + resourceName := "aws_bedrock_guardrail.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.BedrockServiceID), + CheckDestroy: testAccCheckGuardrailDestroy(ctx), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + Steps: []resource.TestStep{ + { + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1), + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckGuardrailExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + }, + }, + { + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1), + }), + }, + ResourceName: resourceName, + ImportState: true, + ImportStateIdFunc: testAccGuardrailImportStateIDFunc(resourceName), + ImportStateVerify: true, + ImportStateVerifyIdentifierAttribute: "guardrail_id", + }, + { + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1Updated), + acctest.CtKey2: config.StringVariable(acctest.CtValue2), + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckGuardrailExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1Updated), + acctest.CtKey2: knownvalue.StringExact(acctest.CtValue2), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1Updated), + acctest.CtKey2: knownvalue.StringExact(acctest.CtValue2), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1Updated), + acctest.CtKey2: knownvalue.StringExact(acctest.CtValue2), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1Updated), + acctest.CtKey2: knownvalue.StringExact(acctest.CtValue2), + })), + }, + }, + }, + { + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1Updated), + acctest.CtKey2: config.StringVariable(acctest.CtValue2), + }), + }, + ResourceName: resourceName, + ImportState: true, + ImportStateIdFunc: testAccGuardrailImportStateIDFunc(resourceName), + ImportStateVerify: true, + ImportStateVerifyIdentifierAttribute: "guardrail_id", + }, + { + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey2: config.StringVariable(acctest.CtValue2), + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckGuardrailExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey2: knownvalue.StringExact(acctest.CtValue2), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey2: knownvalue.StringExact(acctest.CtValue2), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey2: knownvalue.StringExact(acctest.CtValue2), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey2: knownvalue.StringExact(acctest.CtValue2), + })), + }, + }, + }, + { + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey2: config.StringVariable(acctest.CtValue2), + }), + }, + ResourceName: resourceName, + ImportState: true, + ImportStateIdFunc: testAccGuardrailImportStateIDFunc(resourceName), + ImportStateVerify: true, + ImportStateVerifyIdentifierAttribute: "guardrail_id", + }, + { + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: nil, + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckGuardrailExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{})), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{})), + }, + }, + }, + { + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: nil, + }, + ResourceName: resourceName, + ImportState: true, + ImportStateIdFunc: testAccGuardrailImportStateIDFunc(resourceName), + ImportStateVerify: true, + ImportStateVerifyIdentifierAttribute: "guardrail_id", + }, + }, + }) +} + +func TestAccBedrockGuardrail_tags_null(t *testing.T) { + ctx := acctest.Context(t) + var v bedrock.GetGuardrailOutput + resourceName := "aws_bedrock_guardrail.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.BedrockServiceID), + CheckDestroy: testAccCheckGuardrailDestroy(ctx), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + Steps: []resource.TestStep{ + { + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: nil, + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckGuardrailExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.Null(), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(""), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.Null(), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(""), + })), + }, + }, + }, + { + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: nil, + }), + }, + ResourceName: resourceName, + ImportState: true, + ImportStateIdFunc: testAccGuardrailImportStateIDFunc(resourceName), + ImportStateVerify: true, + ImportStateVerifyIdentifierAttribute: "guardrail_id", + ImportStateVerifyIgnore: []string{ + acctest.CtTagsKey1, // The canonical value returned by the AWS API is "" + }, + }, + }, + }) +} + +func TestAccBedrockGuardrail_tags_EmptyMap(t *testing.T) { + ctx := acctest.Context(t) + var v bedrock.GetGuardrailOutput + resourceName := "aws_bedrock_guardrail.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.BedrockServiceID), + CheckDestroy: testAccCheckGuardrailDestroy(ctx), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + Steps: []resource.TestStep{ + { + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{}), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckGuardrailExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{})), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{})), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{})), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{})), + }, + }, + }, + { + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{}), + }, + ResourceName: resourceName, + ImportState: true, + ImportStateIdFunc: testAccGuardrailImportStateIDFunc(resourceName), + ImportStateVerify: true, + ImportStateVerifyIdentifierAttribute: "guardrail_id", + ImportStateVerifyIgnore: []string{ + acctest.CtTagsKey1, // The canonical value returned by the AWS API is "" + }, + }, + }, + }) +} + +func TestAccBedrockGuardrail_tags_AddOnUpdate(t *testing.T) { + ctx := acctest.Context(t) + var v bedrock.GetGuardrailOutput + resourceName := "aws_bedrock_guardrail.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.BedrockServiceID), + CheckDestroy: testAccCheckGuardrailDestroy(ctx), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + Steps: []resource.TestStep{ + { + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: nil, + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckGuardrailExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{})), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{})), + }, + }, + }, + { + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1), + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckGuardrailExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + }, + }, + { + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1), + }), + }, + ResourceName: resourceName, + ImportState: true, + ImportStateIdFunc: testAccGuardrailImportStateIDFunc(resourceName), + ImportStateVerify: true, + ImportStateVerifyIdentifierAttribute: "guardrail_id", + }, + }, + }) +} + +func TestAccBedrockGuardrail_tags_EmptyTag_OnCreate(t *testing.T) { + ctx := acctest.Context(t) + var v bedrock.GetGuardrailOutput + resourceName := "aws_bedrock_guardrail.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.BedrockServiceID), + CheckDestroy: testAccCheckGuardrailDestroy(ctx), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + Steps: []resource.TestStep{ + { + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(""), + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckGuardrailExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(""), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(""), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(""), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(""), + })), + }, + }, + }, + { + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(""), + }), + }, + ResourceName: resourceName, + ImportState: true, + ImportStateIdFunc: testAccGuardrailImportStateIDFunc(resourceName), + ImportStateVerify: true, + ImportStateVerifyIdentifierAttribute: "guardrail_id", + }, + { + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: nil, + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckGuardrailExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{})), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{})), + }, + }, + }, + { + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: nil, + }, + ResourceName: resourceName, + ImportState: true, + ImportStateIdFunc: testAccGuardrailImportStateIDFunc(resourceName), + ImportStateVerify: true, + ImportStateVerifyIdentifierAttribute: "guardrail_id", + }, + }, + }) +} + +func TestAccBedrockGuardrail_tags_EmptyTag_OnUpdate_Add(t *testing.T) { + ctx := acctest.Context(t) + var v bedrock.GetGuardrailOutput + resourceName := "aws_bedrock_guardrail.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.BedrockServiceID), + CheckDestroy: testAccCheckGuardrailDestroy(ctx), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + Steps: []resource.TestStep{ + { + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1), + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckGuardrailExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + }, + }, + { + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1), + acctest.CtKey2: config.StringVariable(""), + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckGuardrailExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + acctest.CtKey2: knownvalue.StringExact(""), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + acctest.CtKey2: knownvalue.StringExact(""), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + acctest.CtKey2: knownvalue.StringExact(""), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + acctest.CtKey2: knownvalue.StringExact(""), + })), + }, + }, + }, + { + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1), + acctest.CtKey2: config.StringVariable(""), + }), + }, + ResourceName: resourceName, + ImportState: true, + ImportStateIdFunc: testAccGuardrailImportStateIDFunc(resourceName), + ImportStateVerify: true, + ImportStateVerifyIdentifierAttribute: "guardrail_id", + }, + { + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1), + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckGuardrailExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + }, + }, + { + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1), + }), + }, + ResourceName: resourceName, + ImportState: true, + ImportStateIdFunc: testAccGuardrailImportStateIDFunc(resourceName), + ImportStateVerify: true, + ImportStateVerifyIdentifierAttribute: "guardrail_id", + }, + }, + }) +} + +func TestAccBedrockGuardrail_tags_EmptyTag_OnUpdate_Replace(t *testing.T) { + ctx := acctest.Context(t) + var v bedrock.GetGuardrailOutput + resourceName := "aws_bedrock_guardrail.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.BedrockServiceID), + CheckDestroy: testAccCheckGuardrailDestroy(ctx), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + Steps: []resource.TestStep{ + { + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1), + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckGuardrailExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + }, + }, + { + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(""), + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckGuardrailExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(""), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(""), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(""), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(""), + })), + }, + }, + }, + { + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(""), + }), + }, + ResourceName: resourceName, + ImportState: true, + ImportStateIdFunc: testAccGuardrailImportStateIDFunc(resourceName), + ImportStateVerify: true, + ImportStateVerifyIdentifierAttribute: "guardrail_id", + }, + }, + }) +} + +func TestAccBedrockGuardrail_tags_DefaultTags_providerOnly(t *testing.T) { + ctx := acctest.Context(t) + var v bedrock.GetGuardrailOutput + resourceName := "aws_bedrock_guardrail.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.BedrockServiceID), + CheckDestroy: testAccCheckGuardrailDestroy(ctx), + Steps: []resource.TestStep{ + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1), + }), + acctest.CtResourceTags: nil, + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckGuardrailExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1), + }), + acctest.CtResourceTags: nil, + }, + ResourceName: resourceName, + ImportState: true, + ImportStateIdFunc: testAccGuardrailImportStateIDFunc(resourceName), + ImportStateVerify: true, + ImportStateVerifyIdentifierAttribute: "guardrail_id", + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1Updated), + acctest.CtKey2: config.StringVariable(acctest.CtValue2), + }), + acctest.CtResourceTags: nil, + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckGuardrailExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1Updated), + acctest.CtKey2: knownvalue.StringExact(acctest.CtValue2), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1Updated), + acctest.CtKey2: knownvalue.StringExact(acctest.CtValue2), + })), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1Updated), + acctest.CtKey2: config.StringVariable(acctest.CtValue2), + }), + acctest.CtResourceTags: nil, + }, + ResourceName: resourceName, + ImportState: true, + ImportStateIdFunc: testAccGuardrailImportStateIDFunc(resourceName), + ImportStateVerify: true, + ImportStateVerifyIdentifierAttribute: "guardrail_id", + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey2: config.StringVariable(acctest.CtValue2), + }), + acctest.CtResourceTags: nil, + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckGuardrailExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey2: knownvalue.StringExact(acctest.CtValue2), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey2: knownvalue.StringExact(acctest.CtValue2), + })), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey2: config.StringVariable(acctest.CtValue2), + }), + acctest.CtResourceTags: nil, + }, + ResourceName: resourceName, + ImportState: true, + ImportStateIdFunc: testAccGuardrailImportStateIDFunc(resourceName), + ImportStateVerify: true, + ImportStateVerifyIdentifierAttribute: "guardrail_id", + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: nil, + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckGuardrailExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{})), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{})), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: nil, + }, + ResourceName: resourceName, + ImportState: true, + ImportStateIdFunc: testAccGuardrailImportStateIDFunc(resourceName), + ImportStateVerify: true, + ImportStateVerifyIdentifierAttribute: "guardrail_id", + }, + }, + }) +} + +func TestAccBedrockGuardrail_tags_DefaultTags_nonOverlapping(t *testing.T) { + ctx := acctest.Context(t) + var v bedrock.GetGuardrailOutput + resourceName := "aws_bedrock_guardrail.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.BedrockServiceID), + CheckDestroy: testAccCheckGuardrailDestroy(ctx), + Steps: []resource.TestStep{ + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtProviderKey1: config.StringVariable(acctest.CtProviderValue1), + }), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtResourceKey1: config.StringVariable(acctest.CtResourceValue1), + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckGuardrailExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtProviderKey1: knownvalue.StringExact(acctest.CtProviderValue1), + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtProviderKey1: knownvalue.StringExact(acctest.CtProviderValue1), + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1), + })), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtProviderKey1: config.StringVariable(acctest.CtProviderValue1), + }), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtResourceKey1: config.StringVariable(acctest.CtResourceValue1), + }), + }, + ResourceName: resourceName, + ImportState: true, + ImportStateIdFunc: testAccGuardrailImportStateIDFunc(resourceName), + ImportStateVerify: true, + ImportStateVerifyIdentifierAttribute: "guardrail_id", + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtProviderKey1: config.StringVariable(acctest.CtProviderValue1Updated), + }), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtResourceKey1: config.StringVariable(acctest.CtResourceValue1Updated), + acctest.CtResourceKey2: config.StringVariable(acctest.CtResourceValue2), + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckGuardrailExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1Updated), + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtProviderKey1: knownvalue.StringExact(acctest.CtProviderValue1Updated), + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1Updated), + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1Updated), + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtProviderKey1: knownvalue.StringExact(acctest.CtProviderValue1Updated), + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1Updated), + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2), + })), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtProviderKey1: config.StringVariable(acctest.CtProviderValue1Updated), + }), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtResourceKey1: config.StringVariable(acctest.CtResourceValue1Updated), + acctest.CtResourceKey2: config.StringVariable(acctest.CtResourceValue2), + }), + }, + ResourceName: resourceName, + ImportState: true, + ImportStateIdFunc: testAccGuardrailImportStateIDFunc(resourceName), + ImportStateVerify: true, + ImportStateVerifyIdentifierAttribute: "guardrail_id", + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: nil, + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckGuardrailExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{})), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{})), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: nil, + }, + ResourceName: resourceName, + ImportState: true, + ImportStateIdFunc: testAccGuardrailImportStateIDFunc(resourceName), + ImportStateVerify: true, + ImportStateVerifyIdentifierAttribute: "guardrail_id", + }, + }, + }) +} + +func TestAccBedrockGuardrail_tags_DefaultTags_overlapping(t *testing.T) { + ctx := acctest.Context(t) + var v bedrock.GetGuardrailOutput + resourceName := "aws_bedrock_guardrail.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.BedrockServiceID), + CheckDestroy: testAccCheckGuardrailDestroy(ctx), + Steps: []resource.TestStep{ + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtOverlapKey1: config.StringVariable(acctest.CtProviderValue1), + }), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtOverlapKey1: config.StringVariable(acctest.CtResourceValue1), + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckGuardrailExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtOverlapKey1: knownvalue.StringExact(acctest.CtResourceValue1), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtOverlapKey1: knownvalue.StringExact(acctest.CtResourceValue1), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtOverlapKey1: knownvalue.StringExact(acctest.CtResourceValue1), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtOverlapKey1: knownvalue.StringExact(acctest.CtResourceValue1), + })), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtOverlapKey1: config.StringVariable(acctest.CtProviderValue1), + }), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtOverlapKey1: config.StringVariable(acctest.CtResourceValue1), + }), + }, + ResourceName: resourceName, + ImportState: true, + ImportStateIdFunc: testAccGuardrailImportStateIDFunc(resourceName), + ImportStateVerify: true, + ImportStateVerifyIdentifierAttribute: "guardrail_id", + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtOverlapKey1: config.StringVariable(acctest.CtProviderValue1), + acctest.CtOverlapKey2: config.StringVariable("providervalue2"), + }), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtOverlapKey1: config.StringVariable(acctest.CtResourceValue1), + acctest.CtOverlapKey2: config.StringVariable(acctest.CtResourceValue2), + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckGuardrailExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtOverlapKey1: knownvalue.StringExact(acctest.CtResourceValue1), + acctest.CtOverlapKey2: knownvalue.StringExact(acctest.CtResourceValue2), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtOverlapKey1: knownvalue.StringExact(acctest.CtResourceValue1), + acctest.CtOverlapKey2: knownvalue.StringExact(acctest.CtResourceValue2), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtOverlapKey1: knownvalue.StringExact(acctest.CtResourceValue1), + acctest.CtOverlapKey2: knownvalue.StringExact(acctest.CtResourceValue2), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtOverlapKey1: knownvalue.StringExact(acctest.CtResourceValue1), + acctest.CtOverlapKey2: knownvalue.StringExact(acctest.CtResourceValue2), + })), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtOverlapKey1: config.StringVariable(acctest.CtProviderValue1), + acctest.CtOverlapKey2: config.StringVariable("providervalue2"), + }), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtOverlapKey1: config.StringVariable(acctest.CtResourceValue1), + acctest.CtOverlapKey2: config.StringVariable(acctest.CtResourceValue2), + }), + }, + ResourceName: resourceName, + ImportState: true, + ImportStateIdFunc: testAccGuardrailImportStateIDFunc(resourceName), + ImportStateVerify: true, + ImportStateVerifyIdentifierAttribute: "guardrail_id", + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtOverlapKey1: config.StringVariable(acctest.CtProviderValue1), + }), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtOverlapKey1: config.StringVariable(acctest.CtResourceValue2), + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckGuardrailExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtOverlapKey1: knownvalue.StringExact(acctest.CtResourceValue2), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtOverlapKey1: knownvalue.StringExact(acctest.CtResourceValue2), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtOverlapKey1: knownvalue.StringExact(acctest.CtResourceValue2), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtOverlapKey1: knownvalue.StringExact(acctest.CtResourceValue2), + })), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtOverlapKey1: config.StringVariable(acctest.CtProviderValue1), + }), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtOverlapKey1: config.StringVariable(acctest.CtResourceValue2), + }), + }, + ResourceName: resourceName, + ImportState: true, + ImportStateIdFunc: testAccGuardrailImportStateIDFunc(resourceName), + ImportStateVerify: true, + ImportStateVerifyIdentifierAttribute: "guardrail_id", + }, + }, + }) +} + +func TestAccBedrockGuardrail_tags_DefaultTags_updateToProviderOnly(t *testing.T) { + ctx := acctest.Context(t) + var v bedrock.GetGuardrailOutput + resourceName := "aws_bedrock_guardrail.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.BedrockServiceID), + CheckDestroy: testAccCheckGuardrailDestroy(ctx), + Steps: []resource.TestStep{ + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1), + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckGuardrailExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1), + }), + acctest.CtResourceTags: nil, + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckGuardrailExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1), + }), + acctest.CtResourceTags: nil, + }, + ResourceName: resourceName, + ImportState: true, + ImportStateIdFunc: testAccGuardrailImportStateIDFunc(resourceName), + ImportStateVerify: true, + ImportStateVerifyIdentifierAttribute: "guardrail_id", + }, + }, + }) +} + +func TestAccBedrockGuardrail_tags_DefaultTags_updateToResourceOnly(t *testing.T) { + ctx := acctest.Context(t) + var v bedrock.GetGuardrailOutput + resourceName := "aws_bedrock_guardrail.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.BedrockServiceID), + CheckDestroy: testAccCheckGuardrailDestroy(ctx), + Steps: []resource.TestStep{ + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1), + }), + acctest.CtResourceTags: nil, + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckGuardrailExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1), + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckGuardrailExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1), + }), + }, + ResourceName: resourceName, + ImportState: true, + ImportStateIdFunc: testAccGuardrailImportStateIDFunc(resourceName), + ImportStateVerify: true, + ImportStateVerifyIdentifierAttribute: "guardrail_id", + }, + }, + }) +} + +func TestAccBedrockGuardrail_tags_DefaultTags_emptyResourceTag(t *testing.T) { + ctx := acctest.Context(t) + var v bedrock.GetGuardrailOutput + resourceName := "aws_bedrock_guardrail.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.BedrockServiceID), + CheckDestroy: testAccCheckGuardrailDestroy(ctx), + Steps: []resource.TestStep{ + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1), + }), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(""), + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckGuardrailExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(""), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(""), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(""), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(""), + })), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1), + }), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(""), + }), + }, + ResourceName: resourceName, + ImportState: true, + ImportStateIdFunc: testAccGuardrailImportStateIDFunc(resourceName), + ImportStateVerify: true, + ImportStateVerifyIdentifierAttribute: "guardrail_id", + }, + }, + }) +} + +func TestAccBedrockGuardrail_tags_DefaultTags_emptyProviderOnlyTag(t *testing.T) { + ctx := acctest.Context(t) + var v bedrock.GetGuardrailOutput + resourceName := "aws_bedrock_guardrail.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.BedrockServiceID), + CheckDestroy: testAccCheckGuardrailDestroy(ctx), + Steps: []resource.TestStep{ + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(""), + }), + acctest.CtResourceTags: nil, + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckGuardrailExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(""), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(""), + })), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(""), + }), + acctest.CtResourceTags: nil, + }, + ResourceName: resourceName, + ImportState: true, + ImportStateIdFunc: testAccGuardrailImportStateIDFunc(resourceName), + ImportStateVerify: true, + ImportStateVerifyIdentifierAttribute: "guardrail_id", + }, + }, + }) +} + +func TestAccBedrockGuardrail_tags_DefaultTags_nullOverlappingResourceTag(t *testing.T) { + ctx := acctest.Context(t) + var v bedrock.GetGuardrailOutput + resourceName := "aws_bedrock_guardrail.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.BedrockServiceID), + CheckDestroy: testAccCheckGuardrailDestroy(ctx), + Steps: []resource.TestStep{ + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtProviderValue1), + }), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: nil, + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckGuardrailExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.Null(), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(""), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.Null(), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(""), + })), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtProviderValue1), + }), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: nil, + }), + }, + ResourceName: resourceName, + ImportState: true, + ImportStateIdFunc: testAccGuardrailImportStateIDFunc(resourceName), + ImportStateVerify: true, + ImportStateVerifyIdentifierAttribute: "guardrail_id", + ImportStateVerifyIgnore: []string{ + acctest.CtTagsKey1, // The canonical value returned by the AWS API is "" + }, + }, + }, + }) +} + +func TestAccBedrockGuardrail_tags_DefaultTags_nullNonOverlappingResourceTag(t *testing.T) { + ctx := acctest.Context(t) + var v bedrock.GetGuardrailOutput + resourceName := "aws_bedrock_guardrail.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.BedrockServiceID), + CheckDestroy: testAccCheckGuardrailDestroy(ctx), + Steps: []resource.TestStep{ + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtProviderKey1: config.StringVariable(acctest.CtProviderValue1), + }), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtResourceKey1: nil, + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckGuardrailExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.Null(), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(""), + acctest.CtProviderKey1: knownvalue.StringExact(acctest.CtProviderValue1), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.Null(), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(""), + acctest.CtProviderKey1: knownvalue.StringExact(acctest.CtProviderValue1), + })), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtProviderKey1: config.StringVariable(acctest.CtProviderValue1), + }), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtResourceKey1: nil, + }), + }, + ResourceName: resourceName, + ImportState: true, + ImportStateIdFunc: testAccGuardrailImportStateIDFunc(resourceName), + ImportStateVerify: true, + ImportStateVerifyIdentifierAttribute: "guardrail_id", + ImportStateVerifyIgnore: []string{ + "tags.resourcekey1", // The canonical value returned by the AWS API is "" + }, + }, + }, + }) +} + +func TestAccBedrockGuardrail_tags_ComputedTag_OnCreate(t *testing.T) { + ctx := acctest.Context(t) + var v bedrock.GetGuardrailOutput + resourceName := "aws_bedrock_guardrail.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.BedrockServiceID), + CheckDestroy: testAccCheckGuardrailDestroy(ctx), + Steps: []resource.TestStep{ + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tagsComputed1/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + "unknownTagKey": config.StringVariable("computedkey1"), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckGuardrailExists(ctx, resourceName, &v), + resource.TestCheckResourceAttrPair(resourceName, "tags.computedkey1", "null_resource.test", names.AttrID), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapSizeExact(1)), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapSizeExact(1)), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + plancheck.ExpectUnknownValue(resourceName, tfjsonpath.New(names.AttrTags).AtMapKey("computedkey1")), + plancheck.ExpectUnknownValue(resourceName, tfjsonpath.New(names.AttrTagsAll)), + }, + PostApplyPreRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tagsComputed1/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + "unknownTagKey": config.StringVariable("computedkey1"), + }, + ResourceName: resourceName, + ImportState: true, + ImportStateIdFunc: testAccGuardrailImportStateIDFunc(resourceName), + ImportStateVerify: true, + ImportStateVerifyIdentifierAttribute: "guardrail_id", + }, + }, + }) +} + +func TestAccBedrockGuardrail_tags_ComputedTag_OnUpdate_Add(t *testing.T) { + ctx := acctest.Context(t) + var v bedrock.GetGuardrailOutput + resourceName := "aws_bedrock_guardrail.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.BedrockServiceID), + CheckDestroy: testAccCheckGuardrailDestroy(ctx), + Steps: []resource.TestStep{ + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1), + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckGuardrailExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tagsComputed2/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + "unknownTagKey": config.StringVariable("computedkey1"), + "knownTagKey": config.StringVariable(acctest.CtKey1), + "knownTagValue": config.StringVariable(acctest.CtValue1), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckGuardrailExists(ctx, resourceName, &v), + resource.TestCheckResourceAttrPair(resourceName, "tags.computedkey1", "null_resource.test", names.AttrID), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapSizeExact(2)), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapPartial(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapSizeExact(2)), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapPartial(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectUnknownValue(resourceName, tfjsonpath.New(names.AttrTags).AtMapKey("computedkey1")), + plancheck.ExpectUnknownValue(resourceName, tfjsonpath.New(names.AttrTagsAll)), + }, + PostApplyPreRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tagsComputed2/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + "unknownTagKey": config.StringVariable("computedkey1"), + "knownTagKey": config.StringVariable(acctest.CtKey1), + "knownTagValue": config.StringVariable(acctest.CtValue1), + }, + ResourceName: resourceName, + ImportState: true, + ImportStateIdFunc: testAccGuardrailImportStateIDFunc(resourceName), + ImportStateVerify: true, + ImportStateVerifyIdentifierAttribute: "guardrail_id", + }, + }, + }) +} + +func TestAccBedrockGuardrail_tags_ComputedTag_OnUpdate_Replace(t *testing.T) { + ctx := acctest.Context(t) + var v bedrock.GetGuardrailOutput + resourceName := "aws_bedrock_guardrail.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.BedrockServiceID), + CheckDestroy: testAccCheckGuardrailDestroy(ctx), + Steps: []resource.TestStep{ + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1), + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckGuardrailExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tagsComputed1/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + "unknownTagKey": config.StringVariable(acctest.CtKey1), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckGuardrailExists(ctx, resourceName, &v), + resource.TestCheckResourceAttrPair(resourceName, acctest.CtTagsKey1, "null_resource.test", names.AttrID), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapSizeExact(1)), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapSizeExact(1)), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectUnknownValue(resourceName, tfjsonpath.New(names.AttrTags).AtMapKey(acctest.CtKey1)), + plancheck.ExpectUnknownValue(resourceName, tfjsonpath.New(names.AttrTagsAll)), + }, + PostApplyPreRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tagsComputed1/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + "unknownTagKey": config.StringVariable(acctest.CtKey1), + }, + ResourceName: resourceName, + ImportState: true, + ImportStateIdFunc: testAccGuardrailImportStateIDFunc(resourceName), + ImportStateVerify: true, + ImportStateVerifyIdentifierAttribute: "guardrail_id", + }, + }, + }) +} + +func TestAccBedrockGuardrail_tags_IgnoreTags_Overlap_DefaultTag(t *testing.T) { + ctx := acctest.Context(t) + var v bedrock.GetGuardrailOutput + resourceName := "aws_bedrock_guardrail.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.BedrockServiceID), + CheckDestroy: testAccCheckGuardrailDestroy(ctx), + Steps: []resource.TestStep{ + // 1: Create + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags_ignore/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtProviderKey1: config.StringVariable(acctest.CtProviderValue1), + }), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtResourceKey1: config.StringVariable(acctest.CtResourceValue1), + }), + "ignore_tag_keys": config.SetVariable( + config.StringVariable(acctest.CtProviderKey1), + ), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckGuardrailExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1), + })), + expectFullResourceTags(resourceName, knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtProviderKey1: knownvalue.StringExact(acctest.CtProviderValue1), // TODO: Should not be set + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1), + })), + }, + PostApplyPreRefresh: []plancheck.PlanCheck{ + plancheck.ExpectEmptyPlan(), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectEmptyPlan(), + }, + }, + }, + // 2: Update ignored tag only + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags_ignore/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtProviderKey1: config.StringVariable(acctest.CtProviderValue1Updated), + }), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtResourceKey1: config.StringVariable(acctest.CtResourceValue1), + }), + "ignore_tag_keys": config.SetVariable( + config.StringVariable(acctest.CtProviderKey1), + ), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckGuardrailExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1), + })), + expectFullResourceTags(resourceName, knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtProviderKey1: knownvalue.StringExact(acctest.CtProviderValue1), // TODO: Should not be set + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1), + })), + }, + PostApplyPreRefresh: []plancheck.PlanCheck{ + plancheck.ExpectEmptyPlan(), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectEmptyPlan(), + }, + }, + }, + // 3: Update both tags + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags_ignore/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtProviderKey1: config.StringVariable(acctest.CtProviderValue1Again), + }), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtResourceKey1: config.StringVariable(acctest.CtResourceValue1Updated), + }), + "ignore_tag_keys": config.SetVariable( + config.StringVariable(acctest.CtProviderKey1), + ), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckGuardrailExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1Updated), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1Updated), + })), + expectFullResourceTags(resourceName, knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtProviderKey1: knownvalue.StringExact(acctest.CtProviderValue1), // TODO: Should not be set + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1Updated), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1Updated), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1Updated), + })), + }, + PostApplyPreRefresh: []plancheck.PlanCheck{ + plancheck.ExpectEmptyPlan(), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectEmptyPlan(), + }, + }, + }, + }, + }) +} + +func TestAccBedrockGuardrail_tags_IgnoreTags_Overlap_ResourceTag(t *testing.T) { + ctx := acctest.Context(t) + var v bedrock.GetGuardrailOutput + resourceName := "aws_bedrock_guardrail.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.BedrockServiceID), + CheckDestroy: testAccCheckGuardrailDestroy(ctx), + Steps: []resource.TestStep{ + // 1: Create + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags_ignore/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtResourceKey1: config.StringVariable(acctest.CtResourceValue1), + acctest.CtResourceKey2: config.StringVariable(acctest.CtResourceValue2), + }), + "ignore_tag_keys": config.SetVariable( + config.StringVariable(acctest.CtResourceKey1), + ), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckGuardrailExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1), + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2), + })), + expectFullResourceTags(resourceName, knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1), // TODO: Should not be set + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1), + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2), + })), + }, + PostApplyPreRefresh: []plancheck.PlanCheck{ + plancheck.ExpectEmptyPlan(), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), // TODO: Should be NoOp + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1), + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2), + })), + }, + }, + ExpectNonEmptyPlan: true, + }, + // 2: Update ignored tag + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags_ignore/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtResourceKey1: config.StringVariable(acctest.CtResourceValue1Updated), + acctest.CtResourceKey2: config.StringVariable(acctest.CtResourceValue2), + }), + "ignore_tag_keys": config.SetVariable( + config.StringVariable(acctest.CtResourceKey1), + ), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckGuardrailExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1Updated), + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2), + })), + expectFullResourceTags(resourceName, knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1), // TODO: Should not be set + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1Updated), + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2), + })), + }, + PostApplyPreRefresh: []plancheck.PlanCheck{ + plancheck.ExpectEmptyPlan(), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), // TODO: Should be NoOp + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1Updated), + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2), + })), + }, + }, + ExpectNonEmptyPlan: true, + }, + // 3: Update both tags + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/Guardrail/tags_ignore/"), + ConfigVariables: config.Variables{ + acctest.CtRName: config.StringVariable(rName), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtResourceKey1: config.StringVariable(acctest.CtResourceValue1Again), + acctest.CtResourceKey2: config.StringVariable(acctest.CtResourceValue2Updated), + }), + "ignore_tag_keys": config.SetVariable( + config.StringVariable(acctest.CtResourceKey1), + ), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckGuardrailExists(ctx, resourceName, &v), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1Again), + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2Updated), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2Updated), + })), + expectFullResourceTags(resourceName, knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1), // TODO: Should not be set + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2Updated), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1Again), + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2Updated), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2Updated), + })), + }, + PostApplyPreRefresh: []plancheck.PlanCheck{ + plancheck.ExpectEmptyPlan(), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), // TODO: Should be NoOp + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1Again), + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2Updated), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2Updated), + })), + }, + }, + ExpectNonEmptyPlan: true, + }, + }, + }) +} diff --git a/internal/service/bedrock/guardrail_test.go b/internal/service/bedrock/guardrail_test.go index 50b38161c066..e9b69095e0e6 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), @@ -136,44 +138,6 @@ func TestAccBedrockGuardrail_kmsKey(t *testing.T) { }) } -func TestAccBedrockGuardrail_tags(t *testing.T) { - ctx := acctest.Context(t) - - rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) - resourceName := "aws_bedrock_guardrail.test" - var guardrail bedrock.GetGuardrailOutput - - resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { - acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, names.BedrockEndpointID) - }, - ErrorCheck: acctest.ErrorCheck(t, names.BedrockServiceID), - ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, - CheckDestroy: testAccCheckGuardrailDestroy(ctx), - Steps: []resource.TestStep{ - { - Config: testAccGuardrailConfig_tags(rName, acctest.CtKey1, acctest.CtValue1, acctest.CtKey2, acctest.CtValue2), - Check: resource.ComposeTestCheckFunc( - testAccCheckGuardrailExists(ctx, resourceName, &guardrail), - resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "2"), - resource.TestCheckResourceAttr(resourceName, acctest.CtTagsKey1, acctest.CtValue1), - resource.TestCheckResourceAttr(resourceName, acctest.CtTagsKey2, acctest.CtValue2), - ), - }, - { - Config: testAccGuardrailConfig_tags(rName, acctest.CtKey1, acctest.CtValue1Updated, acctest.CtKey2, acctest.CtValue1Updated), - Check: resource.ComposeTestCheckFunc( - testAccCheckGuardrailExists(ctx, resourceName, &guardrail), - resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "2"), - resource.TestCheckResourceAttr(resourceName, acctest.CtTagsKey1, acctest.CtValue1Updated), - resource.TestCheckResourceAttr(resourceName, acctest.CtTagsKey2, acctest.CtValue1Updated), - ), - }, - }, - }) -} - func TestAccBedrockGuardrail_update(t *testing.T) { ctx := acctest.Context(t) rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) @@ -414,52 +378,6 @@ resource "aws_bedrock_guardrail" "test" { `, rName)) } -func testAccGuardrailConfig_tags(rName, tagKey1, tagValue1, tagKey2, tagValue2 string) string { - return acctest.ConfigCompose( - testAccCustomModelConfig_base(rName), - fmt.Sprintf(` -resource "aws_kms_key" "test" { - description = %[1]q - deletion_window_in_days = 7 -} - -resource "aws_bedrock_guardrail" "test" { - name = %[1]q - blocked_input_messaging = "test" - blocked_outputs_messaging = "test" - description = "test" - kms_key_arn = aws_kms_key.test.arn - - content_policy_config { - filters_config { - input_strength = "MEDIUM" - output_strength = "MEDIUM" - type = "HATE" - } - filters_config { - input_strength = "HIGH" - output_strength = "HIGH" - type = "VIOLENCE" - } - } - - word_policy_config { - managed_word_lists_config { - type = "PROFANITY" - } - words_config { - text = "HATE" - } - } - - tags = { - %[2]q = %[3]q - %[4]q = %[5]q - } -} -`, rName, tagKey1, tagValue1, tagKey2, tagValue2)) -} - func testAccGuardrailConfig_update(rName, blockedInputMessaging, blockedOutputMessaging, inputStrength, regexPattern, piiType, topicName, wordConfig string) string { return fmt.Sprintf(` resource "aws_bedrock_guardrail" "test" { diff --git a/internal/service/bedrock/inference_profile_data_source.go b/internal/service/bedrock/inference_profile_data_source.go index 0f454e8f59d5..5e55bfe75d15 100644 --- a/internal/service/bedrock/inference_profile_data_source.go +++ b/internal/service/bedrock/inference_profile_data_source.go @@ -23,7 +23,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/names" ) -// @FrameworkDataSource(name="Inference Profile") +// @FrameworkDataSource("aws_bedrock_inference_profile", name="Inference Profile") func newInferenceProfileDataSource(context.Context) (datasource.DataSourceWithConfigure, error) { return &inferenceProfileDataSource{}, nil } diff --git a/internal/service/bedrock/inference_profiles_data_source.go b/internal/service/bedrock/inference_profiles_data_source.go index bd5f0f14c93f..064f7f6c6e4f 100644 --- a/internal/service/bedrock/inference_profiles_data_source.go +++ b/internal/service/bedrock/inference_profiles_data_source.go @@ -17,7 +17,7 @@ import ( fwtypes "github.com/hashicorp/terraform-provider-aws/internal/framework/types" ) -// @FrameworkDataSource(name="Inference Profiles") +// @FrameworkDataSource("aws_bedrock_inference_profiles", name="Inference Profiles") func newInferenceProfilesDataSource(context.Context) (datasource.DataSourceWithConfigure, error) { return &inferenceProfilesDataSource{}, nil } diff --git a/internal/service/bedrock/model_invocation_logging_configuration.go b/internal/service/bedrock/model_invocation_logging_configuration.go index 45e485fbc174..eb63fbce906d 100644 --- a/internal/service/bedrock/model_invocation_logging_configuration.go +++ b/internal/service/bedrock/model_invocation_logging_configuration.go @@ -23,7 +23,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/names" ) -// @FrameworkResource(name="Model Invocation Logging Configuration") +// @FrameworkResource("aws_bedrock_model_invocation_logging_configuration", name="Model Invocation Logging Configuration") func newModelInvocationLoggingConfigurationResource(context.Context) (resource.ResourceWithConfigure, error) { return &resourceModelInvocationLoggingConfiguration{}, nil } @@ -118,7 +118,7 @@ func (r *resourceModelInvocationLoggingConfiguration) Create(ctx context.Context } // Set values for unknowns. - data.ID = types.StringValue(r.Meta().Region) + data.ID = types.StringValue(r.Meta().Region(ctx)) response.Diagnostics.Append(response.State.Set(ctx, &data)...) } diff --git a/internal/service/bedrock/provisioned_model_throughput.go b/internal/service/bedrock/provisioned_model_throughput.go index 03b0b9c72fbd..792d41b9fd40 100644 --- a/internal/service/bedrock/provisioned_model_throughput.go +++ b/internal/service/bedrock/provisioned_model_throughput.go @@ -32,8 +32,9 @@ import ( "github.com/hashicorp/terraform-provider-aws/names" ) -// @FrameworkResource(name="Provisioned Model Throughput") +// @FrameworkResource("aws_bedrock_provisioned_model_throughput", name="Provisioned Model Throughput") // @Tags(identifierAttribute="provisioned_model_arn") +// @Testing(tagsTest=false) func newProvisionedModelThroughputResource(context.Context) (resource.ResourceWithConfigure, error) { r := &resourceProvisionedModelThroughput{} @@ -199,6 +200,10 @@ func (r *resourceProvisionedModelThroughput) Delete(ctx context.Context, request } } +func (r *resourceProvisionedModelThroughput) ModifyPlan(ctx context.Context, req resource.ModifyPlanRequest, resp *resource.ModifyPlanResponse) { + r.SetTagsAll(ctx, req, resp) +} + func findProvisionedModelThroughputByID(ctx context.Context, conn *bedrock.Client, id string) (*bedrock.GetProvisionedModelThroughputOutput, error) { input := &bedrock.GetProvisionedModelThroughputInput{ ProvisionedModelId: aws.String(id), diff --git a/internal/service/bedrock/provisioned_model_throughput_test.go b/internal/service/bedrock/provisioned_model_throughput_test.go index 66028ca40758..961793f10242 100644 --- a/internal/service/bedrock/provisioned_model_throughput_test.go +++ b/internal/service/bedrock/provisioned_model_throughput_test.go @@ -11,7 +11,11 @@ import ( "github.com/aws/aws-sdk-go-v2/service/bedrock" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/knownvalue" + "github.com/hashicorp/terraform-plugin-testing/plancheck" + "github.com/hashicorp/terraform-plugin-testing/statecheck" "github.com/hashicorp/terraform-plugin-testing/terraform" + "github.com/hashicorp/terraform-plugin-testing/tfjsonpath" "github.com/hashicorp/terraform-provider-aws/internal/acctest" "github.com/hashicorp/terraform-provider-aws/internal/conns" tfbedrock "github.com/hashicorp/terraform-provider-aws/internal/service/bedrock" @@ -42,8 +46,18 @@ func TestAccBedrockProvisionedModelThroughput_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "model_units", "1"), resource.TestCheckResourceAttrSet(resourceName, "provisioned_model_arn"), resource.TestCheckResourceAttr(resourceName, "provisioned_model_name", rName), - resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{})), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{})), + }, + }, }, { ResourceName: resourceName, @@ -106,15 +120,15 @@ func testAccCheckProvisionedModelThroughputExists(ctx context.Context, n string, func testAccProvisionedModelThroughputConfig_basic(rName string) string { return fmt.Sprintf(` -data "aws_bedrock_foundation_model" "test" { - model_id = "amazon.titan-text-express-v1:0:8k" -} - resource "aws_bedrock_provisioned_model_throughput" "test" { provisioned_model_name = %[1]q model_arn = data.aws_bedrock_foundation_model.test.model_arn commitment_duration = "OneMonth" model_units = 1 } + +data "aws_bedrock_foundation_model" "test" { + model_id = "amazon.titan-text-express-v1:0:8k" +} `, rName) } diff --git a/internal/service/bedrock/service_endpoints_gen_test.go b/internal/service/bedrock/service_endpoints_gen_test.go index ef1426540606..d478281d0074 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/bedrock/tags_gen_test.go b/internal/service/bedrock/tags_gen_test.go new file mode 100644 index 000000000000..4eb9329eefc6 --- /dev/null +++ b/internal/service/bedrock/tags_gen_test.go @@ -0,0 +1,16 @@ +// Code generated by internal/generate/tagstests/main.go; DO NOT EDIT. + +package bedrock_test + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-testing/knownvalue" + "github.com/hashicorp/terraform-plugin-testing/statecheck" + tfstatecheck "github.com/hashicorp/terraform-provider-aws/internal/acctest/statecheck" + tfbedrock "github.com/hashicorp/terraform-provider-aws/internal/service/bedrock" +) + +func expectFullResourceTags(resourceAddress string, knownValue knownvalue.Check) statecheck.StateCheck { + return tfstatecheck.ExpectFullResourceTags(tfbedrock.ServicePackage(context.Background()), resourceAddress, knownValue) +} diff --git a/internal/service/bedrock/testdata/CustomModel/tags/main_gen.tf b/internal/service/bedrock/testdata/CustomModel/tags/main_gen.tf new file mode 100644 index 000000000000..f28b231dd3a3 --- /dev/null +++ b/internal/service/bedrock/testdata/CustomModel/tags/main_gen.tf @@ -0,0 +1,152 @@ +# Copyright (c) HashiCorp, Inc. +# SPDX-License-Identifier: MPL-2.0 + +resource "aws_bedrock_custom_model" "test" { + custom_model_name = var.rName + job_name = var.rName + base_model_identifier = data.aws_bedrock_foundation_model.test.model_arn + role_arn = aws_iam_role.test.arn + + hyperparameters = { + "epochCount" = "1" + "batchSize" = "1" + "learningRate" = "0.005" + "learningRateWarmupSteps" = "0" + } + + output_data_config { + s3_uri = "s3://${aws_s3_bucket.output.id}/data/" + } + + training_data_config { + s3_uri = "s3://${aws_s3_bucket.training.id}/data/train.jsonl" + } + + tags = var.resource_tags +} + +# testAccCustomModelConfig_base + +data "aws_caller_identity" "current" {} +data "aws_region" "current" {} +data "aws_partition" "current" {} + +resource "aws_s3_bucket" "training" { + bucket = "${var.rName}-training" +} + +resource "aws_s3_bucket" "validation" { + bucket = "${var.rName}-validation" +} + +resource "aws_s3_bucket" "output" { + bucket = "${var.rName}-output" + force_destroy = true +} + +resource "aws_s3_object" "training" { + bucket = aws_s3_bucket.training.id + key = "data/train.jsonl" + source = "test-fixtures/train.jsonl" +} + +resource "aws_s3_object" "validation" { + bucket = aws_s3_bucket.validation.id + key = "data/validate.jsonl" + source = "test-fixtures/validate.jsonl" +} + +resource "aws_iam_role" "test" { + name = var.rName + + # See https://docs.aws.amazon.com/bedrock/latest/userguide/model-customization-iam-role.html#model-customization-iam-role-trust. + assume_role_policy = < 0 { @@ -276,7 +276,7 @@ func resourceStackInstancesCreate(ctx context.Context, d *schema.ResourceData, m deployedByOU = "OU" } } else { - input.Accounts = []string{meta.(*conns.AWSClient).AccountID} + input.Accounts = []string{meta.(*conns.AWSClient).AccountID(ctx)} } callAs := d.Get("call_as").(string) @@ -507,7 +507,7 @@ func resourceStackInstancesUpdate(ctx context.Context, d *schema.ResourceData, m } // can only give either accounts or deployment_targets - input.Accounts = []string{meta.(*conns.AWSClient).AccountID} + input.Accounts = []string{meta.(*conns.AWSClient).AccountID(ctx)} if v, ok := d.GetOk(AttrAccounts); ok && v.(*schema.Set).Len() > 0 { input.Accounts = flex.ExpandStringValueSet(v.(*schema.Set)) } @@ -689,7 +689,7 @@ func findStackInstancesByNameCallAs(ctx context.Context, meta interface{}, stack } if len(output.Accounts) == 0 && len(accounts) == 0 { - output.Accounts = []string{meta.(*conns.AWSClient).AccountID} + output.Accounts = []string{meta.(*conns.AWSClient).AccountID(ctx)} } if len(output.Regions) == 0 && len(regions) > 0 { @@ -697,7 +697,7 @@ func findStackInstancesByNameCallAs(ctx context.Context, meta interface{}, stack } if len(output.Regions) == 0 && len(regions) == 0 { - output.Regions = []string{meta.(*conns.AWSClient).Region} + output.Regions = []string{meta.(*conns.AWSClient).Region(ctx)} } if deployedByOU { diff --git a/internal/service/cloudformation/stack_instances_test.go b/internal/service/cloudformation/stack_instances_test.go index 2051af395485..429605af240f 100644 --- a/internal/service/cloudformation/stack_instances_test.go +++ b/internal/service/cloudformation/stack_instances_test.go @@ -42,7 +42,7 @@ func TestAccCloudFormationStackInstances_basic(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckStackInstancesExists(ctx, resourceName, &stackInstances1), resource.TestCheckResourceAttr(resourceName, "accounts.#", "1"), - acctest.CheckResourceAttrAccountID(resourceName, "accounts.0"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "accounts.0"), resource.TestCheckResourceAttr(resourceName, "call_as", "SELF"), resource.TestCheckResourceAttr(resourceName, "deployment_targets.#", "0"), resource.TestCheckResourceAttr(resourceName, "operation_preferences.#", "0"), @@ -51,7 +51,7 @@ func TestAccCloudFormationStackInstances_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "regions.0", acctest.Region()), resource.TestCheckResourceAttr(resourceName, "retain_stacks", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "stack_instance_summaries.#", "1"), - acctest.CheckResourceAttrAccountID(resourceName, "stack_instance_summaries.0.account_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "stack_instance_summaries.0.account_id"), resource.TestCheckResourceAttr(resourceName, "stack_instance_summaries.0.drift_status", "NOT_CHECKED"), resource.TestCheckResourceAttr(resourceName, "stack_instance_summaries.0.region", acctest.Region()), resource.TestCheckResourceAttrSet(resourceName, "stack_instance_summaries.0.stack_id"), @@ -142,7 +142,7 @@ func TestAccCloudFormationStackInstances_Multi_increaseRegions(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckStackInstancesExists(ctx, resourceName, &stackInstances1), resource.TestCheckResourceAttr(resourceName, "accounts.#", "1"), - acctest.CheckResourceAttrAccountID(resourceName, "accounts.0"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "accounts.0"), resource.TestCheckResourceAttr(resourceName, "call_as", "SELF"), resource.TestCheckResourceAttr(resourceName, "deployment_targets.#", "0"), resource.TestCheckResourceAttr(resourceName, "operation_preferences.#", "0"), diff --git a/internal/service/cloudformation/stack_set_instance.go b/internal/service/cloudformation/stack_set_instance.go index c5760d33d1a0..b282ac8386d8 100644 --- a/internal/service/cloudformation/stack_set_instance.go +++ b/internal/service/cloudformation/stack_set_instance.go @@ -230,7 +230,7 @@ func resourceStackSetInstanceCreate(ctx context.Context, d *schema.ResourceData, var diags diag.Diagnostics conn := meta.(*conns.AWSClient).CloudFormationClient(ctx) - region := meta.(*conns.AWSClient).Region + region := meta.(*conns.AWSClient).Region(ctx) if v, ok := d.GetOk(names.AttrRegion); ok { region = v.(string) } @@ -241,7 +241,7 @@ func resourceStackSetInstanceCreate(ctx context.Context, d *schema.ResourceData, StackSetName: aws.String(stackSetName), } - accountID := meta.(*conns.AWSClient).AccountID + accountID := meta.(*conns.AWSClient).AccountID(ctx) if v, ok := d.GetOk(names.AttrAccountID); ok { accountID = v.(string) } diff --git a/internal/service/cloudformation/stack_set_instance_test.go b/internal/service/cloudformation/stack_set_instance_test.go index 1773bd371c3c..0e37d564b3ab 100644 --- a/internal/service/cloudformation/stack_set_instance_test.go +++ b/internal/service/cloudformation/stack_set_instance_test.go @@ -40,7 +40,7 @@ func TestAccCloudFormationStackSetInstance_basic(t *testing.T) { Config: testAccStackSetInstanceConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckStackSetInstanceExists(ctx, resourceName, &stackInstance1), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrAccountID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrAccountID), resource.TestCheckResourceAttr(resourceName, "call_as", "SELF"), resource.TestCheckResourceAttr(resourceName, "deployment_targets.#", "0"), resource.TestCheckResourceAttr(resourceName, "operation_preferences.#", "0"), diff --git a/internal/service/cloudformation/stack_set_test.go b/internal/service/cloudformation/stack_set_test.go index ff83e7fbfa2f..652bc4cb145c 100644 --- a/internal/service/cloudformation/stack_set_test.go +++ b/internal/service/cloudformation/stack_set_test.go @@ -42,7 +42,7 @@ func TestAccCloudFormationStackSet_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckStackSetExists(ctx, resourceName, &stackSet1), resource.TestCheckResourceAttrPair(resourceName, "administration_role_arn", iamRoleResourceName, names.AttrARN), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "cloudformation", regexache.MustCompile(`stackset/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "cloudformation", regexache.MustCompile(`stackset/.+`)), resource.TestCheckResourceAttr(resourceName, "capabilities.#", "0"), resource.TestCheckResourceAttr(resourceName, "call_as", "SELF"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -596,7 +596,7 @@ func TestAccCloudFormationStackSet_PermissionModel_serviceManaged(t *testing.T) Config: testAccStackSetConfig_permissionModel(rName), Check: resource.ComposeTestCheckFunc( testAccCheckStackSetExists(ctx, resourceName, &stackSet1), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "cloudformation", regexache.MustCompile(`stackset/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "cloudformation", regexache.MustCompile(`stackset/.+`)), resource.TestCheckResourceAttr(resourceName, "permission_model", "SERVICE_MANAGED"), resource.TestCheckResourceAttr(resourceName, "auto_deployment.#", "1"), resource.TestCheckResourceAttr(resourceName, "auto_deployment.0.enabled", acctest.CtTrue), diff --git a/internal/service/cloudformation/type_test.go b/internal/service/cloudformation/type_test.go index 238c180ec49b..936b1f5354bf 100644 --- a/internal/service/cloudformation/type_test.go +++ b/internal/service/cloudformation/type_test.go @@ -44,7 +44,7 @@ func TestAccCloudFormationType_basic(t *testing.T) { Config: testAccTypeConfig_name(rName, zipPath, typeName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckTypeExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "cloudformation", regexache.MustCompile(fmt.Sprintf("type/resource/%s/.+", strings.ReplaceAll(typeName, "::", "-")))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "cloudformation", regexache.MustCompile(fmt.Sprintf("type/resource/%s/.+", strings.ReplaceAll(typeName, "::", "-")))), resource.TestCheckResourceAttr(resourceName, "default_version_id", ""), resource.TestCheckResourceAttr(resourceName, "deprecated_status", string(awstypes.DeprecatedStatusLive)), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "An example resource schema demonstrating some basic constructs and validation rules."), @@ -56,7 +56,7 @@ func TestAccCloudFormationType_basic(t *testing.T) { resource.TestMatchResourceAttr(resourceName, names.AttrSchema, regexache.MustCompile(`^\{.*`)), resource.TestCheckResourceAttr(resourceName, "source_url", "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git"), resource.TestCheckResourceAttr(resourceName, names.AttrType, string(awstypes.RegistryTypeResource)), - acctest.CheckResourceAttrRegionalARN(resourceName, "type_arn", "cloudformation", fmt.Sprintf("type/resource/%s", strings.ReplaceAll(typeName, "::", "-"))), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, "type_arn", "cloudformation", fmt.Sprintf("type/resource/%s", strings.ReplaceAll(typeName, "::", "-"))), resource.TestCheckResourceAttr(resourceName, "type_name", typeName), resource.TestCheckResourceAttr(resourceName, "visibility", string(awstypes.VisibilityPrivate)), resource.TestMatchResourceAttr(resourceName, "version_id", regexache.MustCompile(`.+`)), diff --git a/internal/service/cloudfront/distribution_test.go b/internal/service/cloudfront/distribution_test.go index 2cb16be603d0..1870ec1b320f 100644 --- a/internal/service/cloudfront/distribution_test.go +++ b/internal/service/cloudfront/distribution_test.go @@ -676,7 +676,7 @@ func TestAccCloudFrontDistribution_noOptionalItems(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckDistributionExists(ctx, resourceName, &distribution), resource.TestCheckResourceAttr(resourceName, "aliases.#", "0"), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "cloudfront", regexache.MustCompile(`distribution/[0-9A-Z]+$`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "cloudfront", regexache.MustCompile(`distribution/[0-9A-Z]+$`)), resource.TestCheckResourceAttr(resourceName, "custom_error_response.#", "0"), resource.TestCheckResourceAttr(resourceName, "default_cache_behavior.#", "1"), resource.TestCheckResourceAttr(resourceName, "default_cache_behavior.0.allowed_methods.#", "7"), @@ -1559,9 +1559,9 @@ func testAccDistributionRetainConfig() string { func testAccRegionProviderConfig() string { switch acctest.Partition() { case endpoints.AwsPartitionID: - return acctest.ConfigRegionalProvider(names.USEast1RegionID) + return acctest.ConfigRegionalProvider(endpoints.UsEast1RegionID) case endpoints.AwsCnPartitionID: - return acctest.ConfigRegionalProvider(names.CNNorthwest1RegionID) + return acctest.ConfigRegionalProvider(endpoints.CnNorthwest1RegionID) default: return acctest.ConfigRegionalProvider(acctest.Region()) } diff --git a/internal/service/cloudfront/function_test.go b/internal/service/cloudfront/function_test.go index 429aefc7726a..2bfd28ee204b 100644 --- a/internal/service/cloudfront/function_test.go +++ b/internal/service/cloudfront/function_test.go @@ -46,7 +46,7 @@ func TestAccCloudFrontFunction_basic(t *testing.T) { Config: testAccFunctionConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckFunctionExists(ctx, resourceName, &conf), - acctest.CheckResourceAttrGlobalARN(resourceName, names.AttrARN, "cloudfront", fmt.Sprintf("function/%s", rName)), + acctest.CheckResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "cloudfront", fmt.Sprintf("function/%s", rName)), resource.TestCheckResourceAttrSet(resourceName, "code"), resource.TestCheckResourceAttr(resourceName, names.AttrComment, ""), resource.TestCheckResourceAttr(resourceName, "etag", "ETVPDKIKX0DER"), diff --git a/internal/service/cloudfront/log_delivery_canonical_user_id_data_source.go b/internal/service/cloudfront/log_delivery_canonical_user_id_data_source.go index a4c00fe3c93c..1071a9db1383 100644 --- a/internal/service/cloudfront/log_delivery_canonical_user_id_data_source.go +++ b/internal/service/cloudfront/log_delivery_canonical_user_id_data_source.go @@ -39,7 +39,7 @@ func dataSourceLogDeliveryCanonicalUserIDRead(ctx context.Context, d *schema.Res var diags diag.Diagnostics canonicalUserID := defaultLogDeliveryCanonicalUserID - region := meta.(*conns.AWSClient).Region + region := meta.(*conns.AWSClient).Region(ctx) if v, ok := d.GetOk(names.AttrRegion); ok { region = v.(string) } diff --git a/internal/service/cloudfront/log_delivery_canonical_user_id_data_source_test.go b/internal/service/cloudfront/log_delivery_canonical_user_id_data_source_test.go index cbf1d8569c65..692f7fc1e1c5 100644 --- a/internal/service/cloudfront/log_delivery_canonical_user_id_data_source_test.go +++ b/internal/service/cloudfront/log_delivery_canonical_user_id_data_source_test.go @@ -7,6 +7,7 @@ import ( "fmt" "testing" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-provider-aws/internal/acctest" "github.com/hashicorp/terraform-provider-aws/names" @@ -41,7 +42,7 @@ func TestAccCloudFrontLogDeliveryCanonicalUserIDDataSource_default(t *testing.T) ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, Steps: []resource.TestStep{ { - Config: testAccLogDeliveryCanonicalUserIdDataSourceConfig_basic(names.USWest2RegionID), + Config: testAccLogDeliveryCanonicalUserIdDataSourceConfig_basic(endpoints.UsWest2RegionID), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttr(dataSourceName, names.AttrID, "c4c1ede66af53448b93c283ce9448c4ba468c9432aa01d700d3878632f77d2d0"), ), @@ -60,7 +61,7 @@ func TestAccCloudFrontLogDeliveryCanonicalUserIDDataSource_cn(t *testing.T) { ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, Steps: []resource.TestStep{ { - Config: testAccLogDeliveryCanonicalUserIdDataSourceConfig_basic(names.CNNorthwest1RegionID), + Config: testAccLogDeliveryCanonicalUserIdDataSourceConfig_basic(endpoints.CnNorthwest1RegionID), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttr(dataSourceName, names.AttrID, "a52cb28745c0c06e84ec548334e44bfa7fc2a85c54af20cd59e4969344b7af56"), ), diff --git a/internal/service/cloudfront/origin_access_identities_data_source.go b/internal/service/cloudfront/origin_access_identities_data_source.go index 7cc966aa043c..a5ccfbd1f2c7 100644 --- a/internal/service/cloudfront/origin_access_identities_data_source.go +++ b/internal/service/cloudfront/origin_access_identities_data_source.go @@ -87,7 +87,7 @@ func dataSourceOriginAccessIdentitiesRead(ctx context.Context, d *schema.Resourc s3CanonicalUserIDs = append(s3CanonicalUserIDs, aws.ToString(v.S3CanonicalUserId)) } - d.SetId(meta.(*conns.AWSClient).AccountID) + d.SetId(meta.(*conns.AWSClient).AccountID(ctx)) d.Set("iam_arns", iamARNs) d.Set(names.AttrIDs, ids) d.Set("s3_canonical_user_ids", s3CanonicalUserIDs) diff --git a/internal/service/cloudfront/realtime_log_config_test.go b/internal/service/cloudfront/realtime_log_config_test.go index aeb342fa8764..03e00875c19b 100644 --- a/internal/service/cloudfront/realtime_log_config_test.go +++ b/internal/service/cloudfront/realtime_log_config_test.go @@ -39,7 +39,7 @@ func TestAccCloudFrontRealtimeLogConfig_basic(t *testing.T) { Config: testAccRealtimeLogConfigConfig_basic(rName, samplingRate), Check: resource.ComposeTestCheckFunc( testAccCheckRealtimeLogConfigExists(ctx, resourceName, &v), - acctest.CheckResourceAttrGlobalARN(resourceName, names.AttrARN, "cloudfront", fmt.Sprintf("realtime-log-config/%s", rName)), + acctest.CheckResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "cloudfront", fmt.Sprintf("realtime-log-config/%s", rName)), resource.TestCheckResourceAttr(resourceName, "endpoint.#", "1"), resource.TestCheckResourceAttr(resourceName, "endpoint.0.stream_type", "Kinesis"), resource.TestCheckResourceAttr(resourceName, "endpoint.0.kinesis_stream_config.#", "1"), @@ -108,7 +108,7 @@ func TestAccCloudFrontRealtimeLogConfig_updates(t *testing.T) { Config: testAccRealtimeLogConfigConfig_basic(rName, samplingRate1), Check: resource.ComposeTestCheckFunc( testAccCheckRealtimeLogConfigExists(ctx, resourceName, &v), - acctest.CheckResourceAttrGlobalARN(resourceName, names.AttrARN, "cloudfront", fmt.Sprintf("realtime-log-config/%s", rName)), + acctest.CheckResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "cloudfront", fmt.Sprintf("realtime-log-config/%s", rName)), resource.TestCheckResourceAttr(resourceName, "endpoint.#", "1"), resource.TestCheckResourceAttr(resourceName, "endpoint.0.stream_type", "Kinesis"), resource.TestCheckResourceAttr(resourceName, "endpoint.0.kinesis_stream_config.#", "1"), @@ -125,7 +125,7 @@ func TestAccCloudFrontRealtimeLogConfig_updates(t *testing.T) { Config: testAccRealtimeLogConfigConfig_updated(rName, samplingRate2), Check: resource.ComposeTestCheckFunc( testAccCheckRealtimeLogConfigExists(ctx, resourceName, &v), - acctest.CheckResourceAttrGlobalARN(resourceName, names.AttrARN, "cloudfront", fmt.Sprintf("realtime-log-config/%s", rName)), + acctest.CheckResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "cloudfront", fmt.Sprintf("realtime-log-config/%s", rName)), resource.TestCheckResourceAttr(resourceName, "endpoint.#", "1"), resource.TestCheckResourceAttr(resourceName, "endpoint.0.stream_type", "Kinesis"), resource.TestCheckResourceAttr(resourceName, "endpoint.0.kinesis_stream_config.#", "1"), diff --git a/internal/service/cloudfront/service_endpoints_gen_test.go b/internal/service/cloudfront/service_endpoints_gen_test.go index f7fa1821c77e..0c59e13644e5 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 811d32dac273..8771178a3dec 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/domain_test.go b/internal/service/cloudsearch/domain_test.go index 50c5e1c3636c..9296bcb8dc13 100644 --- a/internal/service/cloudsearch/domain_test.go +++ b/internal/service/cloudsearch/domain_test.go @@ -41,7 +41,7 @@ func TestAccCloudSearchDomain_basic(t *testing.T) { Config: testAccDomainConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccDomainExists(ctx, resourceName, &v), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "cloudsearch", fmt.Sprintf("domain/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "cloudsearch", fmt.Sprintf("domain/%s", rName)), resource.TestCheckResourceAttrSet(resourceName, "domain_id"), resource.TestCheckResourceAttr(resourceName, "endpoint_options.#", "1"), resource.TestCheckResourceAttr(resourceName, "endpoint_options.0.enforce_https", acctest.CtFalse), @@ -267,7 +267,7 @@ func TestAccCloudSearchDomain_update(t *testing.T) { Config: testAccDomainConfig_allOptions(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccDomainExists(ctx, resourceName, &v), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "cloudsearch", fmt.Sprintf("domain/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "cloudsearch", fmt.Sprintf("domain/%s", rName)), resource.TestCheckResourceAttrSet(resourceName, "domain_id"), resource.TestCheckResourceAttr(resourceName, "endpoint_options.#", "1"), resource.TestCheckResourceAttr(resourceName, "endpoint_options.0.enforce_https", acctest.CtTrue), @@ -294,7 +294,7 @@ func TestAccCloudSearchDomain_update(t *testing.T) { Config: testAccDomainConfig_allOptionsUpdated(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccDomainExists(ctx, resourceName, &v), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "cloudsearch", fmt.Sprintf("domain/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "cloudsearch", fmt.Sprintf("domain/%s", rName)), resource.TestCheckResourceAttrSet(resourceName, "domain_id"), resource.TestCheckResourceAttr(resourceName, "endpoint_options.#", "1"), resource.TestCheckResourceAttr(resourceName, "endpoint_options.0.enforce_https", acctest.CtTrue), diff --git a/internal/service/cloudsearch/service_endpoints_gen_test.go b/internal/service/cloudsearch/service_endpoints_gen_test.go index d8500ca39d7f..7f33406838d9 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/event_data_store_test.go b/internal/service/cloudtrail/event_data_store_test.go index 0312273a6de6..7091a50ce812 100644 --- a/internal/service/cloudtrail/event_data_store_test.go +++ b/internal/service/cloudtrail/event_data_store_test.go @@ -42,7 +42,7 @@ func TestAccCloudTrailEventDataStore_basic(t *testing.T) { names.AttrField: "eventCategory", }), resource.TestCheckResourceAttr(resourceName, "advanced_event_selector.0.name", "Default management events"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "cloudtrail", regexache.MustCompile(`eventdatastore/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "cloudtrail", regexache.MustCompile(`eventdatastore/.+`)), resource.TestCheckResourceAttr(resourceName, "billing_mode", "EXTENDABLE_RETENTION_PRICING"), resource.TestCheckResourceAttr(resourceName, "multi_region_enabled", acctest.CtTrue), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), @@ -113,7 +113,7 @@ func TestAccCloudTrailEventDataStore_kmsKeyId(t *testing.T) { Config: testAccEventDataStoreConfig_kmsKeyId(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckEventDataStoreExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "cloudtrail", regexache.MustCompile(`eventdatastore/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "cloudtrail", regexache.MustCompile(`eventdatastore/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "multi_region_enabled", acctest.CtTrue), resource.TestCheckResourceAttr(resourceName, "organization_enabled", acctest.CtFalse), diff --git a/internal/service/cloudtrail/service_account_data_source.go b/internal/service/cloudtrail/service_account_data_source.go index 703aaeb99db6..8b58ca7fea57 100644 --- a/internal/service/cloudtrail/service_account_data_source.go +++ b/internal/service/cloudtrail/service_account_data_source.go @@ -7,6 +7,7 @@ import ( "context" "github.com/aws/aws-sdk-go-v2/aws/arn" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" "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" @@ -19,38 +20,38 @@ import ( // See https://docs.aws.amazon.com/govcloud-us/latest/ug-west/verifying-cloudtrail.html var serviceAccountPerRegionMap = map[string]string{ - names.AFSouth1RegionID: "525921808201", - names.APEast1RegionID: "119688915426", - names.APNortheast1RegionID: "216624486486", - names.APNortheast2RegionID: "492519147666", - names.APNortheast3RegionID: "765225791966", - names.APSouth1RegionID: "977081816279", - names.APSouth2RegionID: "582488909970", - names.APSoutheast1RegionID: "903692715234", - names.APSoutheast2RegionID: "284668455005", - names.APSoutheast3RegionID: "069019280451", - names.APSoutheast4RegionID: "187074758985", - names.CACentral1RegionID: "819402241893", - names.CNNorth1RegionID: "193415116832", - names.CNNorthwest1RegionID: "681348832753", - names.EUCentral1RegionID: "035351147821", - names.EUCentral2RegionID: "453052556044", - names.EUNorth1RegionID: "829690693026", - names.EUSouth1RegionID: "669305197877", - names.EUSouth2RegionID: "757211635381", - names.EUWest1RegionID: "859597730677", - names.EUWest2RegionID: "282025262664", - names.EUWest3RegionID: "262312530599", - names.ILCentral1RegionID: "683224464357", - names.MECentral1RegionID: "585772288577", - names.MESouth1RegionID: "034638983726", - names.SAEast1RegionID: "814480443879", - names.USEast1RegionID: "086441151436", - names.USEast2RegionID: "475085895292", - names.USGovEast1RegionID: "608710470296", - names.USGovWest1RegionID: "608710470296", - names.USWest1RegionID: "388731089494", - names.USWest2RegionID: "113285607260", + endpoints.AfSouth1RegionID: "525921808201", + endpoints.ApEast1RegionID: "119688915426", + endpoints.ApNortheast1RegionID: "216624486486", + endpoints.ApNortheast2RegionID: "492519147666", + endpoints.ApNortheast3RegionID: "765225791966", + endpoints.ApSouth1RegionID: "977081816279", + endpoints.ApSouth2RegionID: "582488909970", + endpoints.ApSoutheast1RegionID: "903692715234", + endpoints.ApSoutheast2RegionID: "284668455005", + endpoints.ApSoutheast3RegionID: "069019280451", + endpoints.ApSoutheast4RegionID: "187074758985", + endpoints.CaCentral1RegionID: "819402241893", + endpoints.CnNorth1RegionID: "193415116832", + endpoints.CnNorthwest1RegionID: "681348832753", + endpoints.EuCentral1RegionID: "035351147821", + endpoints.EuCentral2RegionID: "453052556044", + endpoints.EuNorth1RegionID: "829690693026", + endpoints.EuSouth1RegionID: "669305197877", + endpoints.EuSouth2RegionID: "757211635381", + endpoints.EuWest1RegionID: "859597730677", + endpoints.EuWest2RegionID: "282025262664", + endpoints.EuWest3RegionID: "262312530599", + endpoints.IlCentral1RegionID: "683224464357", + endpoints.MeCentral1RegionID: "585772288577", + endpoints.MeSouth1RegionID: "034638983726", + endpoints.SaEast1RegionID: "814480443879", + endpoints.UsEast1RegionID: "086441151436", + endpoints.UsEast2RegionID: "475085895292", + endpoints.UsGovEast1RegionID: "608710470296", + endpoints.UsGovWest1RegionID: "608710470296", + endpoints.UsWest1RegionID: "388731089494", + endpoints.UsWest2RegionID: "113285607260", } // @SDKDataSource("aws_cloudtrail_service_account", name="Service Account") @@ -74,7 +75,7 @@ func dataSourceServiceAccount() *schema.Resource { func dataSourceServiceAccountRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics - region := meta.(*conns.AWSClient).Region + region := meta.(*conns.AWSClient).Region(ctx) if v, ok := d.GetOk(names.AttrRegion); ok { region = v.(string) } diff --git a/internal/service/cloudtrail/service_endpoints_gen_test.go b/internal/service/cloudtrail/service_endpoints_gen_test.go index 2973c41a2863..7ff0220c554b 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/cloudtrail/trail_test.go b/internal/service/cloudtrail/trail_test.go index 3b4ac2c63d88..cdb584b58d94 100644 --- a/internal/service/cloudtrail/trail_test.go +++ b/internal/service/cloudtrail/trail_test.go @@ -39,7 +39,7 @@ func testAccTrail_basic(t *testing.T) { Config: testAccCloudTrailConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckTrailExists(ctx, resourceName, &trail), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "cloudtrail", fmt.Sprintf("trail/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "cloudtrail", fmt.Sprintf("trail/%s", rName)), resource.TestCheckResourceAttr(resourceName, "include_global_service_events", acctest.CtTrue), resource.TestCheckResourceAttr(resourceName, "is_organization_trail", acctest.CtFalse), testAccCheckLogValidationEnabled(resourceName, false, &trail), @@ -458,7 +458,7 @@ func testAccTrail_eventSelector(t *testing.T) { acctest.CheckResourceAttrGlobalARNNoAccount(resourceName, "event_selector.1.data_resource.0.values.1", "s3", fmt.Sprintf("%s-2/tf2", rName)), resource.TestCheckResourceAttr(resourceName, "event_selector.1.data_resource.1.type", "AWS::Lambda::Function"), resource.TestCheckResourceAttr(resourceName, "event_selector.1.data_resource.1.values.#", "1"), - acctest.CheckResourceAttrRegionalARN(resourceName, "event_selector.1.data_resource.1.values.0", "lambda", fmt.Sprintf("function:%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, "event_selector.1.data_resource.1.values.0", "lambda", fmt.Sprintf("function:%s", rName)), resource.TestCheckResourceAttr(resourceName, "event_selector.0.exclude_management_event_sources.#", "0"), resource.TestCheckResourceAttr(resourceName, "event_selector.1.include_management_events", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "event_selector.1.read_write_type", "All"), @@ -492,7 +492,7 @@ func testAccTrail_eventSelectorDynamoDB(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "event_selector.0.data_resource.#", "1"), resource.TestCheckResourceAttr(resourceName, "event_selector.0.data_resource.0.type", "AWS::DynamoDB::Table"), resource.TestCheckResourceAttr(resourceName, "event_selector.0.data_resource.0.values.#", "1"), - acctest.MatchResourceAttrRegionalARN(resourceName, "event_selector.0.data_resource.0.values.0", "dynamodb", regexache.MustCompile(`table/tf-acc-test-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, "event_selector.0.data_resource.0.values.0", "dynamodb", regexache.MustCompile(`table/tf-acc-test-.+`)), resource.TestCheckResourceAttr(resourceName, "event_selector.0.include_management_events", acctest.CtTrue), resource.TestCheckResourceAttr(resourceName, "event_selector.0.read_write_type", "All"), ), @@ -748,7 +748,7 @@ func testAccTrail_migrateV0(t *testing.T) { Config: testAccCloudTrailConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckTrailExists(ctx, resourceName, &trail), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "cloudtrail", fmt.Sprintf("trail/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "cloudtrail", fmt.Sprintf("trail/%s", rName)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttrPair(resourceName, names.AttrID, resourceName, names.AttrName), ), @@ -758,7 +758,7 @@ func testAccTrail_migrateV0(t *testing.T) { Config: testAccCloudTrailConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckTrailExists(ctx, resourceName, &trail), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "cloudtrail", fmt.Sprintf("trail/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "cloudtrail", fmt.Sprintf("trail/%s", rName)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttrPair(resourceName, names.AttrID, resourceName, names.AttrARN), ), diff --git a/internal/service/cloudwatch/composite_alarm_test.go b/internal/service/cloudwatch/composite_alarm_test.go index e1241db15716..d4867c0c3921 100644 --- a/internal/service/cloudwatch/composite_alarm_test.go +++ b/internal/service/cloudwatch/composite_alarm_test.go @@ -40,7 +40,7 @@ func TestAccCloudWatchCompositeAlarm_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "alarm_description", ""), resource.TestCheckResourceAttr(resourceName, "alarm_name", rName), resource.TestCheckResourceAttr(resourceName, "alarm_rule", fmt.Sprintf("ALARM(%[1]s-0) OR ALARM(%[1]s-1)", rName)), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "cloudwatch", regexache.MustCompile(`alarm:.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "cloudwatch", regexache.MustCompile(`alarm:.+`)), resource.TestCheckResourceAttr(resourceName, "insufficient_data_actions.#", "0"), resource.TestCheckResourceAttr(resourceName, "ok_actions.#", "0"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), diff --git a/internal/service/cloudwatch/metric_alarm_test.go b/internal/service/cloudwatch/metric_alarm_test.go index cac3f1ce5d32..07bf5434b4c8 100755 --- a/internal/service/cloudwatch/metric_alarm_test.go +++ b/internal/service/cloudwatch/metric_alarm_test.go @@ -38,7 +38,7 @@ func TestAccCloudWatchMetricAlarm_basic(t *testing.T) { testAccCheckMetricAlarmExists(ctx, resourceName, &alarm), resource.TestCheckResourceAttr(resourceName, names.AttrMetricName, "CPUUtilization"), resource.TestCheckResourceAttr(resourceName, "statistic", "Average"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "cloudwatch", regexache.MustCompile(`alarm:.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "cloudwatch", regexache.MustCompile(`alarm:.+`)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttr(resourceName, "alarm_description", "This metric monitors ec2 cpu utilization"), resource.TestCheckResourceAttr(resourceName, "threshold", "80"), diff --git a/internal/service/cloudwatch/metric_stream_test.go b/internal/service/cloudwatch/metric_stream_test.go index 12458593ce15..e33209f08d43 100644 --- a/internal/service/cloudwatch/metric_stream_test.go +++ b/internal/service/cloudwatch/metric_stream_test.go @@ -45,7 +45,7 @@ func TestAccCloudWatchMetricStream_basic(t *testing.T) { Config: testAccMetricStreamConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckMetricStreamExists(ctx, resourceName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "cloudwatch", fmt.Sprintf("metric-stream/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "cloudwatch", fmt.Sprintf("metric-stream/%s", rName)), acctest.CheckResourceAttrRFC3339(resourceName, names.AttrCreationDate), resource.TestCheckResourceAttr(resourceName, "exclude_filter.#", "0"), resource.TestCheckResourceAttr(resourceName, "include_filter.#", "0"), @@ -286,8 +286,8 @@ func TestAccCloudWatchMetricStream_update(t *testing.T) { Config: testAccMetricStreamConfig_arns(rName, "S1"), Check: resource.ComposeTestCheckFunc( testAccCheckMetricStreamExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, "firehose_arn", "firehose", regexache.MustCompile(`deliverystream/S1$`)), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrRoleARN, "iam", regexache.MustCompile(`role/S1$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, "firehose_arn", "firehose", regexache.MustCompile(`deliverystream/S1$`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrRoleARN, "iam", regexache.MustCompile(`role/S1$`)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -300,8 +300,8 @@ func TestAccCloudWatchMetricStream_update(t *testing.T) { Config: testAccMetricStreamConfig_arns(rName, "S2"), Check: resource.ComposeTestCheckFunc( testAccCheckMetricStreamExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, "firehose_arn", "firehose", regexache.MustCompile(`deliverystream/S2$`)), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrRoleARN, "iam", regexache.MustCompile(`role/S2$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, "firehose_arn", "firehose", regexache.MustCompile(`deliverystream/S2$`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrRoleARN, "iam", regexache.MustCompile(`role/S2$`)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -309,8 +309,8 @@ func TestAccCloudWatchMetricStream_update(t *testing.T) { Config: testAccMetricStreamConfig_arnsWithTag(rName, "S3", acctest.CtKey1, acctest.CtValue1), Check: resource.ComposeTestCheckFunc( testAccCheckMetricStreamExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, "firehose_arn", "firehose", regexache.MustCompile(`deliverystream/S3$`)), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrRoleARN, "iam", regexache.MustCompile(`role/S3$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, "firehose_arn", "firehose", regexache.MustCompile(`deliverystream/S3$`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrRoleARN, "iam", regexache.MustCompile(`role/S3$`)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "1"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsKey1, acctest.CtValue1), ), @@ -319,8 +319,8 @@ func TestAccCloudWatchMetricStream_update(t *testing.T) { Config: testAccMetricStreamConfig_arnsWithTag(rName, "S4", acctest.CtKey1, acctest.CtValue1), Check: resource.ComposeTestCheckFunc( testAccCheckMetricStreamExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, "firehose_arn", "firehose", regexache.MustCompile(`deliverystream/S4$`)), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrRoleARN, "iam", regexache.MustCompile(`role/S4$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, "firehose_arn", "firehose", regexache.MustCompile(`deliverystream/S4$`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrRoleARN, "iam", regexache.MustCompile(`role/S4$`)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "1"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsKey1, acctest.CtValue1), ), @@ -329,8 +329,8 @@ func TestAccCloudWatchMetricStream_update(t *testing.T) { Config: testAccMetricStreamConfig_arnsWithTag(rName, "S4", acctest.CtKey1, acctest.CtValue1Updated), Check: resource.ComposeTestCheckFunc( testAccCheckMetricStreamExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, "firehose_arn", "firehose", regexache.MustCompile(`deliverystream/S4$`)), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrRoleARN, "iam", regexache.MustCompile(`role/S4$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, "firehose_arn", "firehose", regexache.MustCompile(`deliverystream/S4$`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrRoleARN, "iam", regexache.MustCompile(`role/S4$`)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "1"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsKey1, acctest.CtValue1Updated), ), diff --git a/internal/service/cloudwatch/service_endpoints_gen_test.go b/internal/service/cloudwatch/service_endpoints_gen_test.go index c95c2e415b7d..e13e934adcd1 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/authorization_token_data_source.go b/internal/service/codeartifact/authorization_token_data_source.go index 1e240b7abd61..6b1fca819f8f 100644 --- a/internal/service/codeartifact/authorization_token_data_source.go +++ b/internal/service/codeartifact/authorization_token_data_source.go @@ -64,7 +64,7 @@ func dataSourceAuthorizationTokenRead(ctx context.Context, d *schema.ResourceDat if v, ok := d.GetOk("domain_owner"); ok { domainOwner = v.(string) } else { - domainOwner = meta.(*conns.AWSClient).AccountID + domainOwner = meta.(*conns.AWSClient).AccountID(ctx) } input := &codeartifact.GetAuthorizationTokenInput{ Domain: aws.String(domainName), diff --git a/internal/service/codeartifact/authorization_token_data_source_test.go b/internal/service/codeartifact/authorization_token_data_source_test.go index a34bd568a616..ff98b92edde9 100644 --- a/internal/service/codeartifact/authorization_token_data_source_test.go +++ b/internal/service/codeartifact/authorization_token_data_source_test.go @@ -28,7 +28,7 @@ func testAccAuthorizationTokenDataSource_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrSet(dataSourceName, "authorization_token"), resource.TestCheckResourceAttrSet(dataSourceName, "expiration"), - acctest.CheckResourceAttrAccountID(dataSourceName, "domain_owner"), + acctest.CheckResourceAttrAccountID(ctx, dataSourceName, "domain_owner"), ), }, }, @@ -50,7 +50,7 @@ func testAccAuthorizationTokenDataSource_owner(t *testing.T) { Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrSet(dataSourceName, "authorization_token"), resource.TestCheckResourceAttrSet(dataSourceName, "expiration"), - acctest.CheckResourceAttrAccountID(dataSourceName, "domain_owner"), + acctest.CheckResourceAttrAccountID(ctx, dataSourceName, "domain_owner"), ), }, }, @@ -73,7 +73,7 @@ func testAccAuthorizationTokenDataSource_duration(t *testing.T) { resource.TestCheckResourceAttrSet(dataSourceName, "authorization_token"), resource.TestCheckResourceAttrSet(dataSourceName, "expiration"), resource.TestCheckResourceAttr(dataSourceName, "duration_seconds", "900"), - acctest.CheckResourceAttrAccountID(dataSourceName, "domain_owner"), + acctest.CheckResourceAttrAccountID(ctx, dataSourceName, "domain_owner"), ), }, }, diff --git a/internal/service/codeartifact/domain_test.go b/internal/service/codeartifact/domain_test.go index aa7444565e69..cac55a927a9c 100644 --- a/internal/service/codeartifact/domain_test.go +++ b/internal/service/codeartifact/domain_test.go @@ -34,14 +34,14 @@ func testAccDomain_basic(t *testing.T) { Config: testAccDomainConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckDomainExists(ctx, resourceName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "codeartifact", fmt.Sprintf("domain/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "codeartifact", fmt.Sprintf("domain/%s", rName)), resource.TestCheckResourceAttr(resourceName, names.AttrDomain, rName), resource.TestCheckResourceAttr(resourceName, "asset_size_bytes", "0"), resource.TestCheckResourceAttr(resourceName, "repository_count", "0"), resource.TestCheckResourceAttrSet(resourceName, "s3_bucket_arn"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedTime), resource.TestCheckResourceAttrPair(resourceName, "encryption_key", "aws_kms_key.test", names.AttrARN), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwner), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwner), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -69,14 +69,14 @@ func testAccDomain_defaultEncryptionKey(t *testing.T) { Config: testAccDomainConfig_defaultEncryptionKey(rName), Check: resource.ComposeTestCheckFunc( testAccCheckDomainExists(ctx, resourceName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "codeartifact", fmt.Sprintf("domain/%s", rName)), - acctest.MatchResourceAttrRegionalARN(resourceName, "encryption_key", "kms", regexache.MustCompile(`key/.+`)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "codeartifact", fmt.Sprintf("domain/%s", rName)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, "encryption_key", "kms", regexache.MustCompile(`key/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrDomain, rName), resource.TestCheckResourceAttr(resourceName, "asset_size_bytes", "0"), resource.TestCheckResourceAttr(resourceName, "repository_count", "0"), resource.TestCheckResourceAttrSet(resourceName, "s3_bucket_arn"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedTime), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwner), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwner), ), }, { diff --git a/internal/service/codeartifact/repository_endpoint_data_source.go b/internal/service/codeartifact/repository_endpoint_data_source.go index 0ed73cc4f6c5..34c31b64896e 100644 --- a/internal/service/codeartifact/repository_endpoint_data_source.go +++ b/internal/service/codeartifact/repository_endpoint_data_source.go @@ -61,7 +61,7 @@ func dataSourceRepositoryEndpointRead(ctx context.Context, d *schema.ResourceDat if v, ok := d.GetOk("domain_owner"); ok { domainOwner = v.(string) } else { - domainOwner = meta.(*conns.AWSClient).AccountID + domainOwner = meta.(*conns.AWSClient).AccountID(ctx) } format := types.PackageFormat(d.Get(names.AttrFormat).(string)) repositoryName := d.Get("repository").(string) diff --git a/internal/service/codeartifact/repository_endpoint_data_source_test.go b/internal/service/codeartifact/repository_endpoint_data_source_test.go index 470a0f4740b6..ed9bfb667ef2 100644 --- a/internal/service/codeartifact/repository_endpoint_data_source_test.go +++ b/internal/service/codeartifact/repository_endpoint_data_source_test.go @@ -27,28 +27,28 @@ func testAccRepositoryEndpointDataSource_basic(t *testing.T) { Config: testAccRepositoryEndpointDataSourceConfig_basic(rName, "npm"), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrSet(dataSourceName, "repository_endpoint"), - acctest.CheckResourceAttrAccountID(dataSourceName, "domain_owner"), + acctest.CheckResourceAttrAccountID(ctx, dataSourceName, "domain_owner"), ), }, { Config: testAccRepositoryEndpointDataSourceConfig_basic(rName, "pypi"), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrSet(dataSourceName, "repository_endpoint"), - acctest.CheckResourceAttrAccountID(dataSourceName, "domain_owner"), + acctest.CheckResourceAttrAccountID(ctx, dataSourceName, "domain_owner"), ), }, { Config: testAccRepositoryEndpointDataSourceConfig_basic(rName, "maven"), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrSet(dataSourceName, "repository_endpoint"), - acctest.CheckResourceAttrAccountID(dataSourceName, "domain_owner"), + acctest.CheckResourceAttrAccountID(ctx, dataSourceName, "domain_owner"), ), }, { Config: testAccRepositoryEndpointDataSourceConfig_basic(rName, "nuget"), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrSet(dataSourceName, "repository_endpoint"), - acctest.CheckResourceAttrAccountID(dataSourceName, "domain_owner"), + acctest.CheckResourceAttrAccountID(ctx, dataSourceName, "domain_owner"), ), }, }, @@ -69,7 +69,7 @@ func testAccRepositoryEndpointDataSource_owner(t *testing.T) { Config: testAccRepositoryEndpointDataSourceConfig_owner(rName), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrSet(dataSourceName, "repository_endpoint"), - acctest.CheckResourceAttrAccountID(dataSourceName, "domain_owner"), + acctest.CheckResourceAttrAccountID(ctx, dataSourceName, "domain_owner"), ), }, }, diff --git a/internal/service/codeartifact/repository_test.go b/internal/service/codeartifact/repository_test.go index ade85523658e..1c15ae5cdfce 100644 --- a/internal/service/codeartifact/repository_test.go +++ b/internal/service/codeartifact/repository_test.go @@ -33,7 +33,7 @@ func testAccRepository_basic(t *testing.T) { Config: testAccRepositoryConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckRepositoryExists(ctx, resourceName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "codeartifact", fmt.Sprintf("repository/%s/%s", rName, rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "codeartifact", fmt.Sprintf("repository/%s/%s", rName, rName)), resource.TestCheckResourceAttr(resourceName, "repository", rName), resource.TestCheckResourceAttr(resourceName, names.AttrDomain, rName), resource.TestCheckResourceAttrPair(resourceName, "domain_owner", "aws_codeartifact_domain.test", names.AttrOwner), @@ -113,7 +113,7 @@ func testAccRepository_owner(t *testing.T) { Config: testAccRepositoryConfig_owner(rName), Check: resource.ComposeTestCheckFunc( testAccCheckRepositoryExists(ctx, resourceName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "codeartifact", fmt.Sprintf("repository/%s/%s", rName, rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "codeartifact", fmt.Sprintf("repository/%s/%s", rName, rName)), resource.TestCheckResourceAttr(resourceName, "repository", rName), resource.TestCheckResourceAttr(resourceName, names.AttrDomain, rName), resource.TestCheckResourceAttrPair(resourceName, "domain_owner", "aws_codeartifact_domain.test", names.AttrOwner), diff --git a/internal/service/codeartifact/service_endpoints_gen_test.go b/internal/service/codeartifact/service_endpoints_gen_test.go index a9f103d38d1d..e92c84420f52 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/project_test.go b/internal/service/codebuild/project_test.go index 79f67f654a08..300254e3e648 100644 --- a/internal/service/codebuild/project_test.go +++ b/internal/service/codebuild/project_test.go @@ -102,7 +102,7 @@ func TestAccCodeBuildProject_basic(t *testing.T) { Config: testAccProjectConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckProjectExists(ctx, resourceName, &project), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "codebuild", fmt.Sprintf("project/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "codebuild", fmt.Sprintf("project/%s", rName)), resource.TestCheckResourceAttr(resourceName, "artifacts.#", "1"), resource.TestCheckResourceAttr(resourceName, "badge_enabled", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "build_batch_config.#", "0"), @@ -111,7 +111,7 @@ func TestAccCodeBuildProject_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "cache.#", "1"), resource.TestCheckResourceAttr(resourceName, "cache.0.type", string(types.CacheTypeNoCache)), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), - acctest.CheckResourceAttrRegionalARN(resourceName, "encryption_key", "kms", "alias/aws/s3"), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, "encryption_key", "kms", "alias/aws/s3"), resource.TestCheckResourceAttr(resourceName, "environment.#", "1"), resource.TestCheckResourceAttr(resourceName, "environment.0.compute_type", string(types.ComputeTypeBuildGeneral1Small)), resource.TestCheckResourceAttr(resourceName, "environment.0.environment_variable.#", "0"), @@ -2884,7 +2884,7 @@ func TestAccCodeBuildProject_fleet(t *testing.T) { Config: testAccProjectConfig_fleet(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckProjectExists(ctx, resourceName, &project), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "codebuild", fmt.Sprintf("project/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "codebuild", fmt.Sprintf("project/%s", rName)), resource.TestCheckResourceAttr(resourceName, "environment.0.compute_type", string(types.ComputeTypeBuildGeneral1Small)), resource.TestCheckResourceAttr(resourceName, "environment.0.fleet.#", "1"), resource.TestCheckResourceAttrPair(resourceName, "environment.0.fleet.0.fleet_arn", fleetResourceName, names.AttrARN), diff --git a/internal/service/codebuild/report_group_test.go b/internal/service/codebuild/report_group_test.go index 5136e31f5569..9c2824179a7c 100644 --- a/internal/service/codebuild/report_group_test.go +++ b/internal/service/codebuild/report_group_test.go @@ -39,7 +39,7 @@ func TestAccCodeBuildReportGroup_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "export_config.#", "1"), resource.TestCheckResourceAttr(resourceName, "export_config.0.type", "NO_EXPORT"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "codebuild", fmt.Sprintf("report-group/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "codebuild", fmt.Sprintf("report-group/%s", rName)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -77,7 +77,7 @@ func TestAccCodeBuildReportGroup_Export_s3(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "export_config.0.s3_destination.0.encryption_disabled", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "export_config.0.s3_destination.0.path", "/some"), resource.TestCheckResourceAttrPair(resourceName, "export_config.0.s3_destination.0.encryption_key", "aws_kms_key.test", names.AttrARN), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "codebuild", fmt.Sprintf("report-group/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "codebuild", fmt.Sprintf("report-group/%s", rName)), ), }, { @@ -97,7 +97,7 @@ func TestAccCodeBuildReportGroup_Export_s3(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "export_config.0.s3_destination.0.packaging", "ZIP"), resource.TestCheckResourceAttr(resourceName, "export_config.0.s3_destination.0.encryption_disabled", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "export_config.0.s3_destination.0.path", "/some2"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "codebuild", fmt.Sprintf("report-group/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "codebuild", fmt.Sprintf("report-group/%s", rName)), ), }, }, diff --git a/internal/service/codebuild/service_endpoints_gen_test.go b/internal/service/codebuild/service_endpoints_gen_test.go index 177bbeaf0dc5..63c0f2f79613 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/codebuild/source_credential_test.go b/internal/service/codebuild/source_credential_test.go index b821aaa87984..c4b269d4f905 100644 --- a/internal/service/codebuild/source_credential_test.go +++ b/internal/service/codebuild/source_credential_test.go @@ -37,7 +37,7 @@ func TestAccCodeBuildSourceCredential_basic(t *testing.T) { Config: testAccSourceCredentialConfig_basic("PERSONAL_ACCESS_TOKEN", "GITHUB", token), Check: resource.ComposeTestCheckFunc( testAccCheckSourceCredentialExists(ctx, resourceName, &sourceCredentialsInfo), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "codebuild", regexache.MustCompile(`token/github`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "codebuild", regexache.MustCompile(`token/github`)), resource.TestCheckResourceAttr(resourceName, "server_type", "GITHUB"), resource.TestCheckResourceAttr(resourceName, "auth_type", "PERSONAL_ACCESS_TOKEN"), ), @@ -46,7 +46,7 @@ func TestAccCodeBuildSourceCredential_basic(t *testing.T) { Config: testAccSourceCredentialConfig_basic("PERSONAL_ACCESS_TOKEN", "GITHUB_ENTERPRISE", token), Check: resource.ComposeTestCheckFunc( testAccCheckSourceCredentialExists(ctx, resourceName, &sourceCredentialsInfo), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "codebuild", regexache.MustCompile(`token/github_enterprise`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "codebuild", regexache.MustCompile(`token/github_enterprise`)), resource.TestCheckResourceAttr(resourceName, "server_type", "GITHUB_ENTERPRISE"), resource.TestCheckResourceAttr(resourceName, "auth_type", "PERSONAL_ACCESS_TOKEN"), ), @@ -77,7 +77,7 @@ func TestAccCodeBuildSourceCredential_basicAuth(t *testing.T) { Config: testAccSourceCredentialConfig_basicAuth(token, "user1"), Check: resource.ComposeTestCheckFunc( testAccCheckSourceCredentialExists(ctx, resourceName, &sourceCredentialsInfo), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "codebuild", regexache.MustCompile(`token/bitbucket`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "codebuild", regexache.MustCompile(`token/bitbucket`)), resource.TestCheckResourceAttr(resourceName, names.AttrUserName, "user1"), resource.TestCheckResourceAttr(resourceName, "server_type", "BITBUCKET"), resource.TestCheckResourceAttr(resourceName, "auth_type", "BASIC_AUTH"), diff --git a/internal/service/codecommit/approval_rule_template_test.go b/internal/service/codecommit/approval_rule_template_test.go index de499ca3cc76..f5390d4c7b9c 100644 --- a/internal/service/codecommit/approval_rule_template_test.go +++ b/internal/service/codecommit/approval_rule_template_test.go @@ -33,7 +33,7 @@ func TestAccCodeCommitApprovalRuleTemplate_basic(t *testing.T) { Config: testAccApprovalRuleTemplateConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckApprovalRuleTemplateExists(ctx, resourceName), - testAccCheckApprovalRuleTemplateContent(resourceName, 2), + testAccCheckApprovalRuleTemplateContent(ctx, resourceName, 2), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttrSet(resourceName, "approval_rule_template_id"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreationDate), @@ -89,7 +89,7 @@ func TestAccCodeCommitApprovalRuleTemplate_updateContentAndDescription(t *testin Config: testAccApprovalRuleTemplateConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckApprovalRuleTemplateExists(ctx, resourceName), - testAccCheckApprovalRuleTemplateContent(resourceName, 2), + testAccCheckApprovalRuleTemplateContent(ctx, resourceName, 2), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), ), }, @@ -97,7 +97,7 @@ func TestAccCodeCommitApprovalRuleTemplate_updateContentAndDescription(t *testin Config: testAccApprovalRuleTemplateConfig_updateContentAndDescription(rName), Check: resource.ComposeTestCheckFunc( testAccCheckApprovalRuleTemplateExists(ctx, resourceName), - testAccCheckApprovalRuleTemplateContent(resourceName, 1), + testAccCheckApprovalRuleTemplateContent(ctx, resourceName, 1), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "This is a test description"), ), }, @@ -145,10 +145,10 @@ func TestAccCodeCommitApprovalRuleTemplate_updateName(t *testing.T) { }) } -func testAccCheckApprovalRuleTemplateContent(resourceName string, numApprovals int) resource.TestCheckFunc { +func testAccCheckApprovalRuleTemplateContent(ctx context.Context, resourceName string, numApprovals int) resource.TestCheckFunc { return func(s *terraform.State) error { expectedContent := fmt.Sprintf(`{"Version":"2018-11-08","DestinationReferences":["refs/heads/master"],"Statements":[{"Type":"Approvers","NumberOfApprovalsNeeded":%d,"ApprovalPoolMembers":["arn:%s:sts::%s:assumed-role/CodeCommitReview/*"]}]}`, - numApprovals, acctest.Partition(), acctest.AccountID(), + numApprovals, acctest.Partition(), acctest.AccountID(ctx), ) return resource.TestCheckResourceAttr(resourceName, names.AttrContent, expectedContent)(s) } diff --git a/internal/service/codecommit/repository_test.go b/internal/service/codecommit/repository_test.go index 8212939af235..17035a2905c3 100644 --- a/internal/service/codecommit/repository_test.go +++ b/internal/service/codecommit/repository_test.go @@ -36,7 +36,7 @@ func TestAccCodeCommitRepository_basic(t *testing.T) { Config: testAccRepositoryConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckRepositoryExists(ctx, resourceName, &v), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "codecommit", rName), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "codecommit", rName), resource.TestCheckResourceAttrSet(resourceName, "clone_url_http"), resource.TestCheckResourceAttrSet(resourceName, "clone_url_ssh"), resource.TestCheckNoResourceAttr(resourceName, "default_branch"), diff --git a/internal/service/codecommit/service_endpoints_gen_test.go b/internal/service/codecommit/service_endpoints_gen_test.go index 247aa61c725c..d373503e2e03 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/connection.go b/internal/service/codeconnections/connection.go new file mode 100644 index 000000000000..1beba6fd2c3a --- /dev/null +++ b/internal/service/codeconnections/connection.go @@ -0,0 +1,367 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +package codeconnections + +import ( + "context" + "time" + + "github.com/YakDriver/regexache" + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/service/codeconnections" + awstypes "github.com/aws/aws-sdk-go-v2/service/codeconnections/types" + "github.com/hashicorp/terraform-plugin-framework-timeouts/resource/timeouts" + "github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator" + "github.com/hashicorp/terraform-plugin-framework/path" + "github.com/hashicorp/terraform-plugin-framework/resource" + "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/schema/validator" + "github.com/hashicorp/terraform-plugin-framework/types" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry" + "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/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" + tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" + "github.com/hashicorp/terraform-provider-aws/internal/tfresource" + "github.com/hashicorp/terraform-provider-aws/names" +) + +// Function annotations are used for resource registration to the Provider. DO NOT EDIT. +// @FrameworkResource(name="Connection") +// @Tags(identifierAttribute="arn") +func newConnectionResource(_ context.Context) (resource.ResourceWithConfigure, error) { + r := &connectionResource{} + + r.SetDefaultCreateTimeout(30 * time.Minute) + r.SetDefaultUpdateTimeout(30 * time.Minute) + r.SetDefaultDeleteTimeout(30 * time.Minute) + + return r, nil +} + +const ( + ResNameConnection = "Connection" +) + +type connectionResource struct { + framework.ResourceWithConfigure + framework.WithImportByID + framework.WithTimeouts +} + +func (r *connectionResource) Metadata(_ context.Context, req resource.MetadataRequest, resp *resource.MetadataResponse) { + resp.TypeName = "aws_codeconnections_connection" +} + +func (r *connectionResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + names.AttrARN: framework.ARNAttributeComputedOnly(), + "connection_status": schema.StringAttribute{ + Computed: true, + CustomType: fwtypes.StringEnumType[awstypes.ConnectionStatus](), + }, + "host_arn": schema.StringAttribute{ + Optional: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.RequiresReplace(), + }, + Validators: []validator.String{ + stringvalidator.LengthBetween(0, 256), + stringvalidator.RegexMatches(hostARNRegex, ""), + stringvalidator.ConflictsWith(path.Expressions{ + path.MatchRoot("provider_type"), + }...), + }, + }, + names.AttrID: framework.IDAttribute(), + names.AttrName: schema.StringAttribute{ + Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.RequiresReplace(), + }, + Validators: []validator.String{ + stringvalidator.LengthBetween(1, 32), + }, + }, + names.AttrOwnerAccountID: schema.StringAttribute{ + Computed: true, + }, + "provider_type": schema.StringAttribute{ + CustomType: fwtypes.StringEnumType[awstypes.ProviderType](), + Computed: true, + Optional: true, + Validators: []validator.String{ + stringvalidator.ConflictsWith(path.Expressions{ + path.MatchRoot("host_arn"), + }...), + }, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.RequiresReplace(), + }, + }, + names.AttrTags: tftags.TagsAttribute(), + names.AttrTagsAll: tftags.TagsAttributeComputedOnly(), + }, + Blocks: map[string]schema.Block{ + names.AttrTimeouts: timeouts.Block(ctx, timeouts.Opts{ + Create: true, + Update: true, + Delete: true, + }), + }, + } +} + +var ( + hostARNRegex = regexache.MustCompile("^arn:aws(-[\\w]+)*:(codestar-connections|codeconnections):.+:[0-9]{12}:host\\/.+") +) + +func (r *connectionResource) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) { + conn := r.Meta().CodeConnectionsClient(ctx) + + var data connectionResourceModel + resp.Diagnostics.Append(req.Plan.Get(ctx, &data)...) + if resp.Diagnostics.HasError() { + return + } + + var input codeconnections.CreateConnectionInput + + resp.Diagnostics.Append(fwflex.Expand(ctx, data, &input, fwflex.WithFieldNamePrefix("Connection"))...) + if resp.Diagnostics.HasError() { + return + } + + // Additional fields. + input.Tags = getTagsIn(ctx) + + output, err := conn.CreateConnection(ctx, &input) + + if err != nil { + resp.Diagnostics.AddError( + create.ProblemStandardMessage(names.CodeConnections, create.ErrActionCreating, ResNameConnection, data.ConnectionName.String(), err), + err.Error(), + ) + return + } + + // Set values for unknowns + data.ID = fwflex.StringToFramework(ctx, output.ConnectionArn) + + connection, err := waitConnectionCreated(ctx, conn, data.ID.ValueString(), r.CreateTimeout(ctx, data.Timeouts)) + + if err != nil { + resp.Diagnostics.AddError( + create.ProblemStandardMessage(names.CodeConnections, create.ErrActionWaitingForCreation, ResNameConnection, data.ConnectionName.String(), err), + err.Error(), + ) + return + } + + data.ConnectionArn = fwflex.StringToFramework(ctx, connection.ConnectionArn) + data.ConnectionName = fwflex.StringToFramework(ctx, connection.ConnectionName) + data.ConnectionStatus = fwtypes.StringEnumValue(connection.ConnectionStatus) + data.HostArn = fwflex.StringToFramework(ctx, connection.HostArn) + data.OwnerAccountId = fwflex.StringToFramework(ctx, connection.OwnerAccountId) + data.ProviderType = fwtypes.StringEnumValue(connection.ProviderType) + + resp.Diagnostics.Append(resp.State.Set(ctx, data)...) +} + +func (r *connectionResource) Read(ctx context.Context, req resource.ReadRequest, resp *resource.ReadResponse) { + conn := r.Meta().CodeConnectionsClient(ctx) + + var data connectionResourceModel + resp.Diagnostics.Append(req.State.Get(ctx, &data)...) + if resp.Diagnostics.HasError() { + return + } + + out, err := findConnectionByARN(ctx, conn, data.ID.ValueString()) + + if tfresource.NotFound(err) { + resp.Diagnostics.Append(fwdiag.NewResourceNotFoundWarningDiagnostic(err)) + resp.State.RemoveResource(ctx) + return + } + if err != nil { + resp.Diagnostics.AddError( + create.ProblemStandardMessage(names.CodeConnections, create.ErrActionSetting, ResNameConnection, data.ID.String(), err), + err.Error(), + ) + return + } + + resp.Diagnostics.Append(fwflex.Flatten(ctx, out, &data)...) + if resp.Diagnostics.HasError() { + return + } + + resp.Diagnostics.Append(resp.State.Set(ctx, &data)...) +} + +func (r *connectionResource) Update(ctx context.Context, req resource.UpdateRequest, resp *resource.UpdateResponse) { + var old, new connectionResourceModel + + resp.Diagnostics.Append(req.State.Get(ctx, &old)...) + if resp.Diagnostics.HasError() { + return + } + + resp.Diagnostics.Append(req.Plan.Get(ctx, &new)...) + if resp.Diagnostics.HasError() { + return + } + + // Update is only called when `tags` are updated. + // Set unknowns to the old (in state) values. + new.ConnectionArn = old.ConnectionArn + new.ConnectionName = old.ConnectionName + new.ConnectionStatus = old.ConnectionStatus + new.HostArn = old.HostArn + new.OwnerAccountId = old.OwnerAccountId + new.ProviderType = old.ProviderType + + resp.Diagnostics.Append(resp.State.Set(ctx, &new)...) +} + +func (r *connectionResource) Delete(ctx context.Context, req resource.DeleteRequest, resp *resource.DeleteResponse) { + conn := r.Meta().CodeConnectionsClient(ctx) + + var data connectionResourceModel + resp.Diagnostics.Append(req.State.Get(ctx, &data)...) + if resp.Diagnostics.HasError() { + return + } + + input := codeconnections.DeleteConnectionInput{ + ConnectionArn: data.ID.ValueStringPointer(), + } + + _, err := conn.DeleteConnection(ctx, &input) + + if err != nil { + if errs.IsA[*awstypes.ResourceNotFoundException](err) { + return + } + resp.Diagnostics.AddError( + create.ProblemStandardMessage(names.CodeConnections, create.ErrActionDeleting, ResNameConnection, data.ID.String(), err), + err.Error(), + ) + return + } + + deleteTimeout := r.DeleteTimeout(ctx, data.Timeouts) + _, err = waitConnectionDeleted(ctx, conn, data.ID.ValueString(), deleteTimeout) + if err != nil { + resp.Diagnostics.AddError( + create.ProblemStandardMessage(names.CodeConnections, create.ErrActionWaitingForDeletion, ResNameConnection, data.ID.String(), err), + err.Error(), + ) + return + } +} + +func (r *connectionResource) ModifyPlan(ctx context.Context, request resource.ModifyPlanRequest, response *resource.ModifyPlanResponse) { + r.SetTagsAll(ctx, request, response) +} + +func (r *connectionResource) ImportState(ctx context.Context, req resource.ImportStateRequest, resp *resource.ImportStateResponse) { + resource.ImportStatePassthroughID(ctx, path.Root(names.AttrID), req, resp) +} + +func waitConnectionCreated(ctx context.Context, conn *codeconnections.Client, id string, timeout time.Duration) (*awstypes.Connection, error) { + stateConf := &retry.StateChangeConf{ + Pending: []string{}, + Target: enum.Slice(awstypes.ConnectionStatusPending, awstypes.ConnectionStatusAvailable), + Refresh: statusConnection(ctx, conn, id), + Timeout: timeout, + NotFoundChecks: 20, + ContinuousTargetOccurence: 2, + } + + outputRaw, err := stateConf.WaitForStateContext(ctx) + if out, ok := outputRaw.(*awstypes.Connection); ok { + return out, err + } + + return nil, err +} + +func waitConnectionDeleted(ctx context.Context, conn *codeconnections.Client, id string, timeout time.Duration) (*awstypes.Connection, error) { + stateConf := &retry.StateChangeConf{ + Pending: enum.Slice(awstypes.ConnectionStatusPending, awstypes.ConnectionStatusAvailable, awstypes.ConnectionStatusError), + Target: []string{}, + Refresh: statusConnection(ctx, conn, id), + Timeout: timeout, + } + + outputRaw, err := stateConf.WaitForStateContext(ctx) + if out, ok := outputRaw.(*awstypes.Connection); ok { + return out, err + } + + return nil, err +} + +func statusConnection(ctx context.Context, conn *codeconnections.Client, arn string) retry.StateRefreshFunc { + return func() (interface{}, string, error) { + out, err := findConnectionByARN(ctx, conn, arn) + + if tfresource.NotFound(err) { + return nil, "", nil + } + + if err != nil { + return nil, "", err + } + + return out, aws.ToString((*string)(&out.ConnectionStatus)), nil + } +} + +func findConnectionByARN(ctx context.Context, conn *codeconnections.Client, arn string) (*awstypes.Connection, error) { + input := &codeconnections.GetConnectionInput{ + ConnectionArn: aws.String(arn), + } + + output, err := conn.GetConnection(ctx, input) + + if errs.IsA[*awstypes.ResourceNotFoundException](err) { + return nil, &retry.NotFoundError{ + LastError: err, + LastRequest: input, + } + } + + if err != nil { + return nil, err + } + + if output == nil || output.Connection == nil { + return nil, tfresource.NewEmptyResultError(input) + } + + return output.Connection, nil +} + +type connectionResourceModel struct { + ConnectionArn types.String `tfsdk:"arn"` + ConnectionName types.String `tfsdk:"name"` + ConnectionStatus fwtypes.StringEnum[awstypes.ConnectionStatus] `tfsdk:"connection_status"` + HostArn types.String `tfsdk:"host_arn"` + ID types.String `tfsdk:"id"` + OwnerAccountId types.String `tfsdk:"owner_account_id"` + ProviderType fwtypes.StringEnum[awstypes.ProviderType] `tfsdk:"provider_type"` + Tags tftags.Map `tfsdk:"tags"` + TagsAll tftags.Map `tfsdk:"tags_all"` + Timeouts timeouts.Value `tfsdk:"timeouts"` +} diff --git a/internal/service/codeconnections/connection_test.go b/internal/service/codeconnections/connection_test.go new file mode 100644 index 000000000000..f262ba78eba3 --- /dev/null +++ b/internal/service/codeconnections/connection_test.go @@ -0,0 +1,262 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +package codeconnections_test + +import ( + "context" + "fmt" + "testing" + + "github.com/YakDriver/regexache" + "github.com/aws/aws-sdk-go-v2/service/codeconnections/types" + sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/terraform" + "github.com/hashicorp/terraform-provider-aws/internal/acctest" + "github.com/hashicorp/terraform-provider-aws/internal/conns" + tfcodeconnections "github.com/hashicorp/terraform-provider-aws/internal/service/codeconnections" + "github.com/hashicorp/terraform-provider-aws/internal/tfresource" + "github.com/hashicorp/terraform-provider-aws/names" +) + +func TestAccCodeConnectionsConnection_basic(t *testing.T) { + ctx := acctest.Context(t) + var v types.Connection + resourceName := "aws_codeconnections_connection.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { + acctest.PreCheck(ctx, t) + }, + ErrorCheck: acctest.ErrorCheck(t, names.CodeConnectionsServiceID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckConnectionDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccConnectionConfig_basic(rName), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckConnectionExists(ctx, resourceName, &v), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrID, "codeconnections", regexache.MustCompile("connection/.+")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "codeconnections", regexache.MustCompile("connection/.+")), + resource.TestCheckResourceAttr(resourceName, "provider_type", string(types.ProviderTypeBitbucket)), + resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), + resource.TestCheckResourceAttr(resourceName, "connection_status", string(types.ConnectionStatusPending)), + ), + }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + }, + }, + }) +} + +func TestAccCodeConnectionsConnection_hostARN(t *testing.T) { + ctx := acctest.Context(t) + var v types.Connection + resourceName := "aws_codeconnections_connection.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { + acctest.PreCheck(ctx, t) + }, + ErrorCheck: acctest.ErrorCheck(t, names.CodeConnectionsServiceID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckConnectionDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccConnectionConfig_hostARN(rName), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckConnectionExists(ctx, resourceName, &v), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrID, "codeconnections", regexache.MustCompile("connection/.+")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "codeconnections", regexache.MustCompile("connection/.+")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, "host_arn", "codeconnections", regexache.MustCompile("host/.+")), + resource.TestCheckResourceAttr(resourceName, "provider_type", string(types.ProviderTypeGithubEnterpriseServer)), + resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), + resource.TestCheckResourceAttr(resourceName, "connection_status", string(types.ConnectionStatusPending)), + ), + }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + }, + }, + }) +} + +func TestAccCodeConnectionsConnection_disappears(t *testing.T) { + ctx := acctest.Context(t) + var v types.Connection + resourceName := "aws_codeconnections_connection.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { + acctest.PreCheck(ctx, t) + }, + ErrorCheck: acctest.ErrorCheck(t, names.CodeConnectionsServiceID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckConnectionDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccConnectionConfig_basic(rName), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckConnectionExists(ctx, resourceName, &v), + acctest.CheckFrameworkResourceDisappears(ctx, acctest.Provider, tfcodeconnections.ResourceConnection, resourceName), + ), + ExpectNonEmptyPlan: true, + }, + }, + }) +} + +func TestAccCodeConnectionsConnection_tags(t *testing.T) { + ctx := acctest.Context(t) + var v types.Connection + resourceName := "aws_codeconnections_connection.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { + acctest.PreCheck(ctx, t) + }, + ErrorCheck: acctest.ErrorCheck(t, names.CodeConnectionsServiceID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckConnectionDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccConnectionConfig_tags1(rName, acctest.CtKey1, acctest.CtValue1), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckConnectionExists(ctx, resourceName, &v), + resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "1"), + resource.TestCheckResourceAttr(resourceName, acctest.CtTagsKey1, acctest.CtValue1), + ), + }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + }, + { + Config: testAccConnectionConfig_tags2(rName, acctest.CtKey1, acctest.CtValue1Updated, acctest.CtKey2, acctest.CtValue2), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckConnectionExists(ctx, resourceName, &v), + resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "2"), + resource.TestCheckResourceAttr(resourceName, acctest.CtTagsKey1, acctest.CtValue1Updated), + resource.TestCheckResourceAttr(resourceName, acctest.CtTagsKey2, acctest.CtValue2), + ), + }, + { + Config: testAccConnectionConfig_tags1(rName, acctest.CtKey2, acctest.CtValue2), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckConnectionExists(ctx, resourceName, &v), + resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "1"), + resource.TestCheckResourceAttr(resourceName, acctest.CtTagsKey2, acctest.CtValue2), + ), + }, + }, + }) +} + +func testAccCheckConnectionExists(ctx context.Context, n string, v *types.Connection) resource.TestCheckFunc { + return func(s *terraform.State) error { + rs, ok := s.RootModule().Resources[n] + if !ok { + return fmt.Errorf("Not found: %s", n) + } + + conn := acctest.Provider.Meta().(*conns.AWSClient).CodeConnectionsClient(ctx) + + output, err := tfcodeconnections.FindConnectionByARN(ctx, conn, rs.Primary.ID) + + if err != nil { + return err + } + + *v = *output + + return nil + } +} + +func testAccCheckConnectionDestroy(ctx context.Context) resource.TestCheckFunc { + return func(s *terraform.State) error { + conn := acctest.Provider.Meta().(*conns.AWSClient).CodeConnectionsClient(ctx) + + for _, rs := range s.RootModule().Resources { + if rs.Type != "aws_codeconnections_connection" { + continue + } + + _, err := tfcodeconnections.FindConnectionByARN(ctx, conn, rs.Primary.ID) + + if tfresource.NotFound(err) { + continue + } + + if err != nil { + return err + } + + return fmt.Errorf("CodeStar Connections Connection %s still exists", rs.Primary.ID) + } + + return nil + } +} + +func testAccConnectionConfig_basic(rName string) string { + return fmt.Sprintf(` +resource "aws_codeconnections_connection" "test" { + name = %[1]q + provider_type = "Bitbucket" +} +`, rName) +} + +func testAccConnectionConfig_hostARN(rName string) string { + return fmt.Sprintf(` +resource "aws_codeconnections_host" "test" { + name = %[1]q + provider_endpoint = "https://example.com" + provider_type = "GitHubEnterpriseServer" +} + +resource "aws_codeconnections_connection" "test" { + name = %[1]q + host_arn = aws_codeconnections_host.test.arn +} +`, rName) +} + +func testAccConnectionConfig_tags1(rName string, tagKey1 string, tagValue1 string) string { + return fmt.Sprintf(` +resource "aws_codeconnections_connection" "test" { + name = %[1]q + provider_type = "Bitbucket" + + tags = { + %[2]q = %[3]q + } +} +`, rName, tagKey1, tagValue1) +} + +func testAccConnectionConfig_tags2(rName string, tagKey1 string, tagValue1 string, tagKey2 string, tagValue2 string) string { + return fmt.Sprintf(` +resource "aws_codeconnections_connection" "test" { + name = %[1]q + provider_type = "Bitbucket" + + tags = { + %[2]q = %[3]q + %[4]q = %[5]q + } +} +`, rName, tagKey1, tagValue1, tagKey2, tagValue2) +} diff --git a/internal/service/codeconnections/exports_test.go b/internal/service/codeconnections/exports_test.go new file mode 100644 index 000000000000..a9ba407d7b2b --- /dev/null +++ b/internal/service/codeconnections/exports_test.go @@ -0,0 +1,13 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +package codeconnections + +// Exports for use in tests only. +var ( + ResourceConnection = newConnectionResource + ResourceHost = newHostResource + + FindConnectionByARN = findConnectionByARN + FindHostByARN = findHostbyARN +) diff --git a/internal/service/codeconnections/generate.go b/internal/service/codeconnections/generate.go index 561ae0570f68..0da436b46eba 100644 --- a/internal/service/codeconnections/generate.go +++ b/internal/service/codeconnections/generate.go @@ -2,6 +2,7 @@ // SPDX-License-Identifier: MPL-2.0 //go:generate go run ../../generate/servicepackage/main.go +//go:generate go run ../../generate/tags/main.go -ListTags -ServiceTagsSlice -UpdateTags // ONLY generate directives and package declaration! Do not add anything else to this file. package codeconnections diff --git a/internal/service/codeconnections/host.go b/internal/service/codeconnections/host.go new file mode 100644 index 000000000000..bcaee2c2d92f --- /dev/null +++ b/internal/service/codeconnections/host.go @@ -0,0 +1,420 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +package codeconnections + +import ( + "context" + "errors" + "time" + + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/service/codeconnections" + awstypes "github.com/aws/aws-sdk-go-v2/service/codeconnections/types" + "github.com/hashicorp/terraform-plugin-framework-timeouts/resource/timeouts" + "github.com/hashicorp/terraform-plugin-framework-validators/listvalidator" + "github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator" + "github.com/hashicorp/terraform-plugin-framework/path" + "github.com/hashicorp/terraform-plugin-framework/resource" + "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/schema/validator" + "github.com/hashicorp/terraform-plugin-framework/types" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry" + "github.com/hashicorp/terraform-provider-aws/internal/create" + "github.com/hashicorp/terraform-provider-aws/internal/errs" + "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" + tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" + "github.com/hashicorp/terraform-provider-aws/internal/tfresource" + "github.com/hashicorp/terraform-provider-aws/names" +) + +// Function annotations are used for resource registration to the Provider. DO NOT EDIT. +// @FrameworkResource(name="Host") +// @Tags(identifierAttribute="arn") +func newHostResource(_ context.Context) (resource.ResourceWithConfigure, error) { + r := &hostResource{} + + r.SetDefaultCreateTimeout(30 * time.Minute) + r.SetDefaultUpdateTimeout(30 * time.Minute) + r.SetDefaultDeleteTimeout(30 * time.Minute) + + return r, nil +} + +const ( + ResNameHost = "Host" +) + +type hostResource struct { + framework.ResourceWithConfigure + framework.WithImportByID + framework.WithTimeouts +} + +func (r *hostResource) Metadata(_ context.Context, req resource.MetadataRequest, resp *resource.MetadataResponse) { + resp.TypeName = "aws_codeconnections_host" +} + +func (r *hostResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + names.AttrARN: framework.ARNAttributeComputedOnly(), + names.AttrID: framework.IDAttribute(), + names.AttrName: schema.StringAttribute{ + Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.RequiresReplace(), + }, + Validators: []validator.String{ + stringvalidator.LengthBetween(1, 64), + }, + }, + "provider_endpoint": schema.StringAttribute{ + Required: true, + Validators: []validator.String{ + stringvalidator.LengthBetween(1, 512), + }, + }, + "provider_type": schema.StringAttribute{ + Required: true, + CustomType: fwtypes.StringEnumType[awstypes.ProviderType](), + PlanModifiers: []planmodifier.String{ + stringplanmodifier.RequiresReplace(), + }, + }, + names.AttrTags: tftags.TagsAttribute(), + names.AttrTagsAll: tftags.TagsAttributeComputedOnly(), + }, + Blocks: map[string]schema.Block{ + names.AttrVPCConfiguration: schema.ListNestedBlock{ + CustomType: fwtypes.NewListNestedObjectTypeOf[customModelVPCConfigurationModel](ctx), + Validators: []validator.List{ + listvalidator.SizeAtMost(1), + }, + NestedObject: schema.NestedBlockObject{ + Attributes: map[string]schema.Attribute{ + names.AttrSecurityGroupIDs: schema.SetAttribute{ + CustomType: fwtypes.SetOfStringType, + Required: true, + ElementType: types.StringType, + }, + names.AttrSubnetIDs: schema.SetAttribute{ + CustomType: fwtypes.SetOfStringType, + Required: true, + ElementType: types.StringType, + }, + "tls_certificate": schema.StringAttribute{ + Required: true, + Validators: []validator.String{ + stringvalidator.LengthBetween(1, 16384), + }, + }, + names.AttrVPCID: schema.StringAttribute{ + Required: true, + Validators: []validator.String{ + stringvalidator.LengthBetween(12, 21), + }, + }, + }, + }, + }, + names.AttrTimeouts: timeouts.Block(ctx, timeouts.Opts{ + Create: true, + Update: true, + Delete: true, + }), + }, + } +} + +func (r *hostResource) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) { + conn := r.Meta().CodeConnectionsClient(ctx) + + var data hostResourceModel + resp.Diagnostics.Append(req.Plan.Get(ctx, &data)...) + if resp.Diagnostics.HasError() { + return + } + + var input codeconnections.CreateHostInput + + resp.Diagnostics.Append(fwflex.Expand(ctx, data, &input, fwflex.WithFieldNamePrefix("Host"))...) + if resp.Diagnostics.HasError() { + return + } + + // Additional fields. + input.Tags = getTagsIn(ctx) + + output, err := conn.CreateHost(ctx, &input) + + if err != nil { + resp.Diagnostics.AddError( + create.ProblemStandardMessage(names.CodeConnections, create.ErrActionCreating, ResNameHost, data.Name.String(), err), + err.Error(), + ) + return + } + + // Set values for unknowns + data.HostArn = fwflex.StringToFramework(ctx, output.HostArn) + data.ID = fwflex.StringToFramework(ctx, output.HostArn) + + host, err := waitHostPendingOrAvailable(ctx, conn, data.ID.ValueString(), r.CreateTimeout(ctx, data.Timeouts)) + + if err != nil { + resp.Diagnostics.AddError( + create.ProblemStandardMessage(names.CodeConnections, create.ErrActionWaitingForCreation, ResNameHost, data.Name.String(), err), + err.Error(), + ) + return + } + + data.Name = fwflex.StringToFramework(ctx, host.Name) + data.ProviderEndpoint = fwflex.StringToFramework(ctx, host.ProviderEndpoint) + data.ProviderType = fwtypes.StringEnumValue(host.ProviderType) + + resp.Diagnostics.Append(resp.State.Set(ctx, data)...) +} + +func (r *hostResource) Read(ctx context.Context, req resource.ReadRequest, resp *resource.ReadResponse) { + conn := r.Meta().CodeConnectionsClient(ctx) + + var data hostResourceModel + resp.Diagnostics.Append(req.State.Get(ctx, &data)...) + if resp.Diagnostics.HasError() { + return + } + + out, err := findHostbyARN(ctx, conn, data.ID.ValueString()) + + if tfresource.NotFound(err) { + resp.State.RemoveResource(ctx) + return + } + if err != nil { + resp.Diagnostics.AddError( + create.ProblemStandardMessage(names.CodeConnections, create.ErrActionSetting, ResNameHost, data.ID.String(), err), + err.Error(), + ) + return + } + + resp.Diagnostics.Append(fwflex.Flatten(ctx, out, &data)...) + if resp.Diagnostics.HasError() { + return + } + + resp.Diagnostics.Append(resp.State.Set(ctx, &data)...) +} + +func (r *hostResource) Update(ctx context.Context, req resource.UpdateRequest, resp *resource.UpdateResponse) { + var new, old hostResourceModel + + resp.Diagnostics.Append(req.Plan.Get(ctx, &new)...) + if resp.Diagnostics.HasError() { + return + } + + resp.Diagnostics.Append(req.State.Get(ctx, &old)...) + if resp.Diagnostics.HasError() { + return + } + + conn := r.Meta().CodeConnectionsClient(ctx) + + if !new.ProviderEndpoint.Equal(old.ProviderEndpoint) || + !new.VPCConfiguration.Equal(old.VPCConfiguration) { + input := codeconnections.UpdateHostInput{ + HostArn: new.HostArn.ValueStringPointer(), + } + + out, err := conn.UpdateHost(ctx, &input) + if err != nil { + resp.Diagnostics.AddError( + create.ProblemStandardMessage(names.CodeConnections, create.ErrActionUpdating, ResNameHost, new.ID.String(), err), + err.Error(), + ) + return + } + if out == nil { + resp.Diagnostics.AddError( + create.ProblemStandardMessage(names.CodeConnections, create.ErrActionUpdating, ResNameHost, new.ID.String(), nil), + errors.New("empty output").Error(), + ) + return + } + + updateTimeout := r.UpdateTimeout(ctx, new.Timeouts) + _, err = waitHostPendingOrAvailable(ctx, conn, new.ID.ValueString(), updateTimeout) + if err != nil { + resp.Diagnostics.AddError( + create.ProblemStandardMessage(names.CodeConnections, create.ErrActionWaitingForUpdate, ResNameHost, new.ID.String(), err), + err.Error(), + ) + return + } + } + + resp.Diagnostics.Append(resp.State.Set(ctx, &new)...) +} + +func (r *hostResource) Delete(ctx context.Context, req resource.DeleteRequest, resp *resource.DeleteResponse) { + conn := r.Meta().CodeConnectionsClient(ctx) + + var state hostResourceModel + resp.Diagnostics.Append(req.State.Get(ctx, &state)...) + if resp.Diagnostics.HasError() { + return + } + + input := codeconnections.DeleteHostInput{ + HostArn: state.ID.ValueStringPointer(), + } + + _, err := conn.DeleteHost(ctx, &input) + + if err != nil { + if errs.IsA[*awstypes.ResourceNotFoundException](err) { + return + } + resp.Diagnostics.AddError( + create.ProblemStandardMessage(names.CodeConnections, create.ErrActionDeleting, ResNameHost, state.ID.String(), err), + err.Error(), + ) + return + } + + deleteTimeout := r.DeleteTimeout(ctx, state.Timeouts) + _, err = waitHostDeleted(ctx, conn, state.ID.ValueString(), deleteTimeout) + if err != nil { + resp.Diagnostics.AddError( + create.ProblemStandardMessage(names.CodeConnections, create.ErrActionWaitingForDeletion, ResNameHost, state.ID.String(), err), + err.Error(), + ) + return + } +} + +func (r *hostResource) ModifyPlan(ctx context.Context, request resource.ModifyPlanRequest, response *resource.ModifyPlanResponse) { + r.SetTagsAll(ctx, request, response) +} + +func (r *hostResource) ImportState(ctx context.Context, req resource.ImportStateRequest, resp *resource.ImportStateResponse) { + resource.ImportStatePassthroughID(ctx, path.Root(names.AttrID), req, resp) + resource.ImportStatePassthroughID(ctx, path.Root(names.AttrARN), req, resp) +} + +const ( + hostStatusAvailable = "AVAILABLE" + hostStatusPending = "PENDING" + hostStatusVPCConfigDeleting = "VPC_CONFIG_DELETING" + // hostStatusVPCConfigFailedInitialization = "VPC_CONFIG_FAILED_INITIALIZATION" + hostStatusVPCConfigInitializing = "VPC_CONFIG_INITIALIZING" +) + +func waitHostPendingOrAvailable(ctx context.Context, conn *codeconnections.Client, id string, timeout time.Duration) (*awstypes.Host, error) { + stateConf := &retry.StateChangeConf{ + Pending: []string{hostStatusVPCConfigInitializing}, + Target: []string{hostStatusPending, hostStatusAvailable}, + Refresh: statusHost(ctx, conn, id), + Timeout: timeout, + NotFoundChecks: 20, + ContinuousTargetOccurence: 2, + } + + outputRaw, err := stateConf.WaitForStateContext(ctx) + if out, ok := outputRaw.(*awstypes.Host); ok { + return out, err + } + + return nil, err +} + +func waitHostDeleted(ctx context.Context, conn *codeconnections.Client, id string, timeout time.Duration) (*awstypes.Host, error) { + stateConf := &retry.StateChangeConf{ + Pending: []string{hostStatusVPCConfigDeleting}, + Target: []string{}, + Refresh: statusHost(ctx, conn, id), + Timeout: timeout, + } + + outputRaw, err := stateConf.WaitForStateContext(ctx) + if out, ok := outputRaw.(*awstypes.Host); ok { + return out, err + } + + return nil, err +} + +func statusHost(ctx context.Context, conn *codeconnections.Client, id string) retry.StateRefreshFunc { + return func() (interface{}, string, error) { + out, err := findHostbyARN(ctx, conn, id) + if tfresource.NotFound(err) { + return nil, "", nil + } + + if err != nil { + return nil, "", err + } + + return out, aws.ToString(out.Status), nil + } +} + +func findHostbyARN(ctx context.Context, conn *codeconnections.Client, arn string) (*awstypes.Host, error) { + input := &codeconnections.GetHostInput{ + HostArn: aws.String(arn), + } + + output, err := conn.GetHost(ctx, input) + + if errs.IsA[*awstypes.ResourceNotFoundException](err) { + return nil, &retry.NotFoundError{ + LastError: err, + LastRequest: input, + } + } + + if err != nil { + return nil, err + } + + if output == nil || output.Name == nil { + return nil, tfresource.NewEmptyResultError(input) + } + + host := &awstypes.Host{ + HostArn: aws.String(arn), + Name: output.Name, + ProviderEndpoint: output.ProviderEndpoint, + ProviderType: output.ProviderType, + Status: output.Status, + VpcConfiguration: output.VpcConfiguration, + } + + return host, nil +} + +type hostResourceModel struct { + HostArn types.String `tfsdk:"arn"` + ID types.String `tfsdk:"id"` + Name types.String `tfsdk:"name"` + ProviderEndpoint types.String `tfsdk:"provider_endpoint"` + ProviderType fwtypes.StringEnum[awstypes.ProviderType] `tfsdk:"provider_type"` + Tags tftags.Map `tfsdk:"tags"` + TagsAll tftags.Map `tfsdk:"tags_all"` + Timeouts timeouts.Value `tfsdk:"timeouts"` + VPCConfiguration fwtypes.ListNestedObjectValueOf[customModelVPCConfigurationModel] `tfsdk:"vpc_configuration"` +} + +type customModelVPCConfigurationModel struct { + SecurityGroupIDs fwtypes.SetValueOf[types.String] `tfsdk:"security_group_ids"` + SubnetIDs fwtypes.SetValueOf[types.String] `tfsdk:"subnet_ids"` + TlsCertificate types.String `tfsdk:"tls_certificate"` + VpcId types.String `tfsdk:"vpc_id"` +} diff --git a/internal/service/codeconnections/host_test.go b/internal/service/codeconnections/host_test.go new file mode 100644 index 000000000000..85b32c9719ff --- /dev/null +++ b/internal/service/codeconnections/host_test.go @@ -0,0 +1,317 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +package codeconnections_test + +import ( + "context" + "fmt" + "testing" + + "github.com/YakDriver/regexache" + "github.com/aws/aws-sdk-go-v2/service/codeconnections/types" + sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/terraform" + "github.com/hashicorp/terraform-provider-aws/internal/acctest" + "github.com/hashicorp/terraform-provider-aws/internal/conns" + tfcodeconnections "github.com/hashicorp/terraform-provider-aws/internal/service/codeconnections" + "github.com/hashicorp/terraform-provider-aws/internal/tfresource" + "github.com/hashicorp/terraform-provider-aws/names" +) + +func TestAccCodeConnectionsHost_basic(t *testing.T) { + ctx := acctest.Context(t) + var v types.Host + resourceName := "aws_codeconnections_host.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { + acctest.PreCheck(ctx, t) + }, + ErrorCheck: acctest.ErrorCheck(t, names.CodeConnectionsServiceID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckHostDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccHostConfig_basic(rName), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckHostExists(ctx, resourceName, &v), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrID, "codeconnections", regexache.MustCompile("host/.+")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "codeconnections", regexache.MustCompile("host/.+")), + resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), + resource.TestCheckResourceAttr(resourceName, "provider_endpoint", "https://example.com"), + resource.TestCheckResourceAttr(resourceName, "provider_type", string(types.ProviderTypeGithubEnterpriseServer)), + ), + }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + }, + }, + }) +} + +func TestAccCodeConnectionsHost_disappears(t *testing.T) { + ctx := acctest.Context(t) + var v types.Host + resourceName := "aws_codeconnections_host.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { + acctest.PreCheck(ctx, t) + }, + ErrorCheck: acctest.ErrorCheck(t, names.CodeConnectionsServiceID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckHostDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccHostConfig_basic(rName), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckHostExists(ctx, resourceName, &v), + acctest.CheckFrameworkResourceDisappears(ctx, acctest.Provider, tfcodeconnections.ResourceHost, resourceName), + ), + ExpectNonEmptyPlan: true, + }, + }, + }) +} + +func TestAccCodeConnectionsHost_vpc(t *testing.T) { + ctx := acctest.Context(t) + var v types.Host + resourceName := "aws_codeconnections_host.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { + acctest.PreCheck(ctx, t) + }, + ErrorCheck: acctest.ErrorCheck(t, names.CodeConnectionsServiceID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckHostDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccHostConfig_vpc(rName), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckHostExists(ctx, resourceName, &v), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrID, "codeconnections", regexache.MustCompile("host/.+")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "codeconnections", regexache.MustCompile("host/.+")), + resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), + resource.TestCheckResourceAttr(resourceName, "provider_endpoint", "https://example.com"), + resource.TestCheckResourceAttr(resourceName, "provider_type", string(types.ProviderTypeGithubEnterpriseServer)), + resource.TestCheckResourceAttr(resourceName, "vpc_configuration.#", "1"), + resource.TestCheckResourceAttr(resourceName, "vpc_configuration.0.security_group_ids.#", "1"), + resource.TestCheckResourceAttr(resourceName, "vpc_configuration.0.subnet_ids.#", "2"), + resource.TestCheckResourceAttr(resourceName, "vpc_configuration.0.tls_certificate", "-----BEGIN CERTIFICATE-----\nMIID2jCCAsKgAwIBAgIJAJ58TJVjU7G1MA0GCSqGSIb3DQEBBQUAMFExCzAJBgNV\nBAYTAlVTMREwDwYDVQQIEwhDb2xvcmFkbzEPMA0GA1UEBxMGRGVudmVyMRAwDgYD\nVQQKEwdDaGFydGVyMQwwCgYDVQQLEwNDU0UwHhcNMTcwMTMwMTkyMDA4WhcNMjYx\nMjA5MTkyMDA4WjBRMQswCQYDVQQGEwJVUzERMA8GA1UECBMIQ29sb3JhZG8xDzAN\nBgNVBAcTBkRlbnZlcjEQMA4GA1UEChMHQ2hhcnRlcjEMMAoGA1UECxMDQ1NFMIIB\nIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAv6dq6VLIImlAaTrckb5w3X6J\nWP7EGz2ChGAXlkEYto6dPCba0v5+f+8UlMOpeB25XGoai7gdItqNWVFpYsgmndx3\nvTad3ukO1zeElKtw5oHPH2plOaiv/gVJaDa9NTeINj0EtGZs74fCOclAzGFX5vBc\nb08ESWBceRgGjGv3nlij4JzHfqTkCKQz6P6pBivQBfk62rcOkkH5rKoaGltRHROS\nMbkwOhu2hN0KmSYTXRvts0LXnZU4N0l2ms39gmr7UNNNlKYINL2JoTs9dNBc7APD\ndZvlEHd+/FjcLCI8hC3t4g4AbfW0okIBCNG0+oVjqGb2DeONSJKsThahXt89MQID\nAQABo4G0MIGxMB0GA1UdDgQWBBQKq8JxjY1GmeZXJjfOMfW0kBIzPDCBgQYDVR0j\nBHoweIAUCqvCcY2NRpnmVyY3zjH1tJASMzyhVaRTMFExCzAJBgNVBAYTAlVTMREw\nDwYDVQQIEwhDb2xvcmFkbzEPMA0GA1UEBxMGRGVudmVyMRAwDgYDVQQKEwdDaGFy\ndGVyMQwwCgYDVQQLEwNDU0WCCQCefEyVY1OxtTAMBgNVHRMEBTADAQH/MA0GCSqG\nSIb3DQEBBQUAA4IBAQAWifoMk5kbv+yuWXvFwHiB4dWUUmMlUlPU/E300yVTRl58\np6DfOgJs7MMftd1KeWqTO+uW134QlTt7+jwI8Jq0uyKCu/O2kJhVtH/Ryog14tGl\n+wLcuIPLbwJI9CwZX4WMBrq4DnYss+6F47i8NCc+Z3MAiG4vtq9ytBmaod0dj2bI\ng4/Lac0e00dql9RnqENh1+dF0V+QgTJCoPkMqDNAlSB8vOodBW81UAb2z12t+IFi\n3X9J3WtCK2+T5brXL6itzewWJ2ALvX3QpmZx7fMHJ3tE+SjjyivE1BbOlzYHx83t\nTeYnm7pS9un7A/UzTDHbs7hPUezLek+H3xTPAnnq\n-----END CERTIFICATE-----\n"), + resource.TestCheckResourceAttrSet(resourceName, "vpc_configuration.0.vpc_id"), + ), + }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + }, + }, + }) +} + +func TestAccCodeConnectionsHost_tags(t *testing.T) { + ctx := acctest.Context(t) + var v types.Host + resourceName := "aws_codeconnections_host.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { + acctest.PreCheck(ctx, t) + }, + ErrorCheck: acctest.ErrorCheck(t, names.CodeConnectionsServiceID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckConnectionDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccHostConfig_tags1(rName, acctest.CtKey1, acctest.CtValue1), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckHostExists(ctx, resourceName, &v), + resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "1"), + resource.TestCheckResourceAttr(resourceName, acctest.CtTagsKey1, acctest.CtValue1), + ), + }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + }, + { + Config: testAccHostConfig_tags2(rName, acctest.CtKey1, acctest.CtValue1Updated, acctest.CtKey2, acctest.CtValue2), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckHostExists(ctx, resourceName, &v), + resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "2"), + resource.TestCheckResourceAttr(resourceName, acctest.CtTagsKey1, acctest.CtValue1Updated), + resource.TestCheckResourceAttr(resourceName, acctest.CtTagsKey2, acctest.CtValue2), + ), + }, + { + Config: testAccHostConfig_tags1(rName, acctest.CtKey2, acctest.CtValue2), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckHostExists(ctx, resourceName, &v), + resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "1"), + resource.TestCheckResourceAttr(resourceName, acctest.CtTagsKey2, acctest.CtValue2), + ), + }, + }, + }) +} + +func testAccCheckHostExists(ctx context.Context, n string, v *types.Host) resource.TestCheckFunc { + return func(s *terraform.State) error { + rs, ok := s.RootModule().Resources[n] + if !ok { + return fmt.Errorf("Not found: %s", n) + } + + conn := acctest.Provider.Meta().(*conns.AWSClient).CodeConnectionsClient(ctx) + + output, err := tfcodeconnections.FindHostByARN(ctx, conn, rs.Primary.ID) + + if err != nil { + return err + } + + *v = *output + + return nil + } +} + +func testAccCheckHostDestroy(ctx context.Context) resource.TestCheckFunc { + return func(s *terraform.State) error { + conn := acctest.Provider.Meta().(*conns.AWSClient).CodeConnectionsClient(ctx) + + for _, rs := range s.RootModule().Resources { + if rs.Type != "aws_codeconnections_host" { + continue + } + + _, err := tfcodeconnections.FindHostByARN(ctx, conn, rs.Primary.ID) + + if tfresource.NotFound(err) { + continue + } + + if err != nil { + return err + } + + return fmt.Errorf("CodeStar Connections Host %s still exists", rs.Primary.ID) + } + + return nil + } +} + +func testAccHostVPCBaseConfig(rName string) string { + return acctest.ConfigCompose(acctest.ConfigAvailableAZsNoOptIn(), fmt.Sprintf(` +resource "aws_vpc" "test" { + cidr_block = "10.0.0.0/16" + enable_dns_hostnames = true + enable_dns_support = true + + tags = { + Name = %[1]q + } +} + +resource "aws_subnet" "test" { + count = 2 + availability_zone = data.aws_availability_zones.available.names[count.index] + cidr_block = cidrsubnet(aws_vpc.test.cidr_block, 8, count.index + 2) + vpc_id = aws_vpc.test.id + + tags = { + Name = %[1]q + } +} + +resource "aws_security_group" "test" { + name = %[1]q + vpc_id = aws_vpc.test.id + + egress { + from_port = 0 + to_port = 0 + protocol = "-1" + cidr_blocks = ["0.0.0.0/0"] + } + ingress { + from_port = 0 + to_port = 0 + protocol = "-1" + cidr_blocks = ["0.0.0.0/0"] + } + + tags = { + Name = %[1]q + } +} +`, rName)) +} + +func testAccHostConfig_basic(rName string) string { + return fmt.Sprintf(` +resource "aws_codeconnections_host" "test" { + name = %[1]q + provider_endpoint = "https://example.com" + provider_type = "GitHubEnterpriseServer" +} +`, rName) +} + +func testAccHostConfig_vpc(rName string) string { + return acctest.ConfigCompose(testAccHostVPCBaseConfig(rName), fmt.Sprintf(` +resource "aws_codeconnections_host" "test" { + name = %[1]q + provider_endpoint = "https://example.com" + provider_type = "GitHubEnterpriseServer" + vpc_configuration { + security_group_ids = [aws_security_group.test.id] + subnet_ids = aws_subnet.test[*].id + tls_certificate = "-----BEGIN CERTIFICATE-----\nMIID2jCCAsKgAwIBAgIJAJ58TJVjU7G1MA0GCSqGSIb3DQEBBQUAMFExCzAJBgNV\nBAYTAlVTMREwDwYDVQQIEwhDb2xvcmFkbzEPMA0GA1UEBxMGRGVudmVyMRAwDgYD\nVQQKEwdDaGFydGVyMQwwCgYDVQQLEwNDU0UwHhcNMTcwMTMwMTkyMDA4WhcNMjYx\nMjA5MTkyMDA4WjBRMQswCQYDVQQGEwJVUzERMA8GA1UECBMIQ29sb3JhZG8xDzAN\nBgNVBAcTBkRlbnZlcjEQMA4GA1UEChMHQ2hhcnRlcjEMMAoGA1UECxMDQ1NFMIIB\nIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAv6dq6VLIImlAaTrckb5w3X6J\nWP7EGz2ChGAXlkEYto6dPCba0v5+f+8UlMOpeB25XGoai7gdItqNWVFpYsgmndx3\nvTad3ukO1zeElKtw5oHPH2plOaiv/gVJaDa9NTeINj0EtGZs74fCOclAzGFX5vBc\nb08ESWBceRgGjGv3nlij4JzHfqTkCKQz6P6pBivQBfk62rcOkkH5rKoaGltRHROS\nMbkwOhu2hN0KmSYTXRvts0LXnZU4N0l2ms39gmr7UNNNlKYINL2JoTs9dNBc7APD\ndZvlEHd+/FjcLCI8hC3t4g4AbfW0okIBCNG0+oVjqGb2DeONSJKsThahXt89MQID\nAQABo4G0MIGxMB0GA1UdDgQWBBQKq8JxjY1GmeZXJjfOMfW0kBIzPDCBgQYDVR0j\nBHoweIAUCqvCcY2NRpnmVyY3zjH1tJASMzyhVaRTMFExCzAJBgNVBAYTAlVTMREw\nDwYDVQQIEwhDb2xvcmFkbzEPMA0GA1UEBxMGRGVudmVyMRAwDgYDVQQKEwdDaGFy\ndGVyMQwwCgYDVQQLEwNDU0WCCQCefEyVY1OxtTAMBgNVHRMEBTADAQH/MA0GCSqG\nSIb3DQEBBQUAA4IBAQAWifoMk5kbv+yuWXvFwHiB4dWUUmMlUlPU/E300yVTRl58\np6DfOgJs7MMftd1KeWqTO+uW134QlTt7+jwI8Jq0uyKCu/O2kJhVtH/Ryog14tGl\n+wLcuIPLbwJI9CwZX4WMBrq4DnYss+6F47i8NCc+Z3MAiG4vtq9ytBmaod0dj2bI\ng4/Lac0e00dql9RnqENh1+dF0V+QgTJCoPkMqDNAlSB8vOodBW81UAb2z12t+IFi\n3X9J3WtCK2+T5brXL6itzewWJ2ALvX3QpmZx7fMHJ3tE+SjjyivE1BbOlzYHx83t\nTeYnm7pS9un7A/UzTDHbs7hPUezLek+H3xTPAnnq\n-----END CERTIFICATE-----\n" + vpc_id = aws_vpc.test.id + } +} +`, rName)) +} + +func testAccHostConfig_tags1(rName string, tagKey1 string, tagValue1 string) string { + return fmt.Sprintf(` +resource "aws_codeconnections_host" "test" { + name = %[1]q + provider_endpoint = "https://example.com" + provider_type = "GitHubEnterpriseServer" + + tags = { + %[2]q = %[3]q + } +} +`, rName, tagKey1, tagValue1) +} + +func testAccHostConfig_tags2(rName string, tagKey1 string, tagValue1 string, tagKey2 string, tagValue2 string) string { + return fmt.Sprintf(` +resource "aws_codeconnections_host" "test" { + name = %[1]q + provider_endpoint = "https://example.com" + provider_type = "GitHubEnterpriseServer" + + tags = { + %[2]q = %[3]q + %[4]q = %[5]q + } +} +`, rName, tagKey1, tagValue1, tagKey2, tagValue2) +} diff --git a/internal/service/codeconnections/service_endpoints_gen_test.go b/internal/service/codeconnections/service_endpoints_gen_test.go index 297fa2023821..08be6f23d609 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/codeconnections/service_package_gen.go b/internal/service/codeconnections/service_package_gen.go index 7cfb8922be4f..14916d073075 100644 --- a/internal/service/codeconnections/service_package_gen.go +++ b/internal/service/codeconnections/service_package_gen.go @@ -19,7 +19,22 @@ func (p *servicePackage) FrameworkDataSources(ctx context.Context) []*types.Serv } func (p *servicePackage) FrameworkResources(ctx context.Context) []*types.ServicePackageFrameworkResource { - return []*types.ServicePackageFrameworkResource{} + return []*types.ServicePackageFrameworkResource{ + { + Factory: newConnectionResource, + Name: "Connection", + Tags: &types.ServicePackageResourceTags{ + IdentifierAttribute: names.AttrARN, + }, + }, + { + Factory: newHostResource, + Name: "Host", + Tags: &types.ServicePackageResourceTags{ + IdentifierAttribute: names.AttrARN, + }, + }, + } } func (p *servicePackage) SDKDataSources(ctx context.Context) []*types.ServicePackageSDKDataSource { diff --git a/internal/service/codeconnections/tags_gen.go b/internal/service/codeconnections/tags_gen.go new file mode 100644 index 000000000000..857c94495d39 --- /dev/null +++ b/internal/service/codeconnections/tags_gen.go @@ -0,0 +1,146 @@ +// Code generated by internal/generate/tags/main.go; DO NOT EDIT. +package codeconnections + +import ( + "context" + "fmt" + + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/service/codeconnections" + awstypes "github.com/aws/aws-sdk-go-v2/service/codeconnections/types" + "github.com/hashicorp/terraform-plugin-log/tflog" + "github.com/hashicorp/terraform-provider-aws/internal/conns" + "github.com/hashicorp/terraform-provider-aws/internal/logging" + tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" + "github.com/hashicorp/terraform-provider-aws/names" +) + +// listTags lists codeconnections service tags. +// The identifier is typically the Amazon Resource Name (ARN), although +// it may also be a different identifier depending on the service. +func listTags(ctx context.Context, conn *codeconnections.Client, identifier string, optFns ...func(*codeconnections.Options)) (tftags.KeyValueTags, error) { + input := &codeconnections.ListTagsForResourceInput{ + ResourceArn: aws.String(identifier), + } + + output, err := conn.ListTagsForResource(ctx, input, optFns...) + + if err != nil { + return tftags.New(ctx, nil), err + } + + return KeyValueTags(ctx, output.Tags), nil +} + +// ListTags lists codeconnections service tags and set them in Context. +// It is called from outside this package. +func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier string) error { + tags, err := listTags(ctx, meta.(*conns.AWSClient).CodeConnectionsClient(ctx), identifier) + + if err != nil { + return err + } + + if inContext, ok := tftags.FromContext(ctx); ok { + inContext.TagsOut = option.Some(tags) + } + + return nil +} + +// []*SERVICE.Tag handling + +// Tags returns codeconnections service tags. +func Tags(tags tftags.KeyValueTags) []awstypes.Tag { + result := make([]awstypes.Tag, 0, len(tags)) + + for k, v := range tags.Map() { + tag := awstypes.Tag{ + Key: aws.String(k), + Value: aws.String(v), + } + + result = append(result, tag) + } + + return result +} + +// KeyValueTags creates tftags.KeyValueTags from codeconnections service tags. +func KeyValueTags(ctx context.Context, tags []awstypes.Tag) tftags.KeyValueTags { + m := make(map[string]*string, len(tags)) + + for _, tag := range tags { + m[aws.ToString(tag.Key)] = tag.Value + } + + return tftags.New(ctx, m) +} + +// getTagsIn returns codeconnections service tags from Context. +// nil is returned if there are no input tags. +func getTagsIn(ctx context.Context) []awstypes.Tag { + if inContext, ok := tftags.FromContext(ctx); ok { + if tags := Tags(inContext.TagsIn.UnwrapOrDefault()); len(tags) > 0 { + return tags + } + } + + return nil +} + +// setTagsOut sets codeconnections service tags in Context. +func setTagsOut(ctx context.Context, tags []awstypes.Tag) { + if inContext, ok := tftags.FromContext(ctx); ok { + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) + } +} + +// updateTags updates codeconnections service tags. +// The identifier is typically the Amazon Resource Name (ARN), although +// it may also be a different identifier depending on the service. +func updateTags(ctx context.Context, conn *codeconnections.Client, identifier string, oldTagsMap, newTagsMap any, optFns ...func(*codeconnections.Options)) error { + oldTags := tftags.New(ctx, oldTagsMap) + newTags := tftags.New(ctx, newTagsMap) + + ctx = tflog.SetField(ctx, logging.KeyResourceId, identifier) + + removedTags := oldTags.Removed(newTags) + removedTags = removedTags.IgnoreSystem(names.CodeConnections) + if len(removedTags) > 0 { + input := &codeconnections.UntagResourceInput{ + ResourceArn: aws.String(identifier), + TagKeys: removedTags.Keys(), + } + + _, err := conn.UntagResource(ctx, input, optFns...) + + if err != nil { + return fmt.Errorf("untagging resource (%s): %w", identifier, err) + } + } + + updatedTags := oldTags.Updated(newTags) + updatedTags = updatedTags.IgnoreSystem(names.CodeConnections) + if len(updatedTags) > 0 { + input := &codeconnections.TagResourceInput{ + ResourceArn: aws.String(identifier), + Tags: Tags(updatedTags), + } + + _, err := conn.TagResource(ctx, input, optFns...) + + if err != nil { + return fmt.Errorf("tagging resource (%s): %w", identifier, err) + } + } + + return nil +} + +// UpdateTags updates codeconnections service tags. +// It is called from outside this package. +func (p *servicePackage) UpdateTags(ctx context.Context, meta any, identifier string, oldTags, newTags any) error { + return updateTags(ctx, meta.(*conns.AWSClient).CodeConnectionsClient(ctx), identifier, oldTags, newTags) +} diff --git a/internal/service/codeguruprofiler/service_endpoints_gen_test.go b/internal/service/codeguruprofiler/service_endpoints_gen_test.go index 8d997899d37c..cea45f27999c 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/repository_association_test.go b/internal/service/codegurureviewer/repository_association_test.go index 2d63758c1526..570d7fd6d742 100644 --- a/internal/service/codegurureviewer/repository_association_test.go +++ b/internal/service/codegurureviewer/repository_association_test.go @@ -43,8 +43,8 @@ func TestAccCodeGuruReviewerRepositoryAssociation_basic(t *testing.T) { Config: testAccRepositoryAssociationConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckRepositoryAssociationExists(ctx, resourceName, &repositoryassociation), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "codeguru-reviewer", regexache.MustCompile(`association:+.`)), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrID, "codeguru-reviewer", regexache.MustCompile(`association:+.`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "codeguru-reviewer", regexache.MustCompile(`association:+.`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrID, "codeguru-reviewer", regexache.MustCompile(`association:+.`)), resource.TestCheckResourceAttr(resourceName, "repository.0.bitbucket.#", "0"), resource.TestCheckResourceAttr(resourceName, "repository.0.codecommit.#", "1"), resource.TestCheckResourceAttr(resourceName, "repository.0.github_enterprise_server.#", "0"), @@ -78,8 +78,8 @@ func TestAccCodeGuruReviewerRepositoryAssociation_KMSKey(t *testing.T) { Config: testAccRepositoryAssociationConfig_kms_key(rName), Check: resource.ComposeTestCheckFunc( testAccCheckRepositoryAssociationExists(ctx, resourceName, &repositoryassociation), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "codeguru-reviewer", regexache.MustCompile(`association:+.`)), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrID, "codeguru-reviewer", regexache.MustCompile(`association:+.`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "codeguru-reviewer", regexache.MustCompile(`association:+.`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrID, "codeguru-reviewer", regexache.MustCompile(`association:+.`)), resource.TestCheckResourceAttr(resourceName, "repository.0.bitbucket.#", "0"), resource.TestCheckResourceAttr(resourceName, "repository.0.codecommit.#", "1"), resource.TestCheckResourceAttr(resourceName, "repository.0.github_enterprise_server.#", "0"), @@ -113,8 +113,8 @@ func TestAccCodeGuruReviewerRepositoryAssociation_S3Repository(t *testing.T) { Config: testAccRepositoryAssociationConfig_s3_repository(rName), Check: resource.ComposeTestCheckFunc( testAccCheckRepositoryAssociationExists(ctx, resourceName, &repositoryassociation), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "codeguru-reviewer", regexache.MustCompile(`association:+.`)), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrID, "codeguru-reviewer", regexache.MustCompile(`association:+.`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "codeguru-reviewer", regexache.MustCompile(`association:+.`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrID, "codeguru-reviewer", regexache.MustCompile(`association:+.`)), resource.TestCheckResourceAttr(resourceName, "repository.0.bitbucket.#", "0"), resource.TestCheckResourceAttr(resourceName, "repository.0.codecommit.#", "0"), resource.TestCheckResourceAttr(resourceName, "repository.0.github_enterprise_server.#", "0"), diff --git a/internal/service/codegurureviewer/service_endpoints_gen_test.go b/internal/service/codegurureviewer/service_endpoints_gen_test.go index f50f0bbc0962..145094bca0bb 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/codepipeline_test.go b/internal/service/codepipeline/codepipeline_test.go index 4025e91df800..ec83c63c48ac 100644 --- a/internal/service/codepipeline/codepipeline_test.go +++ b/internal/service/codepipeline/codepipeline_test.go @@ -43,7 +43,7 @@ func TestAccCodePipeline_basic(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckPipelineExists(ctx, resourceName, &p), resource.TestCheckResourceAttrPair(resourceName, names.AttrRoleARN, "aws_iam_role.codepipeline_role", names.AttrARN), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "codepipeline", regexache.MustCompile(fmt.Sprintf("test-pipeline-%s", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "codepipeline", regexache.MustCompile(fmt.Sprintf("test-pipeline-%s", rName))), resource.TestCheckResourceAttr(resourceName, "artifact_store.#", "1"), resource.TestCheckResourceAttr(resourceName, "stage.#", "2"), resource.TestCheckResourceAttr(resourceName, "stage.0.name", "Source"), @@ -170,7 +170,7 @@ func TestAccCodePipeline_emptyStageArtifacts(t *testing.T) { Config: testAccCodePipelineConfig_emptyStageArtifacts(rName), Check: resource.ComposeTestCheckFunc( testAccCheckPipelineExists(ctx, resourceName, &p), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "codepipeline", regexache.MustCompile(fmt.Sprintf("test-pipeline-%s$", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "codepipeline", regexache.MustCompile(fmt.Sprintf("test-pipeline-%s$", rName))), resource.TestCheckResourceAttr(resourceName, "artifact_store.#", "1"), resource.TestCheckResourceAttr(resourceName, "stage.#", "2"), resource.TestCheckResourceAttr(resourceName, "stage.1.name", "Build"), @@ -461,7 +461,7 @@ func TestAccCodePipeline_withNamespace(t *testing.T) { Config: testAccCodePipelineConfig_namespace(rName), Check: resource.ComposeTestCheckFunc( testAccCheckPipelineExists(ctx, resourceName, &p), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "codepipeline", regexache.MustCompile(fmt.Sprintf("test-pipeline-%s", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "codepipeline", regexache.MustCompile(fmt.Sprintf("test-pipeline-%s", rName))), resource.TestCheckResourceAttr(resourceName, "stage.0.action.0.namespace", "SourceVariables"), ), }, @@ -617,7 +617,7 @@ func TestAccCodePipeline_pipelinetype(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckPipelineExists(ctx, resourceName, &p), resource.TestCheckResourceAttrPair(resourceName, names.AttrRoleARN, "aws_iam_role.codepipeline_role", names.AttrARN), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "codepipeline", regexache.MustCompile(fmt.Sprintf("test-pipeline-%s", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "codepipeline", regexache.MustCompile(fmt.Sprintf("test-pipeline-%s", rName))), resource.TestCheckResourceAttr(resourceName, "artifact_store.#", "1"), resource.TestCheckResourceAttr(resourceName, "execution_mode", string(types.ExecutionModeSuperseded)), resource.TestCheckResourceAttr(resourceName, "pipeline_type", string(types.PipelineTypeV1)), @@ -925,7 +925,7 @@ func TestAccCodePipeline_pipelinetype(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckPipelineExists(ctx, resourceName, &p), resource.TestCheckResourceAttrPair(resourceName, names.AttrRoleARN, "aws_iam_role.codepipeline_role", names.AttrARN), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "codepipeline", regexache.MustCompile(fmt.Sprintf("test-pipeline-%s", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "codepipeline", regexache.MustCompile(fmt.Sprintf("test-pipeline-%s", rName))), resource.TestCheckResourceAttr(resourceName, "artifact_store.#", "1"), resource.TestCheckResourceAttr(resourceName, "execution_mode", string(types.ExecutionModeSuperseded)), resource.TestCheckResourceAttr(resourceName, "pipeline_type", string(types.PipelineTypeV2)), @@ -994,7 +994,7 @@ func TestAccCodePipeline_manualApprovalTimeoutInMinutes(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckPipelineExists(ctx, resourceName, &p), resource.TestCheckResourceAttrPair(resourceName, names.AttrRoleARN, "aws_iam_role.codepipeline_role", names.AttrARN), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "codepipeline", regexache.MustCompile(fmt.Sprintf("test-pipeline-%s", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "codepipeline", regexache.MustCompile(fmt.Sprintf("test-pipeline-%s", rName))), resource.TestCheckResourceAttr(resourceName, "artifact_store.#", "1"), resource.TestCheckResourceAttr(resourceName, "stage.#", "3"), resource.TestCheckResourceAttr(resourceName, "stage.0.name", "Source"), @@ -1018,7 +1018,7 @@ func TestAccCodePipeline_manualApprovalTimeoutInMinutes(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckPipelineExists(ctx, resourceName, &p), resource.TestCheckResourceAttrPair(resourceName, names.AttrRoleARN, "aws_iam_role.codepipeline_role", names.AttrARN), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "codepipeline", regexache.MustCompile(fmt.Sprintf("test-pipeline-%s", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "codepipeline", regexache.MustCompile(fmt.Sprintf("test-pipeline-%s", rName))), resource.TestCheckResourceAttr(resourceName, "artifact_store.#", "1"), resource.TestCheckResourceAttr(resourceName, "stage.#", "3"), resource.TestCheckResourceAttr(resourceName, "stage.0.name", "Source"), diff --git a/internal/service/codepipeline/custom_action_type.go b/internal/service/codepipeline/custom_action_type.go index 707b6bf8358e..57c2a8e5dc26 100644 --- a/internal/service/codepipeline/custom_action_type.go +++ b/internal/service/codepipeline/custom_action_type.go @@ -249,8 +249,8 @@ func resourceCustomActionTypeRead(ctx context.Context, d *schema.ResourceData, m arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "codepipeline", - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("actiontype:%s/%s/%s/%s", types.ActionOwnerCustom, category, provider, version), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/codepipeline/custom_action_type_test.go b/internal/service/codepipeline/custom_action_type_test.go index e2851e3c343c..418b66129848 100644 --- a/internal/service/codepipeline/custom_action_type_test.go +++ b/internal/service/codepipeline/custom_action_type_test.go @@ -38,7 +38,7 @@ func TestAccCodePipelineCustomActionType_basic(t *testing.T) { Config: testAccCustomActionTypeConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckCustomActionTypeExists(ctx, resourceName, &v), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "codepipeline", fmt.Sprintf("actiontype:Custom/Test/%s/1", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "codepipeline", fmt.Sprintf("actiontype:Custom/Test/%s/1", rName)), resource.TestCheckResourceAttr(resourceName, "category", "Test"), resource.TestCheckResourceAttr(resourceName, "configuration_property.#", "0"), resource.TestCheckResourceAttr(resourceName, "input_artifact_details.#", "1"), @@ -158,7 +158,7 @@ func TestAccCodePipelineCustomActionType_allAttributes(t *testing.T) { Config: testAccCustomActionTypeConfig_allAttributes(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckCustomActionTypeExists(ctx, resourceName, &v), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "codepipeline", fmt.Sprintf("actiontype:Custom/Test/%s/1", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "codepipeline", fmt.Sprintf("actiontype:Custom/Test/%s/1", rName)), resource.TestCheckResourceAttr(resourceName, "category", "Test"), resource.TestCheckResourceAttr(resourceName, "configuration_property.#", "2"), resource.TestCheckResourceAttr(resourceName, "configuration_property.0.description", ""), diff --git a/internal/service/codepipeline/service_endpoints_gen_test.go b/internal/service/codepipeline/service_endpoints_gen_test.go index a8fdaf433c50..741fb7fa77d5 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/codepipeline/webhook_test.go b/internal/service/codepipeline/webhook_test.go index b72a85673dc2..2369f5b7a4f5 100644 --- a/internal/service/codepipeline/webhook_test.go +++ b/internal/service/codepipeline/webhook_test.go @@ -42,7 +42,7 @@ func TestAccCodePipelineWebhook_basic(t *testing.T) { Config: testAccWebhookConfig_basic(rName, ghToken), Check: resource.ComposeTestCheckFunc( testAccCheckWebhookExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "codepipeline", regexache.MustCompile(fmt.Sprintf("webhook:%s", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "codepipeline", regexache.MustCompile(fmt.Sprintf("webhook:%s", rName))), resource.TestCheckResourceAttr(resourceName, "authentication", "GITHUB_HMAC"), resource.TestCheckResourceAttr(resourceName, "target_action", "Source"), resource.TestCheckResourceAttrPair(resourceName, "target_pipeline", "aws_codepipeline.test", names.AttrName), diff --git a/internal/service/codestarconnections/connection_test.go b/internal/service/codestarconnections/connection_test.go index 42468bbb9d20..bb0d4d297e73 100644 --- a/internal/service/codestarconnections/connection_test.go +++ b/internal/service/codestarconnections/connection_test.go @@ -39,8 +39,8 @@ func TestAccCodeStarConnectionsConnection_basic(t *testing.T) { Config: testAccConnectionConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckConnectionExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrID, "codestar-connections", regexache.MustCompile("connection/.+")), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "codestar-connections", regexache.MustCompile("connection/.+")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrID, "codestar-connections", regexache.MustCompile("connection/.+")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "codestar-connections", regexache.MustCompile("connection/.+")), resource.TestCheckResourceAttr(resourceName, "provider_type", string(types.ProviderTypeBitbucket)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "connection_status", string(types.ConnectionStatusPending)), @@ -74,9 +74,9 @@ func TestAccCodeStarConnectionsConnection_hostARN(t *testing.T) { Config: testAccConnectionConfig_hostARN(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckConnectionExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrID, "codestar-connections", regexache.MustCompile("connection/.+")), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "codestar-connections", regexache.MustCompile("connection/.+")), - acctest.MatchResourceAttrRegionalARN(resourceName, "host_arn", "codestar-connections", regexache.MustCompile("host/.+")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrID, "codestar-connections", regexache.MustCompile("connection/.+")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "codestar-connections", regexache.MustCompile("connection/.+")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, "host_arn", "codestar-connections", regexache.MustCompile("host/.+")), resource.TestCheckResourceAttr(resourceName, "provider_type", string(types.ProviderTypeGithubEnterpriseServer)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "connection_status", string(types.ConnectionStatusPending)), diff --git a/internal/service/codestarconnections/host_test.go b/internal/service/codestarconnections/host_test.go index 75da7b796e3e..00a215d84746 100644 --- a/internal/service/codestarconnections/host_test.go +++ b/internal/service/codestarconnections/host_test.go @@ -40,8 +40,8 @@ func TestAccCodeStarConnectionsHost_basic(t *testing.T) { Config: testAccHostConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckHostExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrID, "codestar-connections", regexache.MustCompile("host/.+")), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "codestar-connections", regexache.MustCompile("host/.+")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrID, "codestar-connections", regexache.MustCompile("host/.+")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "codestar-connections", regexache.MustCompile("host/.+")), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "provider_endpoint", "https://example.com"), resource.TestCheckResourceAttr(resourceName, "provider_type", string(types.ProviderTypeGithubEnterpriseServer)), @@ -102,8 +102,8 @@ func TestAccCodeStarConnectionsHost_vpc(t *testing.T) { Config: testAccHostConfig_vpc(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckHostExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrID, "codestar-connections", regexache.MustCompile("host/.+")), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "codestar-connections", regexache.MustCompile("host/.+")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrID, "codestar-connections", regexache.MustCompile("host/.+")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "codestar-connections", regexache.MustCompile("host/.+")), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "provider_endpoint", "https://example.com"), resource.TestCheckResourceAttr(resourceName, "provider_type", string(types.ProviderTypeGithubEnterpriseServer)), diff --git a/internal/service/codestarconnections/service_endpoints_gen_test.go b/internal/service/codestarconnections/service_endpoints_gen_test.go index 028ed58394a7..66ad7c84c81e 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/codestarconnections/sweep.go b/internal/service/codestarconnections/sweep.go index 8afd0db8a5ca..4b37be4e63ca 100644 --- a/internal/service/codestarconnections/sweep.go +++ b/internal/service/codestarconnections/sweep.go @@ -9,10 +9,10 @@ import ( "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/service/codestarconnections" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-provider-aws/internal/sweep" "github.com/hashicorp/terraform-provider-aws/internal/sweep/awsv2" - "github.com/hashicorp/terraform-provider-aws/names" ) func RegisterSweepers() { @@ -32,7 +32,7 @@ func RegisterSweepers() { func sweepConnections(region string) error { ctx := sweep.Context(region) - if region == names.USGovEast1RegionID || region == names.USGovWest1RegionID { + if region == endpoints.UsGovEast1RegionID || region == endpoints.UsGovWest1RegionID { log.Printf("[WARN] Skipping CodeStar Connections Connection sweep for region: %s", region) return nil } @@ -77,7 +77,7 @@ func sweepConnections(region string) error { func sweepHosts(region string) error { ctx := sweep.Context(region) - if region == names.USGovEast1RegionID || region == names.USGovWest1RegionID { + if region == endpoints.UsGovEast1RegionID || region == endpoints.UsGovWest1RegionID { log.Printf("[WARN] Skipping CodeStar Connections Host sweep for region: %s", region) return nil } diff --git a/internal/service/codestarnotifications/notification_rule_test.go b/internal/service/codestarnotifications/notification_rule_test.go index 86fd6ea825e8..7e492a5d6d06 100644 --- a/internal/service/codestarnotifications/notification_rule_test.go +++ b/internal/service/codestarnotifications/notification_rule_test.go @@ -37,7 +37,7 @@ func TestAccCodeStarNotificationsNotificationRule_basic(t *testing.T) { Config: testAccNotificationRuleConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckNotificationRuleExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "codestar-notifications", regexache.MustCompile("notificationrule/.+")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "codestar-notifications", regexache.MustCompile("notificationrule/.+")), resource.TestCheckResourceAttr(resourceName, "detail_type", string(types.DetailTypeBasic)), resource.TestCheckResourceAttr(resourceName, "event_type_ids.#", "1"), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), diff --git a/internal/service/codestarnotifications/service_endpoints_gen_test.go b/internal/service/codestarnotifications/service_endpoints_gen_test.go index e43aa97538f7..ef166b489c14 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/pool.go b/internal/service/cognitoidentity/pool.go index 7759c21affea..7786904c4185 100644 --- a/internal/service/cognitoidentity/pool.go +++ b/internal/service/cognitoidentity/pool.go @@ -187,9 +187,9 @@ func resourcePoolRead(ctx context.Context, d *schema.ResourceData, meta interfac arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), Service: "cognito-identity", - AccountID: meta.(*conns.AWSClient).AccountID, + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("identitypool/%s", d.Id()), } d.Set(names.AttrARN, arn.String()) diff --git a/internal/service/cognitoidentity/pool_data_source.go b/internal/service/cognitoidentity/pool_data_source.go index 64df8d1cf7ad..a2ef847a9742 100644 --- a/internal/service/cognitoidentity/pool_data_source.go +++ b/internal/service/cognitoidentity/pool_data_source.go @@ -113,9 +113,9 @@ func dataSourcePoolRead(ctx context.Context, d *schema.ResourceData, meta interf arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), Service: "cognito-identity", - AccountID: meta.(*conns.AWSClient).AccountID, + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("identitypool/%s", d.Id()), } d.Set(names.AttrARN, arn.String()) diff --git a/internal/service/cognitoidentity/pool_test.go b/internal/service/cognitoidentity/pool_test.go index 2b14605eb7b1..4454c7ddfd28 100644 --- a/internal/service/cognitoidentity/pool_test.go +++ b/internal/service/cognitoidentity/pool_test.go @@ -41,7 +41,7 @@ func TestAccCognitoIdentityPool_basic(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckPoolExists(ctx, resourceName, &v1), resource.TestCheckResourceAttr(resourceName, "identity_pool_name", fmt.Sprintf("identity pool %s", name)), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "cognito-identity", regexache.MustCompile(`identitypool/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "cognito-identity", regexache.MustCompile(`identitypool/.+`)), resource.TestCheckResourceAttr(resourceName, "allow_unauthenticated_identities", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "developer_provider_name", ""), ), diff --git a/internal/service/cognitoidentity/service_endpoints_gen_test.go b/internal/service/cognitoidentity/service_endpoints_gen_test.go index c19bb621a26f..f568a8f7d416 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 389dbed44f06..1caaa6a6c038 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/cognitoidp/user_pool_data_source_test.go b/internal/service/cognitoidp/user_pool_data_source_test.go index e3ef3c31fedd..efb09270a487 100644 --- a/internal/service/cognitoidp/user_pool_data_source_test.go +++ b/internal/service/cognitoidp/user_pool_data_source_test.go @@ -40,7 +40,7 @@ func TestAccCognitoIDPUserPoolDataSource_basic(t *testing.T) { Config: testAccUserPoolDataSourceConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckUserPoolExists(ctx, dataSourceName, &userpool), - acctest.MatchResourceAttrRegionalARN(dataSourceName, names.AttrARN, "cognito-idp", regexache.MustCompile(`userpool/.*`)), + acctest.MatchResourceAttrRegionalARN(ctx, dataSourceName, names.AttrARN, "cognito-idp", regexache.MustCompile(`userpool/.*`)), resource.TestCheckResourceAttr(dataSourceName, names.AttrName, rName), ), ConfigStateChecks: []statecheck.StateCheck{ diff --git a/internal/service/cognitoidp/user_pool_domain_test.go b/internal/service/cognitoidp/user_pool_domain_test.go index 5ec08a8099d6..0b9cf779e524 100644 --- a/internal/service/cognitoidp/user_pool_domain_test.go +++ b/internal/service/cognitoidp/user_pool_domain_test.go @@ -9,6 +9,7 @@ import ( "testing" "github.com/aws/aws-sdk-go-v2/aws" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-plugin-testing/terraform" @@ -34,7 +35,7 @@ func TestAccCognitoIDPUserPoolDomain_basic(t *testing.T) { Config: testAccUserPoolDomainConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckUserPoolDomainExists(ctx, resourceName), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrAWSAccountID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrAWSAccountID), resource.TestCheckResourceAttrSet(resourceName, "cloudfront_distribution"), resource.TestCheckResourceAttrSet(resourceName, "cloudfront_distribution_arn"), resource.TestCheckResourceAttr(resourceName, "cloudfront_distribution_zone_id", "Z2FDTNDATAQYW2"), @@ -84,7 +85,7 @@ func TestAccCognitoIDPUserPoolDomain_custom(t *testing.T) { resourceName := "aws_cognito_user_pool_domain.test" resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckRegion(t, names.USEast1RegionID) }, + PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckRegion(t, endpoints.UsEast1RegionID) }, ErrorCheck: acctest.ErrorCheck(t, names.CognitoIDPServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckUserPoolDomainDestroy(ctx), @@ -93,7 +94,7 @@ func TestAccCognitoIDPUserPoolDomain_custom(t *testing.T) { Config: testAccUserPoolDomainConfig_custom(rootDomain, domain, poolName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckUserPoolDomainExists(ctx, resourceName), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrAWSAccountID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrAWSAccountID), resource.TestCheckResourceAttrPair(resourceName, names.AttrCertificateARN, acmCertificateResourceName, names.AttrARN), resource.TestCheckResourceAttrSet(resourceName, "cloudfront_distribution"), resource.TestCheckResourceAttr(resourceName, "cloudfront_distribution_zone_id", "Z2FDTNDATAQYW2"), @@ -123,7 +124,7 @@ func TestAccCognitoIDPUserPoolDomain_customCertUpdate(t *testing.T) { cognitoPoolResourceName := "aws_cognito_user_pool_domain.test" resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckRegion(t, names.USEast1RegionID) }, + PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckRegion(t, endpoints.UsEast1RegionID) }, ErrorCheck: acctest.ErrorCheck(t, names.CognitoIDPServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckUserPoolDomainDestroy(ctx), diff --git a/internal/service/cognitoidp/user_pool_test.go b/internal/service/cognitoidp/user_pool_test.go index 06b2725d928f..668b83242149 100644 --- a/internal/service/cognitoidp/user_pool_test.go +++ b/internal/service/cognitoidp/user_pool_test.go @@ -48,7 +48,7 @@ func TestAccCognitoIDPUserPool_basic(t *testing.T) { Config: testAccUserPoolConfig_name(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckUserPoolExists(ctx, resourceName, &pool), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "cognito-idp", regexache.MustCompile(`userpool/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "cognito-idp", regexache.MustCompile(`userpool/.+`)), resource.TestMatchResourceAttr(resourceName, names.AttrEndpoint, regexache.MustCompile(`^cognito-idp\.[^.]+\.amazonaws.com/[\w-]+_[0-9A-Za-z]+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreationDate), diff --git a/internal/service/cognitoidp/user_pools_data_source.go b/internal/service/cognitoidp/user_pools_data_source.go index 5251cbf9e064..9765d9d83461 100644 --- a/internal/service/cognitoidp/user_pools_data_source.go +++ b/internal/service/cognitoidp/user_pools_data_source.go @@ -59,8 +59,8 @@ func dataSourceUserPoolsRead(ctx context.Context, d *schema.ResourceData, meta i arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "cognito-idp", - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: "userpool/" + userPoolID, }.String() diff --git a/internal/service/comprehend/document_classifier_test.go b/internal/service/comprehend/document_classifier_test.go index 8b7280d9388c..293f14c9180c 100644 --- a/internal/service/comprehend/document_classifier_test.go +++ b/internal/service/comprehend/document_classifier_test.go @@ -49,7 +49,7 @@ func TestAccComprehendDocumentClassifier_basic(t *testing.T) { testAccCheckDocumentClassifierPublishedVersions(ctx, resourceName, 1), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttrPair(resourceName, "data_access_role_arn", "aws_iam_role.test", names.AttrARN), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "comprehend", regexache.MustCompile(fmt.Sprintf(`document-classifier/%s/version/%s$`, rName, uniqueIDPattern()))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "comprehend", regexache.MustCompile(fmt.Sprintf(`document-classifier/%s/version/%s$`, rName, uniqueIDPattern()))), resource.TestCheckResourceAttr(resourceName, "input_data_config.#", "1"), resource.TestCheckResourceAttr(resourceName, "input_data_config.0.augmented_manifests.#", "0"), resource.TestCheckResourceAttr(resourceName, "input_data_config.0.data_format", string(types.DocumentClassifierDataFormatComprehendCsv)), @@ -143,7 +143,7 @@ func TestAccComprehendDocumentClassifier_versionName(t *testing.T) { resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "version_name", vName1), resource.TestCheckResourceAttr(resourceName, "version_name_prefix", ""), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "comprehend", regexache.MustCompile(fmt.Sprintf(`document-classifier/%s/version/%s$`, rName, vName1))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "comprehend", regexache.MustCompile(fmt.Sprintf(`document-classifier/%s/version/%s$`, rName, vName1))), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "1"), resource.TestCheckResourceAttr(resourceName, "tags.key", acctest.CtValue1), ), @@ -161,7 +161,7 @@ func TestAccComprehendDocumentClassifier_versionName(t *testing.T) { resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "version_name", vName2), resource.TestCheckResourceAttr(resourceName, "version_name_prefix", ""), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "comprehend", regexache.MustCompile(fmt.Sprintf(`document-classifier/%s/version/%s$`, rName, vName2))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "comprehend", regexache.MustCompile(fmt.Sprintf(`document-classifier/%s/version/%s$`, rName, vName2))), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "1"), resource.TestCheckResourceAttr(resourceName, "tags.key", acctest.CtValue2), ), @@ -203,7 +203,7 @@ func TestAccComprehendDocumentClassifier_versionNameEmpty(t *testing.T) { resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "version_name", ""), resource.TestCheckResourceAttr(resourceName, "version_name_prefix", ""), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "comprehend", regexache.MustCompile(fmt.Sprintf(`document-classifier/%s$`, rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "comprehend", regexache.MustCompile(fmt.Sprintf(`document-classifier/%s$`, rName))), ), }, { @@ -242,7 +242,7 @@ func TestAccComprehendDocumentClassifier_versionNameGenerated(t *testing.T) { testAccCheckDocumentClassifierPublishedVersions(ctx, resourceName, 1), acctest.CheckResourceAttrNameGenerated(resourceName, "version_name"), resource.TestCheckResourceAttr(resourceName, "version_name_prefix", id.UniqueIdPrefix), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "comprehend", regexache.MustCompile(fmt.Sprintf(`document-classifier/%s/version/%s$`, rName, uniqueIDPattern()))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "comprehend", regexache.MustCompile(fmt.Sprintf(`document-classifier/%s/version/%s$`, rName, uniqueIDPattern()))), ), }, { @@ -281,7 +281,7 @@ func TestAccComprehendDocumentClassifier_versionNamePrefix(t *testing.T) { testAccCheckDocumentClassifierPublishedVersions(ctx, resourceName, 1), acctest.CheckResourceAttrNameFromPrefix(resourceName, "version_name", "tf-acc-test-prefix-"), resource.TestCheckResourceAttr(resourceName, "version_name_prefix", "tf-acc-test-prefix-"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "comprehend", regexache.MustCompile(fmt.Sprintf(`document-classifier/%s/version/%s$`, rName, prefixedUniqueIDPattern("tf-acc-test-prefix-")))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "comprehend", regexache.MustCompile(fmt.Sprintf(`document-classifier/%s/version/%s$`, rName, prefixedUniqueIDPattern("tf-acc-test-prefix-")))), ), }, { @@ -319,7 +319,7 @@ func TestAccComprehendDocumentClassifier_testDocuments(t *testing.T) { testAccCheckDocumentClassifierExists(ctx, resourceName, &documentclassifier), testAccCheckDocumentClassifierPublishedVersions(ctx, resourceName, 1), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "comprehend", regexache.MustCompile(fmt.Sprintf(`document-classifier/%s/version/%s$`, rName, uniqueIDPattern()))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "comprehend", regexache.MustCompile(fmt.Sprintf(`document-classifier/%s/version/%s$`, rName, uniqueIDPattern()))), resource.TestCheckResourceAttr(resourceName, "input_data_config.#", "1"), resource.TestCheckResourceAttr(resourceName, "input_data_config.0.augmented_manifests.#", "0"), resource.TestCheckResourceAttr(resourceName, "input_data_config.0.data_format", string(types.DocumentClassifierDataFormatComprehendCsv)), @@ -408,7 +408,7 @@ func TestAccComprehendDocumentClassifier_multiLabel_basic(t *testing.T) { testAccCheckDocumentClassifierPublishedVersions(ctx, resourceName, 1), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttrPair(resourceName, "data_access_role_arn", "aws_iam_role.test", names.AttrARN), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "comprehend", regexache.MustCompile(fmt.Sprintf(`document-classifier/%s/version/%s$`, rName, uniqueIDPattern()))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "comprehend", regexache.MustCompile(fmt.Sprintf(`document-classifier/%s/version/%s$`, rName, uniqueIDPattern()))), resource.TestCheckResourceAttr(resourceName, "input_data_config.#", "1"), resource.TestCheckResourceAttr(resourceName, "input_data_config.0.augmented_manifests.#", "0"), resource.TestCheckResourceAttr(resourceName, "input_data_config.0.data_format", string(types.DocumentClassifierDataFormatComprehendCsv)), @@ -818,7 +818,7 @@ func TestAccComprehendDocumentClassifier_multiLabel_labelDelimiter(t *testing.T) testAccCheckDocumentClassifierPublishedVersions(ctx, resourceName, 1), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttrPair(resourceName, "data_access_role_arn", "aws_iam_role.test", names.AttrARN), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "comprehend", regexache.MustCompile(fmt.Sprintf(`document-classifier/%s/version/%s$`, rName, uniqueIDPattern()))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "comprehend", regexache.MustCompile(fmt.Sprintf(`document-classifier/%s/version/%s$`, rName, uniqueIDPattern()))), resource.TestCheckResourceAttr(resourceName, "input_data_config.#", "1"), resource.TestCheckResourceAttr(resourceName, "input_data_config.0.augmented_manifests.#", "0"), resource.TestCheckResourceAttr(resourceName, "input_data_config.0.data_format", string(types.DocumentClassifierDataFormatComprehendCsv)), diff --git a/internal/service/comprehend/entity_recognizer_test.go b/internal/service/comprehend/entity_recognizer_test.go index 3b1d5e965626..f77f410038d5 100644 --- a/internal/service/comprehend/entity_recognizer_test.go +++ b/internal/service/comprehend/entity_recognizer_test.go @@ -49,7 +49,7 @@ func TestAccComprehendEntityRecognizer_basic(t *testing.T) { testAccCheckEntityRecognizerPublishedVersions(ctx, resourceName, 1), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttrPair(resourceName, "data_access_role_arn", "aws_iam_role.test", names.AttrARN), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "comprehend", regexache.MustCompile(fmt.Sprintf(`entity-recognizer/%s/version/%s$`, rName, uniqueIDPattern()))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "comprehend", regexache.MustCompile(fmt.Sprintf(`entity-recognizer/%s/version/%s$`, rName, uniqueIDPattern()))), resource.TestCheckResourceAttr(resourceName, "input_data_config.#", "1"), resource.TestCheckResourceAttr(resourceName, "input_data_config.0.entity_types.#", "2"), resource.TestCheckResourceAttr(resourceName, "input_data_config.0.annotations.#", "0"), @@ -140,7 +140,7 @@ func TestAccComprehendEntityRecognizer_versionName(t *testing.T) { resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "version_name", vName1), resource.TestCheckResourceAttr(resourceName, "version_name_prefix", ""), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "comprehend", regexache.MustCompile(fmt.Sprintf(`entity-recognizer/%s/version/%s$`, rName, vName1))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "comprehend", regexache.MustCompile(fmt.Sprintf(`entity-recognizer/%s/version/%s$`, rName, vName1))), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "1"), resource.TestCheckResourceAttr(resourceName, "tags.key", acctest.CtValue1), ), @@ -158,7 +158,7 @@ func TestAccComprehendEntityRecognizer_versionName(t *testing.T) { resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "version_name", vName2), resource.TestCheckResourceAttr(resourceName, "version_name_prefix", ""), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "comprehend", regexache.MustCompile(fmt.Sprintf(`entity-recognizer/%s/version/%s$`, rName, vName2))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "comprehend", regexache.MustCompile(fmt.Sprintf(`entity-recognizer/%s/version/%s$`, rName, vName2))), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "1"), resource.TestCheckResourceAttr(resourceName, "tags.key", acctest.CtValue2), ), @@ -200,7 +200,7 @@ func TestAccComprehendEntityRecognizer_versionNameEmpty(t *testing.T) { resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "version_name", ""), resource.TestCheckResourceAttr(resourceName, "version_name_prefix", ""), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "comprehend", regexache.MustCompile(fmt.Sprintf(`entity-recognizer/%s$`, rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "comprehend", regexache.MustCompile(fmt.Sprintf(`entity-recognizer/%s$`, rName))), ), }, { @@ -239,7 +239,7 @@ func TestAccComprehendEntityRecognizer_versionNameGenerated(t *testing.T) { testAccCheckEntityRecognizerPublishedVersions(ctx, resourceName, 1), acctest.CheckResourceAttrNameGenerated(resourceName, "version_name"), resource.TestCheckResourceAttr(resourceName, "version_name_prefix", id.UniqueIdPrefix), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "comprehend", regexache.MustCompile(fmt.Sprintf(`entity-recognizer/%s/version/%s$`, rName, uniqueIDPattern()))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "comprehend", regexache.MustCompile(fmt.Sprintf(`entity-recognizer/%s/version/%s$`, rName, uniqueIDPattern()))), ), }, { @@ -278,7 +278,7 @@ func TestAccComprehendEntityRecognizer_versionNamePrefix(t *testing.T) { testAccCheckEntityRecognizerPublishedVersions(ctx, resourceName, 1), acctest.CheckResourceAttrNameFromPrefix(resourceName, "version_name", "tf-acc-test-prefix-"), resource.TestCheckResourceAttr(resourceName, "version_name_prefix", "tf-acc-test-prefix-"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "comprehend", regexache.MustCompile(fmt.Sprintf(`entity-recognizer/%s/version/%s$`, rName, prefixedUniqueIDPattern("tf-acc-test-prefix-")))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "comprehend", regexache.MustCompile(fmt.Sprintf(`entity-recognizer/%s/version/%s$`, rName, prefixedUniqueIDPattern("tf-acc-test-prefix-")))), ), }, { @@ -316,7 +316,7 @@ func TestAccComprehendEntityRecognizer_documents_testDocuments(t *testing.T) { testAccCheckEntityRecognizerExists(ctx, resourceName, &entityrecognizer), testAccCheckEntityRecognizerPublishedVersions(ctx, resourceName, 1), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "comprehend", regexache.MustCompile(fmt.Sprintf(`entity-recognizer/%s/version/%s$`, rName, uniqueIDPattern()))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "comprehend", regexache.MustCompile(fmt.Sprintf(`entity-recognizer/%s/version/%s$`, rName, uniqueIDPattern()))), resource.TestCheckResourceAttr(resourceName, "input_data_config.#", "1"), resource.TestCheckResourceAttr(resourceName, "input_data_config.0.entity_types.#", "2"), resource.TestCheckResourceAttr(resourceName, "input_data_config.0.annotations.#", "0"), @@ -371,7 +371,7 @@ func TestAccComprehendEntityRecognizer_annotations_basic(t *testing.T) { testAccCheckEntityRecognizerPublishedVersions(ctx, resourceName, 1), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttrPair(resourceName, "data_access_role_arn", "aws_iam_role.test", names.AttrARN), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "comprehend", regexache.MustCompile(fmt.Sprintf(`entity-recognizer/%s/version/%s$`, rName, uniqueIDPattern()))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "comprehend", regexache.MustCompile(fmt.Sprintf(`entity-recognizer/%s/version/%s$`, rName, uniqueIDPattern()))), resource.TestCheckResourceAttr(resourceName, "input_data_config.#", "1"), resource.TestCheckResourceAttr(resourceName, "input_data_config.0.entity_types.#", "2"), resource.TestCheckResourceAttr(resourceName, "input_data_config.0.annotations.#", "1"), @@ -427,7 +427,7 @@ func TestAccComprehendEntityRecognizer_annotations_testDocuments(t *testing.T) { testAccCheckEntityRecognizerPublishedVersions(ctx, resourceName, 1), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttrPair(resourceName, "data_access_role_arn", "aws_iam_role.test", names.AttrARN), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "comprehend", regexache.MustCompile(fmt.Sprintf(`entity-recognizer/%s/version/%s$`, rName, uniqueIDPattern()))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "comprehend", regexache.MustCompile(fmt.Sprintf(`entity-recognizer/%s/version/%s$`, rName, uniqueIDPattern()))), resource.TestCheckResourceAttr(resourceName, "input_data_config.#", "1"), resource.TestCheckResourceAttr(resourceName, "input_data_config.0.entity_types.#", "2"), resource.TestCheckResourceAttr(resourceName, "input_data_config.0.annotations.#", "1"), diff --git a/internal/service/comprehend/service_endpoints_gen_test.go b/internal/service/comprehend/service_endpoints_gen_test.go index d46c3591c97c..1a3e08dc39d7 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/enrollment_status.go b/internal/service/computeoptimizer/enrollment_status.go index 42d40eac25d3..8c8d79e6f049 100644 --- a/internal/service/computeoptimizer/enrollment_status.go +++ b/internal/service/computeoptimizer/enrollment_status.go @@ -105,7 +105,7 @@ func (r *enrollmentStatusResource) Create(ctx context.Context, request resource. } // Set values for unknowns. - data.ID = fwflex.StringValueToFramework(ctx, r.Meta().AccountID) + data.ID = fwflex.StringValueToFramework(ctx, r.Meta().AccountID(ctx)) output, err := waitEnrollmentStatusUpdated(ctx, conn, string(input.Status), r.CreateTimeout(ctx, data.Timeouts)) diff --git a/internal/service/computeoptimizer/service_endpoints_gen_test.go b/internal/service/computeoptimizer/service_endpoints_gen_test.go index 063816f5658a..135162054040 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/config_rule_test.go b/internal/service/configservice/config_rule_test.go index 3aa49e30e827..d3f37f8de514 100644 --- a/internal/service/configservice/config_rule_test.go +++ b/internal/service/configservice/config_rule_test.go @@ -119,7 +119,7 @@ func testAccConfigRule_ownerAWS(t *testing.T) { // nosemgrep:ci.aws-in-func-name Config: testAccConfigRuleConfig_ownerAWS(rName), Check: resource.ComposeTestCheckFunc( testAccCheckConfigRuleExists(ctx, resourceName, &cr), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "config", regexache.MustCompile("config-rule/config-rule-[0-9a-z]+$")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "config", regexache.MustCompile("config-rule/config-rule-[0-9a-z]+$")), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestMatchResourceAttr(resourceName, "rule_id", regexache.MustCompile("config-rule-[0-9a-z]+$")), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "Terraform Acceptance tests"), @@ -158,7 +158,7 @@ func testAccConfigRule_customlambda(t *testing.T) { Config: testAccConfigRuleConfig_customLambda(rName), Check: resource.ComposeTestCheckFunc( testAccCheckConfigRuleExists(ctx, resourceName, &cr), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "config", regexache.MustCompile("config-rule/config-rule-[0-9a-z]+$")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "config", regexache.MustCompile("config-rule/config-rule-[0-9a-z]+$")), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestMatchResourceAttr(resourceName, "rule_id", regexache.MustCompile("config-rule-[0-9a-z]+$")), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "Terraform Acceptance tests"), @@ -202,7 +202,7 @@ func testAccConfigRule_ownerPolicy(t *testing.T) { Config: testAccConfigRuleConfig_ownerPolicy(rName, false), Check: resource.ComposeTestCheckFunc( testAccCheckConfigRuleExists(ctx, resourceName, &cr), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "config", regexache.MustCompile("config-rule/config-rule-[0-9a-z]+$")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "config", regexache.MustCompile("config-rule/config-rule-[0-9a-z]+$")), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestMatchResourceAttr(resourceName, "rule_id", regexache.MustCompile("config-rule-[0-9a-z]+$")), resource.TestCheckResourceAttr(resourceName, "scope.#", "0"), @@ -225,7 +225,7 @@ func testAccConfigRule_ownerPolicy(t *testing.T) { Config: testAccConfigRuleConfig_ownerPolicy(rName, true), Check: resource.ComposeTestCheckFunc( testAccCheckConfigRuleExists(ctx, resourceName, &cr), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "config", regexache.MustCompile("config-rule/config-rule-[0-9a-z]+$")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "config", regexache.MustCompile("config-rule/config-rule-[0-9a-z]+$")), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestMatchResourceAttr(resourceName, "rule_id", regexache.MustCompile("config-rule-[0-9a-z]+$")), resource.TestCheckResourceAttr(resourceName, "scope.#", "0"), diff --git a/internal/service/configservice/configuration_aggregator_test.go b/internal/service/configservice/configuration_aggregator_test.go index 60dcb6aa737b..d2cf17c0cc43 100644 --- a/internal/service/configservice/configuration_aggregator_test.go +++ b/internal/service/configservice/configuration_aggregator_test.go @@ -38,10 +38,10 @@ func TestAccConfigServiceConfigurationAggregator_account(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckConfigurationAggregatorExists(ctx, resourceName, &ca), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "config", regexache.MustCompile(`config-aggregator/config-aggregator-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "config", regexache.MustCompile(`config-aggregator/config-aggregator-.+`)), resource.TestCheckResourceAttr(resourceName, "account_aggregation_source.#", "1"), resource.TestCheckResourceAttr(resourceName, "account_aggregation_source.0.account_ids.#", "1"), - acctest.CheckResourceAttrAccountID(resourceName, "account_aggregation_source.0.account_ids.0"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "account_aggregation_source.0.account_ids.0"), resource.TestCheckResourceAttr(resourceName, "account_aggregation_source.0.regions.#", "1"), resource.TestCheckResourceAttrPair(resourceName, "account_aggregation_source.0.regions.0", "data.aws_region.current", names.AttrName), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), diff --git a/internal/service/configservice/configuration_recorder_test.go b/internal/service/configservice/configuration_recorder_test.go index 7c76eb92cc1d..85f4194f3085 100644 --- a/internal/service/configservice/configuration_recorder_test.go +++ b/internal/service/configservice/configuration_recorder_test.go @@ -36,7 +36,7 @@ func testAccConfigurationRecorder_basic(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckConfigurationRecorderExists(ctx, resourceName, &cr), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), - acctest.CheckResourceAttrGlobalARN(resourceName, names.AttrRoleARN, "iam", fmt.Sprintf("role/%s", rName)), + acctest.CheckResourceAttrGlobalARN(ctx, resourceName, names.AttrRoleARN, "iam", fmt.Sprintf("role/%s", rName)), ), }, { @@ -99,7 +99,7 @@ func testAccConfigurationRecorder_allParams(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "recording_mode.0.recording_mode_override.0.recording_frequency", "CONTINUOUS"), resource.TestCheckResourceAttr(resourceName, "recording_mode.0.recording_mode_override.0.resource_types.#", "1"), resource.TestCheckResourceAttr(resourceName, "recording_mode.0.recording_mode_override.0.resource_types.0", "AWS::EC2::Instance"), - acctest.CheckResourceAttrGlobalARN(resourceName, names.AttrRoleARN, "iam", fmt.Sprintf("role/%s", rName)), + acctest.CheckResourceAttrGlobalARN(ctx, resourceName, names.AttrRoleARN, "iam", fmt.Sprintf("role/%s", rName)), ), }, }, @@ -127,7 +127,7 @@ func testAccConfigurationRecorder_recordStrategy(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "recording_group.0.all_supported", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "recording_group.0.exclusion_by_resource_types.0.resource_types.#", "2"), resource.TestCheckResourceAttr(resourceName, "recording_group.0.recording_strategy.0.use_only", "EXCLUSION_BY_RESOURCE_TYPES"), - acctest.CheckResourceAttrGlobalARN(resourceName, names.AttrRoleARN, "iam", fmt.Sprintf("role/%s", rName)), + acctest.CheckResourceAttrGlobalARN(ctx, resourceName, names.AttrRoleARN, "iam", fmt.Sprintf("role/%s", rName)), ), }, }, diff --git a/internal/service/configservice/conformance_pack_test.go b/internal/service/configservice/conformance_pack_test.go index a014ea335289..79a95ab6cef4 100644 --- a/internal/service/configservice/conformance_pack_test.go +++ b/internal/service/configservice/conformance_pack_test.go @@ -38,7 +38,7 @@ func testAccConformancePack_basic(t *testing.T) { Config: testAccConformancePackConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckConformancePackExists(ctx, resourceName, &pack), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "config", regexache.MustCompile(fmt.Sprintf("conformance-pack/%s/.+", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "config", regexache.MustCompile(fmt.Sprintf("conformance-pack/%s/.+", rName))), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "delivery_s3_bucket", ""), resource.TestCheckResourceAttr(resourceName, "delivery_s3_key_prefix", ""), @@ -82,7 +82,7 @@ func testAccConformancePack_updateName(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckConformancePackExists(ctx, resourceName, &after), testAccCheckConformancePackRecreated(&before, &after), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "config", regexache.MustCompile(fmt.Sprintf("conformance-pack/%s/.+", rNameUpdated))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "config", regexache.MustCompile(fmt.Sprintf("conformance-pack/%s/.+", rNameUpdated))), resource.TestCheckResourceAttr(resourceName, names.AttrName, rNameUpdated), resource.TestCheckResourceAttr(resourceName, "delivery_s3_bucket", ""), resource.TestCheckResourceAttr(resourceName, "delivery_s3_key_prefix", ""), @@ -141,7 +141,7 @@ func testAccConformancePack_inputParameters(t *testing.T) { Config: testAccConformancePackConfig_inputParameter(rName, "TestKey", "TestValue"), Check: resource.ComposeTestCheckFunc( testAccCheckConformancePackExists(ctx, resourceName, &pack), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "config", regexache.MustCompile(fmt.Sprintf("conformance-pack/%s/.+", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "config", regexache.MustCompile(fmt.Sprintf("conformance-pack/%s/.+", rName))), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "delivery_s3_bucket", ""), resource.TestCheckResourceAttr(resourceName, "delivery_s3_key_prefix", ""), @@ -178,7 +178,7 @@ func testAccConformancePack_S3Delivery(t *testing.T) { Config: testAccConformancePackConfig_s3Delivery(rName, rName), Check: resource.ComposeTestCheckFunc( testAccCheckConformancePackExists(ctx, resourceName, &pack), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "config", regexache.MustCompile(fmt.Sprintf("conformance-pack/%s/.+", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "config", regexache.MustCompile(fmt.Sprintf("conformance-pack/%s/.+", rName))), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "delivery_s3_bucket", rName), resource.TestCheckResourceAttr(resourceName, "delivery_s3_key_prefix", rName), @@ -211,7 +211,7 @@ func testAccConformancePack_S3Template(t *testing.T) { Config: testAccConformancePackConfig_s3Template(rName, rName), Check: resource.ComposeTestCheckFunc( testAccCheckConformancePackExists(ctx, resourceName, &pack), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "config", regexache.MustCompile(fmt.Sprintf("conformance-pack/%s/.+", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "config", regexache.MustCompile(fmt.Sprintf("conformance-pack/%s/.+", rName))), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "delivery_s3_bucket", ""), resource.TestCheckResourceAttr(resourceName, "delivery_s3_key_prefix", ""), @@ -301,7 +301,7 @@ func testAccConformancePack_updateS3Delivery(t *testing.T) { Config: testAccConformancePackConfig_s3Delivery(rName, bucketName), Check: resource.ComposeTestCheckFunc( testAccCheckConformancePackExists(ctx, resourceName, &pack), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "config", regexache.MustCompile(fmt.Sprintf("conformance-pack/%s/.+", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "config", regexache.MustCompile(fmt.Sprintf("conformance-pack/%s/.+", rName))), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "delivery_s3_bucket", bucketName), resource.TestCheckResourceAttr(resourceName, "delivery_s3_key_prefix", bucketName), @@ -341,7 +341,7 @@ func testAccConformancePack_updateS3Template(t *testing.T) { Config: testAccConformancePackConfig_s3Template(rName, bucketName), Check: resource.ComposeTestCheckFunc( testAccCheckConformancePackExists(ctx, resourceName, &pack), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "config", regexache.MustCompile(fmt.Sprintf("conformance-pack/%s/.+", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "config", regexache.MustCompile(fmt.Sprintf("conformance-pack/%s/.+", rName))), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "delivery_s3_bucket", ""), resource.TestCheckResourceAttr(resourceName, "delivery_s3_key_prefix", ""), @@ -380,7 +380,7 @@ func testAccConformancePack_updateTemplateBody(t *testing.T) { Config: testAccConformancePackConfig_update(rName), Check: resource.ComposeTestCheckFunc( testAccCheckConformancePackExists(ctx, resourceName, &pack), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "config", regexache.MustCompile(fmt.Sprintf("conformance-pack/%s/.+", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "config", regexache.MustCompile(fmt.Sprintf("conformance-pack/%s/.+", rName))), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "delivery_s3_bucket", ""), resource.TestCheckResourceAttr(resourceName, "delivery_s3_key_prefix", ""), @@ -415,7 +415,7 @@ func testAccConformancePack_S3TemplateAndTemplateBody(t *testing.T) { Config: testAccConformancePackConfig_s3TemplateAndTemplateBody(rName), Check: resource.ComposeTestCheckFunc( testAccCheckConformancePackExists(ctx, resourceName, &pack), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "config", regexache.MustCompile(fmt.Sprintf("conformance-pack/%s/.+", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "config", regexache.MustCompile(fmt.Sprintf("conformance-pack/%s/.+", rName))), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "delivery_s3_bucket", ""), resource.TestCheckResourceAttr(resourceName, "delivery_s3_key_prefix", ""), diff --git a/internal/service/configservice/organization_conformance_pack_test.go b/internal/service/configservice/organization_conformance_pack_test.go index 6d785db05338..3a7fca542e7a 100644 --- a/internal/service/configservice/organization_conformance_pack_test.go +++ b/internal/service/configservice/organization_conformance_pack_test.go @@ -39,7 +39,7 @@ func testAccOrganizationConformancePack_basic(t *testing.T) { Config: testAccOrganizationConformancePackConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckOrganizationConformancePackExists(ctx, resourceName, &pack), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "config", regexache.MustCompile(fmt.Sprintf("organization-conformance-pack/%s-.+", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "config", regexache.MustCompile(fmt.Sprintf("organization-conformance-pack/%s-.+", rName))), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "delivery_s3_bucket", ""), resource.TestCheckResourceAttr(resourceName, "delivery_s3_key_prefix", ""), @@ -155,7 +155,7 @@ func testAccOrganizationConformancePack_updateName(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckOrganizationConformancePackExists(ctx, resourceName, &after), testAccCheckOrganizationConformancePackRecreated(&before, &after), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "config", regexache.MustCompile(fmt.Sprintf("organization-conformance-pack/%s-.+", rNameUpdated))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "config", regexache.MustCompile(fmt.Sprintf("organization-conformance-pack/%s-.+", rNameUpdated))), resource.TestCheckResourceAttr(resourceName, names.AttrName, rNameUpdated), resource.TestCheckResourceAttr(resourceName, "delivery_s3_bucket", ""), resource.TestCheckResourceAttr(resourceName, "delivery_s3_key_prefix", ""), @@ -255,7 +255,7 @@ func testAccOrganizationConformancePack_S3Template(t *testing.T) { Config: testAccOrganizationConformancePackConfig_s3Template(rName, rName), Check: resource.ComposeTestCheckFunc( testAccCheckOrganizationConformancePackExists(ctx, resourceName, &pack), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "config", regexache.MustCompile(fmt.Sprintf("organization-conformance-pack/%s-.+", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "config", regexache.MustCompile(fmt.Sprintf("organization-conformance-pack/%s-.+", rName))), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "delivery_s3_bucket", ""), resource.TestCheckResourceAttr(resourceName, "delivery_s3_key_prefix", ""), diff --git a/internal/service/configservice/organization_custom_policy_rule_test.go b/internal/service/configservice/organization_custom_policy_rule_test.go index d39e0018d316..087416ae44f7 100644 --- a/internal/service/configservice/organization_custom_policy_rule_test.go +++ b/internal/service/configservice/organization_custom_policy_rule_test.go @@ -41,7 +41,7 @@ func testAccOrganizationCustomPolicyRule_basic(t *testing.T) { Config: testAccOrganizationCustomPolicyRuleConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckOrganizationCustomPolicyRuleExists(ctx, resourceName, &rule), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "config", regexache.MustCompile(fmt.Sprintf("organization-config-rule/%s-.+", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "config", regexache.MustCompile(fmt.Sprintf("organization-config-rule/%s-.+", rName))), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), resource.TestCheckResourceAttr(resourceName, "excluded_accounts.#", "0"), resource.TestCheckResourceAttr(resourceName, "input_parameters", ""), diff --git a/internal/service/configservice/organization_custom_rule_test.go b/internal/service/configservice/organization_custom_rule_test.go index 20e06e86b6d4..c509d7f1585c 100644 --- a/internal/service/configservice/organization_custom_rule_test.go +++ b/internal/service/configservice/organization_custom_rule_test.go @@ -38,7 +38,7 @@ func testAccOrganizationCustomRule_basic(t *testing.T) { Config: testAccOrganizationCustomRuleConfig_triggerTypes1(rName, "ConfigurationItemChangeNotification"), Check: resource.ComposeTestCheckFunc( testAccCheckOrganizationCustomRuleExists(ctx, resourceName, &rule), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "config", regexache.MustCompile(fmt.Sprintf("organization-config-rule/%s-.+", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "config", regexache.MustCompile(fmt.Sprintf("organization-config-rule/%s-.+", rName))), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), resource.TestCheckResourceAttr(resourceName, "excluded_accounts.#", "0"), resource.TestCheckResourceAttr(resourceName, "input_parameters", ""), diff --git a/internal/service/configservice/organization_managed_rule_test.go b/internal/service/configservice/organization_managed_rule_test.go index e5866c360604..6d087ac3954c 100644 --- a/internal/service/configservice/organization_managed_rule_test.go +++ b/internal/service/configservice/organization_managed_rule_test.go @@ -37,7 +37,7 @@ func testAccOrganizationManagedRule_basic(t *testing.T) { Config: testAccOrganizationManagedRuleConfig_identifier(rName, "IAM_PASSWORD_POLICY"), Check: resource.ComposeTestCheckFunc( testAccCheckOrganizationManagedRuleExists(ctx, resourceName, &rule), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "config", regexache.MustCompile(fmt.Sprintf("organization-config-rule/%s-.+", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "config", regexache.MustCompile(fmt.Sprintf("organization-config-rule/%s-.+", rName))), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), resource.TestCheckResourceAttr(resourceName, "excluded_accounts.#", "0"), resource.TestCheckResourceAttr(resourceName, "input_parameters", ""), diff --git a/internal/service/configservice/service_endpoints_gen_test.go b/internal/service/configservice/service_endpoints_gen_test.go index a6980b8ed2f9..4a3f718e0b23 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/bot_association.go b/internal/service/connect/bot_association.go index c76d42784473..f0d7037d8478 100644 --- a/internal/service/connect/bot_association.go +++ b/internal/service/connect/bot_association.go @@ -80,7 +80,7 @@ func resourceBotAssociationCreate(ctx context.Context, d *schema.ResourceData, m if v, ok := d.GetOk("lex_bot"); ok && len(v.([]interface{})) > 0 && v.([]interface{})[0] != nil { input.LexBot = expandLexBot(v.([]interface{})[0].(map[string]interface{})) if input.LexBot.LexRegion == nil { - input.LexBot.LexRegion = aws.String(meta.(*conns.AWSClient).Region) + input.LexBot.LexRegion = aws.String(meta.(*conns.AWSClient).Region(ctx)) } } diff --git a/internal/service/connect/bot_association_data_source.go b/internal/service/connect/bot_association_data_source.go index e666e7226234..98f749867b39 100644 --- a/internal/service/connect/bot_association_data_source.go +++ b/internal/service/connect/bot_association_data_source.go @@ -60,7 +60,7 @@ func dataSourceBotAssociationRead(ctx context.Context, d *schema.ResourceData, m name = aws.ToString(lexBot.Name) region = aws.ToString(lexBot.LexRegion) if region == "" { - region = meta.(*conns.AWSClient).Region + region = meta.(*conns.AWSClient).Region(ctx) } } @@ -71,7 +71,7 @@ func dataSourceBotAssociationRead(ctx context.Context, d *schema.ResourceData, m return sdkdiag.AppendErrorf(diags, "reading Connect Bot Association (%s): %s", id, err) } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) d.Set(names.AttrInstanceID, instanceID) if err := d.Set("lex_bot", flattenLexBot(lexBot)); err != nil { return sdkdiag.AppendErrorf(diags, "setting lex_bot: %s", err) diff --git a/internal/service/connect/instance_test.go b/internal/service/connect/instance_test.go index 46cdbc8ab56f..ff56425a3ca0 100644 --- a/internal/service/connect/instance_test.go +++ b/internal/service/connect/instance_test.go @@ -36,7 +36,7 @@ func testAccInstance_basic(t *testing.T) { Config: testAccInstanceConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckInstanceExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "connect", regexache.MustCompile(`instance/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "connect", regexache.MustCompile(`instance/.+`)), resource.TestCheckResourceAttr(resourceName, "auto_resolve_best_voices_enabled", acctest.CtTrue), //verified default result from ListInstanceAttributes() resource.TestCheckResourceAttr(resourceName, "contact_flow_logs_enabled", acctest.CtFalse), //verified default result from ListInstanceAttributes() resource.TestCheckResourceAttr(resourceName, "contact_lens_enabled", acctest.CtTrue), //verified default result from ListInstanceAttributes() @@ -47,7 +47,7 @@ func testAccInstance_basic(t *testing.T) { resource.TestMatchResourceAttr(resourceName, "instance_alias", regexache.MustCompile(rName)), resource.TestCheckResourceAttr(resourceName, "multi_party_conference_enabled", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "outbound_calls_enabled", acctest.CtTrue), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrServiceRole, "iam", regexache.MustCompile(`role/aws-service-role/connect.amazonaws.com/.+`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrServiceRole, "iam", regexache.MustCompile(`role/aws-service-role/connect.amazonaws.com/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrStatus, string(awstypes.InstanceStatusActive)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), @@ -61,7 +61,7 @@ func testAccInstance_basic(t *testing.T) { Config: testAccInstanceConfig_basicFlipped(rName), Check: resource.ComposeTestCheckFunc( testAccCheckInstanceExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "connect", regexache.MustCompile(`instance/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "connect", regexache.MustCompile(`instance/.+`)), resource.TestCheckResourceAttr(resourceName, "auto_resolve_best_voices_enabled", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "contact_flow_logs_enabled", acctest.CtTrue), resource.TestCheckResourceAttr(resourceName, "contact_lens_enabled", acctest.CtFalse), diff --git a/internal/service/connect/lambda_function_association_data_source.go b/internal/service/connect/lambda_function_association_data_source.go index 1c87e97fef50..5634059b6c57 100644 --- a/internal/service/connect/lambda_function_association_data_source.go +++ b/internal/service/connect/lambda_function_association_data_source.go @@ -45,7 +45,7 @@ func dataSourceLambdaFunctionAssociationRead(ctx context.Context, d *schema.Reso return sdkdiag.AppendErrorf(diags, "reading Connect Lambda Function Association: %s", err) } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) d.Set(names.AttrFunctionARN, functionARN) d.Set(names.AttrInstanceID, instanceID) diff --git a/internal/service/connect/service_endpoints_gen_test.go b/internal/service/connect/service_endpoints_gen_test.go index 9481815b647d..533ab30e65d1 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 afff1f28e735..0d8d7c24a724 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 abd6b6376f70..de203ea56f1a 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/enrollment_status.go b/internal/service/costoptimizationhub/enrollment_status.go index 2d41370966d0..656fb729dc4f 100644 --- a/internal/service/costoptimizationhub/enrollment_status.go +++ b/internal/service/costoptimizationhub/enrollment_status.go @@ -104,7 +104,7 @@ func (r *resourceEnrollmentStatus) Create(ctx context.Context, request resource. return } - data.ID = fwflex.StringValueToFramework(ctx, r.Meta().AccountID) + data.ID = fwflex.StringValueToFramework(ctx, r.Meta().AccountID(ctx)) data.Status = fwflex.StringValueToFramework(ctx, aws.ToString(out.Status)) response.Diagnostics.Append(response.State.Set(ctx, data)...) diff --git a/internal/service/costoptimizationhub/preferences.go b/internal/service/costoptimizationhub/preferences.go index fbb541321310..738c236ebe33 100644 --- a/internal/service/costoptimizationhub/preferences.go +++ b/internal/service/costoptimizationhub/preferences.go @@ -111,7 +111,7 @@ func (r *resourcePreferences) Create(ctx context.Context, req resource.CreateReq return } - plan.ID = flex.StringValueToFramework(ctx, r.Meta().AccountID) + plan.ID = flex.StringValueToFramework(ctx, r.Meta().AccountID(ctx)) plan.MemberAccountDiscountVisibility = flex.StringValueToFramework(ctx, out.MemberAccountDiscountVisibility) plan.SavingsEstimationMode = flex.StringValueToFramework(ctx, out.SavingsEstimationMode) @@ -144,7 +144,7 @@ func (r *resourcePreferences) Read(ctx context.Context, req resource.ReadRequest return } - state.ID = flex.StringValueToFramework(ctx, r.Meta().AccountID) + state.ID = flex.StringValueToFramework(ctx, r.Meta().AccountID(ctx)) state.MemberAccountDiscountVisibility = flex.StringValueToFramework(ctx, out.MemberAccountDiscountVisibility) state.SavingsEstimationMode = flex.StringValueToFramework(ctx, out.SavingsEstimationMode) diff --git a/internal/service/costoptimizationhub/service_endpoints_gen_test.go b/internal/service/costoptimizationhub/service_endpoints_gen_test.go index c5c18f17dab6..1aa61b499033 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/costoptimizationhub/service_package.go b/internal/service/costoptimizationhub/service_package.go index 3b8eaf3b3965..75e8b375fdab 100644 --- a/internal/service/costoptimizationhub/service_package.go +++ b/internal/service/costoptimizationhub/service_package.go @@ -23,12 +23,12 @@ func (p *servicePackage) NewClient(ctx context.Context, config map[string]any) ( func(o *costoptimizationhub.Options) { if config["partition"].(string) == endpoints.AwsPartitionID { // Cost Optimization Hub endpoint is available only in us-east-1 Region. - if cfg.Region != names.USEast1RegionID { + if cfg.Region != endpoints.UsEast1RegionID { tflog.Info(ctx, "overriding region", map[string]any{ "original_region": cfg.Region, - "override_region": names.USEast1RegionID, + "override_region": endpoints.UsEast1RegionID, }) - o.Region = names.USEast1RegionID + o.Region = endpoints.UsEast1RegionID } } }, diff --git a/internal/service/cur/report_definition.go b/internal/service/cur/report_definition.go index 250f6ff63385..ba5a6a765db7 100644 --- a/internal/service/cur/report_definition.go +++ b/internal/service/cur/report_definition.go @@ -194,8 +194,8 @@ func resourceReportDefinitionRead(ctx context.Context, d *schema.ResourceData, m arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: names.CUR, - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: "definition/" + reportName, }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/cur/service_endpoints_gen_test.go b/internal/service/cur/service_endpoints_gen_test.go index 6e3afb756c30..d310153aa521 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/cur/service_package.go b/internal/service/cur/service_package.go index 9bf53fd0f4f3..6563a6a8c478 100644 --- a/internal/service/cur/service_package.go +++ b/internal/service/cur/service_package.go @@ -24,12 +24,12 @@ func (p *servicePackage) NewClient(ctx context.Context, config map[string]any) ( if config["partition"].(string) == endpoints.AwsPartitionID { // AWS Cost and Usage Reports is only available in AWS Commercial us-east-1 Region. // https://docs.aws.amazon.com/general/latest/gr/billing.html. - if cfg.Region != names.USEast1RegionID { + if cfg.Region != endpoints.UsEast1RegionID { tflog.Info(ctx, "overriding region", map[string]any{ "original_region": cfg.Region, - "override_region": names.USEast1RegionID, + "override_region": endpoints.UsEast1RegionID, }) - o.Region = names.USEast1RegionID + o.Region = endpoints.UsEast1RegionID } } }, diff --git a/internal/service/cur/sweep.go b/internal/service/cur/sweep.go index 92c6a88af794..40f0b5e688e6 100644 --- a/internal/service/cur/sweep.go +++ b/internal/service/cur/sweep.go @@ -9,10 +9,10 @@ import ( "github.com/aws/aws-sdk-go-v2/aws" cur "github.com/aws/aws-sdk-go-v2/service/costandusagereportservice" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-provider-aws/internal/sweep" "github.com/hashicorp/terraform-provider-aws/internal/sweep/awsv2" - "github.com/hashicorp/terraform-provider-aws/names" ) func RegisterSweepers() { @@ -24,7 +24,7 @@ func RegisterSweepers() { func sweepReportDefinitions(region string) error { ctx := sweep.Context(region) - if region != names.USEast1RegionID { + if region != endpoints.UsEast1RegionID { log.Printf("[WARN] Skipping Cost And Usage Report Definition sweep for region: %s", region) return nil } diff --git a/internal/service/customerprofiles/service_endpoints_gen_test.go b/internal/service/customerprofiles/service_endpoints_gen_test.go index 7b66076e1147..023060a68a38 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 51c659b54bbf..e623d94d9aa3 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/data_set_test.go b/internal/service/dataexchange/data_set_test.go index 6e54adf6394d..1ca7b1657a59 100644 --- a/internal/service/dataexchange/data_set_test.go +++ b/internal/service/dataexchange/data_set_test.go @@ -40,7 +40,7 @@ func TestAccDataExchangeDataSet_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, rName), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "dataexchange", regexache.MustCompile(`data-sets/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "dataexchange", regexache.MustCompile(`data-sets/.+`)), ), }, { @@ -54,7 +54,7 @@ func TestAccDataExchangeDataSet_basic(t *testing.T) { testAccCheckDataSetExists(ctx, resourceName, &proj), resource.TestCheckResourceAttr(resourceName, names.AttrName, rNameUpdated), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, rNameUpdated), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "dataexchange", regexache.MustCompile(`data-sets/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "dataexchange", regexache.MustCompile(`data-sets/.+`)), ), }, }, diff --git a/internal/service/dataexchange/revision_test.go b/internal/service/dataexchange/revision_test.go index 887bb07ccee2..760129bfae51 100644 --- a/internal/service/dataexchange/revision_test.go +++ b/internal/service/dataexchange/revision_test.go @@ -38,7 +38,7 @@ func TestAccDataExchangeRevision_basic(t *testing.T) { testAccCheckRevisionExists(ctx, resourceName, &proj), resource.TestCheckResourceAttrPair(resourceName, "data_set_id", "aws_dataexchange_data_set.test", names.AttrID), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "dataexchange", regexache.MustCompile(`data-sets/.+/revisions/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "dataexchange", regexache.MustCompile(`data-sets/.+/revisions/.+`)), ), }, { diff --git a/internal/service/dataexchange/service_endpoints_gen_test.go b/internal/service/dataexchange/service_endpoints_gen_test.go index e174eb195eba..1baaaf508f96 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 6ec7fe7bbffd..a3d95f46a635 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/agent.go b/internal/service/datasync/agent.go index af2ccfb28b83..b22b0799b2c4 100644 --- a/internal/service/datasync/agent.go +++ b/internal/service/datasync/agent.go @@ -116,7 +116,7 @@ func resourceAgentCreate(ctx context.Context, d *schema.ResourceData, meta inter }, Timeout: time.Second * 10, } - region := meta.(*conns.AWSClient).Region + region := meta.(*conns.AWSClient).Region(ctx) var requestURL string if v, ok := d.GetOk("private_link_endpoint"); ok { diff --git a/internal/service/datasync/agent_test.go b/internal/service/datasync/agent_test.go index 0a9e1b1acf78..7eab86f55452 100644 --- a/internal/service/datasync/agent_test.go +++ b/internal/service/datasync/agent_test.go @@ -38,7 +38,7 @@ func TestAccDataSyncAgent_basic(t *testing.T) { Config: testAccAgentConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckAgentExists(ctx, resourceName, &agent1), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "datasync", regexache.MustCompile(`agent/agent-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "datasync", regexache.MustCompile(`agent/agent-.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, ""), resource.TestCheckResourceAttr(resourceName, "private_link_endpoint", ""), resource.TestCheckResourceAttr(resourceName, "security_group_arns.#", "0"), diff --git a/internal/service/datasync/location_azure_blob_test.go b/internal/service/datasync/location_azure_blob_test.go index 5724349a8bd9..23f16cfa7a69 100644 --- a/internal/service/datasync/location_azure_blob_test.go +++ b/internal/service/datasync/location_azure_blob_test.go @@ -38,7 +38,7 @@ func TestAccDataSyncLocationAzureBlob_basic(t *testing.T) { testAccCheckLocationAzureBlobExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "access_tier", "HOT"), resource.TestCheckResourceAttr(resourceName, "agent_arns.#", "1"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "datasync", regexache.MustCompile(`location/loc-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "datasync", regexache.MustCompile(`location/loc-.+`)), resource.TestCheckResourceAttr(resourceName, "authentication_type", "SAS"), resource.TestCheckResourceAttr(resourceName, "blob_type", "BLOCK"), resource.TestCheckResourceAttr(resourceName, "container_url", "https://myaccount.blob.core.windows.net/mycontainer"), @@ -148,7 +148,7 @@ func TestAccDataSyncLocationAzureBlob_update(t *testing.T) { testAccCheckLocationAzureBlobExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "access_tier", "HOT"), resource.TestCheckResourceAttr(resourceName, "agent_arns.#", "1"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "datasync", regexache.MustCompile(`location/loc-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "datasync", regexache.MustCompile(`location/loc-.+`)), resource.TestCheckResourceAttr(resourceName, "authentication_type", "SAS"), resource.TestCheckResourceAttr(resourceName, "blob_type", "BLOCK"), resource.TestCheckResourceAttr(resourceName, "container_url", "https://myaccount.blob.core.windows.net/mycontainer"), @@ -165,7 +165,7 @@ func TestAccDataSyncLocationAzureBlob_update(t *testing.T) { testAccCheckLocationAzureBlobExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "access_tier", "COOL"), resource.TestCheckResourceAttr(resourceName, "agent_arns.#", "1"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "datasync", regexache.MustCompile(`location/loc-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "datasync", regexache.MustCompile(`location/loc-.+`)), resource.TestCheckResourceAttr(resourceName, "authentication_type", "SAS"), resource.TestCheckResourceAttr(resourceName, "blob_type", "BLOCK"), resource.TestCheckResourceAttr(resourceName, "container_url", "https://myaccount.blob.core.windows.net/mycontainer"), diff --git a/internal/service/datasync/location_efs_test.go b/internal/service/datasync/location_efs_test.go index e2deded61f7e..4a5fa8cb3cc5 100644 --- a/internal/service/datasync/location_efs_test.go +++ b/internal/service/datasync/location_efs_test.go @@ -38,7 +38,7 @@ func TestAccDataSyncLocationEFS_basic(t *testing.T) { Config: testAccLocationEFSConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckLocationEFSExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "datasync", regexache.MustCompile(`location/loc-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "datasync", regexache.MustCompile(`location/loc-.+`)), resource.TestCheckResourceAttr(resourceName, "ec2_config.#", "1"), resource.TestCheckResourceAttr(resourceName, "ec2_config.0.security_group_arns.#", "1"), resource.TestCheckResourceAttrPair(resourceName, "ec2_config.0.subnet_arn", subnetResourceName, names.AttrARN), diff --git a/internal/service/datasync/location_fsx_lustre_file_system_test.go b/internal/service/datasync/location_fsx_lustre_file_system_test.go index ccdf6c85bcdd..8dc6df5a6f49 100644 --- a/internal/service/datasync/location_fsx_lustre_file_system_test.go +++ b/internal/service/datasync/location_fsx_lustre_file_system_test.go @@ -41,7 +41,7 @@ func TestAccDataSyncLocationFSxLustreFileSystem_basic(t *testing.T) { Config: testAccLocationFSxLustreFileSystemConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckLocationFSxLustreExists(ctx, resourceName, &locationFsxLustre1), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "datasync", regexache.MustCompile(`location/loc-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "datasync", regexache.MustCompile(`location/loc-.+`)), resource.TestCheckResourceAttrPair(resourceName, "fsx_filesystem_arn", fsResourceName, names.AttrARN), resource.TestCheckResourceAttr(resourceName, "subdirectory", "/"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), diff --git a/internal/service/datasync/location_fsx_ontap_file_system_test.go b/internal/service/datasync/location_fsx_ontap_file_system_test.go index 330b9e3da51f..234011dab3c0 100644 --- a/internal/service/datasync/location_fsx_ontap_file_system_test.go +++ b/internal/service/datasync/location_fsx_ontap_file_system_test.go @@ -42,7 +42,7 @@ func TestAccDataSyncLocationFSxONTAPFileSystem_basic(t *testing.T) { Config: testAccLocationFSxONTAPFileSystemConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckLocationFSxONTAPExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "datasync", regexache.MustCompile(`location/loc-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "datasync", regexache.MustCompile(`location/loc-.+`)), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreationTime), resource.TestCheckResourceAttrPair(resourceName, "fsx_filesystem_arn", fsResourceName, names.AttrARN), resource.TestCheckResourceAttr(resourceName, "protocol.#", "1"), diff --git a/internal/service/datasync/location_fsx_openzfs_file_system_test.go b/internal/service/datasync/location_fsx_openzfs_file_system_test.go index 0baf8babf364..e59474ad4691 100644 --- a/internal/service/datasync/location_fsx_openzfs_file_system_test.go +++ b/internal/service/datasync/location_fsx_openzfs_file_system_test.go @@ -41,7 +41,7 @@ func TestAccDataSyncLocationFSxOpenZFSFileSystem_basic(t *testing.T) { Config: testAccLocationFSxOpenZFSFileSystemConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckLocationFSxOpenZFSExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "datasync", regexache.MustCompile(`location/loc-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "datasync", regexache.MustCompile(`location/loc-.+`)), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreationTime), resource.TestCheckResourceAttrPair(resourceName, "fsx_filesystem_arn", fsResourceName, names.AttrARN), resource.TestCheckResourceAttr(resourceName, "subdirectory", "/fsx/"), diff --git a/internal/service/datasync/location_fsx_windows_file_system_test.go b/internal/service/datasync/location_fsx_windows_file_system_test.go index 6d789e6bca00..e9563b2566be 100644 --- a/internal/service/datasync/location_fsx_windows_file_system_test.go +++ b/internal/service/datasync/location_fsx_windows_file_system_test.go @@ -42,7 +42,7 @@ func TestAccDataSyncLocationFSxWindowsFileSystem_basic(t *testing.T) { Config: testAccLocationFSxWindowsFileSystemConfig_basic(rName, domainName), Check: resource.ComposeTestCheckFunc( testAccCheckLocationFSxWindowsExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "datasync", regexache.MustCompile(`location/loc-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "datasync", regexache.MustCompile(`location/loc-.+`)), resource.TestCheckResourceAttrPair(resourceName, "fsx_filesystem_arn", fsResourceName, names.AttrARN), resource.TestCheckResourceAttr(resourceName, "subdirectory", "/"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), diff --git a/internal/service/datasync/location_hdfs_test.go b/internal/service/datasync/location_hdfs_test.go index 56254dfc788c..0bbae7c75f14 100644 --- a/internal/service/datasync/location_hdfs_test.go +++ b/internal/service/datasync/location_hdfs_test.go @@ -37,7 +37,7 @@ func TestAccDataSyncLocationHDFS_basic(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckLocationHDFSExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "agent_arns.#", "1"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "datasync", regexache.MustCompile(`location/loc-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "datasync", regexache.MustCompile(`location/loc-.+`)), resource.TestCheckResourceAttr(resourceName, "authentication_type", "SIMPLE"), resource.TestCheckResourceAttr(resourceName, "block_size", "134217728"), resource.TestCheckNoResourceAttr(resourceName, "kerberos_keytab"), @@ -155,7 +155,7 @@ func TestAccDataSyncLocationHDFS_kerberos(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckLocationHDFSExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "agent_arns.#", "1"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "datasync", regexache.MustCompile(`location/loc-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "datasync", regexache.MustCompile(`location/loc-.+`)), resource.TestCheckResourceAttr(resourceName, "authentication_type", "KERBEROS"), resource.TestCheckResourceAttr(resourceName, "block_size", "134217728"), resource.TestCheckNoResourceAttr(resourceName, "kerberos_keytab"), diff --git a/internal/service/datasync/location_nfs_test.go b/internal/service/datasync/location_nfs_test.go index 1f1e8fea1e98..e0675c481a77 100644 --- a/internal/service/datasync/location_nfs_test.go +++ b/internal/service/datasync/location_nfs_test.go @@ -36,7 +36,7 @@ func TestAccDataSyncLocationNFS_basic(t *testing.T) { Config: testAccLocationNFSConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckLocationNFSExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "datasync", regexache.MustCompile(`location/loc-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "datasync", regexache.MustCompile(`location/loc-.+`)), resource.TestCheckResourceAttr(resourceName, "on_prem_config.#", "1"), resource.TestCheckResourceAttr(resourceName, "on_prem_config.0.agent_arns.#", "1"), resource.TestCheckResourceAttr(resourceName, "mount_options.#", "1"), diff --git a/internal/service/datasync/location_object_storage_test.go b/internal/service/datasync/location_object_storage_test.go index 31a88797ae08..4f1d740c18f9 100644 --- a/internal/service/datasync/location_object_storage_test.go +++ b/internal/service/datasync/location_object_storage_test.go @@ -39,7 +39,7 @@ func TestAccDataSyncLocationObjectStorage_basic(t *testing.T) { testAccCheckLocationObjectStorageExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, names.AttrAccessKey, ""), resource.TestCheckResourceAttr(resourceName, "agent_arns.#", "1"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "datasync", regexache.MustCompile(`location/loc-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "datasync", regexache.MustCompile(`location/loc-.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrBucketName, rName), resource.TestCheckNoResourceAttr(resourceName, names.AttrSecretKey), resource.TestCheckResourceAttr(resourceName, "server_certificate", ""), @@ -79,7 +79,7 @@ func TestAccDataSyncLocationObjectStorage_update(t *testing.T) { testAccCheckLocationObjectStorageExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, names.AttrAccessKey, ""), resource.TestCheckResourceAttr(resourceName, "agent_arns.#", "1"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "datasync", regexache.MustCompile(`location/loc-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "datasync", regexache.MustCompile(`location/loc-.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrBucketName, rName), resource.TestCheckNoResourceAttr(resourceName, names.AttrSecretKey), resource.TestCheckResourceAttr(resourceName, "server_certificate", ""), @@ -97,7 +97,7 @@ func TestAccDataSyncLocationObjectStorage_update(t *testing.T) { testAccCheckLocationObjectStorageExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, names.AttrAccessKey, ""), resource.TestCheckResourceAttr(resourceName, "agent_arns.#", "2"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "datasync", regexache.MustCompile(`location/loc-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "datasync", regexache.MustCompile(`location/loc-.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrBucketName, rName), resource.TestCheckNoResourceAttr(resourceName, names.AttrSecretKey), resource.TestCheckResourceAttr(resourceName, "server_certificate", ""), @@ -115,7 +115,7 @@ func TestAccDataSyncLocationObjectStorage_update(t *testing.T) { testAccCheckLocationObjectStorageExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, names.AttrAccessKey, ""), resource.TestCheckResourceAttr(resourceName, "agent_arns.#", "1"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "datasync", regexache.MustCompile(`location/loc-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "datasync", regexache.MustCompile(`location/loc-.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrBucketName, rName), resource.TestCheckNoResourceAttr(resourceName, names.AttrSecretKey), resource.TestCheckResourceAttr(resourceName, "server_certificate", ""), diff --git a/internal/service/datasync/location_s3_test.go b/internal/service/datasync/location_s3_test.go index 821989b9017d..ff52634a7aac 100644 --- a/internal/service/datasync/location_s3_test.go +++ b/internal/service/datasync/location_s3_test.go @@ -39,7 +39,7 @@ func TestAccDataSyncLocationS3_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckLocationS3Exists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "agent_arns.#", "0"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "datasync", regexache.MustCompile(`location/loc-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "datasync", regexache.MustCompile(`location/loc-.+`)), resource.TestCheckResourceAttrPair(resourceName, "s3_bucket_arn", s3BucketResourceName, names.AttrARN), resource.TestCheckResourceAttr(resourceName, "s3_config.#", "1"), resource.TestCheckResourceAttrPair(resourceName, "s3_config.0.bucket_access_role_arn", iamRoleResourceName, names.AttrARN), @@ -76,7 +76,7 @@ func TestAccDataSyncLocationS3_storageClass(t *testing.T) { Config: testAccLocationS3Config_storageClass(rName), Check: resource.ComposeTestCheckFunc( testAccCheckLocationS3Exists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "datasync", regexache.MustCompile(`location/loc-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "datasync", regexache.MustCompile(`location/loc-.+`)), resource.TestCheckResourceAttrPair(resourceName, "s3_bucket_arn", s3BucketResourceName, names.AttrARN), resource.TestCheckResourceAttr(resourceName, "s3_config.#", "1"), resource.TestCheckResourceAttrPair(resourceName, "s3_config.0.bucket_access_role_arn", iamRoleResourceName, names.AttrARN), diff --git a/internal/service/datasync/location_smb_test.go b/internal/service/datasync/location_smb_test.go index 6322911eaadb..a61a192f24d8 100644 --- a/internal/service/datasync/location_smb_test.go +++ b/internal/service/datasync/location_smb_test.go @@ -36,7 +36,7 @@ func TestAccDataSyncLocationSMB_basic(t *testing.T) { Config: testAccLocationSMBConfig_basic(rName, "/test/"), Check: resource.ComposeTestCheckFunc( testAccCheckLocationSMBExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "datasync", regexache.MustCompile(`location/loc-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "datasync", regexache.MustCompile(`location/loc-.+`)), resource.TestCheckResourceAttr(resourceName, "agent_arns.#", "1"), resource.TestCheckResourceAttr(resourceName, "mount_options.#", "1"), resource.TestCheckResourceAttr(resourceName, "mount_options.0.version", "AUTOMATIC"), @@ -55,7 +55,7 @@ func TestAccDataSyncLocationSMB_basic(t *testing.T) { Config: testAccLocationSMBConfig_basic(rName, "/test2/"), Check: resource.ComposeTestCheckFunc( testAccCheckLocationSMBExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "datasync", regexache.MustCompile(`location/loc-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "datasync", regexache.MustCompile(`location/loc-.+`)), resource.TestCheckResourceAttr(resourceName, "agent_arns.#", "1"), resource.TestCheckResourceAttr(resourceName, "mount_options.#", "1"), resource.TestCheckResourceAttr(resourceName, "mount_options.0.version", "AUTOMATIC"), diff --git a/internal/service/datasync/service_endpoints_gen_test.go b/internal/service/datasync/service_endpoints_gen_test.go index 97bedbe94821..028c5d42e076 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/datasync/task_test.go b/internal/service/datasync/task_test.go index 87bf8c5fabbe..014e6a85b5d3 100644 --- a/internal/service/datasync/task_test.go +++ b/internal/service/datasync/task_test.go @@ -41,7 +41,7 @@ func TestAccDataSyncTask_basic(t *testing.T) { Config: testAccTaskConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckTaskExists(ctx, resourceName, &task1), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "datasync", regexache.MustCompile(`task/task-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "datasync", regexache.MustCompile(`task/task-.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrCloudWatchLogGroupARN, ""), resource.TestCheckResourceAttrPair(resourceName, "destination_location_arn", dataSyncDestinationLocationResourceName, names.AttrARN), resource.TestCheckResourceAttr(resourceName, "excludes.#", "0"), diff --git a/internal/service/datazone/environment_blueprint_configuration_test.go b/internal/service/datazone/environment_blueprint_configuration_test.go index 3de6a3d5483d..d49c7b3930bc 100644 --- a/internal/service/datazone/environment_blueprint_configuration_test.go +++ b/internal/service/datazone/environment_blueprint_configuration_test.go @@ -11,6 +11,7 @@ import ( "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/service/datazone" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-plugin-testing/terraform" @@ -101,12 +102,12 @@ func TestAccDataZoneEnvironmentBlueprintConfiguration_enabled_regions(t *testing CheckDestroy: testAccCheckEnvironmentBlueprintConfigurationDestroy(ctx), Steps: []resource.TestStep{ { - Config: testAccEnvironmentBlueprintConfigurationConfig_enabled_regions(domainName, names.USEast1RegionID), + Config: testAccEnvironmentBlueprintConfigurationConfig_enabled_regions(domainName, endpoints.UsEast1RegionID), Check: resource.ComposeTestCheckFunc( testAccCheckEnvironmentBlueprintConfigurationExists(ctx, resourceName, &environmentblueprintconfiguration), resource.TestCheckResourceAttrSet(resourceName, "environment_blueprint_id"), resource.TestCheckResourceAttr(resourceName, "enabled_regions.#", "1"), - resource.TestCheckResourceAttr(resourceName, "enabled_regions.0", names.USEast1RegionID), + resource.TestCheckResourceAttr(resourceName, "enabled_regions.0", endpoints.UsEast1RegionID), ), }, { @@ -117,12 +118,12 @@ func TestAccDataZoneEnvironmentBlueprintConfiguration_enabled_regions(t *testing ImportStateVerifyIdentifierAttribute: "environment_blueprint_id", }, { - Config: testAccEnvironmentBlueprintConfigurationConfig_enabled_regions(domainName, names.APSoutheast2RegionID), + Config: testAccEnvironmentBlueprintConfigurationConfig_enabled_regions(domainName, endpoints.ApSoutheast2RegionID), Check: resource.ComposeTestCheckFunc( testAccCheckEnvironmentBlueprintConfigurationExists(ctx, resourceName, &environmentblueprintconfiguration), resource.TestCheckResourceAttrSet(resourceName, "environment_blueprint_id"), resource.TestCheckResourceAttr(resourceName, "enabled_regions.#", "1"), - resource.TestCheckResourceAttr(resourceName, "enabled_regions.0", names.APSoutheast2RegionID), + resource.TestCheckResourceAttr(resourceName, "enabled_regions.0", endpoints.ApSoutheast2RegionID), ), }, }, @@ -243,13 +244,13 @@ func TestAccDataZoneEnvironmentBlueprintConfiguration_regional_parameters(t *tes CheckDestroy: testAccCheckEnvironmentBlueprintConfigurationDestroy(ctx), Steps: []resource.TestStep{ { - Config: testAccEnvironmentBlueprintConfigurationConfig_regional_parameters(domainName, names.USWest2RegionID, acctest.CtKey1, acctest.CtValue1), + Config: testAccEnvironmentBlueprintConfigurationConfig_regional_parameters(domainName, endpoints.UsWest2RegionID, acctest.CtKey1, acctest.CtValue1), Check: resource.ComposeTestCheckFunc( testAccCheckEnvironmentBlueprintConfigurationExists(ctx, resourceName, &environmentblueprintconfiguration), resource.TestCheckResourceAttrSet(resourceName, "environment_blueprint_id"), resource.TestCheckResourceAttr(resourceName, "regional_parameters.%", "1"), - resource.TestCheckResourceAttr(resourceName, fmt.Sprintf("regional_parameters.%s.%%", names.USWest2RegionID), "1"), - resource.TestCheckResourceAttr(resourceName, fmt.Sprintf("regional_parameters.%s.key1", names.USWest2RegionID), acctest.CtValue1), + resource.TestCheckResourceAttr(resourceName, fmt.Sprintf("regional_parameters.%s.%%", endpoints.UsWest2RegionID), "1"), + resource.TestCheckResourceAttr(resourceName, fmt.Sprintf("regional_parameters.%s.key1", endpoints.UsWest2RegionID), acctest.CtValue1), ), }, { @@ -260,13 +261,13 @@ func TestAccDataZoneEnvironmentBlueprintConfiguration_regional_parameters(t *tes ImportStateVerifyIdentifierAttribute: "environment_blueprint_id", }, { - Config: testAccEnvironmentBlueprintConfigurationConfig_regional_parameters(domainName, names.USWest2RegionID, acctest.CtKey2, acctest.CtValue2), + Config: testAccEnvironmentBlueprintConfigurationConfig_regional_parameters(domainName, endpoints.UsWest2RegionID, acctest.CtKey2, acctest.CtValue2), Check: resource.ComposeTestCheckFunc( testAccCheckEnvironmentBlueprintConfigurationExists(ctx, resourceName, &environmentblueprintconfiguration), resource.TestCheckResourceAttrSet(resourceName, "environment_blueprint_id"), resource.TestCheckResourceAttr(resourceName, "regional_parameters.%", "1"), - resource.TestCheckResourceAttr(resourceName, fmt.Sprintf("regional_parameters.%s.%%", names.USWest2RegionID), "1"), - resource.TestCheckResourceAttr(resourceName, fmt.Sprintf("regional_parameters.%s.key2", names.USWest2RegionID), acctest.CtValue2), + resource.TestCheckResourceAttr(resourceName, fmt.Sprintf("regional_parameters.%s.%%", endpoints.UsWest2RegionID), "1"), + resource.TestCheckResourceAttr(resourceName, fmt.Sprintf("regional_parameters.%s.key2", endpoints.UsWest2RegionID), acctest.CtValue2), ), }, }, diff --git a/internal/service/datazone/service_endpoints_gen_test.go b/internal/service/datazone/service_endpoints_gen_test.go index d7d0f2730e8a..aae9308e9e7a 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/cluster_test.go b/internal/service/dax/cluster_test.go index 94ea49d137ca..48e51fcfa3bb 100644 --- a/internal/service/dax/cluster_test.go +++ b/internal/service/dax/cluster_test.go @@ -40,7 +40,7 @@ func TestAccDAXCluster_basic(t *testing.T) { Config: testAccClusterConfig_basic(rString), Check: resource.ComposeTestCheckFunc( testAccCheckClusterExists(ctx, resourceName, &dc), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "dax", regexache.MustCompile("cache/.+")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "dax", regexache.MustCompile("cache/.+")), resource.TestCheckResourceAttr( resourceName, "cluster_endpoint_encryption_type", "NONE"), resource.TestMatchResourceAttr( diff --git a/internal/service/dax/service_endpoints_gen_test.go b/internal/service/dax/service_endpoints_gen_test.go index f8fd2d90bb1f..10cf23fbedd7 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/app.go b/internal/service/deploy/app.go index cc4fae3905bf..b0e4b8fa6e68 100644 --- a/internal/service/deploy/app.go +++ b/internal/service/deploy/app.go @@ -156,8 +156,8 @@ func resourceAppRead(ctx context.Context, d *schema.ResourceData, meta interface arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "codedeploy", - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("application:%s", appName), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/deploy/app_test.go b/internal/service/deploy/app_test.go index 81c7916d491c..7bb62327f0ef 100644 --- a/internal/service/deploy/app_test.go +++ b/internal/service/deploy/app_test.go @@ -37,7 +37,7 @@ func TestAccDeployApp_basic(t *testing.T) { Config: testAccAppConfig_name(rName), Check: resource.ComposeTestCheckFunc( testAccCheckAppExists(ctx, resourceName, &application1), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "codedeploy", fmt.Sprintf(`application:%s`, rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "codedeploy", fmt.Sprintf(`application:%s`, rName)), resource.TestCheckResourceAttr(resourceName, "compute_platform", "Server"), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "linked_to_github", acctest.CtFalse), diff --git a/internal/service/deploy/deployment_config.go b/internal/service/deploy/deployment_config.go index 6b9c8c8f39fa..9858c164d4bc 100644 --- a/internal/service/deploy/deployment_config.go +++ b/internal/service/deploy/deployment_config.go @@ -223,8 +223,8 @@ func resourceDeploymentConfigRead(ctx context.Context, d *schema.ResourceData, m arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "codedeploy", - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: "deploymentconfig:" + deploymentConfigName, }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/deploy/deployment_group.go b/internal/service/deploy/deployment_group.go index f7b84d423a23..0c9f04438c0a 100644 --- a/internal/service/deploy/deployment_group.go +++ b/internal/service/deploy/deployment_group.go @@ -576,8 +576,8 @@ func resourceDeploymentGroupRead(ctx context.Context, d *schema.ResourceData, me arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "codedeploy", - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("deploymentgroup:%s/%s", appName, groupName), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/deploy/deployment_group_test.go b/internal/service/deploy/deployment_group_test.go index cd6de3d66894..14900762c928 100644 --- a/internal/service/deploy/deployment_group_test.go +++ b/internal/service/deploy/deployment_group_test.go @@ -39,7 +39,7 @@ func TestAccDeployDeploymentGroup_basic(t *testing.T) { Config: testAccDeploymentGroupConfig_basic(rName, false), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckDeploymentGroupExists(ctx, resourceName, &group), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "codedeploy", fmt.Sprintf(`deploymentgroup:%s/%s`, rName, rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "codedeploy", fmt.Sprintf(`deploymentgroup:%s/%s`, rName, rName)), resource.TestCheckResourceAttr(resourceName, "app_name", rName), resource.TestCheckResourceAttr(resourceName, "deployment_group_name", rName), resource.TestCheckResourceAttr(resourceName, "deployment_config_name", "CodeDeployDefault.OneAtATime"), @@ -65,7 +65,7 @@ func TestAccDeployDeploymentGroup_basic(t *testing.T) { Config: testAccDeploymentGroupConfig_modified(rName, false), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckDeploymentGroupExists(ctx, resourceName, &group), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "codedeploy", fmt.Sprintf(`deploymentgroup:%s/%s-updated`, rName, rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "codedeploy", fmt.Sprintf(`deploymentgroup:%s/%s-updated`, rName, rName)), resource.TestCheckResourceAttr(resourceName, "app_name", rName), resource.TestCheckResourceAttr(resourceName, "deployment_group_name", rName+"-updated"), resource.TestCheckResourceAttr(resourceName, "deployment_config_name", "CodeDeployDefault.OneAtATime"), diff --git a/internal/service/deploy/service_endpoints_gen_test.go b/internal/service/deploy/service_endpoints_gen_test.go index 2cf6c69e0541..b353742fc29e 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/member_test.go b/internal/service/detective/member_test.go index 05e14d65dd66..e938aed0f03f 100644 --- a/internal/service/detective/member_test.go +++ b/internal/service/detective/member_test.go @@ -38,7 +38,7 @@ func testAccMember_basic(t *testing.T) { Config: testAccMemberConfig_basic(email), Check: resource.ComposeTestCheckFunc( testAccCheckMemberExists(ctx, resourceName, &detectiveOutput), - acctest.CheckResourceAttrAccountID(resourceName, "administrator_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "administrator_id"), resource.TestCheckResourceAttrPair(resourceName, names.AttrAccountID, dataSourceAlternate, names.AttrAccountID), acctest.CheckResourceAttrRFC3339(resourceName, "invited_time"), acctest.CheckResourceAttrRFC3339(resourceName, "updated_time"), @@ -103,7 +103,7 @@ func testAccMember_message(t *testing.T) { Config: testAccMemberConfig_invitationMessage(email), Check: resource.ComposeTestCheckFunc( testAccCheckMemberExists(ctx, resourceName, &detectiveOutput), - acctest.CheckResourceAttrAccountID(resourceName, "administrator_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "administrator_id"), resource.TestCheckResourceAttrPair(resourceName, names.AttrAccountID, dataSourceAlternate, names.AttrAccountID), acctest.CheckResourceAttrRFC3339(resourceName, "invited_time"), acctest.CheckResourceAttrRFC3339(resourceName, "updated_time"), diff --git a/internal/service/detective/organization_admin_account_test.go b/internal/service/detective/organization_admin_account_test.go index a3dacc46db9e..ec83bc60a116 100644 --- a/internal/service/detective/organization_admin_account_test.go +++ b/internal/service/detective/organization_admin_account_test.go @@ -34,7 +34,7 @@ func testAccOrganizationAdminAccount_basic(t *testing.T) { Config: testAccOrganizationAdminAccountConfig_self(), Check: resource.ComposeTestCheckFunc( testAccCheckOrganizationAdminAccountExists(ctx, resourceName), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrAccountID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrAccountID), ), }, { diff --git a/internal/service/detective/service_endpoints_gen_test.go b/internal/service/detective/service_endpoints_gen_test.go index f7e14ad18773..48403c2a41e2 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/device_pool_test.go b/internal/service/devicefarm/device_pool_test.go index ac8d604c65eb..290af7356fb0 100644 --- a/internal/service/devicefarm/device_pool_test.go +++ b/internal/service/devicefarm/device_pool_test.go @@ -10,6 +10,7 @@ import ( "github.com/YakDriver/regexache" awstypes "github.com/aws/aws-sdk-go-v2/service/devicefarm/types" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-plugin-testing/terraform" @@ -33,7 +34,7 @@ func TestAccDeviceFarmDevicePool_basic(t *testing.T) { acctest.PreCheckPartitionHasService(t, names.DeviceFarmEndpointID) // Currently, DeviceFarm is only supported in us-west-2 // https://docs.aws.amazon.com/general/latest/gr/devicefarm.html - acctest.PreCheckRegion(t, names.USWest2RegionID) + acctest.PreCheckRegion(t, endpoints.UsWest2RegionID) }, ErrorCheck: acctest.ErrorCheck(t, names.DeviceFarmServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, @@ -47,7 +48,7 @@ func TestAccDeviceFarmDevicePool_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckResourceAttrPair(resourceName, "project_arn", "aws_devicefarm_project.test", names.AttrARN), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "devicefarm", regexache.MustCompile(`devicepool:.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "devicefarm", regexache.MustCompile(`devicepool:.+`)), ), }, { @@ -60,7 +61,7 @@ func TestAccDeviceFarmDevicePool_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckDevicePoolExists(ctx, resourceName, &pool), resource.TestCheckResourceAttr(resourceName, names.AttrName, rNameUpdated), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "devicefarm", regexache.MustCompile(`devicepool:.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "devicefarm", regexache.MustCompile(`devicepool:.+`)), ), }, }, @@ -79,7 +80,7 @@ func TestAccDeviceFarmDevicePool_tags(t *testing.T) { acctest.PreCheckPartitionHasService(t, names.DeviceFarmEndpointID) // Currently, DeviceFarm is only supported in us-west-2 // https://docs.aws.amazon.com/general/latest/gr/devicefarm.html - acctest.PreCheckRegion(t, names.USWest2RegionID) + acctest.PreCheckRegion(t, endpoints.UsWest2RegionID) }, ErrorCheck: acctest.ErrorCheck(t, names.DeviceFarmServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, @@ -131,7 +132,7 @@ func TestAccDeviceFarmDevicePool_disappears(t *testing.T) { acctest.PreCheckPartitionHasService(t, names.DeviceFarmEndpointID) // Currently, DeviceFarm is only supported in us-west-2 // https://docs.aws.amazon.com/general/latest/gr/devicefarm.html - acctest.PreCheckRegion(t, names.USWest2RegionID) + acctest.PreCheckRegion(t, endpoints.UsWest2RegionID) }, ErrorCheck: acctest.ErrorCheck(t, names.DeviceFarmServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, @@ -162,7 +163,7 @@ func TestAccDeviceFarmDevicePool_disappears_project(t *testing.T) { acctest.PreCheckPartitionHasService(t, names.DeviceFarmEndpointID) // Currently, DeviceFarm is only supported in us-west-2 // https://docs.aws.amazon.com/general/latest/gr/devicefarm.html - acctest.PreCheckRegion(t, names.USWest2RegionID) + acctest.PreCheckRegion(t, endpoints.UsWest2RegionID) }, ErrorCheck: acctest.ErrorCheck(t, names.DeviceFarmServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, diff --git a/internal/service/devicefarm/instance_profile_test.go b/internal/service/devicefarm/instance_profile_test.go index 68ee7ecc8a0c..25a800ef8e93 100644 --- a/internal/service/devicefarm/instance_profile_test.go +++ b/internal/service/devicefarm/instance_profile_test.go @@ -10,6 +10,7 @@ import ( "github.com/YakDriver/regexache" awstypes "github.com/aws/aws-sdk-go-v2/service/devicefarm/types" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-plugin-testing/terraform" @@ -33,7 +34,7 @@ func TestAccDeviceFarmInstanceProfile_basic(t *testing.T) { acctest.PreCheckPartitionHasService(t, names.DeviceFarmEndpointID) // Currently, DeviceFarm is only supported in us-west-2 // https://docs.aws.amazon.com/general/latest/gr/devicefarm.html - acctest.PreCheckRegion(t, names.USWest2RegionID) + acctest.PreCheckRegion(t, endpoints.UsWest2RegionID) }, ErrorCheck: acctest.ErrorCheck(t, names.DeviceFarmServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, @@ -46,7 +47,7 @@ func TestAccDeviceFarmInstanceProfile_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "reboot_after_use", acctest.CtTrue), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "devicefarm", regexache.MustCompile(`instanceprofile:.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "devicefarm", regexache.MustCompile(`instanceprofile:.+`)), ), }, { @@ -61,7 +62,7 @@ func TestAccDeviceFarmInstanceProfile_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, names.AttrName, rNameUpdated), resource.TestCheckResourceAttr(resourceName, "reboot_after_use", acctest.CtTrue), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "devicefarm", regexache.MustCompile(`instanceprofile:.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "devicefarm", regexache.MustCompile(`instanceprofile:.+`)), ), }, }, @@ -80,7 +81,7 @@ func TestAccDeviceFarmInstanceProfile_tags(t *testing.T) { acctest.PreCheckPartitionHasService(t, names.DeviceFarmEndpointID) // Currently, DeviceFarm is only supported in us-west-2 // https://docs.aws.amazon.com/general/latest/gr/devicefarm.html - acctest.PreCheckRegion(t, names.USWest2RegionID) + acctest.PreCheckRegion(t, endpoints.UsWest2RegionID) }, ErrorCheck: acctest.ErrorCheck(t, names.DeviceFarmServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, @@ -132,7 +133,7 @@ func TestAccDeviceFarmInstanceProfile_disappears(t *testing.T) { acctest.PreCheckPartitionHasService(t, names.DeviceFarmEndpointID) // Currently, DeviceFarm is only supported in us-west-2 // https://docs.aws.amazon.com/general/latest/gr/devicefarm.html - acctest.PreCheckRegion(t, names.USWest2RegionID) + acctest.PreCheckRegion(t, endpoints.UsWest2RegionID) }, ErrorCheck: acctest.ErrorCheck(t, names.DeviceFarmServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, diff --git a/internal/service/devicefarm/network_profile_test.go b/internal/service/devicefarm/network_profile_test.go index b56627b35871..34172306b2d5 100644 --- a/internal/service/devicefarm/network_profile_test.go +++ b/internal/service/devicefarm/network_profile_test.go @@ -10,6 +10,7 @@ import ( "github.com/YakDriver/regexache" awstypes "github.com/aws/aws-sdk-go-v2/service/devicefarm/types" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-plugin-testing/terraform" @@ -33,7 +34,7 @@ func TestAccDeviceFarmNetworkProfile_basic(t *testing.T) { acctest.PreCheckPartitionHasService(t, names.DeviceFarmEndpointID) // Currently, DeviceFarm is only supported in us-west-2 // https://docs.aws.amazon.com/general/latest/gr/devicefarm.html - acctest.PreCheckRegion(t, names.USWest2RegionID) + acctest.PreCheckRegion(t, endpoints.UsWest2RegionID) }, ErrorCheck: acctest.ErrorCheck(t, names.DeviceFarmServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, @@ -49,7 +50,7 @@ func TestAccDeviceFarmNetworkProfile_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "uplink_bandwidth_bits", "104857600"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttrPair(resourceName, "project_arn", "aws_devicefarm_project.test", names.AttrARN), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "devicefarm", regexache.MustCompile(`networkprofile:.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "devicefarm", regexache.MustCompile(`networkprofile:.+`)), ), }, { @@ -67,7 +68,7 @@ func TestAccDeviceFarmNetworkProfile_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "uplink_bandwidth_bits", "104857600"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttrPair(resourceName, "project_arn", "aws_devicefarm_project.test", names.AttrARN), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "devicefarm", regexache.MustCompile(`networkprofile:.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "devicefarm", regexache.MustCompile(`networkprofile:.+`)), ), }, }, @@ -86,7 +87,7 @@ func TestAccDeviceFarmNetworkProfile_tags(t *testing.T) { acctest.PreCheckPartitionHasService(t, names.DeviceFarmEndpointID) // Currently, DeviceFarm is only supported in us-west-2 // https://docs.aws.amazon.com/general/latest/gr/devicefarm.html - acctest.PreCheckRegion(t, names.USWest2RegionID) + acctest.PreCheckRegion(t, endpoints.UsWest2RegionID) }, ErrorCheck: acctest.ErrorCheck(t, names.DeviceFarmServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, @@ -138,7 +139,7 @@ func TestAccDeviceFarmNetworkProfile_disappears(t *testing.T) { acctest.PreCheckPartitionHasService(t, names.DeviceFarmEndpointID) // Currently, DeviceFarm is only supported in us-west-2 // https://docs.aws.amazon.com/general/latest/gr/devicefarm.html - acctest.PreCheckRegion(t, names.USWest2RegionID) + acctest.PreCheckRegion(t, endpoints.UsWest2RegionID) }, ErrorCheck: acctest.ErrorCheck(t, names.DeviceFarmServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, @@ -169,7 +170,7 @@ func TestAccDeviceFarmNetworkProfile_disappears_project(t *testing.T) { acctest.PreCheckPartitionHasService(t, names.DeviceFarmEndpointID) // Currently, DeviceFarm is only supported in us-west-2 // https://docs.aws.amazon.com/general/latest/gr/devicefarm.html - acctest.PreCheckRegion(t, names.USWest2RegionID) + acctest.PreCheckRegion(t, endpoints.UsWest2RegionID) }, ErrorCheck: acctest.ErrorCheck(t, names.DeviceFarmServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, diff --git a/internal/service/devicefarm/project_test.go b/internal/service/devicefarm/project_test.go index af4e3377a18d..963e604dec36 100644 --- a/internal/service/devicefarm/project_test.go +++ b/internal/service/devicefarm/project_test.go @@ -10,6 +10,7 @@ import ( "github.com/YakDriver/regexache" awstypes "github.com/aws/aws-sdk-go-v2/service/devicefarm/types" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-plugin-testing/terraform" @@ -33,7 +34,7 @@ func TestAccDeviceFarmProject_basic(t *testing.T) { acctest.PreCheckPartitionHasService(t, names.DeviceFarmEndpointID) // Currently, DeviceFarm is only supported in us-west-2 // https://docs.aws.amazon.com/general/latest/gr/devicefarm.html - acctest.PreCheckRegion(t, names.USWest2RegionID) + acctest.PreCheckRegion(t, endpoints.UsWest2RegionID) }, ErrorCheck: acctest.ErrorCheck(t, names.DeviceFarmServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, @@ -45,7 +46,7 @@ func TestAccDeviceFarmProject_basic(t *testing.T) { testAccCheckProjectExists(ctx, resourceName, &proj), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "devicefarm", regexache.MustCompile(`project:.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "devicefarm", regexache.MustCompile(`project:.+`)), ), }, { @@ -58,7 +59,7 @@ func TestAccDeviceFarmProject_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckProjectExists(ctx, resourceName, &proj), resource.TestCheckResourceAttr(resourceName, names.AttrName, rNameUpdated), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "devicefarm", regexache.MustCompile(`project:.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "devicefarm", regexache.MustCompile(`project:.+`)), ), }, }, @@ -77,7 +78,7 @@ func TestAccDeviceFarmProject_timeout(t *testing.T) { acctest.PreCheckPartitionHasService(t, names.DeviceFarmEndpointID) // Currently, DeviceFarm is only supported in us-west-2 // https://docs.aws.amazon.com/general/latest/gr/devicefarm.html - acctest.PreCheckRegion(t, names.USWest2RegionID) + acctest.PreCheckRegion(t, endpoints.UsWest2RegionID) }, ErrorCheck: acctest.ErrorCheck(t, names.DeviceFarmServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, @@ -120,7 +121,7 @@ func TestAccDeviceFarmProject_tags(t *testing.T) { acctest.PreCheckPartitionHasService(t, names.DeviceFarmEndpointID) // Currently, DeviceFarm is only supported in us-west-2 // https://docs.aws.amazon.com/general/latest/gr/devicefarm.html - acctest.PreCheckRegion(t, names.USWest2RegionID) + acctest.PreCheckRegion(t, endpoints.UsWest2RegionID) }, ErrorCheck: acctest.ErrorCheck(t, names.DeviceFarmServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, @@ -172,7 +173,7 @@ func TestAccDeviceFarmProject_disappears(t *testing.T) { acctest.PreCheckPartitionHasService(t, names.DeviceFarmEndpointID) // Currently, DeviceFarm is only supported in us-west-2 // https://docs.aws.amazon.com/general/latest/gr/devicefarm.html - acctest.PreCheckRegion(t, names.USWest2RegionID) + acctest.PreCheckRegion(t, endpoints.UsWest2RegionID) }, ErrorCheck: acctest.ErrorCheck(t, names.DeviceFarmServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, diff --git a/internal/service/devicefarm/service_endpoints_gen_test.go b/internal/service/devicefarm/service_endpoints_gen_test.go index 2e2c4e8562ae..4ecc07c29b7c 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/devicefarm/test_grid_project_test.go b/internal/service/devicefarm/test_grid_project_test.go index 02bdcdea31d0..cacf48c84844 100644 --- a/internal/service/devicefarm/test_grid_project_test.go +++ b/internal/service/devicefarm/test_grid_project_test.go @@ -10,6 +10,7 @@ import ( "github.com/YakDriver/regexache" awstypes "github.com/aws/aws-sdk-go-v2/service/devicefarm/types" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-plugin-testing/terraform" @@ -33,7 +34,7 @@ func TestAccDeviceFarmTestGridProject_basic(t *testing.T) { acctest.PreCheckPartitionHasService(t, names.DeviceFarmEndpointID) // Currently, DeviceFarm is only supported in us-west-2 // https://docs.aws.amazon.com/general/latest/gr/devicefarm.html - acctest.PreCheckRegion(t, names.USWest2RegionID) + acctest.PreCheckRegion(t, endpoints.UsWest2RegionID) }, ErrorCheck: acctest.ErrorCheck(t, names.DeviceFarmServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, @@ -46,7 +47,7 @@ func TestAccDeviceFarmTestGridProject_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "vpc_config.#", "0"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "devicefarm", regexache.MustCompile(`testgrid-project:.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "devicefarm", regexache.MustCompile(`testgrid-project:.+`)), ), }, { @@ -59,7 +60,7 @@ func TestAccDeviceFarmTestGridProject_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckProjectTestGridProjectExists(ctx, resourceName, &proj), resource.TestCheckResourceAttr(resourceName, names.AttrName, rNameUpdated), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "devicefarm", regexache.MustCompile(`testgrid-project:.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "devicefarm", regexache.MustCompile(`testgrid-project:.+`)), ), }, }, @@ -78,7 +79,7 @@ func TestAccDeviceFarmTestGridProject_vpc(t *testing.T) { acctest.PreCheckPartitionHasService(t, names.DeviceFarmEndpointID) // Currently, DeviceFarm is only supported in us-west-2 // https://docs.aws.amazon.com/general/latest/gr/devicefarm.html - acctest.PreCheckRegion(t, names.USWest2RegionID) + acctest.PreCheckRegion(t, endpoints.UsWest2RegionID) }, ErrorCheck: acctest.ErrorCheck(t, names.DeviceFarmServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, @@ -114,7 +115,7 @@ func TestAccDeviceFarmTestGridProject_tags(t *testing.T) { acctest.PreCheckPartitionHasService(t, names.DeviceFarmEndpointID) // Currently, DeviceFarm is only supported in us-west-2 // https://docs.aws.amazon.com/general/latest/gr/devicefarm.html - acctest.PreCheckRegion(t, names.USWest2RegionID) + acctest.PreCheckRegion(t, endpoints.UsWest2RegionID) }, ErrorCheck: acctest.ErrorCheck(t, names.DeviceFarmServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, @@ -166,7 +167,7 @@ func TestAccDeviceFarmTestGridProject_disappears(t *testing.T) { acctest.PreCheckPartitionHasService(t, names.DeviceFarmEndpointID) // Currently, DeviceFarm is only supported in us-west-2 // https://docs.aws.amazon.com/general/latest/gr/devicefarm.html - acctest.PreCheckRegion(t, names.USWest2RegionID) + acctest.PreCheckRegion(t, endpoints.UsWest2RegionID) }, ErrorCheck: acctest.ErrorCheck(t, names.DeviceFarmServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, diff --git a/internal/service/devicefarm/upload_test.go b/internal/service/devicefarm/upload_test.go index 40cff3c52e44..4b64fa9305c8 100644 --- a/internal/service/devicefarm/upload_test.go +++ b/internal/service/devicefarm/upload_test.go @@ -10,6 +10,7 @@ import ( "github.com/YakDriver/regexache" awstypes "github.com/aws/aws-sdk-go-v2/service/devicefarm/types" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-plugin-testing/terraform" @@ -33,7 +34,7 @@ func TestAccDeviceFarmUpload_basic(t *testing.T) { acctest.PreCheckPartitionHasService(t, names.DeviceFarmEndpointID) // Currently, DeviceFarm is only supported in us-west-2 // https://docs.aws.amazon.com/general/latest/gr/devicefarm.html - acctest.PreCheckRegion(t, names.USWest2RegionID) + acctest.PreCheckRegion(t, endpoints.UsWest2RegionID) }, ErrorCheck: acctest.ErrorCheck(t, names.DeviceFarmServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, @@ -44,7 +45,7 @@ func TestAccDeviceFarmUpload_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckUploadExists(ctx, resourceName, &proj), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "devicefarm", regexache.MustCompile(`upload:.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "devicefarm", regexache.MustCompile(`upload:.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrType, "APPIUM_JAVA_TESTNG_TEST_SPEC"), resource.TestCheckResourceAttr(resourceName, "category", "PRIVATE"), resource.TestCheckResourceAttrSet(resourceName, names.AttrURL), @@ -61,7 +62,7 @@ func TestAccDeviceFarmUpload_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckUploadExists(ctx, resourceName, &proj), resource.TestCheckResourceAttr(resourceName, names.AttrName, rNameUpdated), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "devicefarm", regexache.MustCompile(`upload:.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "devicefarm", regexache.MustCompile(`upload:.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrType, "APPIUM_JAVA_TESTNG_TEST_SPEC"), resource.TestCheckResourceAttr(resourceName, "category", "PRIVATE"), resource.TestCheckResourceAttrSet(resourceName, names.AttrURL), @@ -83,7 +84,7 @@ func TestAccDeviceFarmUpload_disappears(t *testing.T) { acctest.PreCheckPartitionHasService(t, names.DeviceFarmEndpointID) // Currently, DeviceFarm is only supported in us-west-2 // https://docs.aws.amazon.com/general/latest/gr/devicefarm.html - acctest.PreCheckRegion(t, names.USWest2RegionID) + acctest.PreCheckRegion(t, endpoints.UsWest2RegionID) }, ErrorCheck: acctest.ErrorCheck(t, names.DeviceFarmServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, @@ -114,7 +115,7 @@ func TestAccDeviceFarmUpload_disappears_project(t *testing.T) { acctest.PreCheckPartitionHasService(t, names.DeviceFarmEndpointID) // Currently, DeviceFarm is only supported in us-west-2 // https://docs.aws.amazon.com/general/latest/gr/devicefarm.html - acctest.PreCheckRegion(t, names.USWest2RegionID) + acctest.PreCheckRegion(t, endpoints.UsWest2RegionID) }, ErrorCheck: acctest.ErrorCheck(t, names.DeviceFarmServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, diff --git a/internal/service/devopsguru/event_sources_config.go b/internal/service/devopsguru/event_sources_config.go index 8b65ef664bd0..e459d608b71a 100644 --- a/internal/service/devopsguru/event_sources_config.go +++ b/internal/service/devopsguru/event_sources_config.go @@ -86,7 +86,7 @@ func (r *resourceEventSourcesConfig) Create(ctx context.Context, req resource.Cr if resp.Diagnostics.HasError() { return } - plan.ID = types.StringValue(r.Meta().Region) + plan.ID = types.StringValue(r.Meta().Region(ctx)) in := &devopsguru.UpdateEventSourcesConfigInput{} resp.Diagnostics.Append(flex.Expand(ctx, &plan, in)...) diff --git a/internal/service/devopsguru/resource_collection_test.go b/internal/service/devopsguru/resource_collection_test.go index 3e59fa3b7dca..aba224f5f205 100644 --- a/internal/service/devopsguru/resource_collection_test.go +++ b/internal/service/devopsguru/resource_collection_test.go @@ -82,7 +82,7 @@ func testAccResourceCollection_disappears(t *testing.T) { Config: testAccResourceCollectionConfig_basic(), Check: resource.ComposeTestCheckFunc( testAccCheckResourceCollectionExists(ctx, resourceName, &resourcecollection), - acctest.CheckFrameworkResourceDisappearsWithStateFunc(ctx, acctest.Provider, tfdevopsguru.ResourceResourceCollection, resourceName, resourceCollectionDisappearsStateFunc()), + acctest.CheckFrameworkResourceDisappearsWithStateFunc(ctx, acctest.Provider, tfdevopsguru.ResourceResourceCollection, resourceName, resourceCollectionDisappearsStateFunc), ), ExpectNonEmptyPlan: true, }, @@ -200,37 +200,35 @@ func testAccResourceCollection_tagsAllResources(t *testing.T) { }) } -func resourceCollectionDisappearsStateFunc() func(ctx context.Context, state *tfsdk.State, is *terraform.InstanceState) error { - return func(ctx context.Context, state *tfsdk.State, is *terraform.InstanceState) error { - if err := fwdiag.DiagnosticsError(state.SetAttribute(ctx, path.Root(names.AttrID), is.Attributes[names.AttrID])); err != nil { - return err - } - - // The delete operation requires passing in the configured array of stack names - // with a "REMOVE" action. Manually construct the root cloudformation attribute - // to match what is created by the _basic test configuration. - var diags diag.Diagnostics - attrType := map[string]attr.Type{"stack_names": fwtypes.ListType{ElemType: fwtypes.StringType}} - obj := map[string]attr.Value{ - "stack_names": flex.FlattenFrameworkStringValueList(ctx, []string{"*"}), - } - objVal, d := fwtypes.ObjectValue(attrType, obj) - diags.Append(d...) +func resourceCollectionDisappearsStateFunc(ctx context.Context, state *tfsdk.State, is *terraform.InstanceState) error { + if err := fwdiag.DiagnosticsError(state.SetAttribute(ctx, path.Root(names.AttrID), is.Attributes[names.AttrID])); err != nil { + return err + } - elemType := fwtypes.ObjectType{AttrTypes: attrType} - listVal, d := fwtypes.ListValue(elemType, []attr.Value{objVal}) - diags.Append(d...) + // The delete operation requires passing in the configured array of stack names + // with a "REMOVE" action. Manually construct the root cloudformation attribute + // to match what is created by the _basic test configuration. + var diags diag.Diagnostics + attrType := map[string]attr.Type{"stack_names": fwtypes.ListType{ElemType: fwtypes.StringType}} + obj := map[string]attr.Value{ + "stack_names": flex.FlattenFrameworkStringValueList(ctx, []string{"*"}), + } + objVal, d := fwtypes.ObjectValue(attrType, obj) + diags.Append(d...) - if diags.HasError() { - return fwdiag.DiagnosticsError(diags) - } + elemType := fwtypes.ObjectType{AttrTypes: attrType} + listVal, d := fwtypes.ListValue(elemType, []attr.Value{objVal}) + diags.Append(d...) - if err := fwdiag.DiagnosticsError(state.SetAttribute(ctx, path.Root("cloudformation"), listVal)); err != nil { - return err - } + if diags.HasError() { + return fwdiag.DiagnosticsError(diags) + } - return nil + if err := fwdiag.DiagnosticsError(state.SetAttribute(ctx, path.Root("cloudformation"), listVal)); err != nil { + return err } + + return nil } func testAccCheckResourceCollectionDestroy(ctx context.Context) resource.TestCheckFunc { diff --git a/internal/service/devopsguru/service_endpoints_gen_test.go b/internal/service/devopsguru/service_endpoints_gen_test.go index 668a2d21795e..8d62ced20dc3 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/devopsguru/service_integration.go b/internal/service/devopsguru/service_integration.go index b2f38926f89d..0fb4711a3464 100644 --- a/internal/service/devopsguru/service_integration.go +++ b/internal/service/devopsguru/service_integration.go @@ -141,7 +141,7 @@ func (r *resourceServiceIntegration) Create(ctx context.Context, req resource.Cr if resp.Diagnostics.HasError() { return } - plan.ID = types.StringValue(r.Meta().Region) + plan.ID = types.StringValue(r.Meta().Region(ctx)) integration := &awstypes.UpdateServiceIntegrationConfig{} resp.Diagnostics.Append(flex.Expand(ctx, plan, integration)...) diff --git a/internal/service/directconnect/connection_test.go b/internal/service/directconnect/connection_test.go index 0d1426f28320..6e2a22cf3017 100644 --- a/internal/service/directconnect/connection_test.go +++ b/internal/service/directconnect/connection_test.go @@ -36,10 +36,10 @@ func TestAccDirectConnectConnection_basic(t *testing.T) { Config: testAccConnectionConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckConnectionExists(ctx, resourceName, &connection), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "directconnect", regexache.MustCompile(`dxcon/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "directconnect", regexache.MustCompile(`dxcon/.+`)), resource.TestCheckResourceAttr(resourceName, "bandwidth", "1Gbps"), resource.TestCheckResourceAttrSet(resourceName, names.AttrLocation), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerAccountID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerAccountID), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "partner_name", ""), resource.TestCheckResourceAttr(resourceName, names.AttrProviderName, ""), @@ -108,7 +108,7 @@ func TestAccDirectConnectConnection_encryptionMode(t *testing.T) { Config: testAccConnectionConfig_encryptionModeNoEncrypt(connectionName), Check: resource.ComposeTestCheckFunc( testAccCheckConnectionExists(ctx, resourceName, &connection), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "directconnect", regexache.MustCompile(`dxcon/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "directconnect", regexache.MustCompile(`dxcon/.+`)), resource.TestCheckResourceAttr(resourceName, "encryption_mode", "no_encrypt"), resource.TestCheckResourceAttrSet(resourceName, names.AttrLocation), resource.TestCheckResourceAttr(resourceName, names.AttrName, connectionName), @@ -119,7 +119,7 @@ func TestAccDirectConnectConnection_encryptionMode(t *testing.T) { Config: testAccConnectionConfig_encryptionModeShouldEncrypt(connectionName, ckn, cak), Check: resource.ComposeTestCheckFunc( testAccCheckConnectionExists(ctx, resourceName, &connection), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "directconnect", regexache.MustCompile(`dxcon/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "directconnect", regexache.MustCompile(`dxcon/.+`)), resource.TestCheckResourceAttr(resourceName, "encryption_mode", "should_encrypt"), resource.TestCheckResourceAttrSet(resourceName, names.AttrLocation), resource.TestCheckResourceAttr(resourceName, names.AttrName, connectionName), @@ -146,11 +146,11 @@ func TestAccDirectConnectConnection_macsecRequested(t *testing.T) { Config: testAccConnectionConfig_macsecEnabled(rName), Check: resource.ComposeTestCheckFunc( testAccCheckConnectionExists(ctx, resourceName, &connection), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "directconnect", regexache.MustCompile(`dxcon/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "directconnect", regexache.MustCompile(`dxcon/.+`)), resource.TestCheckResourceAttr(resourceName, "bandwidth", "100Gbps"), resource.TestCheckResourceAttrSet(resourceName, names.AttrLocation), resource.TestCheckResourceAttr(resourceName, "request_macsec", acctest.CtTrue), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerAccountID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerAccountID), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttrSet(resourceName, names.AttrProviderName), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), @@ -182,10 +182,10 @@ func TestAccDirectConnectConnection_providerName(t *testing.T) { Config: testAccConnectionConfig_providerName(rName), Check: resource.ComposeTestCheckFunc( testAccCheckConnectionExists(ctx, resourceName, &connection), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "directconnect", regexache.MustCompile(`dxcon/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "directconnect", regexache.MustCompile(`dxcon/.+`)), resource.TestCheckResourceAttr(resourceName, "bandwidth", "1Gbps"), resource.TestCheckResourceAttrSet(resourceName, names.AttrLocation), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerAccountID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerAccountID), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttrSet(resourceName, names.AttrProviderName), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), diff --git a/internal/service/directconnect/gateway_association_proposal_test.go b/internal/service/directconnect/gateway_association_proposal_test.go index 2c448649520f..dd985d66f5d5 100644 --- a/internal/service/directconnect/gateway_association_proposal_test.go +++ b/internal/service/directconnect/gateway_association_proposal_test.go @@ -42,7 +42,7 @@ func TestAccDirectConnectGatewayAssociationProposal_basicVPNGateway(t *testing.T testAccCheckGatewayAssociationProposalExists(ctx, resourceName, &proposal), resource.TestCheckResourceAttr(resourceName, "allowed_prefixes.#", "1"), resource.TestCheckResourceAttrPair(resourceName, "associated_gateway_id", resourceNameVgw, names.AttrID), - acctest.CheckResourceAttrAccountID(resourceName, "associated_gateway_owner_account_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "associated_gateway_owner_account_id"), resource.TestCheckResourceAttr(resourceName, "associated_gateway_type", "virtualPrivateGateway"), resource.TestCheckResourceAttrPair(resourceName, "dx_gateway_id", resourceNameDxGw, names.AttrID), ), @@ -80,7 +80,7 @@ func TestAccDirectConnectGatewayAssociationProposal_basicTransitGateway(t *testi resource.TestCheckTypeSetElemAttr(resourceName, "allowed_prefixes.*", "10.255.255.0/30"), resource.TestCheckTypeSetElemAttr(resourceName, "allowed_prefixes.*", "10.255.255.8/30"), resource.TestCheckResourceAttrPair(resourceName, "associated_gateway_id", resourceNameTgw, names.AttrID), - acctest.CheckResourceAttrAccountID(resourceName, "associated_gateway_owner_account_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "associated_gateway_owner_account_id"), resource.TestCheckResourceAttr(resourceName, "associated_gateway_type", "transitGateway"), resource.TestCheckResourceAttrPair(resourceName, "dx_gateway_id", resourceNameDxGw, names.AttrID), ), diff --git a/internal/service/directconnect/gateway_association_test.go b/internal/service/directconnect/gateway_association_test.go index 41e14a39a77f..89845b83ea94 100644 --- a/internal/service/directconnect/gateway_association_test.go +++ b/internal/service/directconnect/gateway_association_test.go @@ -69,11 +69,11 @@ func TestAccDirectConnectGatewayAssociation_basicVPNGatewaySingleAccount(t *test resource.TestCheckResourceAttr(resourceName, "allowed_prefixes.#", "1"), resource.TestCheckTypeSetElemAttr(resourceName, "allowed_prefixes.*", "10.255.255.0/28"), resource.TestCheckResourceAttrPair(resourceName, "associated_gateway_id", resourceNameVgw, names.AttrID), - acctest.CheckResourceAttrAccountID(resourceName, "associated_gateway_owner_account_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "associated_gateway_owner_account_id"), resource.TestCheckResourceAttr(resourceName, "associated_gateway_type", "virtualPrivateGateway"), resource.TestCheckResourceAttrSet(resourceName, "dx_gateway_association_id"), resource.TestCheckResourceAttrPair(resourceName, "dx_gateway_id", resourceNameDxGw, names.AttrID), - acctest.CheckResourceAttrAccountID(resourceName, "dx_gateway_owner_account_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "dx_gateway_owner_account_id"), ), }, { @@ -109,12 +109,12 @@ func TestAccDirectConnectGatewayAssociation_basicVPNGatewayCrossAccount(t *testi resource.TestCheckResourceAttr(resourceName, "allowed_prefixes.#", "1"), resource.TestCheckTypeSetElemAttr(resourceName, "allowed_prefixes.*", "10.255.255.0/28"), resource.TestCheckResourceAttrPair(resourceName, "associated_gateway_id", resourceNameVgw, names.AttrID), - acctest.CheckResourceAttrAccountID(resourceName, "associated_gateway_owner_account_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "associated_gateway_owner_account_id"), resource.TestCheckResourceAttr(resourceName, "associated_gateway_type", "virtualPrivateGateway"), resource.TestCheckResourceAttrSet(resourceName, "dx_gateway_association_id"), resource.TestCheckResourceAttrPair(resourceName, "dx_gateway_id", resourceNameDxGw, names.AttrID), // dx_gateway_owner_account_id is the "awsalternate" provider's account ID. - // acctest.CheckResourceAttrAccountID(resourceName, "dx_gateway_owner_account_id"), + // acctest.CheckResourceAttrAccountID(ctx, resourceName, "dx_gateway_owner_account_id"), ), }, }, @@ -145,11 +145,11 @@ func TestAccDirectConnectGatewayAssociation_basicTransitGatewaySingleAccount(t * resource.TestCheckTypeSetElemAttr(resourceName, "allowed_prefixes.*", "10.255.255.0/30"), resource.TestCheckTypeSetElemAttr(resourceName, "allowed_prefixes.*", "10.255.255.8/30"), resource.TestCheckResourceAttrPair(resourceName, "associated_gateway_id", resourceNameTgw, names.AttrID), - acctest.CheckResourceAttrAccountID(resourceName, "associated_gateway_owner_account_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "associated_gateway_owner_account_id"), resource.TestCheckResourceAttr(resourceName, "associated_gateway_type", "transitGateway"), resource.TestCheckResourceAttrSet(resourceName, "dx_gateway_association_id"), resource.TestCheckResourceAttrPair(resourceName, "dx_gateway_id", resourceNameDxGw, names.AttrID), - acctest.CheckResourceAttrAccountID(resourceName, "dx_gateway_owner_account_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "dx_gateway_owner_account_id"), ), }, { @@ -186,12 +186,12 @@ func TestAccDirectConnectGatewayAssociation_basicTransitGatewayCrossAccount(t *t resource.TestCheckTypeSetElemAttr(resourceName, "allowed_prefixes.*", "10.255.255.0/30"), resource.TestCheckTypeSetElemAttr(resourceName, "allowed_prefixes.*", "10.255.255.8/30"), resource.TestCheckResourceAttrPair(resourceName, "associated_gateway_id", resourceNameTgw, names.AttrID), - acctest.CheckResourceAttrAccountID(resourceName, "associated_gateway_owner_account_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "associated_gateway_owner_account_id"), resource.TestCheckResourceAttr(resourceName, "associated_gateway_type", "transitGateway"), resource.TestCheckResourceAttrSet(resourceName, "dx_gateway_association_id"), resource.TestCheckResourceAttrPair(resourceName, "dx_gateway_id", resourceNameDxGw, names.AttrID), // dx_gateway_owner_account_id is the "awsalternate" provider's account ID. - // acctest.CheckResourceAttrAccountID(resourceName, "dx_gateway_owner_account_id"), + // acctest.CheckResourceAttrAccountID(ctx, resourceName, "dx_gateway_owner_account_id"), ), }, }, diff --git a/internal/service/directconnect/gateway_test.go b/internal/service/directconnect/gateway_test.go index 58d7c8fb14da..50cdb3194cc7 100644 --- a/internal/service/directconnect/gateway_test.go +++ b/internal/service/directconnect/gateway_test.go @@ -36,7 +36,7 @@ func TestAccDirectConnectGateway_basic(t *testing.T) { Config: testAccGatewayConfig_basic(rName, rBgpAsn), Check: resource.ComposeTestCheckFunc( testAccCheckGatewayExists(ctx, resourceName, &v), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerAccountID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerAccountID), ), }, { @@ -90,7 +90,7 @@ func TestAccDirectConnectGateway_complex(t *testing.T) { Config: testAccGatewayConfig_associationMultiVPNSingleAccount(rName, rBgpAsn), Check: resource.ComposeTestCheckFunc( testAccCheckGatewayExists(ctx, resourceName, &v), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerAccountID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerAccountID), ), }, { diff --git a/internal/service/directconnect/hosted_private_virtual_interface.go b/internal/service/directconnect/hosted_private_virtual_interface.go index cbd0c6a31c98..aa09aa678d1c 100644 --- a/internal/service/directconnect/hosted_private_virtual_interface.go +++ b/internal/service/directconnect/hosted_private_virtual_interface.go @@ -188,9 +188,9 @@ func resourceHostedPrivateVirtualInterfaceRead(ctx context.Context, d *schema.Re d.Set("amazon_side_asn", flex.Int64ToStringValue(vif.AmazonSideAsn)) arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), Service: "directconnect", - AccountID: meta.(*conns.AWSClient).AccountID, + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("dxvif/%s", d.Id()), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/directconnect/hosted_private_virtual_interface_accepter.go b/internal/service/directconnect/hosted_private_virtual_interface_accepter.go index 31c191ded2d6..4a8494930095 100644 --- a/internal/service/directconnect/hosted_private_virtual_interface_accepter.go +++ b/internal/service/directconnect/hosted_private_virtual_interface_accepter.go @@ -98,9 +98,9 @@ func resourceHostedPrivateVirtualInterfaceAccepterCreate(ctx context.Context, d d.SetId(vifID) arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), Service: "directconnect", - AccountID: meta.(*conns.AWSClient).AccountID, + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("dxvif/%s", d.Id()), }.String() d.Set(names.AttrARN, arn) @@ -171,9 +171,9 @@ func resourceHostedPrivateVirtualInterfaceAccepterImport(ctx context.Context, d arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), Service: "directconnect", - AccountID: meta.(*conns.AWSClient).AccountID, + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("dxvif/%s", d.Id()), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/directconnect/hosted_private_virtual_interface_test.go b/internal/service/directconnect/hosted_private_virtual_interface_test.go index 7c5a80b7d808..13c10f195a56 100644 --- a/internal/service/directconnect/hosted_private_virtual_interface_test.go +++ b/internal/service/directconnect/hosted_private_virtual_interface_test.go @@ -46,7 +46,7 @@ func TestAccDirectConnectHostedPrivateVirtualInterface_basic(t *testing.T) { testAccCheckHostedPrivateVirtualInterfaceExists(ctx, resourceName, &vif), resource.TestCheckResourceAttr(resourceName, "address_family", "ipv4"), resource.TestCheckResourceAttrSet(resourceName, "amazon_side_asn"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "directconnect", regexache.MustCompile(fmt.Sprintf("dxvif/%s", aws.ToString(vif.VirtualInterfaceId)))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "directconnect", regexache.MustCompile(fmt.Sprintf("dxvif/%s", aws.ToString(vif.VirtualInterfaceId)))), resource.TestCheckResourceAttrSet(resourceName, "aws_device"), resource.TestCheckResourceAttr(resourceName, "bgp_asn", strconv.Itoa(bgpAsn)), resource.TestCheckResourceAttrSet(resourceName, "bgp_auth_key"), @@ -100,7 +100,7 @@ func TestAccDirectConnectHostedPrivateVirtualInterface_accepterTags(t *testing.T testAccCheckHostedPrivateVirtualInterfaceExists(ctx, resourceName, &vif), resource.TestCheckResourceAttr(resourceName, "address_family", "ipv4"), resource.TestCheckResourceAttrSet(resourceName, "amazon_side_asn"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "directconnect", regexache.MustCompile(fmt.Sprintf("dxvif/%s", aws.ToString(vif.VirtualInterfaceId)))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "directconnect", regexache.MustCompile(fmt.Sprintf("dxvif/%s", aws.ToString(vif.VirtualInterfaceId)))), resource.TestCheckResourceAttrSet(resourceName, "aws_device"), resource.TestCheckResourceAttr(resourceName, "bgp_asn", strconv.Itoa(bgpAsn)), resource.TestCheckResourceAttrSet(resourceName, "bgp_auth_key"), @@ -126,7 +126,7 @@ func TestAccDirectConnectHostedPrivateVirtualInterface_accepterTags(t *testing.T testAccCheckHostedPrivateVirtualInterfaceExists(ctx, resourceName, &vif), resource.TestCheckResourceAttr(resourceName, "address_family", "ipv4"), resource.TestCheckResourceAttrSet(resourceName, "amazon_side_asn"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "directconnect", regexache.MustCompile(fmt.Sprintf("dxvif/%s", aws.ToString(vif.VirtualInterfaceId)))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "directconnect", regexache.MustCompile(fmt.Sprintf("dxvif/%s", aws.ToString(vif.VirtualInterfaceId)))), resource.TestCheckResourceAttrSet(resourceName, "aws_device"), resource.TestCheckResourceAttr(resourceName, "bgp_asn", strconv.Itoa(bgpAsn)), resource.TestCheckResourceAttrSet(resourceName, "bgp_auth_key"), diff --git a/internal/service/directconnect/hosted_public_virtual_interface.go b/internal/service/directconnect/hosted_public_virtual_interface.go index 769931e386f2..64e24e996911 100644 --- a/internal/service/directconnect/hosted_public_virtual_interface.go +++ b/internal/service/directconnect/hosted_public_virtual_interface.go @@ -185,9 +185,9 @@ func resourceHostedPublicVirtualInterfaceRead(ctx context.Context, d *schema.Res d.Set("amazon_side_asn", strconv.FormatInt(aws.ToInt64(vif.AmazonSideAsn), 10)) arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), Service: "directconnect", - AccountID: meta.(*conns.AWSClient).AccountID, + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("dxvif/%s", d.Id()), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/directconnect/hosted_public_virtual_interface_accepter.go b/internal/service/directconnect/hosted_public_virtual_interface_accepter.go index 40955116f105..ff4ce47b46d6 100644 --- a/internal/service/directconnect/hosted_public_virtual_interface_accepter.go +++ b/internal/service/directconnect/hosted_public_virtual_interface_accepter.go @@ -78,9 +78,9 @@ func resourceHostedPublicVirtualInterfaceAccepterCreate(ctx context.Context, d * d.SetId(vifID) arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), Service: "directconnect", - AccountID: meta.(*conns.AWSClient).AccountID, + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("dxvif/%s", d.Id()), }.String() d.Set(names.AttrARN, arn) @@ -149,9 +149,9 @@ func resourceHostedPublicVirtualInterfaceAccepterImport(ctx context.Context, d * arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), Service: "directconnect", - AccountID: meta.(*conns.AWSClient).AccountID, + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("dxvif/%s", d.Id()), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/directconnect/hosted_public_virtual_interface_test.go b/internal/service/directconnect/hosted_public_virtual_interface_test.go index 03fe96f5e54e..0576ce0a53de 100644 --- a/internal/service/directconnect/hosted_public_virtual_interface_test.go +++ b/internal/service/directconnect/hosted_public_virtual_interface_test.go @@ -48,7 +48,7 @@ func TestAccDirectConnectHostedPublicVirtualInterface_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "address_family", "ipv4"), resource.TestCheckResourceAttrSet(resourceName, "amazon_address"), resource.TestCheckResourceAttrSet(resourceName, "amazon_side_asn"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "directconnect", regexache.MustCompile(fmt.Sprintf("dxvif/%s", aws.ToString(vif.VirtualInterfaceId)))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "directconnect", regexache.MustCompile(fmt.Sprintf("dxvif/%s", aws.ToString(vif.VirtualInterfaceId)))), resource.TestCheckResourceAttrSet(resourceName, "aws_device"), resource.TestCheckResourceAttr(resourceName, "bgp_asn", strconv.Itoa(bgpAsn)), resource.TestCheckResourceAttrSet(resourceName, "bgp_auth_key"), @@ -104,7 +104,7 @@ func TestAccDirectConnectHostedPublicVirtualInterface_accepterTags(t *testing.T) resource.TestCheckResourceAttr(resourceName, "address_family", "ipv4"), resource.TestCheckResourceAttr(resourceName, "amazon_address", amazonAddress), resource.TestCheckResourceAttrSet(resourceName, "amazon_side_asn"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "directconnect", regexache.MustCompile(fmt.Sprintf("dxvif/%s", aws.ToString(vif.VirtualInterfaceId)))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "directconnect", regexache.MustCompile(fmt.Sprintf("dxvif/%s", aws.ToString(vif.VirtualInterfaceId)))), resource.TestCheckResourceAttrSet(resourceName, "aws_device"), resource.TestCheckResourceAttr(resourceName, "bgp_asn", strconv.Itoa(bgpAsn)), resource.TestCheckResourceAttrSet(resourceName, "bgp_auth_key"), @@ -131,7 +131,7 @@ func TestAccDirectConnectHostedPublicVirtualInterface_accepterTags(t *testing.T) resource.TestCheckResourceAttr(resourceName, "address_family", "ipv4"), resource.TestCheckResourceAttr(resourceName, "amazon_address", amazonAddress), resource.TestCheckResourceAttrSet(resourceName, "amazon_side_asn"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "directconnect", regexache.MustCompile(fmt.Sprintf("dxvif/%s", aws.ToString(vif.VirtualInterfaceId)))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "directconnect", regexache.MustCompile(fmt.Sprintf("dxvif/%s", aws.ToString(vif.VirtualInterfaceId)))), resource.TestCheckResourceAttrSet(resourceName, "aws_device"), resource.TestCheckResourceAttr(resourceName, "bgp_asn", strconv.Itoa(bgpAsn)), resource.TestCheckResourceAttrSet(resourceName, "bgp_auth_key"), diff --git a/internal/service/directconnect/hosted_transit_virtual_interface.go b/internal/service/directconnect/hosted_transit_virtual_interface.go index 2929b0d0bbed..e73b83d15655 100644 --- a/internal/service/directconnect/hosted_transit_virtual_interface.go +++ b/internal/service/directconnect/hosted_transit_virtual_interface.go @@ -184,9 +184,9 @@ func resourceHostedTransitVirtualInterfaceRead(ctx context.Context, d *schema.Re d.Set("amazon_side_asn", flex.Int64ToStringValue(vif.AmazonSideAsn)) arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), Service: "directconnect", - AccountID: meta.(*conns.AWSClient).AccountID, + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("dxvif/%s", d.Id()), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/directconnect/hosted_transit_virtual_interface_accepter.go b/internal/service/directconnect/hosted_transit_virtual_interface_accepter.go index ab660b5f8f24..ed198b0251b9 100644 --- a/internal/service/directconnect/hosted_transit_virtual_interface_accepter.go +++ b/internal/service/directconnect/hosted_transit_virtual_interface_accepter.go @@ -84,9 +84,9 @@ func resourceHostedTransitVirtualInterfaceAccepterCreate(ctx context.Context, d d.SetId(vifID) arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), Service: "directconnect", - AccountID: meta.(*conns.AWSClient).AccountID, + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("dxvif/%s", d.Id()), }.String() d.Set(names.AttrARN, arn) @@ -156,9 +156,9 @@ func resourceHostedTransitVirtualInterfaceAccepterImport(ctx context.Context, d arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), Service: "directconnect", - AccountID: meta.(*conns.AWSClient).AccountID, + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("dxvif/%s", d.Id()), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/directconnect/hosted_transit_virtual_interface_test.go b/internal/service/directconnect/hosted_transit_virtual_interface_test.go index 82104cc0acd9..22aa6aeb9a9a 100644 --- a/internal/service/directconnect/hosted_transit_virtual_interface_test.go +++ b/internal/service/directconnect/hosted_transit_virtual_interface_test.go @@ -58,7 +58,7 @@ func testAccHostedTransitVirtualInterface_basic(t *testing.T) { testAccCheckHostedTransitVirtualInterfaceExists(ctx, resourceName, &vif), resource.TestCheckResourceAttr(resourceName, "address_family", "ipv4"), resource.TestCheckResourceAttrSet(resourceName, "amazon_side_asn"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "directconnect", regexache.MustCompile(fmt.Sprintf("dxvif/%s", aws.ToString(vif.VirtualInterfaceId)))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "directconnect", regexache.MustCompile(fmt.Sprintf("dxvif/%s", aws.ToString(vif.VirtualInterfaceId)))), resource.TestCheckResourceAttrSet(resourceName, "aws_device"), resource.TestCheckResourceAttr(resourceName, "bgp_asn", strconv.Itoa(bgpAsn)), resource.TestCheckResourceAttrSet(resourceName, "bgp_auth_key"), @@ -113,7 +113,7 @@ func testAccHostedTransitVirtualInterface_accepterTags(t *testing.T) { testAccCheckHostedTransitVirtualInterfaceExists(ctx, resourceName, &vif), resource.TestCheckResourceAttr(resourceName, "address_family", "ipv4"), resource.TestCheckResourceAttrSet(resourceName, "amazon_side_asn"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "directconnect", regexache.MustCompile(fmt.Sprintf("dxvif/%s", aws.ToString(vif.VirtualInterfaceId)))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "directconnect", regexache.MustCompile(fmt.Sprintf("dxvif/%s", aws.ToString(vif.VirtualInterfaceId)))), resource.TestCheckResourceAttrSet(resourceName, "aws_device"), resource.TestCheckResourceAttr(resourceName, "bgp_asn", strconv.Itoa(bgpAsn)), resource.TestCheckResourceAttrSet(resourceName, "bgp_auth_key"), @@ -139,7 +139,7 @@ func testAccHostedTransitVirtualInterface_accepterTags(t *testing.T) { testAccCheckHostedTransitVirtualInterfaceExists(ctx, resourceName, &vif), resource.TestCheckResourceAttr(resourceName, "address_family", "ipv4"), resource.TestCheckResourceAttrSet(resourceName, "amazon_side_asn"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "directconnect", regexache.MustCompile(fmt.Sprintf("dxvif/%s", aws.ToString(vif.VirtualInterfaceId)))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "directconnect", regexache.MustCompile(fmt.Sprintf("dxvif/%s", aws.ToString(vif.VirtualInterfaceId)))), resource.TestCheckResourceAttrSet(resourceName, "aws_device"), resource.TestCheckResourceAttr(resourceName, "bgp_asn", strconv.Itoa(bgpAsn)), resource.TestCheckResourceAttrSet(resourceName, "bgp_auth_key"), diff --git a/internal/service/directconnect/lag_test.go b/internal/service/directconnect/lag_test.go index 1ad15a56ec2c..d05f21872583 100644 --- a/internal/service/directconnect/lag_test.go +++ b/internal/service/directconnect/lag_test.go @@ -37,7 +37,7 @@ func TestAccDirectConnectLag_basic(t *testing.T) { Config: testAccLagConfig_basic(rName1), Check: resource.ComposeTestCheckFunc( testAccCheckLagExists(ctx, resourceName, &lag), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "directconnect", regexache.MustCompile(`dxlag/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "directconnect", regexache.MustCompile(`dxlag/.+`)), resource.TestCheckNoResourceAttr(resourceName, names.AttrConnectionID), resource.TestCheckResourceAttr(resourceName, "connections_bandwidth", "10Gbps"), resource.TestCheckResourceAttr(resourceName, names.AttrForceDestroy, acctest.CtFalse), @@ -45,7 +45,7 @@ func TestAccDirectConnectLag_basic(t *testing.T) { resource.TestCheckResourceAttrSet(resourceName, "jumbo_frame_capable"), resource.TestCheckResourceAttrSet(resourceName, names.AttrLocation), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName1), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerAccountID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerAccountID), resource.TestCheckResourceAttr(resourceName, names.AttrProviderName, ""), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), @@ -54,7 +54,7 @@ func TestAccDirectConnectLag_basic(t *testing.T) { Config: testAccLagConfig_basic(rName2), Check: resource.ComposeTestCheckFunc( testAccCheckLagExists(ctx, resourceName, &lag), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "directconnect", regexache.MustCompile(`dxlag/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "directconnect", regexache.MustCompile(`dxlag/.+`)), resource.TestCheckNoResourceAttr(resourceName, names.AttrConnectionID), resource.TestCheckResourceAttr(resourceName, "connections_bandwidth", "10Gbps"), resource.TestCheckResourceAttr(resourceName, names.AttrForceDestroy, acctest.CtFalse), @@ -62,7 +62,7 @@ func TestAccDirectConnectLag_basic(t *testing.T) { resource.TestCheckResourceAttrSet(resourceName, "jumbo_frame_capable"), resource.TestCheckResourceAttrSet(resourceName, names.AttrLocation), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName2), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerAccountID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerAccountID), resource.TestCheckResourceAttr(resourceName, names.AttrProviderName, ""), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), @@ -118,7 +118,7 @@ func TestAccDirectConnectLag_connectionID(t *testing.T) { Config: testAccLagConfig_connectionID(rName), Check: resource.ComposeTestCheckFunc( testAccCheckLagExists(ctx, resourceName, &lag), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "directconnect", regexache.MustCompile(`dxlag/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "directconnect", regexache.MustCompile(`dxlag/.+`)), resource.TestCheckResourceAttrPair(resourceName, names.AttrConnectionID, connectionResourceName, names.AttrID), resource.TestCheckResourceAttr(resourceName, "connections_bandwidth", "10Gbps"), resource.TestCheckResourceAttr(resourceName, names.AttrForceDestroy, acctest.CtFalse), @@ -126,7 +126,7 @@ func TestAccDirectConnectLag_connectionID(t *testing.T) { resource.TestCheckResourceAttrSet(resourceName, "jumbo_frame_capable"), resource.TestCheckResourceAttrSet(resourceName, names.AttrLocation), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerAccountID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerAccountID), resource.TestCheckResourceAttr(resourceName, names.AttrProviderName, ""), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), @@ -157,7 +157,7 @@ func TestAccDirectConnectLag_providerName(t *testing.T) { Config: testAccLagConfig_providerName(rName), Check: resource.ComposeTestCheckFunc( testAccCheckLagExists(ctx, resourceName, &lag), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "directconnect", regexache.MustCompile(`dxlag/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "directconnect", regexache.MustCompile(`dxlag/.+`)), resource.TestCheckNoResourceAttr(resourceName, names.AttrConnectionID), resource.TestCheckResourceAttr(resourceName, "connections_bandwidth", "10Gbps"), resource.TestCheckResourceAttr(resourceName, names.AttrForceDestroy, acctest.CtFalse), @@ -165,7 +165,7 @@ func TestAccDirectConnectLag_providerName(t *testing.T) { resource.TestCheckResourceAttrSet(resourceName, "jumbo_frame_capable"), resource.TestCheckResourceAttrSet(resourceName, names.AttrLocation), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerAccountID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerAccountID), resource.TestCheckResourceAttrSet(resourceName, names.AttrProviderName), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), diff --git a/internal/service/directconnect/locations_data_source.go b/internal/service/directconnect/locations_data_source.go index 123baa2fd3b1..8da49d9151f9 100644 --- a/internal/service/directconnect/locations_data_source.go +++ b/internal/service/directconnect/locations_data_source.go @@ -42,7 +42,7 @@ func dataSourceLocationsRead(ctx context.Context, d *schema.ResourceData, meta i return sdkdiag.AppendErrorf(diags, "reading Direct Connect Locations: %s", err) } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) d.Set("location_codes", tfslices.ApplyToAll(locations, func(v awstypes.Location) string { return aws.ToString(v.LocationCode) })) diff --git a/internal/service/directconnect/private_virtual_interface.go b/internal/service/directconnect/private_virtual_interface.go index ef1ea10656dd..7ce3797911e0 100644 --- a/internal/service/directconnect/private_virtual_interface.go +++ b/internal/service/directconnect/private_virtual_interface.go @@ -210,9 +210,9 @@ func resourcePrivateVirtualInterfaceRead(ctx context.Context, d *schema.Resource d.Set("amazon_side_asn", strconv.FormatInt(aws.ToInt64(vif.AmazonSideAsn), 10)) arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), Service: "directconnect", - AccountID: meta.(*conns.AWSClient).AccountID, + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("dxvif/%s", d.Id()), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/directconnect/private_virtual_interface_test.go b/internal/service/directconnect/private_virtual_interface_test.go index 9be7a9869bd7..7fbd44647467 100644 --- a/internal/service/directconnect/private_virtual_interface_test.go +++ b/internal/service/directconnect/private_virtual_interface_test.go @@ -43,7 +43,7 @@ func TestAccDirectConnectPrivateVirtualInterface_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "address_family", "ipv4"), resource.TestCheckResourceAttrSet(resourceName, "amazon_address"), resource.TestCheckResourceAttrSet(resourceName, "amazon_side_asn"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "directconnect", regexache.MustCompile(fmt.Sprintf("dxvif/%s", aws.ToString(vif.VirtualInterfaceId)))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "directconnect", regexache.MustCompile(fmt.Sprintf("dxvif/%s", aws.ToString(vif.VirtualInterfaceId)))), resource.TestCheckResourceAttrSet(resourceName, "aws_device"), resource.TestCheckResourceAttr(resourceName, "bgp_asn", strconv.Itoa(bgpAsn)), resource.TestCheckResourceAttrSet(resourceName, "bgp_auth_key"), @@ -64,7 +64,7 @@ func TestAccDirectConnectPrivateVirtualInterface_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "address_family", "ipv4"), resource.TestCheckResourceAttrSet(resourceName, "amazon_address"), resource.TestCheckResourceAttrSet(resourceName, "amazon_side_asn"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "directconnect", regexache.MustCompile(fmt.Sprintf("dxvif/%s", aws.ToString(vif.VirtualInterfaceId)))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "directconnect", regexache.MustCompile(fmt.Sprintf("dxvif/%s", aws.ToString(vif.VirtualInterfaceId)))), resource.TestCheckResourceAttrSet(resourceName, "aws_device"), resource.TestCheckResourceAttr(resourceName, "bgp_asn", strconv.Itoa(bgpAsn)), resource.TestCheckResourceAttrSet(resourceName, "bgp_auth_key"), @@ -111,7 +111,7 @@ func TestAccDirectConnectPrivateVirtualInterface_tags(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "address_family", "ipv4"), resource.TestCheckResourceAttrSet(resourceName, "amazon_address"), resource.TestCheckResourceAttrSet(resourceName, "amazon_side_asn"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "directconnect", regexache.MustCompile(fmt.Sprintf("dxvif/%s", aws.ToString(vif.VirtualInterfaceId)))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "directconnect", regexache.MustCompile(fmt.Sprintf("dxvif/%s", aws.ToString(vif.VirtualInterfaceId)))), resource.TestCheckResourceAttrSet(resourceName, "aws_device"), resource.TestCheckResourceAttr(resourceName, "bgp_asn", strconv.Itoa(bgpAsn)), resource.TestCheckResourceAttrSet(resourceName, "bgp_auth_key"), @@ -135,7 +135,7 @@ func TestAccDirectConnectPrivateVirtualInterface_tags(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "address_family", "ipv4"), resource.TestCheckResourceAttrSet(resourceName, "amazon_address"), resource.TestCheckResourceAttrSet(resourceName, "amazon_side_asn"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "directconnect", regexache.MustCompile(fmt.Sprintf("dxvif/%s", aws.ToString(vif.VirtualInterfaceId)))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "directconnect", regexache.MustCompile(fmt.Sprintf("dxvif/%s", aws.ToString(vif.VirtualInterfaceId)))), resource.TestCheckResourceAttrSet(resourceName, "aws_device"), resource.TestCheckResourceAttr(resourceName, "bgp_asn", strconv.Itoa(bgpAsn)), resource.TestCheckResourceAttrSet(resourceName, "bgp_auth_key"), @@ -186,7 +186,7 @@ func TestAccDirectConnectPrivateVirtualInterface_dxGateway(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "address_family", "ipv4"), resource.TestCheckResourceAttrSet(resourceName, "amazon_address"), resource.TestCheckResourceAttrSet(resourceName, "amazon_side_asn"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "directconnect", regexache.MustCompile(fmt.Sprintf("dxvif/%s", aws.ToString(vif.VirtualInterfaceId)))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "directconnect", regexache.MustCompile(fmt.Sprintf("dxvif/%s", aws.ToString(vif.VirtualInterfaceId)))), resource.TestCheckResourceAttrSet(resourceName, "aws_device"), resource.TestCheckResourceAttr(resourceName, "bgp_asn", strconv.Itoa(bgpAsn)), resource.TestCheckResourceAttrSet(resourceName, "bgp_auth_key"), @@ -234,7 +234,7 @@ func TestAccDirectConnectPrivateVirtualInterface_siteLink(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "address_family", "ipv4"), resource.TestCheckResourceAttrSet(resourceName, "amazon_address"), resource.TestCheckResourceAttrSet(resourceName, "amazon_side_asn"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "directconnect", regexache.MustCompile(fmt.Sprintf("dxvif/%s", aws.ToString(vif.VirtualInterfaceId)))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "directconnect", regexache.MustCompile(fmt.Sprintf("dxvif/%s", aws.ToString(vif.VirtualInterfaceId)))), resource.TestCheckResourceAttrSet(resourceName, "aws_device"), resource.TestCheckResourceAttr(resourceName, "bgp_asn", strconv.Itoa(bgpAsn)), resource.TestCheckResourceAttrSet(resourceName, "bgp_auth_key"), @@ -256,7 +256,7 @@ func TestAccDirectConnectPrivateVirtualInterface_siteLink(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "address_family", "ipv4"), resource.TestCheckResourceAttrSet(resourceName, "amazon_address"), resource.TestCheckResourceAttrSet(resourceName, "amazon_side_asn"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "directconnect", regexache.MustCompile(fmt.Sprintf("dxvif/%s", aws.ToString(vif.VirtualInterfaceId)))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "directconnect", regexache.MustCompile(fmt.Sprintf("dxvif/%s", aws.ToString(vif.VirtualInterfaceId)))), resource.TestCheckResourceAttrSet(resourceName, "aws_device"), resource.TestCheckResourceAttr(resourceName, "bgp_asn", strconv.Itoa(bgpAsn)), resource.TestCheckResourceAttrSet(resourceName, "bgp_auth_key"), diff --git a/internal/service/directconnect/public_virtual_interface.go b/internal/service/directconnect/public_virtual_interface.go index 99ec2d818946..d8257bb99abb 100644 --- a/internal/service/directconnect/public_virtual_interface.go +++ b/internal/service/directconnect/public_virtual_interface.go @@ -188,9 +188,9 @@ func resourcePublicVirtualInterfaceRead(ctx context.Context, d *schema.ResourceD d.Set("amazon_side_asn", strconv.FormatInt(aws.ToInt64(vif.AmazonSideAsn), 10)) arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), Service: "directconnect", - AccountID: meta.(*conns.AWSClient).AccountID, + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("dxvif/%s", d.Id()), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/directconnect/public_virtual_interface_test.go b/internal/service/directconnect/public_virtual_interface_test.go index 3bf2b15e4f57..01e53cd56203 100644 --- a/internal/service/directconnect/public_virtual_interface_test.go +++ b/internal/service/directconnect/public_virtual_interface_test.go @@ -48,7 +48,7 @@ func TestAccDirectConnectPublicVirtualInterface_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "address_family", "ipv4"), resource.TestCheckResourceAttr(resourceName, "amazon_address", amazonAddress), resource.TestCheckResourceAttrSet(resourceName, "amazon_side_asn"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "directconnect", regexache.MustCompile(fmt.Sprintf("dxvif/%s", aws.ToString(vif.VirtualInterfaceId)))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "directconnect", regexache.MustCompile(fmt.Sprintf("dxvif/%s", aws.ToString(vif.VirtualInterfaceId)))), resource.TestCheckResourceAttrSet(resourceName, "aws_device"), resource.TestCheckResourceAttr(resourceName, "bgp_asn", strconv.Itoa(bgpAsn)), resource.TestCheckResourceAttrSet(resourceName, "bgp_auth_key"), @@ -96,7 +96,7 @@ func TestAccDirectConnectPublicVirtualInterface_tags(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "address_family", "ipv4"), resource.TestCheckResourceAttr(resourceName, "amazon_address", amazonAddress), resource.TestCheckResourceAttrSet(resourceName, "amazon_side_asn"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "directconnect", regexache.MustCompile(fmt.Sprintf("dxvif/%s", aws.ToString(vif.VirtualInterfaceId)))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "directconnect", regexache.MustCompile(fmt.Sprintf("dxvif/%s", aws.ToString(vif.VirtualInterfaceId)))), resource.TestCheckResourceAttrSet(resourceName, "aws_device"), resource.TestCheckResourceAttr(resourceName, "bgp_asn", strconv.Itoa(bgpAsn)), resource.TestCheckResourceAttrSet(resourceName, "bgp_auth_key"), @@ -120,7 +120,7 @@ func TestAccDirectConnectPublicVirtualInterface_tags(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "address_family", "ipv4"), resource.TestCheckResourceAttr(resourceName, "amazon_address", amazonAddress), resource.TestCheckResourceAttrSet(resourceName, "amazon_side_asn"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "directconnect", regexache.MustCompile(fmt.Sprintf("dxvif/%s", aws.ToString(vif.VirtualInterfaceId)))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "directconnect", regexache.MustCompile(fmt.Sprintf("dxvif/%s", aws.ToString(vif.VirtualInterfaceId)))), resource.TestCheckResourceAttrSet(resourceName, "aws_device"), resource.TestCheckResourceAttr(resourceName, "bgp_asn", strconv.Itoa(bgpAsn)), resource.TestCheckResourceAttrSet(resourceName, "bgp_auth_key"), diff --git a/internal/service/directconnect/service_endpoints_gen_test.go b/internal/service/directconnect/service_endpoints_gen_test.go index 90b0c2842b58..6b919e87ed47 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/directconnect/transit_virtual_interface.go b/internal/service/directconnect/transit_virtual_interface.go index 1a8030cb737a..71c23f7e587a 100644 --- a/internal/service/directconnect/transit_virtual_interface.go +++ b/internal/service/directconnect/transit_virtual_interface.go @@ -196,9 +196,9 @@ func resourceTransitVirtualInterfaceRead(ctx context.Context, d *schema.Resource d.Set("amazon_side_asn", strconv.FormatInt(aws.ToInt64(vif.AmazonSideAsn), 10)) arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), Service: "directconnect", - AccountID: meta.(*conns.AWSClient).AccountID, + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("dxvif/%s", d.Id()), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/directconnect/transit_virtual_interface_test.go b/internal/service/directconnect/transit_virtual_interface_test.go index baeada002a95..960b0c22e815 100644 --- a/internal/service/directconnect/transit_virtual_interface_test.go +++ b/internal/service/directconnect/transit_virtual_interface_test.go @@ -56,7 +56,7 @@ func testAccTransitVirtualInterface_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "address_family", "ipv4"), resource.TestCheckResourceAttrSet(resourceName, "amazon_address"), resource.TestCheckResourceAttrSet(resourceName, "amazon_side_asn"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "directconnect", regexache.MustCompile(fmt.Sprintf("dxvif/%s", aws.ToString(vif.VirtualInterfaceId)))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "directconnect", regexache.MustCompile(fmt.Sprintf("dxvif/%s", aws.ToString(vif.VirtualInterfaceId)))), resource.TestCheckResourceAttrSet(resourceName, "aws_device"), resource.TestCheckResourceAttr(resourceName, "bgp_asn", strconv.Itoa(bgpAsn)), resource.TestCheckResourceAttrSet(resourceName, "bgp_auth_key"), @@ -77,7 +77,7 @@ func testAccTransitVirtualInterface_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "address_family", "ipv4"), resource.TestCheckResourceAttrSet(resourceName, "amazon_address"), resource.TestCheckResourceAttrSet(resourceName, "amazon_side_asn"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "directconnect", regexache.MustCompile(fmt.Sprintf("dxvif/%s", aws.ToString(vif.VirtualInterfaceId)))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "directconnect", regexache.MustCompile(fmt.Sprintf("dxvif/%s", aws.ToString(vif.VirtualInterfaceId)))), resource.TestCheckResourceAttrSet(resourceName, "aws_device"), resource.TestCheckResourceAttr(resourceName, "bgp_asn", strconv.Itoa(bgpAsn)), resource.TestCheckResourceAttrSet(resourceName, "bgp_auth_key"), @@ -125,7 +125,7 @@ func testAccTransitVirtualInterface_tags(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "address_family", "ipv4"), resource.TestCheckResourceAttrSet(resourceName, "amazon_address"), resource.TestCheckResourceAttrSet(resourceName, "amazon_side_asn"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "directconnect", regexache.MustCompile(fmt.Sprintf("dxvif/%s", aws.ToString(vif.VirtualInterfaceId)))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "directconnect", regexache.MustCompile(fmt.Sprintf("dxvif/%s", aws.ToString(vif.VirtualInterfaceId)))), resource.TestCheckResourceAttrSet(resourceName, "aws_device"), resource.TestCheckResourceAttr(resourceName, "bgp_asn", strconv.Itoa(bgpAsn)), resource.TestCheckResourceAttrSet(resourceName, "bgp_auth_key"), @@ -149,7 +149,7 @@ func testAccTransitVirtualInterface_tags(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "address_family", "ipv4"), resource.TestCheckResourceAttrSet(resourceName, "amazon_address"), resource.TestCheckResourceAttrSet(resourceName, "amazon_side_asn"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "directconnect", regexache.MustCompile(fmt.Sprintf("dxvif/%s", aws.ToString(vif.VirtualInterfaceId)))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "directconnect", regexache.MustCompile(fmt.Sprintf("dxvif/%s", aws.ToString(vif.VirtualInterfaceId)))), resource.TestCheckResourceAttrSet(resourceName, "aws_device"), resource.TestCheckResourceAttr(resourceName, "bgp_asn", strconv.Itoa(bgpAsn)), resource.TestCheckResourceAttrSet(resourceName, "bgp_auth_key"), @@ -200,7 +200,7 @@ func testAccTransitVirtualInterface_siteLink(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "address_family", "ipv4"), resource.TestCheckResourceAttrSet(resourceName, "amazon_address"), resource.TestCheckResourceAttrSet(resourceName, "amazon_side_asn"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "directconnect", regexache.MustCompile(fmt.Sprintf("dxvif/%s", aws.ToString(vif.VirtualInterfaceId)))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "directconnect", regexache.MustCompile(fmt.Sprintf("dxvif/%s", aws.ToString(vif.VirtualInterfaceId)))), resource.TestCheckResourceAttrSet(resourceName, "aws_device"), resource.TestCheckResourceAttr(resourceName, "bgp_asn", strconv.Itoa(bgpAsn)), resource.TestCheckResourceAttrSet(resourceName, "bgp_auth_key"), @@ -222,7 +222,7 @@ func testAccTransitVirtualInterface_siteLink(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "address_family", "ipv4"), resource.TestCheckResourceAttrSet(resourceName, "amazon_address"), resource.TestCheckResourceAttrSet(resourceName, "amazon_side_asn"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "directconnect", regexache.MustCompile(fmt.Sprintf("dxvif/%s", aws.ToString(vif.VirtualInterfaceId)))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "directconnect", regexache.MustCompile(fmt.Sprintf("dxvif/%s", aws.ToString(vif.VirtualInterfaceId)))), resource.TestCheckResourceAttrSet(resourceName, "aws_device"), resource.TestCheckResourceAttr(resourceName, "bgp_asn", strconv.Itoa(bgpAsn)), resource.TestCheckResourceAttrSet(resourceName, "bgp_auth_key"), diff --git a/internal/service/dlm/lifecycle_policy_test.go b/internal/service/dlm/lifecycle_policy_test.go index ae1ad154a330..7a0465ac62ee 100644 --- a/internal/service/dlm/lifecycle_policy_test.go +++ b/internal/service/dlm/lifecycle_policy_test.go @@ -37,7 +37,7 @@ func TestAccDLMLifecyclePolicy_basic(t *testing.T) { Config: testAccLifecyclePolicyConfig_basic(rName), Check: resource.ComposeTestCheckFunc( checkLifecyclePolicyExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "dlm", regexache.MustCompile(`policy/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "dlm", regexache.MustCompile(`policy/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "tf-acc-basic"), resource.TestCheckResourceAttrSet(resourceName, names.AttrExecutionRoleARN), resource.TestCheckResourceAttr(resourceName, names.AttrState, "ENABLED"), @@ -80,7 +80,7 @@ func TestAccDLMLifecyclePolicy_event(t *testing.T) { Config: testAccLifecyclePolicyConfig_event(rName), Check: resource.ComposeTestCheckFunc( checkLifecyclePolicyExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "dlm", regexache.MustCompile(`policy/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "dlm", regexache.MustCompile(`policy/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "tf-acc-basic"), resource.TestCheckResourceAttrSet(resourceName, names.AttrExecutionRoleARN), resource.TestCheckResourceAttr(resourceName, names.AttrState, "ENABLED"), diff --git a/internal/service/dlm/service_endpoints_gen_test.go b/internal/service/dlm/service_endpoints_gen_test.go index 3295da2ebcc7..a65bd6ad7488 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/event_subscription.go b/internal/service/dms/event_subscription.go index 5d97aa47f69a..1d8c2f6ead04 100644 --- a/internal/service/dms/event_subscription.go +++ b/internal/service/dms/event_subscription.go @@ -148,8 +148,8 @@ func resourceEventSubscriptionRead(ctx context.Context, d *schema.ResourceData, arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "dms", - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("es:%s", d.Id()), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/dms/replication_config_test.go b/internal/service/dms/replication_config_test.go index f5d24b3875f9..819a142aee92 100644 --- a/internal/service/dms/replication_config_test.go +++ b/internal/service/dms/replication_config_test.go @@ -43,7 +43,7 @@ func TestAccDMSReplicationConfig_basic(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckReplicationConfigExists(ctx, resourceName, &v), resource.TestCheckResourceAttrSet(resourceName, names.AttrARN), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "dms", regexache.MustCompile(`replication-config:[A-Z0-9]{26}`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "dms", regexache.MustCompile(`replication-config:[A-Z0-9]{26}`)), resource.TestCheckResourceAttr(resourceName, "compute_config.#", "1"), resource.TestCheckResourceAttr(resourceName, "compute_config.0.availability_zone", ""), resource.TestCheckResourceAttr(resourceName, "compute_config.0.dns_name_servers", ""), diff --git a/internal/service/dms/replication_subnet_group.go b/internal/service/dms/replication_subnet_group.go index 43d28747a0da..8eebcde96740 100644 --- a/internal/service/dms/replication_subnet_group.go +++ b/internal/service/dms/replication_subnet_group.go @@ -117,8 +117,8 @@ func resourceReplicationSubnetGroupRead(ctx context.Context, d *schema.ResourceD arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "dms", - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("subgrp:%s", d.Id()), }.String() d.Set("replication_subnet_group_arn", arn) diff --git a/internal/service/dms/replication_subnet_group_data_source.go b/internal/service/dms/replication_subnet_group_data_source.go index 1eb9b010092e..b219cfa8915a 100644 --- a/internal/service/dms/replication_subnet_group_data_source.go +++ b/internal/service/dms/replication_subnet_group_data_source.go @@ -71,8 +71,8 @@ func dataSourceReplicationSubnetGroupRead(ctx context.Context, d *schema.Resourc arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "dms", - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("subgrp:%s", d.Id()), }.String() d.Set("replication_subnet_group_arn", arn) diff --git a/internal/service/dms/replication_task_test.go b/internal/service/dms/replication_task_test.go index 5ef3361ad86e..69097ebbb01e 100644 --- a/internal/service/dms/replication_task_test.go +++ b/internal/service/dms/replication_task_test.go @@ -49,7 +49,7 @@ func TestAccDMSReplicationTask_basic(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckReplicationTaskExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "replication_task_id", rName), - acctest.MatchResourceAttrRegionalARN(resourceName, "replication_task_arn", "dms", regexache.MustCompile(`task:[A-Z0-9]{26}`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, "replication_task_arn", "dms", regexache.MustCompile(`task:[A-Z0-9]{26}`)), resource.TestCheckResourceAttr(resourceName, "cdc_start_position", ""), resource.TestCheckNoResourceAttr(resourceName, "cdc_start_time"), resource.TestCheckResourceAttr(resourceName, "migration_type", migrationType), diff --git a/internal/service/dms/service_endpoints_gen_test.go b/internal/service/dms/service_endpoints_gen_test.go index d277409befe1..63071fdcae50 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/cluster_instance_test.go b/internal/service/docdb/cluster_instance_test.go index 24a68925f342..662bb0113839 100644 --- a/internal/service/docdb/cluster_instance_test.go +++ b/internal/service/docdb/cluster_instance_test.go @@ -37,7 +37,7 @@ func TestAccDocDBClusterInstance_basic(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckClusterInstanceExists(ctx, resourceName, &v), resource.TestCheckNoResourceAttr(resourceName, names.AttrApplyImmediately), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "rds", regexache.MustCompile(fmt.Sprintf("db:%s", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "rds", regexache.MustCompile(fmt.Sprintf("db:%s", rName))), resource.TestCheckResourceAttr(resourceName, names.AttrAutoMinorVersionUpgrade, acctest.CtTrue), resource.TestCheckResourceAttrSet(resourceName, names.AttrAvailabilityZone), resource.TestCheckResourceAttrSet(resourceName, "ca_cert_identifier"), diff --git a/internal/service/docdb/cluster_snapshot_test.go b/internal/service/docdb/cluster_snapshot_test.go index c9982d82e886..9c175b1add15 100644 --- a/internal/service/docdb/cluster_snapshot_test.go +++ b/internal/service/docdb/cluster_snapshot_test.go @@ -37,7 +37,7 @@ func TestAccDocDBClusterSnapshot_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckClusterSnapshotExists(ctx, resourceName, &dbClusterSnapshot), resource.TestCheckResourceAttrSet(resourceName, "availability_zones.#"), - acctest.MatchResourceAttrRegionalARN(resourceName, "db_cluster_snapshot_arn", "rds", regexache.MustCompile(`cluster-snapshot:.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, "db_cluster_snapshot_arn", "rds", regexache.MustCompile(`cluster-snapshot:.+`)), resource.TestCheckResourceAttrSet(resourceName, names.AttrEngine), resource.TestCheckResourceAttrSet(resourceName, names.AttrEngineVersion), resource.TestCheckResourceAttr(resourceName, names.AttrKMSKeyID, ""), diff --git a/internal/service/docdb/cluster_test.go b/internal/service/docdb/cluster_test.go index e719e14ddd1e..fb54bd12b4b8 100644 --- a/internal/service/docdb/cluster_test.go +++ b/internal/service/docdb/cluster_test.go @@ -52,7 +52,7 @@ func TestAccDocDBCluster_basic(t *testing.T) { testAccCheckClusterExists(ctx, resourceName, &dbCluster), resource.TestCheckNoResourceAttr(resourceName, names.AttrAllowMajorVersionUpgrade), resource.TestCheckNoResourceAttr(resourceName, names.AttrApplyImmediately), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "rds", regexache.MustCompile(fmt.Sprintf("cluster:%s", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "rds", regexache.MustCompile(fmt.Sprintf("cluster:%s", rName))), resource.TestCheckResourceAttr(resourceName, "availability_zones.#", "3"), resource.TestCheckResourceAttr(resourceName, "backup_retention_period", "1"), resource.TestCheckResourceAttr(resourceName, names.AttrClusterIdentifier, rName), @@ -790,8 +790,8 @@ func TestAccDocDBCluster_GlobalClusterIdentifier_PrimarySecondaryClusters(t *tes { Config: testAccClusterConfig_globalIdentifierPrimarySecondary(rNameGlobal, rNamePrimary, rNameSecondary), Check: resource.ComposeTestCheckFunc( - testAccCheckClusterExistsProvider(ctx, resourceNamePrimary, &primaryDbCluster, acctest.RegionProviderFunc(acctest.Region(), &providers)), - testAccCheckClusterExistsProvider(ctx, resourceNameSecondary, &secondaryDbCluster, acctest.RegionProviderFunc(acctest.AlternateRegion(), &providers)), + testAccCheckClusterExistsProvider(ctx, resourceNamePrimary, &primaryDbCluster, acctest.RegionProviderFunc(ctx, acctest.Region(), &providers)), + testAccCheckClusterExistsProvider(ctx, resourceNameSecondary, &secondaryDbCluster, acctest.RegionProviderFunc(ctx, acctest.AlternateRegion(), &providers)), ), }, }, @@ -819,7 +819,7 @@ func TestAccDocDBCluster_updateEngineMajorVersion(t *testing.T) { testAccCheckClusterExists(ctx, resourceName, &dbCluster), resource.TestCheckResourceAttr(resourceName, names.AttrAllowMajorVersionUpgrade, acctest.CtTrue), resource.TestCheckResourceAttr(resourceName, names.AttrApplyImmediately, acctest.CtTrue), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "rds", regexache.MustCompile(fmt.Sprintf("cluster:%s", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "rds", regexache.MustCompile(fmt.Sprintf("cluster:%s", rName))), resource.TestCheckResourceAttr(resourceName, "availability_zones.#", "3"), resource.TestCheckResourceAttr(resourceName, "backup_retention_period", "1"), resource.TestCheckResourceAttr(resourceName, names.AttrClusterIdentifier, rName), diff --git a/internal/service/docdb/global_cluster_test.go b/internal/service/docdb/global_cluster_test.go index 2901a389d5f7..293d532f5406 100644 --- a/internal/service/docdb/global_cluster_test.go +++ b/internal/service/docdb/global_cluster_test.go @@ -41,7 +41,7 @@ func TestAccDocDBGlobalCluster_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckGlobalClusterExists(ctx, resourceName, &globalCluster), //This is a rds arn - acctest.CheckResourceAttrGlobalARN(resourceName, names.AttrARN, "rds", fmt.Sprintf("global-cluster:%s", rName)), + acctest.CheckResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "rds", fmt.Sprintf("global-cluster:%s", rName)), resource.TestCheckResourceAttr(resourceName, names.AttrDatabaseName, ""), resource.TestCheckResourceAttr(resourceName, names.AttrDeletionProtection, acctest.CtFalse), resource.TestCheckResourceAttrSet(resourceName, names.AttrEngine), diff --git a/internal/service/docdb/service_endpoints_gen_test.go b/internal/service/docdb/service_endpoints_gen_test.go index d113991d47f6..af6197964398 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/docdb/sweep.go b/internal/service/docdb/sweep.go index fe0816b09634..5499dc68c492 100644 --- a/internal/service/docdb/sweep.go +++ b/internal/service/docdb/sweep.go @@ -4,6 +4,7 @@ package docdb import ( + "context" "fmt" "log" "strings" @@ -11,19 +12,17 @@ import ( "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/service/docdb" "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/sweep" "github.com/hashicorp/terraform-provider-aws/internal/sweep/awsv2" "github.com/hashicorp/terraform-provider-aws/internal/tfresource" + "github.com/hashicorp/terraform-provider-aws/names" ) func RegisterSweepers() { - resource.AddTestSweepers("aws_docdb_cluster", &resource.Sweeper{ - Name: "aws_docdb_cluster", - F: sweepClusters, - Dependencies: []string{ - "aws_docdb_cluster_instance", - }, - }) + awsv2.Register("aws_docdb_cluster", sweepClusters, + "aws_docdb_cluster_instance", + ) resource.AddTestSweepers("aws_docdb_cluster_instance", &resource.Sweeper{ Name: "aws_docdb_cluster_instance", @@ -68,36 +67,27 @@ func RegisterSweepers() { }) } -func sweepClusters(region string) error { - ctx := sweep.Context(region) - client, err := sweep.SharedRegionalSweepClient(ctx, region) - if err != nil { - return fmt.Errorf("error getting client: %d", err) - } +func sweepClusters(ctx context.Context, client *conns.AWSClient) ([]sweep.Sweepable, error) { conn := client.DocDBClient(ctx) - input := &docdb.DescribeDBClustersInput{} - sweepResources := make([]sweep.Sweepable, 0) - pages := docdb.NewDescribeDBClustersPaginator(conn, input) + var sweepResources []sweep.Sweepable + r := resourceCluster() + + input := docdb.DescribeDBClustersInput{} + pages := docdb.NewDescribeDBClustersPaginator(conn, &input) for pages.HasMorePages() { page, err := pages.NextPage(ctx) - - if awsv2.SkipSweepError(err) { - log.Printf("[WARN] Skipping DocumentDB Cluster sweep for %s: %s", region, err) - return nil - } - if err != nil { - return fmt.Errorf("error listing DocumentDB Clusters for %s: %s", region, err) + return nil, err } for _, v := range page.DBClusters { arn := aws.ToString(v.DBClusterArn) id := aws.ToString(v.DBClusterIdentifier) - r := resourceCluster() d := r.Data(nil) d.SetId(id) + d.Set(names.AttrARN, arn) d.Set("skip_final_snapshot", true) globalCluster, err := findGlobalClusterByClusterARN(ctx, conn, arn) @@ -115,13 +105,7 @@ func sweepClusters(region string) error { } } - err = sweep.SweepOrchestrator(ctx, sweepResources) - - if err != nil { - return fmt.Errorf("error sweeping DocumentDB Clusters (%s): %w", region, err) - } - - return nil + return sweepResources, nil } func sweepClusterSnapshots(region string) error { diff --git a/internal/service/docdbelastic/service_endpoints_gen_test.go b/internal/service/docdbelastic/service_endpoints_gen_test.go index 25707f020e5f..6916483559d4 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/docdbelastic/sweep.go b/internal/service/docdbelastic/sweep.go index ca3cda987279..427d84fbfa19 100644 --- a/internal/service/docdbelastic/sweep.go +++ b/internal/service/docdbelastic/sweep.go @@ -9,6 +9,7 @@ import ( "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/service/docdbelastic" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-provider-aws/internal/sweep" "github.com/hashicorp/terraform-provider-aws/internal/sweep/awsv2" @@ -25,7 +26,7 @@ func RegisterSweepers() { func sweepClusters(region string) error { ctx := sweep.Context(region) - if region == names.USWest1RegionID { + if region == endpoints.UsWest1RegionID { log.Printf("[WARN] Skipping DocDB Elastic Cluster sweep for region: %s", region) return nil } diff --git a/internal/service/drs/service_endpoints_gen_test.go b/internal/service/drs/service_endpoints_gen_test.go index 27959a892b65..8c0f1e291379 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 c638b73886ba..ac5a70b62810 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/contributor_insights.go b/internal/service/dynamodb/contributor_insights.go index faadfb3b9ce0..fb5c09b6ea4e 100644 --- a/internal/service/dynamodb/contributor_insights.go +++ b/internal/service/dynamodb/contributor_insights.go @@ -77,7 +77,7 @@ func resourceContributorInsightsCreate(ctx context.Context, d *schema.ResourceDa return sdkdiag.AppendErrorf(diags, "creating DynamoDB Contributor Insights for table (%s): %s", tableName, err) } - d.SetId(contributorInsightsCreateResourceID(tableName, indexName, meta.(*conns.AWSClient).AccountID)) + d.SetId(contributorInsightsCreateResourceID(tableName, indexName, meta.(*conns.AWSClient).AccountID(ctx))) if _, err := waitContributorInsightsCreated(ctx, conn, tableName, indexName, d.Timeout(schema.TimeoutCreate)); err != nil { return sdkdiag.AppendErrorf(diags, "waiting for DynamoDB Contributor Insights (%s) create: %s", d.Id(), err) diff --git a/internal/service/dynamodb/global_table_test.go b/internal/service/dynamodb/global_table_test.go index e200d34767cf..0673f1bea156 100644 --- a/internal/service/dynamodb/global_table_test.go +++ b/internal/service/dynamodb/global_table_test.go @@ -10,6 +10,7 @@ import ( "github.com/YakDriver/regexache" "github.com/aws/aws-sdk-go-v2/service/dynamodb" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-plugin-testing/terraform" @@ -50,7 +51,7 @@ func TestAccDynamoDBGlobalTable_basic(t *testing.T) { Config: testAccGlobalTableConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckGlobalTableExists(ctx, resourceName), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "dynamodb", regexache.MustCompile("global-table/[0-9a-z-]+$")), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "dynamodb", regexache.MustCompile("global-table/[0-9a-z-]+$")), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "replica.#", "1"), ), @@ -83,7 +84,7 @@ func TestAccDynamoDBGlobalTable_multipleRegions(t *testing.T) { Config: testAccGlobalTableConfig_multipleRegions1(rName), Check: resource.ComposeTestCheckFunc( testAccCheckGlobalTableExists(ctx, resourceName), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "dynamodb", regexache.MustCompile("global-table/[0-9a-z-]+$")), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "dynamodb", regexache.MustCompile("global-table/[0-9a-z-]+$")), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "replica.#", "1"), ), @@ -156,17 +157,17 @@ func testAccCheckGlobalTableExists(ctx context.Context, n string) resource.TestC func testAccPreCheckGlobalTable(ctx context.Context, t *testing.T) { // Region availability for Version 2017.11.29: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GlobalTables.html supportedRegions := []string{ - names.APNortheast1RegionID, - names.APNortheast2RegionID, - names.APSoutheast1RegionID, - names.APSoutheast2RegionID, - names.EUCentral1RegionID, - names.EUWest1RegionID, - names.EUWest2RegionID, - names.USEast1RegionID, - names.USEast2RegionID, - names.USWest1RegionID, - names.USWest2RegionID, + endpoints.ApNortheast1RegionID, + endpoints.ApNortheast2RegionID, + endpoints.ApSoutheast1RegionID, + endpoints.ApSoutheast2RegionID, + endpoints.EuCentral1RegionID, + endpoints.EuWest1RegionID, + endpoints.EuWest2RegionID, + endpoints.UsEast1RegionID, + endpoints.UsEast2RegionID, + endpoints.UsWest1RegionID, + endpoints.UsWest2RegionID, } acctest.PreCheckRegion(t, supportedRegions...) diff --git a/internal/service/dynamodb/kinesis_streaming_destination_test.go b/internal/service/dynamodb/kinesis_streaming_destination_test.go index 216db131560b..02c234d35a18 100644 --- a/internal/service/dynamodb/kinesis_streaming_destination_test.go +++ b/internal/service/dynamodb/kinesis_streaming_destination_test.go @@ -35,7 +35,7 @@ func TestAccDynamoDBKinesisStreamingDestination_basic(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckKinesisStreamingDestinationExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, "approximate_creation_date_time_precision", ""), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrStreamARN, "kinesis", regexache.MustCompile(fmt.Sprintf("stream/%s", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrStreamARN, "kinesis", regexache.MustCompile(fmt.Sprintf("stream/%s", rName))), resource.TestCheckResourceAttr(resourceName, names.AttrTableName, rName), ), }, @@ -64,7 +64,7 @@ func TestAccDynamoDBKinesisStreamingDestination_approximateCreationDateTimePreci Check: resource.ComposeTestCheckFunc( testAccCheckKinesisStreamingDestinationExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, "approximate_creation_date_time_precision", "MICROSECOND"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrStreamARN, "kinesis", regexache.MustCompile(fmt.Sprintf("stream/%s", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrStreamARN, "kinesis", regexache.MustCompile(fmt.Sprintf("stream/%s", rName))), resource.TestCheckResourceAttr(resourceName, names.AttrTableName, rName), ), }, diff --git a/internal/service/dynamodb/service_endpoints_gen_test.go b/internal/service/dynamodb/service_endpoints_gen_test.go index 5a5a82b299a9..0f6cfe52f259 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/dynamodb/table.go b/internal/service/dynamodb/table.go index ba455942330d..307d7afb21b1 100644 --- a/internal/service/dynamodb/table.go +++ b/internal/service/dynamodb/table.go @@ -810,7 +810,7 @@ func resourceTableCreate(ctx context.Context, d *schema.ResourceData, meta inter } if d.Get("point_in_time_recovery.0.enabled").(bool) { - if err := updatePITR(ctx, conn, d.Id(), true, meta.(*conns.AWSClient).Region, d.Timeout(schema.TimeoutCreate)); err != nil { + if err := updatePITR(ctx, conn, d.Id(), true, meta.(*conns.AWSClient).Region(ctx), d.Timeout(schema.TimeoutCreate)); err != nil { return create.AppendDiagError(diags, names.DynamoDB, create.ErrActionCreating, resNameTable, d.Id(), fmt.Errorf("enabling point in time recovery: %w", err)) } } @@ -1174,7 +1174,7 @@ func resourceTableUpdate(ctx context.Context, d *schema.ResourceData, meta inter } var input = &awstypes.UpdateReplicationGroupMemberAction{ KMSMasterKeyId: sseSpecification.KMSMasterKeyId, - RegionName: aws.String(meta.(*conns.AWSClient).Region), + RegionName: aws.String(meta.(*conns.AWSClient).Region(ctx)), } var update = awstypes.ReplicationGroupUpdate{Update: input} replicaInputs = append(replicaInputs, update) @@ -1250,7 +1250,7 @@ func resourceTableUpdate(ctx context.Context, d *schema.ResourceData, meta inter } if d.HasChange("point_in_time_recovery") { - if err := updatePITR(ctx, conn, d.Id(), d.Get("point_in_time_recovery.0.enabled").(bool), meta.(*conns.AWSClient).Region, d.Timeout(schema.TimeoutUpdate)); err != nil { + if err := updatePITR(ctx, conn, d.Id(), d.Get("point_in_time_recovery.0.enabled").(bool), meta.(*conns.AWSClient).Region(ctx), d.Timeout(schema.TimeoutUpdate)); err != nil { return create.AppendDiagError(diags, names.DynamoDB, create.ErrActionUpdating, resNameTable, d.Id(), err) } } @@ -1430,7 +1430,7 @@ func createReplicas(ctx context.Context, conn *dynamodb.Client, tableName string return fmt.Errorf("creating replica (%s): %w", tfMap["region_name"].(string), err) } - if _, err := waitReplicaActive(ctx, conn, tableName, tfMap["region_name"].(string), timeout); err != nil { + if _, err := waitReplicaActive(ctx, conn, tableName, tfMap["region_name"].(string), replicaDelayDefault, timeout); err != nil { return fmt.Errorf("waiting for replica (%s) creation: %w", tfMap["region_name"].(string), err) } @@ -2021,7 +2021,7 @@ func clearSSEDefaultKey(ctx context.Context, client *conns.AWSClient, sseList [] sse := sseList[0].(map[string]interface{}) - dk, err := kms.FindDefaultKeyARNForService(ctx, client.KMSClient(ctx), "dynamodb", client.Region) + dk, err := kms.FindDefaultKeyARNForService(ctx, client.KMSClient(ctx), "dynamodb", client.Region(ctx)) if err != nil { return sseList } diff --git a/internal/service/dynamodb/table_export_test.go b/internal/service/dynamodb/table_export_test.go index ff4261d2eb4d..6613b4c8b0e5 100644 --- a/internal/service/dynamodb/table_export_test.go +++ b/internal/service/dynamodb/table_export_test.go @@ -53,10 +53,10 @@ func TestAccDynamoDBTableExport_basic(t *testing.T) { resource.TestCheckResourceAttrSet(resourceName, "export_time"), resource.TestCheckResourceAttrSet(resourceName, names.AttrStartTime), resource.TestCheckResourceAttrSet(resourceName, "end_time"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "dynamodb", regexache.MustCompile( + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "dynamodb", regexache.MustCompile( fmt.Sprintf(`table/%s/export/.+$`, rName), )), - acctest.CheckResourceAttrRegionalARN(resourceName, "table_arn", "dynamodb", fmt.Sprintf("table/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, "table_arn", "dynamodb", fmt.Sprintf("table/%s", rName)), ), }, { @@ -106,10 +106,10 @@ func TestAccDynamoDBTableExport_kms(t *testing.T) { resource.TestCheckResourceAttrSet(resourceName, "export_time"), resource.TestCheckResourceAttrSet(resourceName, names.AttrStartTime), resource.TestCheckResourceAttrSet(resourceName, "end_time"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "dynamodb", regexache.MustCompile( + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "dynamodb", regexache.MustCompile( fmt.Sprintf(`table/%s/export/.+$`, rName), )), - acctest.CheckResourceAttrRegionalARN(resourceName, "table_arn", "dynamodb", fmt.Sprintf("table/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, "table_arn", "dynamodb", fmt.Sprintf("table/%s", rName)), ), }, { @@ -158,10 +158,10 @@ func TestAccDynamoDBTableExport_s3Prefix(t *testing.T) { resource.TestCheckResourceAttrSet(resourceName, "export_time"), resource.TestCheckResourceAttrSet(resourceName, names.AttrStartTime), resource.TestCheckResourceAttrSet(resourceName, "end_time"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "dynamodb", regexache.MustCompile( + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "dynamodb", regexache.MustCompile( fmt.Sprintf(`table/%s/export/.+$`, rName), )), - acctest.CheckResourceAttrRegionalARN(resourceName, "table_arn", "dynamodb", fmt.Sprintf("table/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, "table_arn", "dynamodb", fmt.Sprintf("table/%s", rName)), ), }, { diff --git a/internal/service/dynamodb/table_replica.go b/internal/service/dynamodb/table_replica.go index 1dfae612d149..5d866e5b13f4 100644 --- a/internal/service/dynamodb/table_replica.go +++ b/internal/service/dynamodb/table_replica.go @@ -66,6 +66,11 @@ func resourceTableReplica() *schema.Resource { Type: schema.TypeString, Computed: true, }, + "deletion_protection_enabled": { // direct to replica + Type: schema.TypeBool, + Optional: true, + Computed: true, + }, // global_secondary_index read capacity override can be set but not return by aws atm either through main/replica nor directly "global_table_arn": { Type: schema.TypeString, @@ -102,7 +107,7 @@ func resourceTableReplicaCreate(ctx context.Context, d *schema.ResourceData, met var diags diag.Diagnostics conn := meta.(*conns.AWSClient).DynamoDBClient(ctx) - replicaRegion := meta.(*conns.AWSClient).Region + replicaRegion := meta.(*conns.AWSClient).Region(ctx) mainRegion, err := regionFromARN(d.Get("global_table_arn").(string)) if err != nil { @@ -168,7 +173,13 @@ func resourceTableReplicaCreate(ctx context.Context, d *schema.ResourceData, met return create.AppendDiagError(diags, names.DynamoDB, create.ErrActionCreating, resNameTableReplica, d.Get("global_table_arn").(string), err) } - if _, err := waitReplicaActive(ctx, conn, tableName, meta.(*conns.AWSClient).Region, d.Timeout(schema.TimeoutCreate), optFn); err != nil { + // Some attributes take time to propagate to the table replica, so set a delay + delay := replicaDelayDefault + if _, ok := d.GetOk("deletion_protection_enabled"); ok { + delay = replicaPropagationDelay + } + + if _, err := waitReplicaActive(ctx, conn, tableName, meta.(*conns.AWSClient).Region(ctx), d.Timeout(schema.TimeoutCreate), delay, optFn); err != nil { return create.AppendDiagError(diags, names.DynamoDB, create.ErrActionWaitingForCreation, resNameTableReplica, d.Get("global_table_arn").(string), err) } @@ -189,16 +200,10 @@ func resourceTableReplicaCreate(ctx context.Context, d *schema.ResourceData, met } func resourceTableReplicaRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - var - // handled through main table (global table) - // * global_secondary_index - // * kms_key_arn - // * read_capacity_override - // * table_class_override - diags diag.Diagnostics + var diags diag.Diagnostics conn := meta.(*conns.AWSClient).DynamoDBClient(ctx) - replicaRegion := meta.(*conns.AWSClient).Region + replicaRegion := meta.(*conns.AWSClient).Region(ctx) tableName, mainRegion, err := tableReplicaParseResourceID(d.Id()) if err != nil { @@ -206,7 +211,7 @@ func resourceTableReplicaRead(ctx context.Context, d *schema.ResourceData, meta } globalTableARN := arn.ARN{ - AccountID: meta.(*conns.AWSClient).AccountID, + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Partition: meta.(*conns.AWSClient).Partition(ctx), Region: mainRegion, Resource: fmt.Sprintf("table/%s", tableName), @@ -268,12 +273,7 @@ func resourceTableReplicaRead(ctx context.Context, d *schema.ResourceData, meta } func resourceTableReplicaReadReplica(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - var - // handled direct to replica - // * arn - // * point_in_time_recovery - // * tags - diags diag.Diagnostics + var diags diag.Diagnostics conn := meta.(*conns.AWSClient).DynamoDBClient(ctx) tableName, _, err := tableReplicaParseResourceID(d.Id()) @@ -294,6 +294,11 @@ func resourceTableReplicaReadReplica(ctx context.Context, d *schema.ResourceData } d.Set(names.AttrARN, table.TableArn) + d.Set("deletion_protection_enabled", table.DeletionProtectionEnabled) + + if table.SSEDescription != nil && table.SSEDescription.KMSMasterKeyArn != nil { + d.Set(names.AttrKMSKeyARN, table.SSEDescription.KMSMasterKeyArn) + } pitrOut, err := conn.DescribeContinuousBackups(ctx, &dynamodb.DescribeContinuousBackupsInput{ TableName: aws.String(tableName), @@ -303,10 +308,6 @@ func resourceTableReplicaReadReplica(ctx context.Context, d *schema.ResourceData return create.AppendDiagError(diags, names.DynamoDB, create.ErrActionReading, resNameTableReplica, d.Id(), fmt.Errorf("continuous backups: %w", err)) } - if table.SSEDescription != nil && table.SSEDescription.KMSMasterKeyArn != nil { - d.Set(names.AttrKMSKeyARN, table.SSEDescription.KMSMasterKeyArn) - } - if pitrOut != nil && pitrOut.ContinuousBackupsDescription != nil && pitrOut.ContinuousBackupsDescription.PointInTimeRecoveryDescription != nil { d.Set("point_in_time_recovery", pitrOut.ContinuousBackupsDescription.PointInTimeRecoveryDescription.PointInTimeRecoveryStatus == awstypes.PointInTimeRecoveryStatusEnabled) } else { @@ -317,13 +318,7 @@ func resourceTableReplicaReadReplica(ctx context.Context, d *schema.ResourceData } func resourceTableReplicaUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - var - // handled through main table (main) - // * global_secondary_index - // * kms_key_arn - // * read_capacity_override - // * table_class_override - diags diag.Diagnostics + var diags diag.Diagnostics conn := meta.(*conns.AWSClient).DynamoDBClient(ctx) tableName, mainRegion, err := tableReplicaParseResourceID(d.Id()) @@ -331,7 +326,7 @@ func resourceTableReplicaUpdate(ctx context.Context, d *schema.ResourceData, met return create.AppendDiagError(diags, names.DynamoDB, create.ErrActionUpdating, resNameTableReplica, d.Id(), err) } - replicaRegion := meta.(*conns.AWSClient).Region + replicaRegion := meta.(*conns.AWSClient).Region(ctx) if mainRegion == replicaRegion { return create.AppendDiagError(diags, names.DynamoDB, create.ErrActionUpdating, resNameTableReplica, d.Id(), errors.New("replica cannot be in same region as main table")) @@ -393,19 +388,37 @@ func resourceTableReplicaUpdate(ctx context.Context, d *schema.ResourceData, met return create.AppendDiagError(diags, names.DynamoDB, create.ErrActionUpdating, resNameTableReplica, d.Id(), err) } - if _, err := waitReplicaActive(ctx, conn, tableName, replicaRegion, d.Timeout(schema.TimeoutUpdate), optFn); err != nil { + if _, err := waitReplicaActive(ctx, conn, tableName, replicaRegion, d.Timeout(schema.TimeoutUpdate), replicaDelayDefault, optFn); err != nil { return create.AppendDiagError(diags, names.DynamoDB, create.ErrActionWaitingForUpdate, resNameTableReplica, d.Id(), err) } } - // handled direct to replica + // handle replica specific changes // * point_in_time_recovery - if d.HasChange("point_in_time_recovery") { - if err := updatePITR(ctx, conn, tableName, d.Get("point_in_time_recovery").(bool), replicaRegion, d.Timeout(schema.TimeoutUpdate)); err != nil { - return create.AppendDiagError(diags, names.DynamoDB, create.ErrActionUpdating, resNameTableReplica, d.Id(), err) + // * deletion_protection_enabled + if d.HasChanges("point_in_time_recovery", "deletion_protection_enabled") { + if d.HasChange("point_in_time_recovery") { + if err := updatePITR(ctx, conn, tableName, d.Get("point_in_time_recovery").(bool), replicaRegion, d.Timeout(schema.TimeoutUpdate)); err != nil { + return create.AppendDiagError(diags, names.DynamoDB, create.ErrActionUpdating, resNameTableReplica, d.Id(), err) + } + } + + delay := replicaDelayDefault + if d.HasChange("deletion_protection_enabled") { + log.Printf("[DEBUG] Updating DynamoDB Table Replica deletion protection: %v", d.Get("deletion_protection_enabled").(bool)) + + if _, err := conn.UpdateTable(ctx, &dynamodb.UpdateTableInput{ + TableName: aws.String(tableName), + DeletionProtectionEnabled: aws.Bool(d.Get("deletion_protection_enabled").(bool)), + }); err != nil { + return create.AppendDiagError(diags, names.DynamoDB, create.ErrActionUpdating, resNameTableReplica, d.Id(), err) + } + + // Wait for deletion protection to propagate to the table replica. + delay = replicaPropagationDelay } - if _, err := waitReplicaActive(ctx, conn, tableName, replicaRegion, d.Timeout(schema.TimeoutUpdate), optFn); err != nil { + if _, err := waitReplicaActive(ctx, conn, tableName, replicaRegion, d.Timeout(schema.TimeoutUpdate), delay, optFn); err != nil { return create.AppendDiagError(diags, names.DynamoDB, create.ErrActionWaitingForUpdate, resNameTableReplica, d.Id(), err) } } @@ -422,7 +435,7 @@ func resourceTableReplicaDelete(ctx context.Context, d *schema.ResourceData, met return create.AppendDiagError(diags, names.DynamoDB, create.ErrActionDeleting, resNameTableReplica, d.Id(), err) } - replicaRegion := meta.(*conns.AWSClient).Region + replicaRegion := meta.(*conns.AWSClient).Region(ctx) // now main table region. optFn := func(o *dynamodb.Options) { diff --git a/internal/service/dynamodb/table_replica_test.go b/internal/service/dynamodb/table_replica_test.go index fc20db0b9289..ba64263b31cb 100644 --- a/internal/service/dynamodb/table_replica_test.go +++ b/internal/service/dynamodb/table_replica_test.go @@ -26,6 +26,7 @@ func TestAccDynamoDBTableReplica_basic(t *testing.T) { } resourceName := "aws_dynamodb_table_replica.test" + tableResourceName := "aws_dynamodb_table.test" rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resource.ParallelTest(t, resource.TestCase{ @@ -38,7 +39,8 @@ func TestAccDynamoDBTableReplica_basic(t *testing.T) { Config: testAccTableReplicaConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckTableReplicaExists(ctx, resourceName), - resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "2"), + resource.TestCheckResourceAttrPair(resourceName, "global_table_arn", tableResourceName, names.AttrARN), + resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "1"), ), }, { @@ -280,6 +282,59 @@ func TestAccDynamoDBTableReplica_keys(t *testing.T) { }) } +func TestAccDynamoDBTableReplica_deletionProtection(t *testing.T) { + ctx := acctest.Context(t) + if testing.Short() { + t.Skip("skipping long-running test in short mode") + } + + resourceName := "aws_dynamodb_table_replica.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckMultipleRegion(t, 2) }, + ErrorCheck: acctest.ErrorCheck(t, names.DynamoDBServiceID), + ProtoV5ProviderFactories: acctest.ProtoV5FactoriesMultipleRegions(ctx, t, 3), + CheckDestroy: testAccCheckTableReplicaDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccTableReplicaConfig_deletionProtection(rName, true), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckTableReplicaExists(ctx, resourceName), + resource.TestCheckResourceAttr(resourceName, "deletion_protection_enabled", acctest.CtTrue), + ), + }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + }, + { + Config: testAccTableReplicaConfig_deletionProtection(rName, false), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckTableReplicaExists(ctx, resourceName), + resource.TestCheckResourceAttr(resourceName, "deletion_protection_enabled", acctest.CtFalse), + ), + }, + { + Config: testAccTableReplicaConfig_deletionProtection(rName, true), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckTableReplicaExists(ctx, resourceName), + resource.TestCheckResourceAttr(resourceName, "deletion_protection_enabled", acctest.CtTrue), + ), + }, + // disable deletion protection to allow acceptance test cleanup to complete + { + Config: testAccTableReplicaConfig_deletionProtection(rName, false), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckTableReplicaExists(ctx, resourceName), + resource.TestCheckResourceAttr(resourceName, "deletion_protection_enabled", acctest.CtFalse), + ), + }, + }, + }) +} + func testAccCheckTableReplicaDestroy(ctx context.Context) resource.TestCheckFunc { return func(s *terraform.State) error { conn := acctest.Provider.Meta().(*conns.AWSClient).DynamoDBClient(ctx) @@ -369,7 +424,6 @@ resource "aws_dynamodb_table_replica" "test" { tags = { Name = %[1]q - Pozo = "Amargo" } } `, rName)) @@ -584,3 +638,37 @@ resource "aws_dynamodb_table_replica" "test" { } `, rName, key)) } + +func testAccTableReplicaConfig_deletionProtection(rName string, deletionProtection bool) string { + return acctest.ConfigCompose( + acctest.ConfigMultipleRegionProvider(3), + fmt.Sprintf(` +resource "aws_dynamodb_table" "test" { + provider = "awsalternate" + name = %[1]q + hash_key = "TestTableHashKey" + billing_mode = "PAY_PER_REQUEST" + stream_enabled = true + stream_view_type = "NEW_AND_OLD_IMAGES" + + attribute { + name = "TestTableHashKey" + type = "S" + } + + lifecycle { + ignore_changes = [replica] + } +} + +resource "aws_dynamodb_table_replica" "test" { + global_table_arn = aws_dynamodb_table.test.arn + + deletion_protection_enabled = %[2]t + + tags = { + Name = %[1]q + } +} +`, rName, deletionProtection)) +} diff --git a/internal/service/dynamodb/table_test.go b/internal/service/dynamodb/table_test.go index 7f4597d207ea..a8f244992a0b 100644 --- a/internal/service/dynamodb/table_test.go +++ b/internal/service/dynamodb/table_test.go @@ -349,7 +349,7 @@ func TestAccDynamoDBTable_basic(t *testing.T) { Config: testAccTableConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckInitialTableExists(ctx, resourceName, &conf), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "dynamodb", fmt.Sprintf("table/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "dynamodb", fmt.Sprintf("table/%s", rName)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "attribute.*", map[string]string{ names.AttrName: rName, @@ -412,7 +412,7 @@ func TestAccDynamoDBTable_deletion_protection(t *testing.T) { Config: testAccTableConfig_enable_deletion_protection(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckInitialTableExists(ctx, resourceName, &conf), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "dynamodb", fmt.Sprintf("table/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "dynamodb", fmt.Sprintf("table/%s", rName)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "attribute.*", map[string]string{ names.AttrName: rName, @@ -1021,7 +1021,7 @@ func TestAccDynamoDBTable_streamSpecification(t *testing.T) { testAccCheckInitialTableExists(ctx, resourceName, &conf), resource.TestCheckResourceAttr(resourceName, "stream_enabled", acctest.CtTrue), resource.TestCheckResourceAttr(resourceName, "stream_view_type", "KEYS_ONLY"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrStreamARN, "dynamodb", regexache.MustCompile(fmt.Sprintf("table/%s/stream", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrStreamARN, "dynamodb", regexache.MustCompile(fmt.Sprintf("table/%s/stream", rName))), resource.TestCheckResourceAttrSet(resourceName, "stream_label"), ), }, @@ -1036,7 +1036,7 @@ func TestAccDynamoDBTable_streamSpecification(t *testing.T) { testAccCheckInitialTableExists(ctx, resourceName, &conf), resource.TestCheckResourceAttr(resourceName, "stream_enabled", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "stream_view_type", "KEYS_ONLY"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrStreamARN, "dynamodb", regexache.MustCompile(fmt.Sprintf("table/%s/stream", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrStreamARN, "dynamodb", regexache.MustCompile(fmt.Sprintf("table/%s/stream", rName))), resource.TestCheckResourceAttrSet(resourceName, "stream_label"), ), }, @@ -1062,7 +1062,7 @@ func TestAccDynamoDBTable_streamSpecificationDiffs(t *testing.T) { testAccCheckInitialTableExists(ctx, resourceName, &conf), resource.TestCheckResourceAttr(resourceName, "stream_enabled", acctest.CtTrue), resource.TestCheckResourceAttr(resourceName, "stream_view_type", "KEYS_ONLY"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrStreamARN, "dynamodb", regexache.MustCompile(fmt.Sprintf("table/%s/stream", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrStreamARN, "dynamodb", regexache.MustCompile(fmt.Sprintf("table/%s/stream", rName))), resource.TestCheckResourceAttrSet(resourceName, "stream_label"), ), }, @@ -1072,7 +1072,7 @@ func TestAccDynamoDBTable_streamSpecificationDiffs(t *testing.T) { testAccCheckInitialTableExists(ctx, resourceName, &conf), resource.TestCheckResourceAttr(resourceName, "stream_enabled", acctest.CtTrue), resource.TestCheckResourceAttr(resourceName, "stream_view_type", "NEW_IMAGE"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrStreamARN, "dynamodb", regexache.MustCompile(fmt.Sprintf("table/%s/stream", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrStreamARN, "dynamodb", regexache.MustCompile(fmt.Sprintf("table/%s/stream", rName))), resource.TestCheckResourceAttrSet(resourceName, "stream_label"), ), }, @@ -1082,7 +1082,7 @@ func TestAccDynamoDBTable_streamSpecificationDiffs(t *testing.T) { testAccCheckInitialTableExists(ctx, resourceName, &conf), resource.TestCheckResourceAttr(resourceName, "stream_enabled", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "stream_view_type", "NEW_IMAGE"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrStreamARN, "dynamodb", regexache.MustCompile(fmt.Sprintf("table/%s/stream", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrStreamARN, "dynamodb", regexache.MustCompile(fmt.Sprintf("table/%s/stream", rName))), resource.TestCheckResourceAttrSet(resourceName, "stream_label"), ), }, @@ -1092,7 +1092,7 @@ func TestAccDynamoDBTable_streamSpecificationDiffs(t *testing.T) { testAccCheckInitialTableExists(ctx, resourceName, &conf), resource.TestCheckResourceAttr(resourceName, "stream_enabled", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "stream_view_type", "KEYS_ONLY"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrStreamARN, "dynamodb", regexache.MustCompile(fmt.Sprintf("table/%s/stream", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrStreamARN, "dynamodb", regexache.MustCompile(fmt.Sprintf("table/%s/stream", rName))), resource.TestCheckResourceAttrSet(resourceName, "stream_label"), ), }, @@ -1102,7 +1102,7 @@ func TestAccDynamoDBTable_streamSpecificationDiffs(t *testing.T) { testAccCheckInitialTableExists(ctx, resourceName, &conf), resource.TestCheckResourceAttr(resourceName, "stream_enabled", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "stream_view_type", "KEYS_ONLY"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrStreamARN, "dynamodb", regexache.MustCompile(fmt.Sprintf("table/%s/stream", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrStreamARN, "dynamodb", regexache.MustCompile(fmt.Sprintf("table/%s/stream", rName))), resource.TestCheckResourceAttrSet(resourceName, "stream_label"), ), }, @@ -1112,7 +1112,7 @@ func TestAccDynamoDBTable_streamSpecificationDiffs(t *testing.T) { testAccCheckInitialTableExists(ctx, resourceName, &conf), resource.TestCheckResourceAttr(resourceName, "stream_enabled", acctest.CtTrue), resource.TestCheckResourceAttr(resourceName, "stream_view_type", "KEYS_ONLY"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrStreamARN, "dynamodb", regexache.MustCompile(fmt.Sprintf("table/%s/stream", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrStreamARN, "dynamodb", regexache.MustCompile(fmt.Sprintf("table/%s/stream", rName))), resource.TestCheckResourceAttrSet(resourceName, "stream_label"), ), }, @@ -1122,7 +1122,7 @@ func TestAccDynamoDBTable_streamSpecificationDiffs(t *testing.T) { testAccCheckInitialTableExists(ctx, resourceName, &conf), resource.TestCheckResourceAttr(resourceName, "stream_enabled", acctest.CtTrue), resource.TestCheckResourceAttr(resourceName, "stream_view_type", "KEYS_ONLY"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrStreamARN, "dynamodb", regexache.MustCompile(fmt.Sprintf("table/%s/stream", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrStreamARN, "dynamodb", regexache.MustCompile(fmt.Sprintf("table/%s/stream", rName))), resource.TestCheckResourceAttrSet(resourceName, "stream_label"), ), }, @@ -1906,8 +1906,8 @@ func TestAccDynamoDBTable_restoreCrossRegion(t *testing.T) { testAccCheckInitialTableExists(ctx, resourceName, &conf), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceNameRestore, names.AttrName, rNameRestore), - acctest.MatchResourceAttrRegionalARNRegion(resourceName, names.AttrARN, "dynamodb", acctest.Region(), regexache.MustCompile(`table/.+$`)), - acctest.MatchResourceAttrRegionalARNRegion(resourceNameRestore, names.AttrARN, "dynamodb", acctest.AlternateRegion(), regexache.MustCompile(`table/.+$`)), + acctest.MatchResourceAttrRegionalARNRegion(ctx, resourceName, names.AttrARN, "dynamodb", acctest.Region(), regexache.MustCompile(`table/.+$`)), + acctest.MatchResourceAttrRegionalARNRegion(ctx, resourceNameRestore, names.AttrARN, "dynamodb", acctest.AlternateRegion(), regexache.MustCompile(`table/.+$`)), ), }, { @@ -1993,7 +1993,7 @@ func TestAccDynamoDBTable_Replica_single(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckInitialTableExists(ctx, resourceName, &conf), resource.TestCheckResourceAttr(resourceName, "replica.#", "1"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "dynamodb", fmt.Sprintf("table/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "dynamodb", fmt.Sprintf("table/%s", rName)), resource.TestMatchTypeSetElemNestedAttrs(resourceName, "replica.*", map[string]*regexp.Regexp{ names.AttrARN: regexache.MustCompile(fmt.Sprintf(`:dynamodb:%s:`, acctest.AlternateRegion())), }), @@ -2051,7 +2051,7 @@ func TestAccDynamoDBTable_Replica_singleStreamSpecification(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckInitialTableExists(ctx, resourceName, &conf), resource.TestCheckResourceAttr(resourceName, "replica.#", "1"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "dynamodb", fmt.Sprintf("table/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "dynamodb", fmt.Sprintf("table/%s", rName)), resource.TestMatchTypeSetElemNestedAttrs(resourceName, "replica.*", map[string]*regexp.Regexp{ names.AttrARN: regexache.MustCompile(fmt.Sprintf(`:dynamodb:%s:.*table/%s`, acctest.AlternateRegion(), rName)), names.AttrStreamARN: regexache.MustCompile(fmt.Sprintf(`:dynamodb:%s:.*table/%s/stream`, acctest.AlternateRegion(), rName)), @@ -2956,7 +2956,7 @@ func TestAccDynamoDBTable_importTable(t *testing.T) { Config: testAccTableConfig_import(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckInitialTableExists(ctx, resourceName, &conf), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "dynamodb", fmt.Sprintf("table/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "dynamodb", fmt.Sprintf("table/%s", rName)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "read_capacity", "1"), resource.TestCheckResourceAttr(resourceName, "write_capacity", "1"), diff --git a/internal/service/dynamodb/wait.go b/internal/service/dynamodb/wait.go index 45da28cb11f5..6850495003f9 100644 --- a/internal/service/dynamodb/wait.go +++ b/internal/service/dynamodb/wait.go @@ -20,6 +20,8 @@ const ( kinesisStreamingDestinationDisabledTimeout = 5 * time.Minute pitrUpdateTimeout = 30 * time.Second replicaUpdateTimeout = 30 * time.Minute + replicaDelayDefault = 0 * time.Second + replicaPropagationDelay = 90 * time.Second ttlUpdateTimeout = 30 * time.Second updateTableContinuousBackupsTimeout = 20 * time.Minute updateTableTimeout = 20 * time.Minute @@ -77,8 +79,9 @@ func waitImportComplete(ctx context.Context, conn *dynamodb.Client, importARN st return nil, err } -func waitReplicaActive(ctx context.Context, conn *dynamodb.Client, tableName, region string, timeout time.Duration, optFns ...func(*dynamodb.Options)) (*awstypes.TableDescription, error) { //nolint:unparam +func waitReplicaActive(ctx context.Context, conn *dynamodb.Client, tableName, region string, timeout time.Duration, delay time.Duration, optFns ...func(*dynamodb.Options)) (*awstypes.TableDescription, error) { //nolint:unparam stateConf := &retry.StateChangeConf{ + Delay: delay, Pending: enum.Slice(awstypes.ReplicaStatusCreating, awstypes.ReplicaStatusUpdating, awstypes.ReplicaStatusDeleting), Target: enum.Slice(awstypes.ReplicaStatusActive), Refresh: statusReplicaUpdate(ctx, conn, tableName, region, optFns...), diff --git a/internal/service/ec2/consts.go b/internal/service/ec2/consts.go index daa24a88313c..1749aca32623 100644 --- a/internal/service/ec2/consts.go +++ b/internal/service/ec2/consts.go @@ -336,3 +336,7 @@ func verifiedAccessEndpointProtocol_Values() []string { verifiedAccessEndpointProtocolHTTPS, } } + +const ( + supportedRegionServiceStateAvailable = "Available" +) diff --git a/internal/service/ec2/ebs_default_kms_key_data_source.go b/internal/service/ec2/ebs_default_kms_key_data_source.go index 56d47e7eecf3..5cd88937e823 100644 --- a/internal/service/ec2/ebs_default_kms_key_data_source.go +++ b/internal/service/ec2/ebs_default_kms_key_data_source.go @@ -40,7 +40,7 @@ func dataSourceEBSDefaultKMSKeyRead(ctx context.Context, d *schema.ResourceData, return sdkdiag.AppendErrorf(diags, "reading EBS default KMS key: %s", err) } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) d.Set("key_arn", res.KmsKeyId) return diags diff --git a/internal/service/ec2/ebs_encryption_by_default_data_source.go b/internal/service/ec2/ebs_encryption_by_default_data_source.go index caf80bebdc72..b74c6b9df622 100644 --- a/internal/service/ec2/ebs_encryption_by_default_data_source.go +++ b/internal/service/ec2/ebs_encryption_by_default_data_source.go @@ -41,7 +41,7 @@ func dataSourceEBSEncryptionByDefaultRead(ctx context.Context, d *schema.Resourc return sdkdiag.AppendErrorf(diags, "reading default EBS encryption toggle: %s", err) } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) d.Set(names.AttrEnabled, res.EbsEncryptionByDefault) return diags diff --git a/internal/service/ec2/ebs_snapshot.go b/internal/service/ec2/ebs_snapshot.go index e12e5e6a7e8a..22ea44a4304a 100644 --- a/internal/service/ec2/ebs_snapshot.go +++ b/internal/service/ec2/ebs_snapshot.go @@ -192,7 +192,7 @@ func resourceEBSSnapshotRead(ctx context.Context, d *schema.ResourceData, meta i arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: names.EC2, - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), Resource: fmt.Sprintf("snapshot/%s", d.Id()), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/ec2/ebs_snapshot_block_public_access.go b/internal/service/ec2/ebs_snapshot_block_public_access.go index 23342a0e00b6..5beefaa3d273 100644 --- a/internal/service/ec2/ebs_snapshot_block_public_access.go +++ b/internal/service/ec2/ebs_snapshot_block_public_access.go @@ -54,7 +54,7 @@ func resourceEBSSnapshotBlockPublicAccessPut(ctx context.Context, d *schema.Reso } if d.IsNewResource() { - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) } return append(diags, resourceEBSSnapshotBlockPublicAccessRead(ctx, d, meta)...) diff --git a/internal/service/ec2/ebs_snapshot_data_source.go b/internal/service/ec2/ebs_snapshot_data_source.go index 0e337fb54788..b07e0123995d 100644 --- a/internal/service/ec2/ebs_snapshot_data_source.go +++ b/internal/service/ec2/ebs_snapshot_data_source.go @@ -167,7 +167,7 @@ func dataSourceEBSSnapshotRead(ctx context.Context, d *schema.ResourceData, meta arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: names.EC2, - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), Resource: fmt.Sprintf("snapshot/%s", d.Id()), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/ec2/ebs_snapshot_ids_data_source.go b/internal/service/ec2/ebs_snapshot_ids_data_source.go index 9764bf0ed539..1505e32d5086 100644 --- a/internal/service/ec2/ebs_snapshot_ids_data_source.go +++ b/internal/service/ec2/ebs_snapshot_ids_data_source.go @@ -85,7 +85,7 @@ func dataSourceEBSSnapshotIDsRead(ctx context.Context, d *schema.ResourceData, m snapshotIDs = append(snapshotIDs, aws.ToString(v.SnapshotId)) } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) d.Set(names.AttrIDs, snapshotIDs) return diags diff --git a/internal/service/ec2/ebs_snapshot_import.go b/internal/service/ec2/ebs_snapshot_import.go index 5cbc327490d5..cbfda621bee4 100644 --- a/internal/service/ec2/ebs_snapshot_import.go +++ b/internal/service/ec2/ebs_snapshot_import.go @@ -289,7 +289,7 @@ func resourceEBSSnapshotImportRead(ctx context.Context, d *schema.ResourceData, arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: names.EC2, - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), Resource: fmt.Sprintf("snapshot/%s", d.Id()), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/ec2/ebs_snapshot_import_test.go b/internal/service/ec2/ebs_snapshot_import_test.go index 35ac6a1b25e0..03287942b8f8 100644 --- a/internal/service/ec2/ebs_snapshot_import_test.go +++ b/internal/service/ec2/ebs_snapshot_import_test.go @@ -38,7 +38,7 @@ func TestAccEC2EBSSnapshotImport_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckSnapshotExists(ctx, resourceName, &v), acctest.MatchResourceAttrRegionalARNNoAccount(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`snapshot/snap-.+`)), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, diff --git a/internal/service/ec2/ebs_snapshot_test.go b/internal/service/ec2/ebs_snapshot_test.go index 0b9f4efb8d9b..a3de67197874 100644 --- a/internal/service/ec2/ebs_snapshot_test.go +++ b/internal/service/ec2/ebs_snapshot_test.go @@ -39,7 +39,7 @@ func TestAccEC2EBSSnapshot_basic(t *testing.T) { acctest.MatchResourceAttrRegionalARNNoAccount(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`snapshot/snap-.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), resource.TestCheckResourceAttr(resourceName, "outpost_arn", ""), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, "storage_tier", "standard"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), diff --git a/internal/service/ec2/ebs_volume.go b/internal/service/ec2/ebs_volume.go index 693d6adb36b1..c1c0ba05f5ec 100644 --- a/internal/service/ec2/ebs_volume.go +++ b/internal/service/ec2/ebs_volume.go @@ -206,8 +206,8 @@ func resourceEBSVolumeRead(ctx context.Context, d *schema.ResourceData, meta int arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: names.EC2, - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("volume/%s", d.Id()), } d.Set(names.AttrARN, arn.String()) diff --git a/internal/service/ec2/ebs_volume_data_source.go b/internal/service/ec2/ebs_volume_data_source.go index db58735ed498..850610202a06 100644 --- a/internal/service/ec2/ebs_volume_data_source.go +++ b/internal/service/ec2/ebs_volume_data_source.go @@ -137,8 +137,8 @@ func dataSourceEBSVolumeRead(ctx context.Context, d *schema.ResourceData, meta i arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: names.EC2, - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("volume/%s", d.Id()), } d.Set(names.AttrARN, arn.String()) diff --git a/internal/service/ec2/ebs_volume_test.go b/internal/service/ec2/ebs_volume_test.go index 3fc7e49d71b2..4700439d5813 100644 --- a/internal/service/ec2/ebs_volume_test.go +++ b/internal/service/ec2/ebs_volume_test.go @@ -37,7 +37,7 @@ func TestAccEC2EBSVolume_basic(t *testing.T) { Config: testAccEBSVolumeConfig_basic, Check: resource.ComposeTestCheckFunc( testAccCheckVolumeExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`volume/vol-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`volume/vol-.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrEncrypted, acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, names.AttrIOPS, "100"), resource.TestCheckResourceAttr(resourceName, names.AttrKMSKeyID, ""), @@ -536,7 +536,7 @@ func TestAccEC2EBSVolume_GP3_basic(t *testing.T) { Config: testAccEBSVolumeConfig_sizeTypeIOPSThroughput(rName, "10", "gp3", "", ""), Check: resource.ComposeTestCheckFunc( testAccCheckVolumeExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`volume/vol-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`volume/vol-.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrEncrypted, acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, names.AttrIOPS, "3000"), resource.TestCheckResourceAttr(resourceName, names.AttrKMSKeyID, ""), @@ -576,7 +576,7 @@ func TestAccEC2EBSVolume_GP3_iops(t *testing.T) { Config: testAccEBSVolumeConfig_sizeTypeIOPSThroughput(rName, "10", "gp3", "4000", "200"), Check: resource.ComposeTestCheckFunc( testAccCheckVolumeExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`volume/vol-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`volume/vol-.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrEncrypted, acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, names.AttrIOPS, "4000"), resource.TestCheckResourceAttr(resourceName, names.AttrKMSKeyID, ""), @@ -600,7 +600,7 @@ func TestAccEC2EBSVolume_GP3_iops(t *testing.T) { Config: testAccEBSVolumeConfig_sizeTypeIOPSThroughput(rName, "10", "gp3", "5000", "200"), Check: resource.ComposeTestCheckFunc( testAccCheckVolumeExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`volume/vol-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`volume/vol-.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrEncrypted, acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, names.AttrIOPS, "5000"), resource.TestCheckResourceAttr(resourceName, names.AttrKMSKeyID, ""), @@ -634,7 +634,7 @@ func TestAccEC2EBSVolume_GP3_throughput(t *testing.T) { Config: testAccEBSVolumeConfig_sizeTypeIOPSThroughput(rName, "10", "gp3", "", "400"), Check: resource.ComposeTestCheckFunc( testAccCheckVolumeExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`volume/vol-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`volume/vol-.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrEncrypted, acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, names.AttrIOPS, "3000"), resource.TestCheckResourceAttr(resourceName, names.AttrKMSKeyID, ""), @@ -658,7 +658,7 @@ func TestAccEC2EBSVolume_GP3_throughput(t *testing.T) { Config: testAccEBSVolumeConfig_sizeTypeIOPSThroughput(rName, "10", "gp3", "", "600"), Check: resource.ComposeTestCheckFunc( testAccCheckVolumeExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`volume/vol-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`volume/vol-.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrEncrypted, acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, names.AttrIOPS, "3000"), resource.TestCheckResourceAttr(resourceName, names.AttrKMSKeyID, ""), @@ -692,7 +692,7 @@ func TestAccEC2EBSVolume_gp3ToGP2(t *testing.T) { Config: testAccEBSVolumeConfig_sizeTypeIOPSThroughput(rName, "10", "gp3", "3000", "400"), Check: resource.ComposeTestCheckFunc( testAccCheckVolumeExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`volume/vol-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`volume/vol-.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrEncrypted, acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, names.AttrIOPS, "3000"), resource.TestCheckResourceAttr(resourceName, names.AttrKMSKeyID, ""), @@ -716,7 +716,7 @@ func TestAccEC2EBSVolume_gp3ToGP2(t *testing.T) { Config: testAccEBSVolumeConfig_sizeTypeIOPSThroughput(rName, "10", "gp2", "", ""), Check: resource.ComposeTestCheckFunc( testAccCheckVolumeExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`volume/vol-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`volume/vol-.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrEncrypted, acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, names.AttrIOPS, "100"), resource.TestCheckResourceAttr(resourceName, names.AttrKMSKeyID, ""), @@ -750,7 +750,7 @@ func TestAccEC2EBSVolume_io1ToGP3(t *testing.T) { Config: testAccEBSVolumeConfig_sizeTypeIOPSThroughput(rName, "100", "io1", "4000", ""), Check: resource.ComposeTestCheckFunc( testAccCheckVolumeExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`volume/vol-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`volume/vol-.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrEncrypted, acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, names.AttrIOPS, "4000"), resource.TestCheckResourceAttr(resourceName, names.AttrKMSKeyID, ""), @@ -774,7 +774,7 @@ func TestAccEC2EBSVolume_io1ToGP3(t *testing.T) { Config: testAccEBSVolumeConfig_sizeTypeIOPSThroughput(rName, "100", "gp3", "4000", "125"), Check: resource.ComposeTestCheckFunc( testAccCheckVolumeExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`volume/vol-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`volume/vol-.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrEncrypted, acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, names.AttrIOPS, "4000"), resource.TestCheckResourceAttr(resourceName, names.AttrKMSKeyID, ""), @@ -809,7 +809,7 @@ func TestAccEC2EBSVolume_snapshotID(t *testing.T) { Config: testAccEBSVolumeConfig_snapshotID(rName), Check: resource.ComposeTestCheckFunc( testAccCheckVolumeExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`volume/vol-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`volume/vol-.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrEncrypted, acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, names.AttrIOPS, "100"), resource.TestCheckResourceAttr(resourceName, names.AttrKMSKeyID, ""), @@ -850,7 +850,7 @@ func TestAccEC2EBSVolume_snapshotIDAndSize(t *testing.T) { Config: testAccEBSVolumeConfig_snapshotIdAndSize(rName, 20), Check: resource.ComposeTestCheckFunc( testAccCheckVolumeExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`volume/vol-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`volume/vol-.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrEncrypted, acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, names.AttrIOPS, "100"), resource.TestCheckResourceAttr(resourceName, names.AttrKMSKeyID, ""), diff --git a/internal/service/ec2/ebs_volumes_data_source.go b/internal/service/ec2/ebs_volumes_data_source.go index 1d9b40375610..2ce0ef9b8fa9 100644 --- a/internal/service/ec2/ebs_volumes_data_source.go +++ b/internal/service/ec2/ebs_volumes_data_source.go @@ -68,7 +68,7 @@ func dataSourceEBSVolumesRead(ctx context.Context, d *schema.ResourceData, meta volumeIDs = append(volumeIDs, aws.ToString(v.VolumeId)) } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) d.Set(names.AttrIDs, volumeIDs) return diags diff --git a/internal/service/ec2/ec2_ami.go b/internal/service/ec2/ec2_ami.go index b91a38c73a5c..6a3f5c569ad6 100644 --- a/internal/service/ec2/ec2_ami.go +++ b/internal/service/ec2/ec2_ami.go @@ -423,7 +423,7 @@ func resourceAMIRead(ctx context.Context, d *schema.ResourceData, meta interface d.Set("architecture", image.Architecture) imageArn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), Resource: fmt.Sprintf("image/%s", d.Id()), Service: names.EC2, }.String() diff --git a/internal/service/ec2/ec2_ami_copy_test.go b/internal/service/ec2/ec2_ami_copy_test.go index 018c1bf9a199..7cfeee518c91 100644 --- a/internal/service/ec2/ec2_ami_copy_test.go +++ b/internal/service/ec2/ec2_ami_copy_test.go @@ -39,7 +39,7 @@ func TestAccEC2AMICopy_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "platform_details", "Linux/UNIX"), resource.TestCheckResourceAttr(resourceName, "image_type", "machine"), resource.TestCheckResourceAttr(resourceName, "hypervisor", "xen"), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), ), }, }, diff --git a/internal/service/ec2/ec2_ami_data_source.go b/internal/service/ec2/ec2_ami_data_source.go index faa18e56137c..1146e5c7d7a7 100644 --- a/internal/service/ec2/ec2_ami_data_source.go +++ b/internal/service/ec2/ec2_ami_data_source.go @@ -249,6 +249,8 @@ func dataSourceAMIRead(ctx context.Context, d *schema.ResourceData, meta interfa input.Owners = flex.ExpandStringValueList(v.([]interface{})) } + diags = checkMostRecentAndMissingFilters(diags, input, d.Get(names.AttrMostRecent).(bool)) + images, err := findImages(ctx, conn, input) if err != nil { @@ -295,7 +297,7 @@ func dataSourceAMIRead(ctx context.Context, d *schema.ResourceData, meta interfa d.Set("architecture", image.Architecture) imageArn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), Service: names.EC2, Resource: fmt.Sprintf("image/%s", d.Id()), }.String() @@ -418,3 +420,28 @@ func flattenAMIStateReason(m *awstypes.StateReason) map[string]interface{} { } return s } + +// checkMostRecentAndMissingFilters appends a diagnostic if the provided configuration +// uses the most recent image and is not filtered by owner or image ID +func checkMostRecentAndMissingFilters(diags diag.Diagnostics, input *ec2.DescribeImagesInput, mostRecent bool) diag.Diagnostics { + filtered := false + for _, f := range input.Filters { + name := aws.ToString(f.Name) + if name == "image-id" || name == "owner-id" { + filtered = true + } + } + + if mostRecent && len(input.Owners) == 0 && !filtered { + return append(diags, diag.Diagnostic{ + Severity: diag.Warning, + Summary: "Most Recent Image Not Filtered", + Detail: `"most_recent" is set to "true" and results are not filtered by owner or image ID. ` + + "With this configuration, a third party may introduce a new image which " + + "will be returned by this data source. Consider filtering by owner or image ID " + + "to avoid this possibility.", + }) + } + + return diags +} diff --git a/internal/service/ec2/ec2_ami_data_source_test.go b/internal/service/ec2/ec2_ami_data_source_test.go index 1ca5415054f4..795cb95926a3 100644 --- a/internal/service/ec2/ec2_ami_data_source_test.go +++ b/internal/service/ec2/ec2_ami_data_source_test.go @@ -7,12 +7,90 @@ import ( "testing" "github.com/YakDriver/regexache" + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/service/ec2" + awstypes "github.com/aws/aws-sdk-go-v2/service/ec2/types" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-provider-aws/internal/acctest" + tfec2 "github.com/hashicorp/terraform-provider-aws/internal/service/ec2" "github.com/hashicorp/terraform-provider-aws/names" ) +func TestCheckMostRecentAndMissingFilters(t *testing.T) { + t.Parallel() + + tests := []struct { + name string + input *ec2.DescribeImagesInput + mostRecent bool + wantDiag bool + }{ + { + name: "most_recent false", + input: &ec2.DescribeImagesInput{}, + mostRecent: false, + }, + { + name: "image-id filter", + input: &ec2.DescribeImagesInput{ + Filters: []awstypes.Filter{ + { + Name: aws.String("image-id"), + Values: []string{"ami-123"}, + }, + }, + }, + mostRecent: true, + }, + { + name: "owner-id filter", + input: &ec2.DescribeImagesInput{ + Filters: []awstypes.Filter{ + { + Name: aws.String("owner-id"), + Values: []string{"amazon"}, + }, + }, + }, + mostRecent: true, + }, + { + name: "owners argument", + input: &ec2.DescribeImagesInput{ + Owners: []string{"amazon"}, + }, + mostRecent: true, + }, + { + name: "missing filters", + input: &ec2.DescribeImagesInput{ + Filters: []awstypes.Filter{ + { + Name: aws.String("name"), // nosemgrep:ci.literal-Name-string-test-constant,ci.literal-name-string-constant + Values: []string{"some-ami-name-*"}, + }, + }, + }, + mostRecent: true, + wantDiag: true, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + var diags diag.Diagnostics + got := tfec2.CheckMostRecentAndMissingFilters(diags, tt.input, tt.mostRecent) + if (len(got) > 0) != tt.wantDiag { + t.Errorf("CheckMostRecentAndMissingFilters() diag = %v, wantErr %v", got, tt.wantDiag) + return + } + }) + } +} + func TestAccEC2AMIDataSource_linuxInstance(t *testing.T) { ctx := acctest.Context(t) datasourceName := "data.aws_ami.test" @@ -195,7 +273,7 @@ func TestAccEC2AMIDataSource_gp3BlockDevice(t *testing.T) { resource.TestCheckResourceAttrPair(datasourceName, "block_device_mappings.#", resourceName, "ebs_block_device.#"), resource.TestCheckResourceAttrPair(datasourceName, names.AttrDescription, resourceName, names.AttrDescription), resource.TestCheckResourceAttrPair(datasourceName, "image_id", resourceName, names.AttrID), - acctest.CheckResourceAttrAccountID(datasourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, datasourceName, names.AttrOwnerID), resource.TestCheckResourceAttrPair(datasourceName, "root_device_name", resourceName, "root_device_name"), resource.TestCheckResourceAttr(datasourceName, "root_device_type", "ebs"), resource.TestCheckResourceAttrPair(datasourceName, "root_snapshot_id", resourceName, "root_snapshot_id"), @@ -350,7 +428,7 @@ data "aws_ami" "test" { filter { name = "name" - values = ["AwsMarketPublished_IBM App Connect v12.0.12.0 and IBM MQ v9.3.0.16 with RapidDeploy 5.1.12 -422d2ddd-3288-4067-be37-4e2a69450606"] + values = ["AwsMarketPublished_IBM App Connect v13.0.1.0 and IBM MQ v9.4.0.5 with RapidDeploy 5.1.15 by-422d2ddd-3288-4067-be37-4e2a69450606"] } } ` diff --git a/internal/service/ec2/ec2_ami_from_instance_test.go b/internal/service/ec2/ec2_ami_from_instance_test.go index 1b13699b9577..1ca427a07c38 100644 --- a/internal/service/ec2/ec2_ami_from_instance_test.go +++ b/internal/service/ec2/ec2_ami_from_instance_test.go @@ -38,7 +38,7 @@ func TestAccEC2AMIFromInstance_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "platform_details", "Linux/UNIX"), resource.TestCheckResourceAttr(resourceName, "image_type", "machine"), resource.TestCheckResourceAttr(resourceName, "hypervisor", "xen"), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, diff --git a/internal/service/ec2/ec2_ami_launch_permission_test.go b/internal/service/ec2/ec2_ami_launch_permission_test.go index 46c224715010..6063d87c4a22 100644 --- a/internal/service/ec2/ec2_ami_launch_permission_test.go +++ b/internal/service/ec2/ec2_ami_launch_permission_test.go @@ -33,7 +33,7 @@ func TestAccEC2AMILaunchPermission_basic(t *testing.T) { Config: testAccAMILaunchPermissionConfig_accountID(rName), Check: resource.ComposeTestCheckFunc( testAccCheckAMILaunchPermissionExists(ctx, resourceName), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrAccountID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrAccountID), resource.TestCheckResourceAttr(resourceName, "group", ""), resource.TestCheckResourceAttr(resourceName, "organization_arn", ""), resource.TestCheckResourceAttr(resourceName, "organizational_unit_arn", ""), diff --git a/internal/service/ec2/ec2_ami_test.go b/internal/service/ec2/ec2_ami_test.go index 0c11b40c2d3f..2b9fa7204b00 100644 --- a/internal/service/ec2/ec2_ami_test.go +++ b/internal/service/ec2/ec2_ami_test.go @@ -60,7 +60,7 @@ func TestAccEC2AMI_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "imds_support", ""), resource.TestCheckResourceAttr(resourceName, "kernel_id", ""), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, "platform_details", "Linux/UNIX"), resource.TestCheckResourceAttr(resourceName, "ramdisk_id", ""), resource.TestCheckResourceAttr(resourceName, "root_device_name", "/dev/sda1"), @@ -262,7 +262,7 @@ func TestAccEC2AMI_ephemeralBlockDevices(t *testing.T) { }), resource.TestCheckResourceAttr(resourceName, "kernel_id", ""), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, "ramdisk_id", ""), resource.TestCheckResourceAttr(resourceName, "root_device_name", "/dev/sda1"), resource.TestCheckResourceAttrPair(resourceName, "root_snapshot_id", snapshotResourceName, names.AttrID), @@ -329,7 +329,7 @@ func TestAccEC2AMI_gp3BlockDevice(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "ephemeral_block_device.#", "0"), resource.TestCheckResourceAttr(resourceName, "kernel_id", ""), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, "ramdisk_id", ""), resource.TestCheckResourceAttr(resourceName, "root_device_name", "/dev/sda1"), resource.TestCheckResourceAttrPair(resourceName, "root_snapshot_id", snapshotResourceName, names.AttrID), diff --git a/internal/service/ec2/ec2_availability_zone_group_test.go b/internal/service/ec2/ec2_availability_zone_group_test.go index ff1a8a8b56b2..673a111658fa 100644 --- a/internal/service/ec2/ec2_availability_zone_group_test.go +++ b/internal/service/ec2/ec2_availability_zone_group_test.go @@ -8,6 +8,7 @@ import ( "testing" awstypes "github.com/aws/aws-sdk-go-v2/service/ec2/types" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-provider-aws/internal/acctest" "github.com/hashicorp/terraform-provider-aws/names" @@ -23,7 +24,7 @@ func TestAccEC2AvailabilityZoneGroup_optInStatus(t *testing.T) { localZone := "us-west-2-lax-1" // lintignore:AWSAT003 resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckRegion(t, names.USWest2RegionID) }, + PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckRegion(t, endpoints.UsWest2RegionID) }, ErrorCheck: acctest.ErrorCheck(t, names.EC2ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: nil, diff --git a/internal/service/ec2/ec2_availability_zones_data_source.go b/internal/service/ec2/ec2_availability_zones_data_source.go index bc9f3749a0c5..311e55300a15 100644 --- a/internal/service/ec2/ec2_availability_zones_data_source.go +++ b/internal/service/ec2/ec2_availability_zones_data_source.go @@ -139,7 +139,7 @@ func dataSourceAvailabilityZonesRead(ctx context.Context, d *schema.ResourceData zoneIds = append(zoneIds, zoneID) } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) if err := d.Set("group_names", groupNames); err != nil { return sdkdiag.AppendErrorf(diags, "setting group_names: %s", err) diff --git a/internal/service/ec2/ec2_capacity_block_reservation_test.go b/internal/service/ec2/ec2_capacity_block_reservation_test.go index 91e709ce523f..a9e6c766c819 100644 --- a/internal/service/ec2/ec2_capacity_block_reservation_test.go +++ b/internal/service/ec2/ec2_capacity_block_reservation_test.go @@ -44,7 +44,7 @@ func TestAccEC2CapacityBlockReservation_basic(t *testing.T) { Config: testAccCapacityBlockReservationConfig_basic(startDate, endDate), Check: resource.ComposeTestCheckFunc( testAccCheckCapacityBlockReservationExists(ctx, resourceName, &reservation), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`capacity-reservation/cr-:.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`capacity-reservation/cr-:.+`)), resource.TestCheckResourceAttrPair(dataSourceName, names.AttrAvailabilityZone, resourceName, names.AttrAvailabilityZone), resource.TestCheckResourceAttrPair(dataSourceName, "capacity_block_offering_id", resourceName, "capacity_block_offering_id"), resource.TestCheckResourceAttrPair(dataSourceName, "start_date", resourceName, "start_date"), diff --git a/internal/service/ec2/ec2_capacity_reservation_test.go b/internal/service/ec2/ec2_capacity_reservation_test.go index 4ed16d365e0a..15ca163d7c1e 100644 --- a/internal/service/ec2/ec2_capacity_reservation_test.go +++ b/internal/service/ec2/ec2_capacity_reservation_test.go @@ -39,7 +39,7 @@ func TestAccEC2CapacityReservation_basic(t *testing.T) { Config: testAccCapacityReservationConfig_basic, Check: resource.ComposeTestCheckFunc( testAccCheckCapacityReservationExists(ctx, resourceName, &cr), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`capacity-reservation/cr-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`capacity-reservation/cr-.+`)), resource.TestCheckResourceAttrPair(resourceName, names.AttrAvailabilityZone, availabilityZonesDataSourceName, "names.0"), resource.TestCheckResourceAttr(resourceName, "ebs_optimized", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "end_date", ""), @@ -50,7 +50,7 @@ func TestAccEC2CapacityReservation_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "instance_platform", "Linux/UNIX"), resource.TestCheckResourceAttr(resourceName, names.AttrInstanceType, "t2.micro"), resource.TestCheckResourceAttr(resourceName, "outpost_arn", ""), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, "placement_group_arn", ""), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttr(resourceName, "tenancy", "default"), diff --git a/internal/service/ec2/ec2_eips_data_source.go b/internal/service/ec2/ec2_eips_data_source.go index e1c2e1ce5cbc..d2d462ae28cc 100644 --- a/internal/service/ec2/ec2_eips_data_source.go +++ b/internal/service/ec2/ec2_eips_data_source.go @@ -82,7 +82,7 @@ func dataSourceEIPsRead(ctx context.Context, d *schema.ResourceData, meta interf } } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) d.Set("allocation_ids", allocationIDs) d.Set("public_ips", publicIPs) diff --git a/internal/service/ec2/ec2_fleet.go b/internal/service/ec2/ec2_fleet.go index 425faedc1c83..966127e72216 100644 --- a/internal/service/ec2/ec2_fleet.go +++ b/internal/service/ec2/ec2_fleet.go @@ -809,8 +809,8 @@ func resourceFleetRead(ctx context.Context, d *schema.ResourceData, meta interfa arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: names.EC2, - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("fleet/%s", d.Id()), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/ec2/ec2_fleet_test.go b/internal/service/ec2/ec2_fleet_test.go index b73c49ec8ae1..cddb9fca08a7 100644 --- a/internal/service/ec2/ec2_fleet_test.go +++ b/internal/service/ec2/ec2_fleet_test.go @@ -41,7 +41,7 @@ func TestAccEC2Fleet_basic(t *testing.T) { Config: testAccFleetConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckFleetExists(ctx, resourceName, &fleet1), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`fleet/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`fleet/.+`)), resource.TestCheckResourceAttr(resourceName, "context", ""), resource.TestCheckResourceAttr(resourceName, "excess_capacity_termination_policy", "termination"), resource.TestCheckResourceAttr(resourceName, "fleet_state", "active"), diff --git a/internal/service/ec2/ec2_host.go b/internal/service/ec2/ec2_host.go index 400101e1f958..469b4146679a 100644 --- a/internal/service/ec2/ec2_host.go +++ b/internal/service/ec2/ec2_host.go @@ -165,7 +165,7 @@ func resourceHostRead(ctx context.Context, d *schema.ResourceData, meta interfac arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: names.EC2, - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), AccountID: aws.ToString(host.OwnerId), Resource: fmt.Sprintf("dedicated-host/%s", d.Id()), }.String() diff --git a/internal/service/ec2/ec2_host_data_source.go b/internal/service/ec2/ec2_host_data_source.go index 67a677a5c37e..f170cb5b9751 100644 --- a/internal/service/ec2/ec2_host_data_source.go +++ b/internal/service/ec2/ec2_host_data_source.go @@ -118,7 +118,7 @@ func dataSourceHostRead(ctx context.Context, d *schema.ResourceData, meta interf arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: names.EC2, - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), AccountID: aws.ToString(host.OwnerId), Resource: fmt.Sprintf("dedicated-host/%s", d.Id()), }.String() diff --git a/internal/service/ec2/ec2_host_test.go b/internal/service/ec2/ec2_host_test.go index a1ce828541da..cbd059872187 100644 --- a/internal/service/ec2/ec2_host_test.go +++ b/internal/service/ec2/ec2_host_test.go @@ -35,13 +35,13 @@ func TestAccEC2Host_basic(t *testing.T) { Config: testAccHostConfig_basic(), Check: resource.ComposeTestCheckFunc( testAccCheckHostExists(ctx, resourceName, &host), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`dedicated-host/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`dedicated-host/.+`)), resource.TestCheckResourceAttr(resourceName, "auto_placement", "on"), resource.TestCheckResourceAttr(resourceName, "host_recovery", "off"), resource.TestCheckResourceAttr(resourceName, "instance_family", ""), resource.TestCheckResourceAttr(resourceName, names.AttrInstanceType, "c8g.large"), resource.TestCheckResourceAttr(resourceName, "outpost_arn", ""), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -93,12 +93,12 @@ func TestAccEC2Host_instanceFamily(t *testing.T) { Config: testAccHostConfig_instanceFamily(rName), Check: resource.ComposeTestCheckFunc( testAccCheckHostExists(ctx, resourceName, &host), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`dedicated-host/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`dedicated-host/.+`)), resource.TestCheckResourceAttr(resourceName, "auto_placement", "off"), resource.TestCheckResourceAttr(resourceName, "host_recovery", "on"), resource.TestCheckResourceAttr(resourceName, "instance_family", "c8g"), resource.TestCheckResourceAttr(resourceName, names.AttrInstanceType, ""), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "1"), resource.TestCheckResourceAttr(resourceName, "tags.Name", rName), ), @@ -112,12 +112,12 @@ func TestAccEC2Host_instanceFamily(t *testing.T) { Config: testAccHostConfig_instanceType(rName), Check: resource.ComposeTestCheckFunc( testAccCheckHostExists(ctx, resourceName, &host), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`dedicated-host/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`dedicated-host/.+`)), resource.TestCheckResourceAttr(resourceName, "auto_placement", "on"), resource.TestCheckResourceAttr(resourceName, "host_recovery", "off"), resource.TestCheckResourceAttr(resourceName, "instance_family", ""), resource.TestCheckResourceAttr(resourceName, names.AttrInstanceType, "c8g.xlarge"), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "1"), resource.TestCheckResourceAttr(resourceName, "tags.Name", rName), ), diff --git a/internal/service/ec2/ec2_image_block_public_access.go b/internal/service/ec2/ec2_image_block_public_access.go index 53b71c31459b..fc5483c98d82 100644 --- a/internal/service/ec2/ec2_image_block_public_access.go +++ b/internal/service/ec2/ec2_image_block_public_access.go @@ -70,7 +70,7 @@ func resourceImageBlockPublicAccessPut(ctx context.Context, d *schema.ResourceDa } if d.IsNewResource() { - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) } if err := waitImageBlockPublicAccessState(ctx, conn, state, d.Timeout(schema.TimeoutUpdate)); err != nil { diff --git a/internal/service/ec2/ec2_instance.go b/internal/service/ec2/ec2_instance.go index fb57c559e20d..847636a25023 100644 --- a/internal/service/ec2/ec2_instance.go +++ b/internal/service/ec2/ec2_instance.go @@ -1362,9 +1362,9 @@ func resourceInstanceRead(ctx context.Context, d *schema.ResourceData, meta inte arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), Service: names.EC2, - AccountID: meta.(*conns.AWSClient).AccountID, + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("instance/%s", d.Id()), } d.Set(names.AttrARN, arn.String()) diff --git a/internal/service/ec2/ec2_instance_connect_endpoint_test.go b/internal/service/ec2/ec2_instance_connect_endpoint_test.go index c9b330409875..0e6668e0fb0e 100644 --- a/internal/service/ec2/ec2_instance_connect_endpoint_test.go +++ b/internal/service/ec2/ec2_instance_connect_endpoint_test.go @@ -36,12 +36,12 @@ func TestAccEC2InstanceConnectEndpoint_basic(t *testing.T) { Config: testAccInstanceConnectEndpointConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckInstanceConnectEndpointExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`instance-connect-endpoint/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`instance-connect-endpoint/.+`)), resource.TestCheckResourceAttrSet(resourceName, names.AttrAvailabilityZone), resource.TestCheckResourceAttrSet(resourceName, names.AttrDNSName), resource.TestCheckResourceAttrSet(resourceName, "fips_dns_name"), acctest.CheckResourceAttrGreaterThanOrEqualValue(resourceName, "network_interface_ids.#", 1), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, "preserve_client_ip", acctest.CtTrue), resource.TestCheckResourceAttr(resourceName, "security_group_ids.#", "1"), resource.TestCheckResourceAttrPair(resourceName, names.AttrSubnetID, subnetResourceName, names.AttrID), @@ -145,7 +145,7 @@ func TestAccEC2InstanceConnectEndpoint_securityGroupIDs(t *testing.T) { Config: testAccInstanceConnectEndpointConfig_securityGroupIDs(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckInstanceConnectEndpointExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`instance-connect-endpoint/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`instance-connect-endpoint/.+`)), resource.TestCheckResourceAttrSet(resourceName, names.AttrAvailabilityZone), resource.TestCheckResourceAttrSet(resourceName, names.AttrDNSName), resource.TestCheckResourceAttrSet(resourceName, "fips_dns_name"), diff --git a/internal/service/ec2/ec2_instance_data_source.go b/internal/service/ec2/ec2_instance_data_source.go index 0c427dc2116d..8e8f42f4ef8e 100644 --- a/internal/service/ec2/ec2_instance_data_source.go +++ b/internal/service/ec2/ec2_instance_data_source.go @@ -453,9 +453,9 @@ func dataSourceInstanceRead(ctx context.Context, d *schema.ResourceData, meta in // ARN arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), Service: names.EC2, - AccountID: meta.(*conns.AWSClient).AccountID, + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("instance/%s", d.Id()), } d.Set(names.AttrARN, arn.String()) diff --git a/internal/service/ec2/ec2_instance_metadata_defaults.go b/internal/service/ec2/ec2_instance_metadata_defaults.go index 0d24e6f9e613..2f4aff35866f 100644 --- a/internal/service/ec2/ec2_instance_metadata_defaults.go +++ b/internal/service/ec2/ec2_instance_metadata_defaults.go @@ -121,7 +121,7 @@ func (r *instanceMetadataDefaultsResource) Create(ctx context.Context, request r } // Set values for unknowns. - data.ID = types.StringValue(r.Meta().AccountID) + data.ID = types.StringValue(r.Meta().AccountID(ctx)) response.Diagnostics.Append(response.State.Set(ctx, data)...) } diff --git a/internal/service/ec2/ec2_instance_test.go b/internal/service/ec2/ec2_instance_test.go index 92345330b680..2740afb15fbc 100644 --- a/internal/service/ec2/ec2_instance_test.go +++ b/internal/service/ec2/ec2_instance_test.go @@ -19,6 +19,7 @@ import ( "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/service/ec2" awstypes "github.com/aws/aws-sdk-go-v2/service/ec2/types" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" "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" @@ -188,7 +189,7 @@ func TestAccEC2Instance_basic(t *testing.T) { Config: testAccInstanceConfig_basic(), Check: resource.ComposeTestCheckFunc( testAccCheckInstanceExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`instance/i-[0-9a-z]+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`instance/i-[0-9a-z]+`)), resource.TestCheckResourceAttr(resourceName, "instance_initiated_shutdown_behavior", "stop"), ), }, @@ -305,7 +306,7 @@ func TestAccEC2Instance_atLeastOneOtherEBSVolume(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "root_block_device.#", "0"), // This is an instance store AMI resource.TestCheckResourceAttr(resourceName, "ebs_block_device.#", "0"), resource.TestCheckResourceAttr(resourceName, "outpost_arn", ""), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`instance/i-[0-9a-z]+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`instance/i-[0-9a-z]+`)), ), }, { @@ -3905,7 +3906,7 @@ func TestAccEC2Instance_cpuOptionsAmdSevSnpUnspecifiedToDisabledToEnabledToUnspe acctest.PreCheck(ctx, t) // AMD SEV-SNP currently only supported in us-east-2 // Ref: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/snp-requirements.html - acctest.PreCheckRegion(t, names.USEast2RegionID) + acctest.PreCheckRegion(t, endpoints.UsEast2RegionID) }, ErrorCheck: acctest.ErrorCheck(t, names.EC2ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, @@ -3972,7 +3973,7 @@ func TestAccEC2Instance_cpuOptionsAmdSevSnpUnspecifiedToEnabledToDisabledToUnspe acctest.PreCheck(ctx, t) // AMD SEV-SNP currently only supported in us-east-2 // Ref: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/snp-requirements.html - acctest.PreCheckRegion(t, names.USEast2RegionID) + acctest.PreCheckRegion(t, endpoints.UsEast2RegionID) }, ErrorCheck: acctest.ErrorCheck(t, names.EC2ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, @@ -4038,7 +4039,7 @@ func TestAccEC2Instance_cpuOptionsAmdSevSnpEnabledToDisabled(t *testing.T) { acctest.PreCheck(ctx, t) // AMD SEV-SNP currently only supported in us-east-2 // Ref: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/snp-requirements.html - acctest.PreCheckRegion(t, names.USEast2RegionID) + acctest.PreCheckRegion(t, endpoints.UsEast2RegionID) }, ErrorCheck: acctest.ErrorCheck(t, names.EC2ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, @@ -4082,7 +4083,7 @@ func TestAccEC2Instance_cpuOptionsAmdSevSnpDisabledToEnabled(t *testing.T) { acctest.PreCheck(ctx, t) // AMD SEV-SNP currently only supported in us-east-2 // Ref: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/snp-requirements.html - acctest.PreCheckRegion(t, names.USEast2RegionID) + acctest.PreCheckRegion(t, endpoints.UsEast2RegionID) }, ErrorCheck: acctest.ErrorCheck(t, names.EC2ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, @@ -4131,7 +4132,7 @@ func TestAccEC2Instance_cpuOptionsAmdSevSnpCoreThreads(t *testing.T) { acctest.PreCheck(ctx, t) // AMD SEV-SNP currently only supported in us-east-2 // Ref: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/snp-requirements.html - acctest.PreCheckRegion(t, names.USEast2RegionID) + acctest.PreCheckRegion(t, endpoints.UsEast2RegionID) }, ErrorCheck: acctest.ErrorCheck(t, names.EC2ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, @@ -5808,7 +5809,7 @@ func testAccPreCheckHasDefaultVPCDefaultSubnets(ctx context.Context, t *testing. client := acctest.Provider.Meta().(*conns.AWSClient) if !(hasDefaultVPC(ctx, t) && defaultSubnetCount(ctx, t) > 0) { - t.Skipf("skipping tests; %s does not have a default VPC with default subnets", client.Region) + t.Skipf("skipping tests; %s does not have a default VPC with default subnets", client.Region(ctx)) } } diff --git a/internal/service/ec2/ec2_instance_type_offerings_data_source.go b/internal/service/ec2/ec2_instance_type_offerings_data_source.go index 4ba5a4691122..9d6563a274ef 100644 --- a/internal/service/ec2/ec2_instance_type_offerings_data_source.go +++ b/internal/service/ec2/ec2_instance_type_offerings_data_source.go @@ -83,7 +83,7 @@ func dataSourceInstanceTypeOfferingsRead(ctx context.Context, d *schema.Resource locationTypes = append(locationTypes, string(instanceTypeOffering.LocationType)) } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) d.Set("instance_types", instanceTypes) d.Set("locations", locations) d.Set("location_types", locationTypes) diff --git a/internal/service/ec2/ec2_instance_types_data_source.go b/internal/service/ec2/ec2_instance_types_data_source.go index 44586c540bd4..99329f23b02d 100644 --- a/internal/service/ec2/ec2_instance_types_data_source.go +++ b/internal/service/ec2/ec2_instance_types_data_source.go @@ -57,7 +57,7 @@ func dataSourceInstanceTypesRead(ctx context.Context, d *schema.ResourceData, me instanceTypes = append(instanceTypes, string(instanceType.InstanceType)) } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) d.Set("instance_types", instanceTypes) return diags diff --git a/internal/service/ec2/ec2_instances_data_source.go b/internal/service/ec2/ec2_instances_data_source.go index e125c0da0855..2b49ca71797d 100644 --- a/internal/service/ec2/ec2_instances_data_source.go +++ b/internal/service/ec2/ec2_instances_data_source.go @@ -115,7 +115,7 @@ func dataSourceInstancesRead(ctx context.Context, d *schema.ResourceData, meta i } } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) d.Set(names.AttrIDs, instanceIDs) d.Set("ipv6_addresses", ipv6Addresses) d.Set("private_ips", privateIPs) diff --git a/internal/service/ec2/ec2_key_pair.go b/internal/service/ec2/ec2_key_pair.go index 41518a92533f..06ce5d0a687a 100644 --- a/internal/service/ec2/ec2_key_pair.go +++ b/internal/service/ec2/ec2_key_pair.go @@ -140,8 +140,8 @@ func resourceKeyPairRead(ctx context.Context, d *schema.ResourceData, meta inter arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: names.EC2, - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: "key-pair/" + d.Id(), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/ec2/ec2_key_pair_data_source.go b/internal/service/ec2/ec2_key_pair_data_source.go index aab5de4aa2e7..99db1b8badd2 100644 --- a/internal/service/ec2/ec2_key_pair_data_source.go +++ b/internal/service/ec2/ec2_key_pair_data_source.go @@ -103,8 +103,8 @@ func dataSourceKeyPairRead(ctx context.Context, d *schema.ResourceData, meta int arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "ec2", - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: "key-pair/" + keyName, }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/ec2/ec2_key_pair_test.go b/internal/service/ec2/ec2_key_pair_test.go index 3d01865a7f27..b9b0484dc76e 100644 --- a/internal/service/ec2/ec2_key_pair_test.go +++ b/internal/service/ec2/ec2_key_pair_test.go @@ -41,7 +41,7 @@ func TestAccEC2KeyPair_basic(t *testing.T) { Config: testAccKeyPairConfig_basic(rName, publicKey), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckKeyPairExists(ctx, resourceName, &keyPair), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", fmt.Sprintf("key-pair/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", fmt.Sprintf("key-pair/%s", rName)), resource.TestMatchResourceAttr(resourceName, "fingerprint", regexache.MustCompile(`[0-9a-f]{2}(:[0-9a-f]{2}){15}`)), resource.TestCheckResourceAttr(resourceName, "key_name", rName), resource.TestCheckResourceAttr(resourceName, "key_name_prefix", ""), diff --git a/internal/service/ec2/ec2_launch_template.go b/internal/service/ec2/ec2_launch_template.go index 888a47e8da47..4600a5434c79 100644 --- a/internal/service/ec2/ec2_launch_template.go +++ b/internal/service/ec2/ec2_launch_template.go @@ -1054,8 +1054,8 @@ func resourceLaunchTemplateRead(ctx context.Context, d *schema.ResourceData, met arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: names.EC2, - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("launch-template/%s", d.Id()), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/ec2/ec2_launch_template_data_source.go b/internal/service/ec2/ec2_launch_template_data_source.go index 0c1f17747c50..8f4c710d5bcf 100644 --- a/internal/service/ec2/ec2_launch_template_data_source.go +++ b/internal/service/ec2/ec2_launch_template_data_source.go @@ -833,8 +833,8 @@ func dataSourceLaunchTemplateRead(ctx context.Context, d *schema.ResourceData, m arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: names.EC2, - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("launch-template/%s", d.Id()), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/ec2/ec2_launch_template_test.go b/internal/service/ec2/ec2_launch_template_test.go index 316cce1240f4..bdf4fc1bb422 100644 --- a/internal/service/ec2/ec2_launch_template_test.go +++ b/internal/service/ec2/ec2_launch_template_test.go @@ -37,7 +37,7 @@ func TestAccEC2LaunchTemplate_basic(t *testing.T) { Config: testAccLaunchTemplateConfig_name(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckLaunchTemplateExists(ctx, resourceName, &template), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`launch-template/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`launch-template/.+`)), resource.TestCheckResourceAttr(resourceName, "block_device_mappings.#", "0"), resource.TestCheckResourceAttr(resourceName, "capacity_reservation_specification.#", "0"), resource.TestCheckResourceAttr(resourceName, "cpu_options.#", "0"), diff --git a/internal/service/ec2/ec2_placement_group.go b/internal/service/ec2/ec2_placement_group.go index 2685ba15ed6a..4dc785db6885 100644 --- a/internal/service/ec2/ec2_placement_group.go +++ b/internal/service/ec2/ec2_placement_group.go @@ -141,8 +141,8 @@ func resourcePlacementGroupRead(ctx context.Context, d *schema.ResourceData, met arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: names.EC2, - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("placement-group/%s", d.Id()), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/ec2/ec2_placement_group_test.go b/internal/service/ec2/ec2_placement_group_test.go index 735b355afd30..9aaba95d27ec 100644 --- a/internal/service/ec2/ec2_placement_group_test.go +++ b/internal/service/ec2/ec2_placement_group_test.go @@ -35,7 +35,7 @@ func TestAccEC2PlacementGroup_basic(t *testing.T) { Config: testAccPlacementGroupConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckPlacementGroupExists(ctx, resourceName, &pg), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", fmt.Sprintf("placement-group/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", fmt.Sprintf("placement-group/%s", rName)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "spread_level", ""), resource.TestCheckResourceAttr(resourceName, "strategy", "cluster"), diff --git a/internal/service/ec2/ec2_public_ipv4_pools_data_source.go b/internal/service/ec2/ec2_public_ipv4_pools_data_source.go index 3b844b8f506b..77bb5608281c 100644 --- a/internal/service/ec2/ec2_public_ipv4_pools_data_source.go +++ b/internal/service/ec2/ec2_public_ipv4_pools_data_source.go @@ -63,7 +63,7 @@ func dataSourcePublicIPv4PoolsRead(ctx context.Context, d *schema.ResourceData, poolIDs = append(poolIDs, aws.ToString(v.PoolId)) } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) d.Set("pool_ids", poolIDs) return diags diff --git a/internal/service/ec2/ec2_serial_console_access.go b/internal/service/ec2/ec2_serial_console_access.go index 7256c559494f..63580ddd128c 100644 --- a/internal/service/ec2/ec2_serial_console_access.go +++ b/internal/service/ec2/ec2_serial_console_access.go @@ -46,7 +46,7 @@ func resourceSerialConsoleAccessCreate(ctx context.Context, d *schema.ResourceDa return sdkdiag.AppendErrorf(diags, "setting EC2 Serial Console Access (%t): %s", enabled, err) } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) return append(diags, resourceSerialConsoleAccessRead(ctx, d, meta)...) } diff --git a/internal/service/ec2/ec2_serial_console_access_data_source.go b/internal/service/ec2/ec2_serial_console_access_data_source.go index 13124b643794..9fce6ac7ab93 100644 --- a/internal/service/ec2/ec2_serial_console_access_data_source.go +++ b/internal/service/ec2/ec2_serial_console_access_data_source.go @@ -43,7 +43,7 @@ func dataSourceSerialConsoleAccessRead(ctx context.Context, d *schema.ResourceDa return sdkdiag.AppendErrorf(diags, "reading EC2 Serial Console Access: %s", err) } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) d.Set(names.AttrEnabled, output.SerialConsoleAccessEnabled) return diags diff --git a/internal/service/ec2/ec2_spot_datafeed_subscription_data_source.go b/internal/service/ec2/ec2_spot_datafeed_subscription_data_source.go index c5b6c58e290a..75a66a00cd09 100644 --- a/internal/service/ec2/ec2_spot_datafeed_subscription_data_source.go +++ b/internal/service/ec2/ec2_spot_datafeed_subscription_data_source.go @@ -48,7 +48,7 @@ func (d *dataSourceSpotDataFeedSubscription) Schema(ctx context.Context, req dat func (d *dataSourceSpotDataFeedSubscription) Read(ctx context.Context, req datasource.ReadRequest, resp *datasource.ReadResponse) { conn := d.Meta().EC2Client(ctx) - accountID := d.Meta().AccountID + accountID := d.Meta().AccountID(ctx) var data dataSourceSpotDataFeedSubscriptionModel resp.Diagnostics.Append(req.Config.Get(ctx, &data)...) diff --git a/internal/service/ec2/ec2_spot_price_data_source.go b/internal/service/ec2/ec2_spot_price_data_source.go index 96301e43db23..ef5646709bd8 100644 --- a/internal/service/ec2/ec2_spot_price_data_source.go +++ b/internal/service/ec2/ec2_spot_price_data_source.go @@ -81,7 +81,7 @@ func dataSourceSpotPriceRead(ctx context.Context, d *schema.ResourceData, meta i d.Set("spot_price", resultSpotPrice.SpotPrice) d.Set("spot_price_timestamp", (*resultSpotPrice.Timestamp).Format(time.RFC3339)) - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) return diags } diff --git a/internal/service/ec2/errors.go b/internal/service/ec2/errors.go index 4be42cf480e4..f6329491ad47 100644 --- a/internal/service/ec2/errors.go +++ b/internal/service/ec2/errors.go @@ -109,6 +109,7 @@ const ( errCodeInvalidTransitGatewayMulticastDomainIdNotFound = "InvalidTransitGatewayMulticastDomainId.NotFound" errCodeInvalidTransitGatewayPolicyTableAssociationNotFound = "InvalidTransitGatewayPolicyTableAssociation.NotFound" errCodeInvalidTransitGatewayPolicyTableIdNotFound = "InvalidTransitGatewayPolicyTableId.NotFound" + errCodeInvalidVPCBlockPublicAccessExclusionIdNotFound = "InvalidVpcBlockPublicAccessExclusionId.NotFound" errCodeInvalidVPCCIDRBlockAssociationIDNotFound = "InvalidVpcCidrBlockAssociationID.NotFound" errCodeInvalidVPCEndpointIdNotFound = "InvalidVpcEndpointId.NotFound" errCodeInvalidVPCEndpointNotFound = "InvalidVpcEndpoint.NotFound" diff --git a/internal/service/ec2/exports_test.go b/internal/service/ec2/exports_test.go index 62696df93b71..095e09167a4c 100644 --- a/internal/service/ec2/exports_test.go +++ b/internal/service/ec2/exports_test.go @@ -100,6 +100,8 @@ var ( ResourceTransitGatewayRouteTablePropagation = resourceTransitGatewayRouteTablePropagation ResourceTransitGatewayVPCAttachment = resourceTransitGatewayVPCAttachment ResourceTransitGatewayVPCAttachmentAccepter = resourceTransitGatewayVPCAttachmentAccepter + ResourceVPCBlockPublicAccessExclusion = newVPCBlockPublicAccessExclusionResource + ResourceVPCBlockPublicAccessOptions = newVPCBlockPublicAccessOptionsResource ResourceVPCDHCPOptions = resourceVPCDHCPOptions ResourceVPCDHCPOptionsAssociation = resourceVPCDHCPOptionsAssociation ResourceVPCEndpoint = resourceVPCEndpoint @@ -124,6 +126,7 @@ var ( ResourceVerifiedAccessTrustProvider = resourceVerifiedAccessTrustProvider ResourceVolumeAttachment = resourceVolumeAttachment + CheckMostRecentAndMissingFilters = checkMostRecentAndMissingFilters CustomFiltersSchema = customFiltersSchema CustomerGatewayConfigurationToTunnelInfo = customerGatewayConfigurationToTunnelInfo ErrCodeDefaultSubnetAlreadyExistsInAvailabilityZone = errCodeDefaultSubnetAlreadyExistsInAvailabilityZone @@ -218,6 +221,7 @@ var ( FindTransitGatewayRouteTablePropagationByTwoPartKey = findTransitGatewayRouteTablePropagationByTwoPartKey FindTransitGatewayStaticRoute = findTransitGatewayStaticRoute FindTransitGatewayVPCAttachmentByID = findTransitGatewayVPCAttachmentByID + FindVPCBlockPublicAccessExclusionByID = findVPCBlockPublicAccessExclusionByID FindVPCCIDRBlockAssociationByID = findVPCCIDRBlockAssociationByID FindVPCDHCPOptionsAssociation = findVPCDHCPOptionsAssociation FindVPCEndpointConnectionByServiceIDAndVPCEndpointID = findVPCEndpointConnectionByServiceIDAndVPCEndpointID diff --git a/internal/service/ec2/find.go b/internal/service/ec2/find.go index e457400dc953..67229325aa68 100644 --- a/internal/service/ec2/find.go +++ b/internal/service/ec2/find.go @@ -6434,16 +6434,6 @@ func findTrafficMirrorTargetByID(ctx context.Context, conn *ec2.Client, id strin return output, nil } -func findNetworkInsightsPath(ctx context.Context, conn *ec2.Client, input *ec2.DescribeNetworkInsightsPathsInput) (*awstypes.NetworkInsightsPath, error) { - output, err := findNetworkInsightsPaths(ctx, conn, input) - - if err != nil { - return nil, err - } - - return tfresource.AssertSingleValueResult(output) -} - func findNetworkInsightsAnalysis(ctx context.Context, conn *ec2.Client, input *ec2.DescribeNetworkInsightsAnalysesInput) (*awstypes.NetworkInsightsAnalysis, error) { output, err := findNetworkInsightsAnalyses(ctx, conn, input) @@ -6499,6 +6489,16 @@ func findNetworkInsightsAnalysisByID(ctx context.Context, conn *ec2.Client, id s return output, nil } +func findNetworkInsightsPath(ctx context.Context, conn *ec2.Client, input *ec2.DescribeNetworkInsightsPathsInput) (*awstypes.NetworkInsightsPath, error) { + output, err := findNetworkInsightsPaths(ctx, conn, input) + + if err != nil { + return nil, err + } + + return tfresource.AssertSingleValueResult(output) +} + func findNetworkInsightsPaths(ctx context.Context, conn *ec2.Client, input *ec2.DescribeNetworkInsightsPathsInput) ([]awstypes.NetworkInsightsPath, error) { var output []awstypes.NetworkInsightsPath @@ -6577,3 +6577,84 @@ func findCapacityBlockOfferings(ctx context.Context, conn *ec2.Client, input *ec return output, nil } + +func findVPCBlockPublicAccessOptions(ctx context.Context, conn *ec2.Client) (*awstypes.VpcBlockPublicAccessOptions, error) { + input := &ec2.DescribeVpcBlockPublicAccessOptionsInput{} + + output, err := conn.DescribeVpcBlockPublicAccessOptions(ctx, input) + + if err != nil { + return nil, err + } + + if output == nil || output.VpcBlockPublicAccessOptions == nil { + return nil, tfresource.NewEmptyResultError(input) + } + + return output.VpcBlockPublicAccessOptions, nil +} + +func findVPCBlockPublicAccessExclusion(ctx context.Context, conn *ec2.Client, input *ec2.DescribeVpcBlockPublicAccessExclusionsInput) (*awstypes.VpcBlockPublicAccessExclusion, error) { + output, err := findVPCBlockPublicAccessExclusions(ctx, conn, input) + + if err != nil { + return nil, err + } + + return tfresource.AssertSingleValueResult(output) +} + +func findVPCBlockPublicAccessExclusions(ctx context.Context, conn *ec2.Client, input *ec2.DescribeVpcBlockPublicAccessExclusionsInput) ([]awstypes.VpcBlockPublicAccessExclusion, error) { + var output []awstypes.VpcBlockPublicAccessExclusion + + err := describeVPCBlockPublicAccessExclusionsPages(ctx, conn, input, func(page *ec2.DescribeVpcBlockPublicAccessExclusionsOutput, lastPage bool) bool { + if page == nil { + return !lastPage + } + + output = append(output, page.VpcBlockPublicAccessExclusions...) + + return !lastPage + }) + + if tfawserr.ErrCodeEquals(err, errCodeInvalidVPCBlockPublicAccessExclusionIdNotFound) { + return nil, &retry.NotFoundError{ + LastError: err, + LastRequest: input, + } + } + + if err != nil { + return nil, err + } + + return output, nil +} + +func findVPCBlockPublicAccessExclusionByID(ctx context.Context, conn *ec2.Client, id string) (*awstypes.VpcBlockPublicAccessExclusion, error) { + input := &ec2.DescribeVpcBlockPublicAccessExclusionsInput{ + ExclusionIds: []string{id}, + } + + output, err := findVPCBlockPublicAccessExclusion(ctx, conn, input) + + if err != nil { + return nil, err + } + + if state := output.State; state == awstypes.VpcBlockPublicAccessExclusionStateDeleteComplete { + return nil, &retry.NotFoundError{ + Message: string(state), + LastRequest: input, + } + } + + // Eventual consistency check. + if aws.ToString(output.ExclusionId) != id { + return nil, &retry.NotFoundError{ + LastRequest: input, + } + } + + return output, nil +} diff --git a/internal/service/ec2/generate.go b/internal/service/ec2/generate.go index f051ea12c7ee..4d96f96b878f 100644 --- a/internal/service/ec2/generate.go +++ b/internal/service/ec2/generate.go @@ -3,7 +3,7 @@ //go:generate go run ../../generate/tagresource/main.go -IDAttribName=resource_id //go:generate go run ../../generate/tags/main.go -GetTag -ListTags -ListTagsOp=DescribeTags -ListTagsOpPaginated -ListTagsInFiltIDName=resource-id -ServiceTagsSlice -KeyValueTagsFunc=keyValueTags -TagOp=CreateTags -TagInIDElem=Resources -TagInIDNeedValueSlice -TagType2=TagDescription -UntagOp=DeleteTags -UntagInNeedTagType -UntagInTagsElem=Tags -UpdateTags -//go:generate go run ../../generate/listpages/main.go -ListOps=DescribeSpotFleetInstances,DescribeSpotFleetRequestHistory,DescribeVpcEndpointServices +//go:generate go run ../../generate/listpages/main.go -ListOps=DescribeSpotFleetInstances,DescribeSpotFleetRequestHistory,DescribeVpcBlockPublicAccessExclusions,DescribeVpcEndpointServices //go:generate go run ../../generate/servicepackage/main.go //go:generate go run ../../generate/tagstests/main.go // ONLY generate directives and package declaration! Do not add anything else to this file. diff --git a/internal/service/ec2/ipam_.go b/internal/service/ec2/ipam_.go index 5f1afabeab4c..5f95606389e3 100644 --- a/internal/service/ec2/ipam_.go +++ b/internal/service/ec2/ipam_.go @@ -109,9 +109,9 @@ func resourceIPAM() *schema.Resource { CustomizeDiff: customdiff.Sequence( verify.SetTagsDiff, - func(_ context.Context, diff *schema.ResourceDiff, meta interface{}) error { + func(ctx context.Context, diff *schema.ResourceDiff, meta interface{}) error { if diff.Id() == "" { // Create. - currentRegion := meta.(*conns.AWSClient).Region + currentRegion := meta.(*conns.AWSClient).Region(ctx) for _, v := range diff.Get("operating_regions").(*schema.Set).List() { if v.(map[string]interface{})["region_name"].(string) == currentRegion { diff --git a/internal/service/ec2/ipam_byoip_test.go b/internal/service/ec2/ipam_byoip_test.go index 905cc8285c8f..6d8e605954e3 100644 --- a/internal/service/ec2/ipam_byoip_test.go +++ b/internal/service/ec2/ipam_byoip_test.go @@ -62,7 +62,7 @@ func TestAccIPAM_byoipIPv6(t *testing.T) { Config: testAccIPAMBYOIPConfig_ipv4IPv6DefaultNetmask(p, m, s), Check: resource.ComposeTestCheckFunc( acctest.CheckVPCExists(ctx, resourceName, &vpc), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`vpc/vpc-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`vpc/vpc-.+`)), resource.TestCheckNoResourceAttr(resourceName, "ipv6_netmask_length"), resource.TestMatchResourceAttr(resourceName, "ipv6_association_id", regexache.MustCompile(`^vpc-cidr-assoc-.+`)), resource.TestMatchResourceAttr(resourceName, "ipv6_cidr_block", regexache.MustCompile(`/56$`)), @@ -79,7 +79,7 @@ func TestAccIPAM_byoipIPv6(t *testing.T) { Config: testAccIPAMBYOIPConfig_ipv6ExplicitNetmask(p, m, s, netmaskLength), Check: resource.ComposeTestCheckFunc( acctest.CheckVPCExists(ctx, resourceName, &vpc), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`vpc/vpc-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`vpc/vpc-.+`)), resource.TestCheckResourceAttr(resourceName, "ipv6_netmask_length", strconv.Itoa(netmaskLength)), resource.TestMatchResourceAttr(resourceName, "ipv6_association_id", regexache.MustCompile(`^vpc-cidr-assoc-.+`)), resource.TestMatchResourceAttr(resourceName, "ipv6_cidr_block", regexache.MustCompile(`/56$`)), @@ -97,7 +97,7 @@ func TestAccIPAM_byoipIPv6(t *testing.T) { SkipFunc: testAccIPAMConfig_ipv6BYOIPSkipExplicitCIDR(t, ipv6CidrVPC), Check: resource.ComposeTestCheckFunc( acctest.CheckVPCExists(ctx, resourceName, &vpc), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`vpc/vpc-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`vpc/vpc-.+`)), resource.TestMatchResourceAttr(resourceName, "ipv6_association_id", regexache.MustCompile(`^vpc-cidr-assoc-.+`)), resource.TestCheckResourceAttr(resourceName, "ipv6_cidr_block", ipv6CidrVPC), ), diff --git a/internal/service/ec2/ipam_organization_admin_account_test.go b/internal/service/ec2/ipam_organization_admin_account_test.go index 652b249827fd..12c2b7e96380 100644 --- a/internal/service/ec2/ipam_organization_admin_account_test.go +++ b/internal/service/ec2/ipam_organization_admin_account_test.go @@ -65,7 +65,7 @@ func testAccIPAMOrganizationAdminAccount_basic(t *testing.T) { Config: testAccIPAMOrganizationAdminAccountConfig_basic, Check: resource.ComposeAggregateTestCheckFunc( testAccCheckIPAMOrganizationAdminAccountExists(ctx, resourceName, &organization), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "organizations", regexache.MustCompile("account/.+")), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "organizations", regexache.MustCompile("account/.+")), resource.TestCheckResourceAttrPair(resourceName, names.AttrID, dataSourceIdentity, names.AttrAccountID), resource.TestCheckResourceAttr(resourceName, "service_principal", tfec2.IPAMServicePrincipal), ), diff --git a/internal/service/ec2/ipam_pool_cidr_allocation_test.go b/internal/service/ec2/ipam_pool_cidr_allocation_test.go index 2cd4e403be54..41bbaae7cdaf 100644 --- a/internal/service/ec2/ipam_pool_cidr_allocation_test.go +++ b/internal/service/ec2/ipam_pool_cidr_allocation_test.go @@ -244,7 +244,7 @@ func TestAccIPAMPoolCIDRAllocation_differentRegion(t *testing.T) { { Config: testAccIPAMPoolCIDRAllocationConfig_differentRegion(cidr), Check: resource.ComposeTestCheckFunc( - testAccCheckIPAMPoolCIDRAllocationExistsWithProvider(ctx, resourceName, &allocation, acctest.RegionProviderFunc(acctest.AlternateRegion(), &providers)), + testAccCheckIPAMPoolCIDRAllocationExistsWithProvider(ctx, resourceName, &allocation, acctest.RegionProviderFunc(ctx, acctest.AlternateRegion(), &providers)), resource.TestCheckResourceAttr(resourceName, "cidr", cidr), resource.TestMatchResourceAttr(resourceName, names.AttrID, regexache.MustCompile(`^ipam-pool-alloc-[0-9a-f]+_ipam-pool(-[0-9a-f]+)$`)), resource.TestMatchResourceAttr(resourceName, "ipam_pool_allocation_id", regexache.MustCompile(`^ipam-pool-alloc-[0-9a-f]+$`)), diff --git a/internal/service/ec2/ipam_pools_data_source.go b/internal/service/ec2/ipam_pools_data_source.go index be12ea5864d8..52edd30e3dcc 100644 --- a/internal/service/ec2/ipam_pools_data_source.go +++ b/internal/service/ec2/ipam_pools_data_source.go @@ -124,7 +124,7 @@ func dataSourceIPAMPoolsRead(ctx context.Context, d *schema.ResourceData, meta i return sdkdiag.AppendErrorf(diags, "reading IPAM Pools: %s", err) } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) d.Set("ipam_pools", flattenIPAMPools(ctx, pools, ignoreTagsConfig)) return diags diff --git a/internal/service/ec2/ipam_resource_discovery.go b/internal/service/ec2/ipam_resource_discovery.go index 14e773c13efc..8459323dd181 100644 --- a/internal/service/ec2/ipam_resource_discovery.go +++ b/internal/service/ec2/ipam_resource_discovery.go @@ -86,9 +86,9 @@ func resourceIPAMResourceDiscovery() *schema.Resource { CustomizeDiff: customdiff.Sequence( verify.SetTagsDiff, // user must define authn region within `operating_regions {}` - func(_ context.Context, diff *schema.ResourceDiff, meta interface{}) error { + func(ctx context.Context, diff *schema.ResourceDiff, meta interface{}) error { if diff.Id() == "" { // Create. - currentRegion := meta.(*conns.AWSClient).Region + currentRegion := meta.(*conns.AWSClient).Region(ctx) for _, v := range diff.Get("operating_regions").(*schema.Set).List() { if v.(map[string]interface{})["region_name"].(string) == currentRegion { diff --git a/internal/service/ec2/ipam_resource_discovery_association_test.go b/internal/service/ec2/ipam_resource_discovery_association_test.go index e35199418e93..0a64e89be69e 100644 --- a/internal/service/ec2/ipam_resource_discovery_association_test.go +++ b/internal/service/ec2/ipam_resource_discovery_association_test.go @@ -36,10 +36,10 @@ func testAccIPAMResourceDiscoveryAssociation_basic(t *testing.T) { Config: testAccIPAMResourceDiscoveryAssociationConfig_basic(), Check: resource.ComposeTestCheckFunc( testAccCheckIPAMResourceDiscoveryAssociationExists(ctx, resourceName, &rda), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`ipam-resource-discovery-association/ipam-res-disco-assoc-[0-9a-f]+$`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`ipam-resource-discovery-association/ipam-res-disco-assoc-[0-9a-f]+$`)), resource.TestCheckResourceAttrPair(resourceName, "ipam_id", ipamName, names.AttrID), resource.TestCheckResourceAttrPair(resourceName, "ipam_resource_discovery_id", rdName, names.AttrID), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, diff --git a/internal/service/ec2/ipam_resource_discovery_test.go b/internal/service/ec2/ipam_resource_discovery_test.go index bcb077bbe9d9..a89879d07fe1 100644 --- a/internal/service/ec2/ipam_resource_discovery_test.go +++ b/internal/service/ec2/ipam_resource_discovery_test.go @@ -55,12 +55,12 @@ func testAccIPAMResourceDiscovery_basic(t *testing.T) { Config: testAccIPAMResourceDiscoveryConfig_base, Check: resource.ComposeTestCheckFunc( testAccCheckIPAMResourceDiscoveryExists(ctx, resourceName, &rd), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`ipam-resource-discovery/ipam-res-disco-[0-9a-f]+$`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`ipam-resource-discovery/ipam-res-disco-[0-9a-f]+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "test"), resource.TestCheckResourceAttrPair(resourceName, "ipam_resource_discovery_region", dataSourceRegion, names.AttrName), resource.TestCheckResourceAttr(resourceName, "is_default", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "operating_regions.#", "1"), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, diff --git a/internal/service/ec2/list_pages_gen.go b/internal/service/ec2/list_pages_gen.go index 18fe55935be1..2a4017030c21 100644 --- a/internal/service/ec2/list_pages_gen.go +++ b/internal/service/ec2/list_pages_gen.go @@ -1,4 +1,4 @@ -// Code generated by "internal/generate/listpages/main.go -ListOps=DescribeSpotFleetInstances,DescribeSpotFleetRequestHistory,DescribeVpcEndpointServices"; DO NOT EDIT. +// Code generated by "internal/generate/listpages/main.go -ListOps=DescribeSpotFleetInstances,DescribeSpotFleetRequestHistory,DescribeVpcBlockPublicAccessExclusions,DescribeVpcEndpointServices"; DO NOT EDIT. package ec2 @@ -41,6 +41,22 @@ func describeSpotFleetRequestHistoryPages(ctx context.Context, conn *ec2.Client, } return nil } +func describeVPCBlockPublicAccessExclusionsPages(ctx context.Context, conn *ec2.Client, input *ec2.DescribeVpcBlockPublicAccessExclusionsInput, fn func(*ec2.DescribeVpcBlockPublicAccessExclusionsOutput, bool) bool) error { + for { + output, err := conn.DescribeVpcBlockPublicAccessExclusions(ctx, input) + if err != nil { + return err + } + + lastPage := aws.ToString(output.NextToken) == "" + if !fn(output, lastPage) || lastPage { + break + } + + input.NextToken = output.NextToken + } + return nil +} func describeVPCEndpointServicesPages(ctx context.Context, conn *ec2.Client, input *ec2.DescribeVpcEndpointServicesInput, fn func(*ec2.DescribeVpcEndpointServicesOutput, bool) bool) error { for { output, err := conn.DescribeVpcEndpointServices(ctx, input) diff --git a/internal/service/ec2/outposts_coip_pool_data_source_test.go b/internal/service/ec2/outposts_coip_pool_data_source_test.go index 0cfb714518c7..d911525c1e1e 100644 --- a/internal/service/ec2/outposts_coip_pool_data_source_test.go +++ b/internal/service/ec2/outposts_coip_pool_data_source_test.go @@ -47,7 +47,7 @@ func TestAccEC2OutpostsCoIPPoolDataSource_id(t *testing.T) { Check: resource.ComposeTestCheckFunc( resource.TestMatchResourceAttr(dataSourceName, "local_gateway_route_table_id", regexache.MustCompile(`^lgw-rtb-`)), resource.TestMatchResourceAttr(dataSourceName, "pool_id", regexache.MustCompile(`^ipv4pool-coip-`)), - acctest.MatchResourceAttrRegionalARN(dataSourceName, names.AttrARN, "ec2", regexache.MustCompile(`coip-pool/ipv4pool-coip-.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, dataSourceName, names.AttrARN, "ec2", regexache.MustCompile(`coip-pool/ipv4pool-coip-.+$`)), acctest.CheckResourceAttrGreaterThanValue(dataSourceName, "pool_cidrs.#", 0), ), }, diff --git a/internal/service/ec2/outposts_coip_pools_data_source.go b/internal/service/ec2/outposts_coip_pools_data_source.go index 3239831b6460..06cc734e8843 100644 --- a/internal/service/ec2/outposts_coip_pools_data_source.go +++ b/internal/service/ec2/outposts_coip_pools_data_source.go @@ -64,7 +64,7 @@ func dataSourceCoIPPoolsRead(ctx context.Context, d *schema.ResourceData, meta i return sdkdiag.AppendErrorf(diags, "reading EC2 COIP Pools: %s", err) } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) d.Set("pool_ids", tfslices.ApplyToAll(output, func(v awstypes.CoipPool) string { return aws.ToString(v.PoolId) })) diff --git a/internal/service/ec2/outposts_local_gateway_data_source_test.go b/internal/service/ec2/outposts_local_gateway_data_source_test.go index 036257f8d1bf..7f5fa176bcb0 100644 --- a/internal/service/ec2/outposts_local_gateway_data_source_test.go +++ b/internal/service/ec2/outposts_local_gateway_data_source_test.go @@ -25,8 +25,8 @@ func TestAccEC2OutpostsLocalGatewayDataSource_basic(t *testing.T) { Config: testAccOutpostsLocalGatewayDataSourceConfig_id(), Check: resource.ComposeTestCheckFunc( resource.TestMatchResourceAttr(dataSourceName, names.AttrID, regexache.MustCompile(`^lgw-`)), - acctest.MatchResourceAttrRegionalARN(dataSourceName, "outpost_arn", "outposts", regexache.MustCompile(`outpost/op-.+`)), - acctest.CheckResourceAttrAccountID(dataSourceName, names.AttrOwnerID), + acctest.MatchResourceAttrRegionalARN(ctx, dataSourceName, "outpost_arn", "outposts", regexache.MustCompile(`outpost/op-.+`)), + acctest.CheckResourceAttrAccountID(ctx, dataSourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(dataSourceName, names.AttrState, "available"), ), }, diff --git a/internal/service/ec2/outposts_local_gateway_route_table_data_source_test.go b/internal/service/ec2/outposts_local_gateway_route_table_data_source_test.go index 236151c09819..7bb1d6267bd6 100644 --- a/internal/service/ec2/outposts_local_gateway_route_table_data_source_test.go +++ b/internal/service/ec2/outposts_local_gateway_route_table_data_source_test.go @@ -26,7 +26,7 @@ func TestAccEC2OutpostsLocalGatewayRouteTableDataSource_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( resource.TestMatchResourceAttr(dataSourceName, "local_gateway_id", regexache.MustCompile(`^lgw-`)), resource.TestMatchResourceAttr(dataSourceName, "local_gateway_route_table_id", regexache.MustCompile(`^lgw-rtb-`)), - acctest.MatchResourceAttrRegionalARN(dataSourceName, "outpost_arn", "outposts", regexache.MustCompile(`outpost/op-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, dataSourceName, "outpost_arn", "outposts", regexache.MustCompile(`outpost/op-.+`)), resource.TestCheckResourceAttr(dataSourceName, names.AttrState, "available"), ), }, @@ -48,7 +48,7 @@ func TestAccEC2OutpostsLocalGatewayRouteTableDataSource_filter(t *testing.T) { Check: resource.ComposeTestCheckFunc( resource.TestMatchResourceAttr(dataSourceName, "local_gateway_id", regexache.MustCompile(`^lgw-`)), resource.TestMatchResourceAttr(dataSourceName, "local_gateway_route_table_id", regexache.MustCompile(`^lgw-rtb-`)), - acctest.MatchResourceAttrRegionalARN(dataSourceName, "outpost_arn", "outposts", regexache.MustCompile(`outpost/op-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, dataSourceName, "outpost_arn", "outposts", regexache.MustCompile(`outpost/op-.+`)), resource.TestCheckResourceAttr(dataSourceName, names.AttrState, "available"), ), }, @@ -70,7 +70,7 @@ func TestAccEC2OutpostsLocalGatewayRouteTableDataSource_localGatewayID(t *testin Check: resource.ComposeTestCheckFunc( resource.TestMatchResourceAttr(dataSourceName, "local_gateway_id", regexache.MustCompile(`^lgw-`)), resource.TestMatchResourceAttr(dataSourceName, "local_gateway_route_table_id", regexache.MustCompile(`^lgw-rtb-`)), - acctest.MatchResourceAttrRegionalARN(dataSourceName, "outpost_arn", "outposts", regexache.MustCompile(`outpost/op-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, dataSourceName, "outpost_arn", "outposts", regexache.MustCompile(`outpost/op-.+`)), resource.TestCheckResourceAttr(dataSourceName, names.AttrState, "available"), ), }, @@ -92,7 +92,7 @@ func TestAccEC2OutpostsLocalGatewayRouteTableDataSource_outpostARN(t *testing.T) Check: resource.ComposeTestCheckFunc( resource.TestMatchResourceAttr(dataSourceName, "local_gateway_id", regexache.MustCompile(`^lgw-`)), resource.TestMatchResourceAttr(dataSourceName, "local_gateway_route_table_id", regexache.MustCompile(`^lgw-rtb-`)), - acctest.MatchResourceAttrRegionalARN(dataSourceName, "outpost_arn", "outposts", regexache.MustCompile(`outpost/op-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, dataSourceName, "outpost_arn", "outposts", regexache.MustCompile(`outpost/op-.+`)), resource.TestCheckResourceAttr(dataSourceName, names.AttrState, "available"), ), }, diff --git a/internal/service/ec2/outposts_local_gateway_route_tables_data_source.go b/internal/service/ec2/outposts_local_gateway_route_tables_data_source.go index 1f9687143de5..49ec79d6fbfc 100644 --- a/internal/service/ec2/outposts_local_gateway_route_tables_data_source.go +++ b/internal/service/ec2/outposts_local_gateway_route_tables_data_source.go @@ -64,7 +64,7 @@ func dataSourceLocalGatewayRouteTablesRead(ctx context.Context, d *schema.Resour return sdkdiag.AppendErrorf(diags, "reading EC2 Local Gateway Route Tables: %s", err) } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) d.Set(names.AttrIDs, tfslices.ApplyToAll(output, func(v awstypes.LocalGatewayRouteTable) string { return aws.ToString(v.LocalGatewayRouteTableId) })) diff --git a/internal/service/ec2/outposts_local_gateway_virtual_interface_groups_data_source.go b/internal/service/ec2/outposts_local_gateway_virtual_interface_groups_data_source.go index 2de038f2f7a8..034e054c09b4 100644 --- a/internal/service/ec2/outposts_local_gateway_virtual_interface_groups_data_source.go +++ b/internal/service/ec2/outposts_local_gateway_virtual_interface_groups_data_source.go @@ -74,7 +74,7 @@ func dataSourceLocalGatewayVirtualInterfaceGroupsRead(ctx context.Context, d *sc interfaceIDs = append(interfaceIDs, v.LocalGatewayVirtualInterfaceIds...) } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) d.Set(names.AttrIDs, groupIDs) d.Set("local_gateway_virtual_interface_ids", interfaceIDs) diff --git a/internal/service/ec2/outposts_local_gateways_data_source.go b/internal/service/ec2/outposts_local_gateways_data_source.go index 179d4d40fed8..b08bbd163fbe 100644 --- a/internal/service/ec2/outposts_local_gateways_data_source.go +++ b/internal/service/ec2/outposts_local_gateways_data_source.go @@ -64,7 +64,7 @@ func dataSourceLocalGatewaysRead(ctx context.Context, d *schema.ResourceData, me return sdkdiag.AppendErrorf(diags, "reading EC2 Local Gateways: %s", err) } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) d.Set(names.AttrIDs, tfslices.ApplyToAll(output, func(v awstypes.LocalGateway) string { return aws.ToString(v.LocalGatewayId) })) diff --git a/internal/service/ec2/service_endpoints_gen_test.go b/internal/service/ec2/service_endpoints_gen_test.go index bc8c454f5590..2562197fec40 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/ec2/service_package_gen.go b/internal/service/ec2/service_package_gen.go index de1267ac1e7c..a6ef17ba3d9d 100644 --- a/internal/service/ec2/service_package_gen.go +++ b/internal/service/ec2/service_package_gen.go @@ -87,6 +87,17 @@ func (p *servicePackage) FrameworkResources(ctx context.Context) []*types.Servic Factory: newTransitGatewayDefaultRouteTablePropagationResource, Name: "Transit Gateway Default Route Table Propagation", }, + { + Factory: newVPCBlockPublicAccessExclusionResource, + Name: "VPC Block Public Access Exclusion", + Tags: &types.ServicePackageResourceTags{ + IdentifierAttribute: names.AttrID, + }, + }, + { + Factory: newVPCBlockPublicAccessOptionsResource, + Name: "VPC Block Public Access Options", + }, { Factory: newVPCEndpointPrivateDNSResource, Name: "VPC Endpoint Private DNS", diff --git a/internal/service/ec2/status.go b/internal/service/ec2/status.go index 8b13352bb69b..3049612268a1 100644 --- a/internal/service/ec2/status.go +++ b/internal/service/ec2/status.go @@ -1572,3 +1572,35 @@ func statusNetworkInsightsAnalysis(ctx context.Context, conn *ec2.Client, id str return output, string(output.Status), nil } } + +func statusVPCBlockPublicAccessOptions(ctx context.Context, conn *ec2.Client) retry.StateRefreshFunc { + return func() (interface{}, string, error) { + output, err := findVPCBlockPublicAccessOptions(ctx, conn) + + if tfresource.NotFound(err) { + return nil, "", nil + } + + if err != nil { + return nil, "", err + } + + return output, string(output.State), nil + } +} + +func statusVPCBlockPublicAccessExclusion(ctx context.Context, conn *ec2.Client, id string) retry.StateRefreshFunc { + return func() (interface{}, string, error) { + output, err := findVPCBlockPublicAccessExclusionByID(ctx, conn, id) + + if tfresource.NotFound(err) { + return nil, "", nil + } + + if err != nil { + return nil, "", err + } + + return output, string(output.State), nil + } +} diff --git a/internal/service/ec2/sweep.go b/internal/service/ec2/sweep.go index 8fa2bb18ba4f..086eed3eba32 100644 --- a/internal/service/ec2/sweep.go +++ b/internal/service/ec2/sweep.go @@ -4,6 +4,7 @@ package ec2 import ( + "context" "fmt" "log" "strings" @@ -16,6 +17,7 @@ import ( "github.com/hashicorp/go-multierror" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry" "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/sweep" "github.com/hashicorp/terraform-provider-aws/internal/sweep/awsv2" "github.com/hashicorp/terraform-provider-aws/internal/sweep/framework" @@ -224,59 +226,55 @@ func RegisterSweepers() { F: sweepSpotInstanceRequests, }) - resource.AddTestSweepers("aws_subnet", &resource.Sweeper{ - Name: "aws_subnet", - F: sweepSubnets, - Dependencies: []string{ - "aws_appstream_fleet", - "aws_appstream_image_builder", - "aws_autoscaling_group", - "aws_batch_compute_environment", - "aws_elastic_beanstalk_environment", - "aws_cloud9_environment_ec2", - "aws_cloudhsm_v2_cluster", - "aws_codestarconnections_host", - "aws_db_subnet_group", - "aws_directory_service_directory", - "aws_dms_replication_subnet_group", - "aws_docdb_subnet_group", - "aws_ec2_client_vpn_endpoint", - "aws_ec2_instance_connect_endpoint", - "aws_ec2_transit_gateway_vpc_attachment", - "aws_efs_file_system", - "aws_eks_cluster", - "aws_elasticache_cluster", - "aws_elasticache_replication_group", - "aws_elasticache_serverless_cache", - "aws_elasticache_subnet_group", - "aws_elasticsearch_domain", - "aws_elb", - "aws_emr_cluster", - "aws_emr_studio", - "aws_fsx_lustre_file_system", - "aws_fsx_ontap_file_system", - "aws_fsx_openzfs_file_system", - "aws_fsx_windows_file_system", - "aws_grafana_workspace", - "aws_iot_topic_rule_destination", - "aws_lambda_function", - "aws_lb", - "aws_memorydb_subnet_group", - "aws_mq_broker", - "aws_msk_cluster", - "aws_network_interface", - "aws_networkfirewall_firewall", - "aws_opensearch_domain", - "aws_quicksight_vpc_connection", - "aws_redshift_cluster", - "aws_redshift_subnet_group", - "aws_route53_resolver_endpoint", - "aws_sagemaker_notebook_instance", - "aws_spot_fleet_request", - "aws_spot_instance_request", - "aws_vpc_endpoint", - }, - }) + awsv2.Register("aws_subnet", sweepSubnets, + "aws_appstream_fleet", + "aws_appstream_image_builder", + "aws_autoscaling_group", + "aws_batch_compute_environment", + "aws_elastic_beanstalk_environment", + "aws_cloud9_environment_ec2", + "aws_cloudhsm_v2_cluster", + "aws_codestarconnections_host", + "aws_db_subnet_group", + "aws_directory_service_directory", + "aws_dms_replication_subnet_group", + "aws_docdb_subnet_group", + "aws_ec2_client_vpn_endpoint", + "aws_ec2_instance_connect_endpoint", + "aws_ec2_transit_gateway_vpc_attachment", + "aws_efs_file_system", + "aws_eks_cluster", + "aws_elasticache_cluster", + "aws_elasticache_replication_group", + "aws_elasticache_serverless_cache", + "aws_elasticache_subnet_group", + "aws_elasticsearch_domain", + "aws_elb", + "aws_emr_cluster", + "aws_emr_studio", + "aws_fsx_lustre_file_system", + "aws_fsx_ontap_file_system", + "aws_fsx_openzfs_file_system", + "aws_fsx_windows_file_system", + "aws_grafana_workspace", + "aws_iot_topic_rule_destination", + "aws_lambda_function", + "aws_lb", + "aws_memorydb_subnet_group", + "aws_mq_broker", + "aws_msk_cluster", + "aws_network_interface", + "aws_networkfirewall_firewall", + "aws_opensearch_domain", + "aws_quicksight_vpc_connection", + "aws_redshift_cluster", + "aws_redshift_subnet_group", + "aws_route53_resolver_endpoint", + "aws_sagemaker_notebook_instance", + "aws_spot_fleet_request", + "aws_spot_instance_request", + "aws_vpc_endpoint", + ) resource.AddTestSweepers("aws_ec2_traffic_mirror_filter", &resource.Sweeper{ Name: "aws_ec2_traffic_mirror_filter", @@ -1791,27 +1789,18 @@ func sweepSpotInstanceRequests(region string) error { return errs.ErrorOrNil() } -func sweepSubnets(region string) error { - ctx := sweep.Context(region) - client, err := sweep.SharedRegionalSweepClient(ctx, region) - if err != nil { - return fmt.Errorf("error getting client: %w", err) - } +func sweepSubnets(ctx context.Context, client *conns.AWSClient) ([]sweep.Sweepable, error) { conn := client.EC2Client(ctx) - input := &ec2.DescribeSubnetsInput{} - sweepResources := make([]sweep.Sweepable, 0) - pages := ec2.NewDescribeSubnetsPaginator(conn, input) + var sweepResources []sweep.Sweepable + + r := resourceSubnet() + input := ec2.DescribeSubnetsInput{} + pages := ec2.NewDescribeSubnetsPaginator(conn, &input) for pages.HasMorePages() { page, err := pages.NextPage(ctx) - - if awsv2.SkipSweepError(err) { - log.Printf("[WARN] Skipping EC2 Subnet sweep for %s: %s", region, err) - return nil - } - if err != nil { - return fmt.Errorf("error listing EC2 Subnets (%s): %w", region, err) + return nil, err } for _, v := range page.Subnets { @@ -1820,7 +1809,6 @@ func sweepSubnets(region string) error { continue } - r := resourceSubnet() d := r.Data(nil) d.SetId(aws.ToString(v.SubnetId)) @@ -1828,13 +1816,7 @@ func sweepSubnets(region string) error { } } - err = sweep.SweepOrchestrator(ctx, sweepResources) - - if err != nil { - return fmt.Errorf("error sweeping EC2 Subnets (%s): %w", region, err) - } - - return nil + return sweepResources, nil } func sweepTrafficMirrorFilters(region string) error { diff --git a/internal/service/ec2/testdata/BlockPublicAccessExclusion/tags/main_gen.tf b/internal/service/ec2/testdata/BlockPublicAccessExclusion/tags/main_gen.tf new file mode 100644 index 000000000000..e6b10715ffff --- /dev/null +++ b/internal/service/ec2/testdata/BlockPublicAccessExclusion/tags/main_gen.tf @@ -0,0 +1,20 @@ +# Copyright (c) HashiCorp, Inc. +# SPDX-License-Identifier: MPL-2.0 + +resource "aws_vpc" "test" { + cidr_block = "10.1.0.0/16" +} + +resource "aws_vpc_block_public_access_exclusion" "test" { + internet_gateway_exclusion_mode = "allow-bidirectional" + vpc_id = aws_vpc.test.id + + tags = var.resource_tags +} + +variable "resource_tags" { + description = "Tags to set on resource. To specify no tags, set to `null`" + # Not setting a default, so that this must explicitly be set to `null` to specify no tags + type = map(string) + nullable = true +} diff --git a/internal/service/ec2/testdata/BlockPublicAccessExclusion/tagsComputed1/main_gen.tf b/internal/service/ec2/testdata/BlockPublicAccessExclusion/tagsComputed1/main_gen.tf new file mode 100644 index 000000000000..176099e2054e --- /dev/null +++ b/internal/service/ec2/testdata/BlockPublicAccessExclusion/tagsComputed1/main_gen.tf @@ -0,0 +1,24 @@ +# Copyright (c) HashiCorp, Inc. +# SPDX-License-Identifier: MPL-2.0 + +provider "null" {} + +resource "aws_vpc" "test" { + cidr_block = "10.1.0.0/16" +} + +resource "aws_vpc_block_public_access_exclusion" "test" { + internet_gateway_exclusion_mode = "allow-bidirectional" + vpc_id = aws_vpc.test.id + + tags = { + (var.unknownTagKey) = null_resource.test.id + } +} + +resource "null_resource" "test" {} + +variable "unknownTagKey" { + type = string + nullable = false +} diff --git a/internal/service/ec2/testdata/BlockPublicAccessExclusion/tagsComputed2/main_gen.tf b/internal/service/ec2/testdata/BlockPublicAccessExclusion/tagsComputed2/main_gen.tf new file mode 100644 index 000000000000..cfa15e673206 --- /dev/null +++ b/internal/service/ec2/testdata/BlockPublicAccessExclusion/tagsComputed2/main_gen.tf @@ -0,0 +1,35 @@ +# Copyright (c) HashiCorp, Inc. +# SPDX-License-Identifier: MPL-2.0 + +provider "null" {} + +resource "aws_vpc" "test" { + cidr_block = "10.1.0.0/16" +} + +resource "aws_vpc_block_public_access_exclusion" "test" { + internet_gateway_exclusion_mode = "allow-bidirectional" + vpc_id = aws_vpc.test.id + + tags = { + (var.unknownTagKey) = null_resource.test.id + (var.knownTagKey) = var.knownTagValue + } +} + +resource "null_resource" "test" {} + +variable "unknownTagKey" { + type = string + nullable = false +} + +variable "knownTagKey" { + type = string + nullable = false +} + +variable "knownTagValue" { + type = string + nullable = false +} diff --git a/internal/service/ec2/testdata/BlockPublicAccessExclusion/tags_defaults/main_gen.tf b/internal/service/ec2/testdata/BlockPublicAccessExclusion/tags_defaults/main_gen.tf new file mode 100644 index 000000000000..64f602f8bd3d --- /dev/null +++ b/internal/service/ec2/testdata/BlockPublicAccessExclusion/tags_defaults/main_gen.tf @@ -0,0 +1,31 @@ +# Copyright (c) HashiCorp, Inc. +# SPDX-License-Identifier: MPL-2.0 + +provider "aws" { + default_tags { + tags = var.provider_tags + } +} + +resource "aws_vpc" "test" { + cidr_block = "10.1.0.0/16" +} + +resource "aws_vpc_block_public_access_exclusion" "test" { + internet_gateway_exclusion_mode = "allow-bidirectional" + vpc_id = aws_vpc.test.id + + tags = var.resource_tags +} + +variable "resource_tags" { + description = "Tags to set on resource. To specify no tags, set to `null`" + # Not setting a default, so that this must explicitly be set to `null` to specify no tags + type = map(string) + nullable = true +} + +variable "provider_tags" { + type = map(string) + nullable = false +} diff --git a/internal/service/ec2/testdata/BlockPublicAccessExclusion/tags_ignore/main_gen.tf b/internal/service/ec2/testdata/BlockPublicAccessExclusion/tags_ignore/main_gen.tf new file mode 100644 index 000000000000..1bab55160b22 --- /dev/null +++ b/internal/service/ec2/testdata/BlockPublicAccessExclusion/tags_ignore/main_gen.tf @@ -0,0 +1,40 @@ +# Copyright (c) HashiCorp, Inc. +# SPDX-License-Identifier: MPL-2.0 + +provider "aws" { + default_tags { + tags = var.provider_tags + } + ignore_tags { + keys = var.ignore_tag_keys + } +} + +resource "aws_vpc" "test" { + cidr_block = "10.1.0.0/16" +} + +resource "aws_vpc_block_public_access_exclusion" "test" { + internet_gateway_exclusion_mode = "allow-bidirectional" + vpc_id = aws_vpc.test.id + + tags = var.resource_tags +} + +variable "resource_tags" { + description = "Tags to set on resource. To specify no tags, set to `null`" + # Not setting a default, so that this must explicitly be set to `null` to specify no tags + type = map(string) + nullable = true +} + +variable "provider_tags" { + type = map(string) + nullable = true + default = null +} + +variable "ignore_tag_keys" { + type = set(string) + nullable = false +} diff --git a/internal/service/ec2/testdata/tmpl/vpc_block_public_access_exclusion_tags.gtpl b/internal/service/ec2/testdata/tmpl/vpc_block_public_access_exclusion_tags.gtpl new file mode 100644 index 000000000000..bfc5437cd381 --- /dev/null +++ b/internal/service/ec2/testdata/tmpl/vpc_block_public_access_exclusion_tags.gtpl @@ -0,0 +1,10 @@ +resource "aws_vpc" "test" { + cidr_block = "10.1.0.0/16" +} + +resource "aws_vpc_block_public_access_exclusion" "test" { + internet_gateway_exclusion_mode = "allow-bidirectional" + vpc_id = aws_vpc.test.id + +{{- template "tags" . }} +} diff --git a/internal/service/ec2/transitgateway_attachment_data_source.go b/internal/service/ec2/transitgateway_attachment_data_source.go index b506172a2595..da19a94d578e 100644 --- a/internal/service/ec2/transitgateway_attachment_data_source.go +++ b/internal/service/ec2/transitgateway_attachment_data_source.go @@ -106,7 +106,7 @@ func dataSourceTransitGatewayAttachmentRead(ctx context.Context, d *schema.Resou arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: names.EC2, - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), AccountID: resourceOwnerID, Resource: fmt.Sprintf("transit-gateway-attachment/%s", d.Id()), }.String() diff --git a/internal/service/ec2/transitgateway_attachment_data_source_test.go b/internal/service/ec2/transitgateway_attachment_data_source_test.go index 492b0be56877..3a429505563d 100644 --- a/internal/service/ec2/transitgateway_attachment_data_source_test.go +++ b/internal/service/ec2/transitgateway_attachment_data_source_test.go @@ -34,13 +34,13 @@ func testAccTransitGatewayAttachmentDataSource_Filter(t *testing.T, semaphore tf Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttrSet(dataSourceName, names.AttrARN), resource.TestCheckResourceAttrPair(resourceName, names.AttrVPCID, dataSourceName, names.AttrResourceID), - acctest.CheckResourceAttrAccountID(dataSourceName, "resource_owner_id"), + acctest.CheckResourceAttrAccountID(ctx, dataSourceName, "resource_owner_id"), resource.TestCheckResourceAttr(dataSourceName, names.AttrResourceType, "vpc"), resource.TestCheckResourceAttrSet(dataSourceName, names.AttrState), resource.TestCheckResourceAttrPair(resourceName, acctest.CtTagsPercent, dataSourceName, acctest.CtTagsPercent), resource.TestCheckResourceAttrPair(resourceName, names.AttrID, dataSourceName, names.AttrTransitGatewayAttachmentID), resource.TestCheckResourceAttrPair(resourceName, names.AttrTransitGatewayID, dataSourceName, names.AttrTransitGatewayID), - acctest.CheckResourceAttrAccountID(dataSourceName, "transit_gateway_owner_id"), + acctest.CheckResourceAttrAccountID(ctx, dataSourceName, "transit_gateway_owner_id"), resource.TestCheckResourceAttr(dataSourceName, "association_state", "associated"), resource.TestCheckResourceAttrSet(dataSourceName, "association_transit_gateway_route_table_id"), ), @@ -69,13 +69,13 @@ func testAccTransitGatewayAttachmentDataSource_ID(t *testing.T, semaphore tfsync Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttrSet(dataSourceName, names.AttrARN), resource.TestCheckResourceAttrPair(resourceName, names.AttrVPCID, dataSourceName, names.AttrResourceID), - acctest.CheckResourceAttrAccountID(dataSourceName, "resource_owner_id"), + acctest.CheckResourceAttrAccountID(ctx, dataSourceName, "resource_owner_id"), resource.TestCheckResourceAttr(dataSourceName, names.AttrResourceType, "vpc"), resource.TestCheckResourceAttrSet(dataSourceName, names.AttrState), resource.TestCheckResourceAttrPair(resourceName, acctest.CtTagsPercent, dataSourceName, acctest.CtTagsPercent), resource.TestCheckResourceAttrPair(resourceName, names.AttrID, dataSourceName, names.AttrTransitGatewayAttachmentID), resource.TestCheckResourceAttrPair(resourceName, names.AttrTransitGatewayID, dataSourceName, names.AttrTransitGatewayID), - acctest.CheckResourceAttrAccountID(dataSourceName, "transit_gateway_owner_id"), + acctest.CheckResourceAttrAccountID(ctx, dataSourceName, "transit_gateway_owner_id"), resource.TestCheckResourceAttr(dataSourceName, "association_state", "associated"), resource.TestCheckResourceAttrSet(dataSourceName, "association_transit_gateway_route_table_id"), ), diff --git a/internal/service/ec2/transitgateway_attachments_data_source.go b/internal/service/ec2/transitgateway_attachments_data_source.go index c5326b1d9eaf..bd2828595889 100644 --- a/internal/service/ec2/transitgateway_attachments_data_source.go +++ b/internal/service/ec2/transitgateway_attachments_data_source.go @@ -66,7 +66,7 @@ func dataSourceTransitGatewayAttachmentsRead(ctx context.Context, d *schema.Reso attachmentIDs = append(attachmentIDs, aws.ToString(v.TransitGatewayAttachmentId)) } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) d.Set(names.AttrIDs, attachmentIDs) return diags diff --git a/internal/service/ec2/transitgateway_connect_peer.go b/internal/service/ec2/transitgateway_connect_peer.go index bda6d95da0e8..35d31ffdd9e2 100644 --- a/internal/service/ec2/transitgateway_connect_peer.go +++ b/internal/service/ec2/transitgateway_connect_peer.go @@ -180,8 +180,8 @@ func resourceTransitGatewayConnectPeerRead(ctx context.Context, d *schema.Resour arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: names.EC2, - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("transit-gateway-connect-peer/%s", d.Id()), }.String() bgpConfigurations := transitGatewayConnectPeer.ConnectPeerConfiguration.BgpConfigurations diff --git a/internal/service/ec2/transitgateway_connect_peer_data_source.go b/internal/service/ec2/transitgateway_connect_peer_data_source.go index dbeaecedb1f7..3ac1238b72ea 100644 --- a/internal/service/ec2/transitgateway_connect_peer_data_source.go +++ b/internal/service/ec2/transitgateway_connect_peer_data_source.go @@ -105,8 +105,8 @@ func dataSourceTransitGatewayConnectPeerRead(ctx context.Context, d *schema.Reso arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: names.EC2, - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("transit-gateway-connect-peer/%s", d.Id()), }.String() bgpConfigurations := transitGatewayConnectPeer.ConnectPeerConfiguration.BgpConfigurations diff --git a/internal/service/ec2/transitgateway_multicast_domain_test.go b/internal/service/ec2/transitgateway_multicast_domain_test.go index b3b720ab515a..4f9f4e129634 100644 --- a/internal/service/ec2/transitgateway_multicast_domain_test.go +++ b/internal/service/ec2/transitgateway_multicast_domain_test.go @@ -41,10 +41,10 @@ func testAccTransitGatewayMulticastDomain_basic(t *testing.T, semaphore tfsync.S Config: testAccTransitGatewayMulticastDomainConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckTransitGatewayMulticastDomainExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`transit-gateway-multicast-domain/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`transit-gateway-multicast-domain/.+`)), resource.TestCheckResourceAttr(resourceName, "auto_accept_shared_associations", "disable"), resource.TestCheckResourceAttr(resourceName, "igmpv2_support", "disable"), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, "static_sources_support", "disable"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttrSet(resourceName, names.AttrTransitGatewayID), diff --git a/internal/service/ec2/transitgateway_peering_attachment.go b/internal/service/ec2/transitgateway_peering_attachment.go index a64fa2e02414..112cf0a7ea12 100644 --- a/internal/service/ec2/transitgateway_peering_attachment.go +++ b/internal/service/ec2/transitgateway_peering_attachment.go @@ -91,7 +91,7 @@ func resourceTransitGatewayPeeringAttachmentCreate(ctx context.Context, d *schem var diags diag.Diagnostics conn := meta.(*conns.AWSClient).EC2Client(ctx) - peerAccountID := meta.(*conns.AWSClient).AccountID + peerAccountID := meta.(*conns.AWSClient).AccountID(ctx) if v, ok := d.GetOk("peer_account_id"); ok { peerAccountID = v.(string) } diff --git a/internal/service/ec2/transitgateway_peering_attachment_data_source.go b/internal/service/ec2/transitgateway_peering_attachment_data_source.go index 640f84d91bbc..8ae366ce7689 100644 --- a/internal/service/ec2/transitgateway_peering_attachment_data_source.go +++ b/internal/service/ec2/transitgateway_peering_attachment_data_source.go @@ -97,7 +97,7 @@ func dataSourceTransitGatewayPeeringAttachmentRead(ctx context.Context, d *schem local := transitGatewayPeeringAttachment.RequesterTgwInfo peer := transitGatewayPeeringAttachment.AccepterTgwInfo - if aws.ToString(transitGatewayPeeringAttachment.AccepterTgwInfo.OwnerId) == meta.(*conns.AWSClient).AccountID && aws.ToString(transitGatewayPeeringAttachment.AccepterTgwInfo.Region) == meta.(*conns.AWSClient).Region { + if aws.ToString(transitGatewayPeeringAttachment.AccepterTgwInfo.OwnerId) == meta.(*conns.AWSClient).AccountID(ctx) && aws.ToString(transitGatewayPeeringAttachment.AccepterTgwInfo.Region) == meta.(*conns.AWSClient).Region(ctx) { local = transitGatewayPeeringAttachment.AccepterTgwInfo peer = transitGatewayPeeringAttachment.RequesterTgwInfo } diff --git a/internal/service/ec2/transitgateway_peering_attachment_test.go b/internal/service/ec2/transitgateway_peering_attachment_test.go index 91b9d7ffd448..8ea6931e2327 100644 --- a/internal/service/ec2/transitgateway_peering_attachment_test.go +++ b/internal/service/ec2/transitgateway_peering_attachment_test.go @@ -44,7 +44,7 @@ func testAccTransitGatewayPeeringAttachment_basic(t *testing.T, semaphore tfsync Check: resource.ComposeAggregateTestCheckFunc( testAccCheckTransitGatewayPeeringAttachmentExists(ctx, resourceName, &transitGatewayPeeringAttachment), resource.TestCheckResourceAttr(resourceName, "options.#", "0"), - acctest.CheckResourceAttrAccountID(resourceName, "peer_account_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "peer_account_id"), resource.TestCheckResourceAttr(resourceName, "peer_region", acctest.AlternateRegion()), resource.TestCheckResourceAttrPair(resourceName, "peer_transit_gateway_id", transitGatewayResourceNamePeer, names.AttrID), resource.TestCheckResourceAttrSet(resourceName, names.AttrState), @@ -206,7 +206,7 @@ func testAccTransitGatewayPeeringAttachment_differentAccount(t *testing.T, semap testAccCheckTransitGatewayPeeringAttachmentExists(ctx, resourceName, &transitGatewayPeeringAttachment), // Test that the peer account ID != the primary (request) account ID func(s *terraform.State) error { - if acctest.CheckResourceAttrAccountID(resourceName, "peer_account_id") == nil { + if acctest.CheckResourceAttrAccountID(ctx, resourceName, "peer_account_id") == nil { return fmt.Errorf("peer_account_id attribute incorrectly to the requester's account ID") } return nil diff --git a/internal/service/ec2/transitgateway_peering_attachments_data_source.go b/internal/service/ec2/transitgateway_peering_attachments_data_source.go index 6570826aa31e..637bc4390b2a 100644 --- a/internal/service/ec2/transitgateway_peering_attachments_data_source.go +++ b/internal/service/ec2/transitgateway_peering_attachments_data_source.go @@ -59,7 +59,7 @@ func dataSourceTransitGatewayPeeringAttachmentsRead(ctx context.Context, d *sche return sdkdiag.AppendErrorf(diags, "reading EC2 Transit Gateway Peering Attachments: %s", err) } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) d.Set(names.AttrIDs, tfslices.ApplyToAll(output, func(v awstypes.TransitGatewayPeeringAttachment) string { return aws.ToString(v.TransitGatewayAttachmentId) })) diff --git a/internal/service/ec2/transitgateway_policy_table.go b/internal/service/ec2/transitgateway_policy_table.go index b549fff7c282..faedfadce967 100644 --- a/internal/service/ec2/transitgateway_policy_table.go +++ b/internal/service/ec2/transitgateway_policy_table.go @@ -106,8 +106,8 @@ func resourceTransitGatewayPolicyTableRead(ctx context.Context, d *schema.Resour arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: names.EC2, - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("transit-gateway-policy-table/%s", d.Id()), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/ec2/transitgateway_policy_table_test.go b/internal/service/ec2/transitgateway_policy_table_test.go index f6bbd4d54e83..e5f0243eb089 100644 --- a/internal/service/ec2/transitgateway_policy_table_test.go +++ b/internal/service/ec2/transitgateway_policy_table_test.go @@ -44,7 +44,7 @@ func testAccTransitGatewayPolicyTable_basic(t *testing.T, semaphore tfsync.Semap Config: testAccTransitGatewayPolicyTableConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckTransitGatewayPolicyTableExists(ctx, resourceName, &transitGatewayPolicyTable1), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`transit-gateway-policy-table/tgw-ptb-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`transit-gateway-policy-table/tgw-ptb-.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrState, "available"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttrPair(resourceName, names.AttrTransitGatewayID, transitGatewayResourceName, names.AttrID), diff --git a/internal/service/ec2/transitgateway_prefix_list_reference_test.go b/internal/service/ec2/transitgateway_prefix_list_reference_test.go index 0f350d8e5456..b9eaa3524660 100644 --- a/internal/service/ec2/transitgateway_prefix_list_reference_test.go +++ b/internal/service/ec2/transitgateway_prefix_list_reference_test.go @@ -43,7 +43,7 @@ func testAccTransitGatewayPrefixListReference_basic(t *testing.T, semaphore tfsy testAccTransitGatewayPrefixListReferenceExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, "blackhole", acctest.CtTrue), resource.TestCheckResourceAttrPair(resourceName, "prefix_list_id", managedPrefixListResourceName, names.AttrID), - acctest.CheckResourceAttrAccountID(resourceName, "prefix_list_owner_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "prefix_list_owner_id"), resource.TestCheckResourceAttr(resourceName, names.AttrTransitGatewayAttachmentID, ""), resource.TestCheckResourceAttrPair(resourceName, "transit_gateway_route_table_id", transitGatewayResourceName, "association_default_route_table_id"), ), diff --git a/internal/service/ec2/transitgateway_route_table.go b/internal/service/ec2/transitgateway_route_table.go index fc6d6fcf60d6..b019bdb84442 100644 --- a/internal/service/ec2/transitgateway_route_table.go +++ b/internal/service/ec2/transitgateway_route_table.go @@ -109,8 +109,8 @@ func resourceTransitGatewayRouteTableRead(ctx context.Context, d *schema.Resourc arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: names.EC2, - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("transit-gateway-route-table/%s", d.Id()), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/ec2/transitgateway_route_table_associations_data_source.go b/internal/service/ec2/transitgateway_route_table_associations_data_source.go index cc723cfb7e3f..fb557c10e24d 100644 --- a/internal/service/ec2/transitgateway_route_table_associations_data_source.go +++ b/internal/service/ec2/transitgateway_route_table_associations_data_source.go @@ -72,7 +72,7 @@ func dataSourceTransitGatewayRouteTableAssociationsRead(ctx context.Context, d * routeTableAssociationIDs = append(routeTableAssociationIDs, aws.ToString(v.TransitGatewayAttachmentId)) } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) d.Set(names.AttrIDs, routeTableAssociationIDs) return diags diff --git a/internal/service/ec2/transitgateway_route_table_data_source.go b/internal/service/ec2/transitgateway_route_table_data_source.go index 7699212ca410..a11e96064616 100644 --- a/internal/service/ec2/transitgateway_route_table_data_source.go +++ b/internal/service/ec2/transitgateway_route_table_data_source.go @@ -88,8 +88,8 @@ func dataSourceTransitGatewayRouteTableRead(ctx context.Context, d *schema.Resou arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: names.EC2, - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("transit-gateway-route-table/%s", d.Id()), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/ec2/transitgateway_route_table_propagations_data_source.go b/internal/service/ec2/transitgateway_route_table_propagations_data_source.go index b56127b05f49..1be9dfc802b2 100644 --- a/internal/service/ec2/transitgateway_route_table_propagations_data_source.go +++ b/internal/service/ec2/transitgateway_route_table_propagations_data_source.go @@ -72,7 +72,7 @@ func dataSourceTransitGatewayRouteTablePropagationsRead(ctx context.Context, d * routeTablePropagationIDs = append(routeTablePropagationIDs, aws.ToString(v.TransitGatewayAttachmentId)) } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) d.Set(names.AttrIDs, routeTablePropagationIDs) return diags diff --git a/internal/service/ec2/transitgateway_route_table_test.go b/internal/service/ec2/transitgateway_route_table_test.go index 1f2f9dca44fb..544d582f4eeb 100644 --- a/internal/service/ec2/transitgateway_route_table_test.go +++ b/internal/service/ec2/transitgateway_route_table_test.go @@ -44,7 +44,7 @@ func testAccTransitGatewayRouteTable_basic(t *testing.T, semaphore tfsync.Semaph Config: testAccTransitGatewayRouteTableConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckTransitGatewayRouteTableExists(ctx, resourceName, &transitGatewayRouteTable1), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`transit-gateway-route-table/tgw-rtb-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`transit-gateway-route-table/tgw-rtb-.+`)), resource.TestCheckResourceAttr(resourceName, "default_association_route_table", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "default_propagation_route_table", acctest.CtFalse), resource.TestCheckResourceAttrPair(resourceName, names.AttrTransitGatewayID, transitGatewayResourceName, names.AttrID), diff --git a/internal/service/ec2/transitgateway_route_tables_data_source.go b/internal/service/ec2/transitgateway_route_tables_data_source.go index c650b6c0d047..18fd8cab90bc 100644 --- a/internal/service/ec2/transitgateway_route_tables_data_source.go +++ b/internal/service/ec2/transitgateway_route_tables_data_source.go @@ -68,7 +68,7 @@ func dataSourceTransitGatewayRouteTablesRead(ctx context.Context, d *schema.Reso routeTableIDs = append(routeTableIDs, aws.ToString(v.TransitGatewayRouteTableId)) } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) d.Set(names.AttrIDs, routeTableIDs) return diags diff --git a/internal/service/ec2/transitgateway_test.go b/internal/service/ec2/transitgateway_test.go index 265a78766ff1..075bfd9c0816 100644 --- a/internal/service/ec2/transitgateway_test.go +++ b/internal/service/ec2/transitgateway_test.go @@ -200,7 +200,7 @@ func testAccTransitGateway_basic(t *testing.T, semaphore tfsync.Semaphore) { Check: resource.ComposeTestCheckFunc( testAccCheckTransitGatewayExists(ctx, resourceName, &transitGateway1), resource.TestCheckResourceAttr(resourceName, "amazon_side_asn", "64512"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`transit-gateway/tgw-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`transit-gateway/tgw-.+`)), resource.TestCheckResourceAttrSet(resourceName, "association_default_route_table_id"), resource.TestCheckResourceAttr(resourceName, "auto_accept_shared_attachments", string(awstypes.AutoAcceptSharedAttachmentsValueDisable)), resource.TestCheckResourceAttr(resourceName, "default_route_table_association", string(awstypes.DefaultRouteTableAssociationValueEnable)), @@ -208,7 +208,7 @@ func testAccTransitGateway_basic(t *testing.T, semaphore tfsync.Semaphore) { resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), resource.TestCheckResourceAttr(resourceName, "dns_support", string(awstypes.DnsSupportValueEnable)), resource.TestCheckResourceAttr(resourceName, "multicast_support", string(awstypes.MulticastSupportValueDisable)), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttrSet(resourceName, "propagation_default_route_table_id"), resource.TestCheckResourceAttr(resourceName, "security_group_referencing_support", string(awstypes.SecurityGroupReferencingSupportValueDisable)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), diff --git a/internal/service/ec2/transitgateway_vpc_attachments_data_source.go b/internal/service/ec2/transitgateway_vpc_attachments_data_source.go index e73237fe579d..52a7241d6949 100644 --- a/internal/service/ec2/transitgateway_vpc_attachments_data_source.go +++ b/internal/service/ec2/transitgateway_vpc_attachments_data_source.go @@ -63,7 +63,7 @@ func dataSourceTransitGatewayVPCAttachmentsRead(ctx context.Context, d *schema.R attachmentIDs = append(attachmentIDs, aws.ToString(v.TransitGatewayAttachmentId)) } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) d.Set(names.AttrIDs, attachmentIDs) return diags diff --git a/internal/service/ec2/verifiedaccess_group_test.go b/internal/service/ec2/verifiedaccess_group_test.go index 83333f8c4328..fd3ce26a8b31 100644 --- a/internal/service/ec2/verifiedaccess_group_test.go +++ b/internal/service/ec2/verifiedaccess_group_test.go @@ -44,7 +44,7 @@ func testAccVerifiedAccessGroup_basic(t *testing.T, semaphore tfsync.Semaphore) resource.TestCheckResourceAttr(resourceName, "deletion_time", ""), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedTime), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwner), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwner), resource.TestCheckResourceAttr(resourceName, "policy_document", ""), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttrSet(resourceName, "verifiedaccess_group_arn"), @@ -125,7 +125,7 @@ func testAccVerifiedAccessGroup_updateKMS(t *testing.T, semaphore tfsync.Semapho resource.TestCheckResourceAttr(resourceName, "deletion_time", ""), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, description), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedTime), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwner), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwner), resource.TestCheckResourceAttr(resourceName, "policy_document", policyDoc), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "1"), resource.TestCheckResourceAttrSet(resourceName, "verifiedaccess_group_arn"), @@ -350,7 +350,7 @@ func testAccVerifiedAccessGroup_setPolicy(t *testing.T, semaphore tfsync.Semapho resource.TestCheckResourceAttr(resourceName, "deletion_time", ""), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), resource.TestCheckResourceAttrSet(resourceName, names.AttrLastUpdatedTime), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwner), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwner), resource.TestCheckResourceAttr(resourceName, "policy_document", ""), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttrSet(resourceName, "verifiedaccess_group_arn"), diff --git a/internal/service/ec2/verifiedaccess_instance_logging_configuration_test.go b/internal/service/ec2/verifiedaccess_instance_logging_configuration_test.go index a123d6357967..5047831de909 100644 --- a/internal/service/ec2/verifiedaccess_instance_logging_configuration_test.go +++ b/internal/service/ec2/verifiedaccess_instance_logging_configuration_test.go @@ -247,7 +247,7 @@ func testAccVerifiedAccessInstanceLoggingConfiguration_accessLogsS3(t *testing.T resource.TestCheckResourceAttr(resourceName, "access_logs.0.s3.#", "1"), resource.TestCheckResourceAttr(resourceName, "access_logs.0.s3.0.enabled", acctest.CtTrue), resource.TestCheckResourceAttrPair(resourceName, "access_logs.0.s3.0.bucket_name", bucketName, names.AttrID), - acctest.CheckResourceAttrAccountID(resourceName, "access_logs.0.s3.0.bucket_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "access_logs.0.s3.0.bucket_owner"), resource.TestCheckResourceAttr(resourceName, "access_logs.0.s3.0.prefix", prefix_original), resource.TestCheckResourceAttrPair(resourceName, "verifiedaccess_instance_id", instanceResourceName, names.AttrID), ), @@ -266,7 +266,7 @@ func testAccVerifiedAccessInstanceLoggingConfiguration_accessLogsS3(t *testing.T resource.TestCheckResourceAttr(resourceName, "access_logs.0.s3.#", "1"), resource.TestCheckResourceAttr(resourceName, "access_logs.0.s3.0.enabled", acctest.CtTrue), resource.TestCheckResourceAttrPair(resourceName, "access_logs.0.s3.0.bucket_name", bucketName2, names.AttrID), - acctest.CheckResourceAttrAccountID(resourceName, "access_logs.0.s3.0.bucket_owner"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "access_logs.0.s3.0.bucket_owner"), resource.TestCheckResourceAttr(resourceName, "access_logs.0.s3.0.prefix", prefix_updated), resource.TestCheckResourceAttrPair(resourceName, "verifiedaccess_instance_id", instanceResourceName, names.AttrID), ), diff --git a/internal/service/ec2/vpc_.go b/internal/service/ec2/vpc_.go index f1779d7bd212..ed2d1247c578 100644 --- a/internal/service/ec2/vpc_.go +++ b/internal/service/ec2/vpc_.go @@ -290,7 +290,7 @@ func resourceVPCRead(ctx context.Context, d *schema.ResourceData, meta interface arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: names.EC2, - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), AccountID: ownerID, Resource: fmt.Sprintf("vpc/%s", d.Id()), }.String() diff --git a/internal/service/ec2/vpc_block_public_access_exclusion.go b/internal/service/ec2/vpc_block_public_access_exclusion.go new file mode 100644 index 000000000000..cb828701ab5c --- /dev/null +++ b/internal/service/ec2/vpc_block_public_access_exclusion.go @@ -0,0 +1,281 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +package ec2 + +import ( + "context" + "fmt" + "strings" + "time" + + "github.com/aws/aws-sdk-go-v2/aws/arn" + "github.com/aws/aws-sdk-go-v2/service/ec2" + awstypes "github.com/aws/aws-sdk-go-v2/service/ec2/types" + "github.com/hashicorp/aws-sdk-go-base/v2/tfawserr" + "github.com/hashicorp/terraform-plugin-framework-timeouts/resource/timeouts" + "github.com/hashicorp/terraform-plugin-framework-validators/resourcevalidator" + "github.com/hashicorp/terraform-plugin-framework/path" + "github.com/hashicorp/terraform-plugin-framework/resource" + "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/types" + "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" + tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" + "github.com/hashicorp/terraform-provider-aws/internal/tfresource" + "github.com/hashicorp/terraform-provider-aws/names" +) + +// @FrameworkResource("aws_vpc_block_public_access_exclusion", name="VPC Block Public Access Exclusion") +// @Tags(identifierAttribute="id") +// @Testing(tagsTest=true) +// @Testing(generator=false) +// @Testing(name="BlockPublicAccessExclusion") +func newVPCBlockPublicAccessExclusionResource(_ context.Context) (resource.ResourceWithConfigure, error) { + r := &vpcBlockPublicAccessExclusionResource{} + + r.SetDefaultCreateTimeout(30 * time.Minute) + r.SetDefaultUpdateTimeout(30 * time.Minute) + r.SetDefaultDeleteTimeout(30 * time.Minute) + + return r, nil +} + +type vpcBlockPublicAccessExclusionResource struct { + framework.ResourceWithConfigure + framework.WithTimeouts + framework.WithImportByID +} + +func (*vpcBlockPublicAccessExclusionResource) Metadata(_ context.Context, request resource.MetadataRequest, response *resource.MetadataResponse) { + response.TypeName = "aws_vpc_block_public_access_exclusion" +} + +func (r *vpcBlockPublicAccessExclusionResource) Schema(ctx context.Context, request resource.SchemaRequest, response *resource.SchemaResponse) { + response.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + names.AttrID: framework.IDAttribute(), + "internet_gateway_exclusion_mode": schema.StringAttribute{ + CustomType: fwtypes.StringEnumType[awstypes.InternetGatewayExclusionMode](), + Required: true, + }, + names.AttrResourceARN: framework.ARNAttributeComputedOnly(), + names.AttrSubnetID: schema.StringAttribute{ + Optional: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.RequiresReplace(), + }, + }, + names.AttrTags: tftags.TagsAttribute(), + names.AttrTagsAll: tftags.TagsAttributeComputedOnly(), + names.AttrVPCID: schema.StringAttribute{ + Optional: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.RequiresReplace(), + }, + }, + }, + Blocks: map[string]schema.Block{ + names.AttrTimeouts: timeouts.Block(ctx, timeouts.Opts{ + Create: true, + Update: true, + Delete: true, + }), + }, + } +} + +func (r *vpcBlockPublicAccessExclusionResource) Create(ctx context.Context, request resource.CreateRequest, response *resource.CreateResponse) { + var data resourceVPCBlockPublicAccessExclusionModel + response.Diagnostics.Append(request.Plan.Get(ctx, &data)...) + if response.Diagnostics.HasError() { + return + } + + conn := r.Meta().EC2Client(ctx) + + input := &ec2.CreateVpcBlockPublicAccessExclusionInput{} + response.Diagnostics.Append(fwflex.Expand(ctx, data, input)...) + if response.Diagnostics.HasError() { + return + } + + // Additional fields. + input.TagSpecifications = getTagSpecificationsIn(ctx, awstypes.ResourceTypeVpcBlockPublicAccessExclusion) + + output, err := conn.CreateVpcBlockPublicAccessExclusion(ctx, input) + + if err != nil { + response.Diagnostics.AddError("creating VPC Block Public Access Exclusion", err.Error()) + + return + } + + // Set values for unknowns. + data.ExclusionID = fwflex.StringToFramework(ctx, output.VpcBlockPublicAccessExclusion.ExclusionId) + data.ResourceARN = fwflex.StringToFramework(ctx, output.VpcBlockPublicAccessExclusion.ResourceArn) + + if _, err := waitVPCBlockPublicAccessExclusionCreated(ctx, conn, data.ExclusionID.ValueString(), r.CreateTimeout(ctx, data.Timeouts)); err != nil { + response.State.SetAttribute(ctx, path.Root(names.AttrID), data.ExclusionID) // Set 'id' so as to taint the resource. + response.Diagnostics.AddError(fmt.Sprintf("waiting for VPC Block Public Access Exclusion (%s) create", data.ExclusionID.ValueString()), err.Error()) + + return + } + + response.Diagnostics.Append(response.State.Set(ctx, data)...) +} + +func (r *vpcBlockPublicAccessExclusionResource) Read(ctx context.Context, request resource.ReadRequest, response *resource.ReadResponse) { + var data resourceVPCBlockPublicAccessExclusionModel + response.Diagnostics.Append(request.State.Get(ctx, &data)...) + if response.Diagnostics.HasError() { + return + } + + conn := r.Meta().EC2Client(ctx) + + output, err := findVPCBlockPublicAccessExclusionByID(ctx, conn, data.ExclusionID.ValueString()) + + if tfresource.NotFound(err) { + response.Diagnostics.Append(fwdiag.NewResourceNotFoundWarningDiagnostic(err)) + response.State.RemoveResource(ctx) + + return + } + + if err != nil { + response.Diagnostics.AddError(fmt.Sprintf("reading VPC Block Public Access Exclusion (%s)", data.ExclusionID.ValueString()), err.Error()) + + return + } + + // Set attributes for import. + response.Diagnostics.Append(fwflex.Flatten(ctx, output, &data)...) + if response.Diagnostics.HasError() { + return + } + + // Extract VPC ID and Subnet ID. + resourceARN, err := arn.Parse(data.ResourceARN.ValueString()) + + if err != nil { + response.Diagnostics.AddError("parsing Resource ARN", err.Error()) + + return + } + + if resource := resourceARN.Resource; strings.HasPrefix(resource, "vpc/") { + data.VPCID = types.StringValue(strings.TrimPrefix(resource, "vpc/")) + } else if strings.HasPrefix(resource, "subnet/") { + data.SubnetID = types.StringValue(strings.TrimPrefix(resource, "subnet/")) + } else { + response.Diagnostics.AddError("parsing Resource_ARN", fmt.Sprintf("unknown resource type: %s", resource)) + + return + } + + setTagsOut(ctx, output.Tags) + + response.Diagnostics.Append(response.State.Set(ctx, &data)...) +} + +func (r *vpcBlockPublicAccessExclusionResource) Update(ctx context.Context, request resource.UpdateRequest, response *resource.UpdateResponse) { + var new, old resourceVPCBlockPublicAccessExclusionModel + 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 + } + + conn := r.Meta().EC2Client(ctx) + + if !new.InternetGatewayExclusionMode.Equal(old.InternetGatewayExclusionMode) { + input := &ec2.ModifyVpcBlockPublicAccessExclusionInput{ + ExclusionId: fwflex.StringFromFramework(ctx, new.ExclusionID), + InternetGatewayExclusionMode: new.InternetGatewayExclusionMode.ValueEnum(), + } + + _, err := conn.ModifyVpcBlockPublicAccessExclusion(ctx, input) + + if err != nil { + response.Diagnostics.AddError(fmt.Sprintf("updating VPC Block Public Access Exclusion (%s)", new.ExclusionID.ValueString()), err.Error()) + + return + } + + if _, err := waitVPCBlockPublicAccessExclusionUpdated(ctx, conn, new.ExclusionID.ValueString(), r.UpdateTimeout(ctx, new.Timeouts)); err != nil { + response.Diagnostics.AddError(fmt.Sprintf("waiting for VPC Block Public Access Exclusion (%s) update", new.ExclusionID.ValueString()), err.Error()) + + return + } + } + + response.Diagnostics.Append(response.State.Set(ctx, &new)...) +} + +func (r *vpcBlockPublicAccessExclusionResource) Delete(ctx context.Context, request resource.DeleteRequest, response *resource.DeleteResponse) { + var data resourceVPCBlockPublicAccessExclusionModel + response.Diagnostics.Append(request.State.Get(ctx, &data)...) + if response.Diagnostics.HasError() { + return + } + + conn := r.Meta().EC2Client(ctx) + + input := &ec2.DeleteVpcBlockPublicAccessExclusionInput{ + ExclusionId: fwflex.StringFromFramework(ctx, data.ExclusionID), + } + + _, err := conn.DeleteVpcBlockPublicAccessExclusion(ctx, input) + + if tfawserr.ErrCodeEquals(err, errCodeInvalidVPCBlockPublicAccessExclusionIdNotFound) { + return + } + + if tfawserr.ErrMessageContains(err, errCodeInvalidParameterValue, "is in delete-complete state and cannot be deleted") { + return + } + + if err != nil { + response.Diagnostics.AddError(fmt.Sprintf("deleting VPC Block Public Access Exclusion (%s)", data.ExclusionID.ValueString()), err.Error()) + + return + } + + if _, err := waitVPCBlockPublicAccessExclusionDeleted(ctx, conn, data.ExclusionID.ValueString(), r.DeleteTimeout(ctx, data.Timeouts)); err != nil { + response.Diagnostics.AddError(fmt.Sprintf("waiting for VPC Block Public Access Exclusion (%s) delete", data.ExclusionID.ValueString()), err.Error()) + + return + } +} + +func (r *vpcBlockPublicAccessExclusionResource) ModifyPlan(ctx context.Context, request resource.ModifyPlanRequest, response *resource.ModifyPlanResponse) { + r.SetTagsAll(ctx, request, response) +} + +func (r *vpcBlockPublicAccessExclusionResource) ConfigValidators(context.Context) []resource.ConfigValidator { + return []resource.ConfigValidator{ + resourcevalidator.ExactlyOneOf( + path.MatchRoot(names.AttrSubnetID), + path.MatchRoot(names.AttrVPCID), + ), + } +} + +type resourceVPCBlockPublicAccessExclusionModel struct { + ExclusionID types.String `tfsdk:"id"` + InternetGatewayExclusionMode fwtypes.StringEnum[awstypes.InternetGatewayExclusionMode] `tfsdk:"internet_gateway_exclusion_mode"` + ResourceARN types.String `tfsdk:"resource_arn"` + SubnetID types.String `tfsdk:"subnet_id"` + Tags tftags.Map `tfsdk:"tags"` + TagsAll tftags.Map `tfsdk:"tags_all"` + Timeouts timeouts.Value `tfsdk:"timeouts"` + VPCID types.String `tfsdk:"vpc_id"` +} diff --git a/internal/service/ec2/vpc_block_public_access_exclusion_tags_gen_test.go b/internal/service/ec2/vpc_block_public_access_exclusion_tags_gen_test.go new file mode 100644 index 000000000000..225264d5a0b4 --- /dev/null +++ b/internal/service/ec2/vpc_block_public_access_exclusion_tags_gen_test.go @@ -0,0 +1,2140 @@ +// Code generated by internal/generate/tagstests/main.go; DO NOT EDIT. + +package ec2_test + +import ( + "testing" + + "github.com/hashicorp/terraform-plugin-testing/config" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/knownvalue" + "github.com/hashicorp/terraform-plugin-testing/plancheck" + "github.com/hashicorp/terraform-plugin-testing/statecheck" + "github.com/hashicorp/terraform-plugin-testing/tfjsonpath" + "github.com/hashicorp/terraform-provider-aws/internal/acctest" + "github.com/hashicorp/terraform-provider-aws/names" +) + +func TestAccVPCBlockPublicAccessExclusion_tags(t *testing.T) { + ctx := acctest.Context(t) + resourceName := "aws_vpc_block_public_access_exclusion.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.EC2ServiceID), + CheckDestroy: testAccCheckBlockPublicAccessExclusionDestroy(ctx), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + Steps: []resource.TestStep{ + { + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags/"), + ConfigVariables: config.Variables{ + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1), + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckBlockPublicAccessExclusionExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + }, + }, + { + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags/"), + ConfigVariables: config.Variables{ + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1), + }), + }, + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + }, + { + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags/"), + ConfigVariables: config.Variables{ + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1Updated), + acctest.CtKey2: config.StringVariable(acctest.CtValue2), + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckBlockPublicAccessExclusionExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1Updated), + acctest.CtKey2: knownvalue.StringExact(acctest.CtValue2), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1Updated), + acctest.CtKey2: knownvalue.StringExact(acctest.CtValue2), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1Updated), + acctest.CtKey2: knownvalue.StringExact(acctest.CtValue2), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1Updated), + acctest.CtKey2: knownvalue.StringExact(acctest.CtValue2), + })), + }, + }, + }, + { + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags/"), + ConfigVariables: config.Variables{ + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1Updated), + acctest.CtKey2: config.StringVariable(acctest.CtValue2), + }), + }, + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + }, + { + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags/"), + ConfigVariables: config.Variables{ + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey2: config.StringVariable(acctest.CtValue2), + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckBlockPublicAccessExclusionExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey2: knownvalue.StringExact(acctest.CtValue2), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey2: knownvalue.StringExact(acctest.CtValue2), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey2: knownvalue.StringExact(acctest.CtValue2), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey2: knownvalue.StringExact(acctest.CtValue2), + })), + }, + }, + }, + { + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags/"), + ConfigVariables: config.Variables{ + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey2: config.StringVariable(acctest.CtValue2), + }), + }, + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + }, + { + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags/"), + ConfigVariables: config.Variables{ + acctest.CtResourceTags: nil, + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckBlockPublicAccessExclusionExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{})), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{})), + }, + }, + }, + { + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags/"), + ConfigVariables: config.Variables{ + acctest.CtResourceTags: nil, + }, + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + }, + }, + }) +} + +func TestAccVPCBlockPublicAccessExclusion_tags_null(t *testing.T) { + ctx := acctest.Context(t) + resourceName := "aws_vpc_block_public_access_exclusion.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.EC2ServiceID), + CheckDestroy: testAccCheckBlockPublicAccessExclusionDestroy(ctx), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + Steps: []resource.TestStep{ + { + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags/"), + ConfigVariables: config.Variables{ + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: nil, + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckBlockPublicAccessExclusionExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.Null(), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(""), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.Null(), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(""), + })), + }, + }, + }, + { + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags/"), + ConfigVariables: config.Variables{ + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: nil, + }), + }, + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + ImportStateVerifyIgnore: []string{ + acctest.CtTagsKey1, // The canonical value returned by the AWS API is "" + }, + }, + }, + }) +} + +func TestAccVPCBlockPublicAccessExclusion_tags_EmptyMap(t *testing.T) { + ctx := acctest.Context(t) + resourceName := "aws_vpc_block_public_access_exclusion.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.EC2ServiceID), + CheckDestroy: testAccCheckBlockPublicAccessExclusionDestroy(ctx), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + Steps: []resource.TestStep{ + { + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags/"), + ConfigVariables: config.Variables{ + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{}), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckBlockPublicAccessExclusionExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{})), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{})), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{})), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{})), + }, + }, + }, + { + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags/"), + ConfigVariables: config.Variables{ + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{}), + }, + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + ImportStateVerifyIgnore: []string{ + acctest.CtTagsKey1, // The canonical value returned by the AWS API is "" + }, + }, + }, + }) +} + +func TestAccVPCBlockPublicAccessExclusion_tags_AddOnUpdate(t *testing.T) { + ctx := acctest.Context(t) + resourceName := "aws_vpc_block_public_access_exclusion.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.EC2ServiceID), + CheckDestroy: testAccCheckBlockPublicAccessExclusionDestroy(ctx), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + Steps: []resource.TestStep{ + { + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags/"), + ConfigVariables: config.Variables{ + acctest.CtResourceTags: nil, + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckBlockPublicAccessExclusionExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{})), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{})), + }, + }, + }, + { + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags/"), + ConfigVariables: config.Variables{ + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1), + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckBlockPublicAccessExclusionExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + }, + }, + { + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags/"), + ConfigVariables: config.Variables{ + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1), + }), + }, + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + }, + }, + }) +} + +func TestAccVPCBlockPublicAccessExclusion_tags_EmptyTag_OnCreate(t *testing.T) { + ctx := acctest.Context(t) + resourceName := "aws_vpc_block_public_access_exclusion.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.EC2ServiceID), + CheckDestroy: testAccCheckBlockPublicAccessExclusionDestroy(ctx), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + Steps: []resource.TestStep{ + { + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags/"), + ConfigVariables: config.Variables{ + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(""), + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckBlockPublicAccessExclusionExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(""), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(""), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(""), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(""), + })), + }, + }, + }, + { + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags/"), + ConfigVariables: config.Variables{ + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(""), + }), + }, + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + }, + { + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags/"), + ConfigVariables: config.Variables{ + acctest.CtResourceTags: nil, + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckBlockPublicAccessExclusionExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{})), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{})), + }, + }, + }, + { + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags/"), + ConfigVariables: config.Variables{ + acctest.CtResourceTags: nil, + }, + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + }, + }, + }) +} + +func TestAccVPCBlockPublicAccessExclusion_tags_EmptyTag_OnUpdate_Add(t *testing.T) { + ctx := acctest.Context(t) + resourceName := "aws_vpc_block_public_access_exclusion.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.EC2ServiceID), + CheckDestroy: testAccCheckBlockPublicAccessExclusionDestroy(ctx), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + Steps: []resource.TestStep{ + { + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags/"), + ConfigVariables: config.Variables{ + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1), + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckBlockPublicAccessExclusionExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + }, + }, + { + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags/"), + ConfigVariables: config.Variables{ + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1), + acctest.CtKey2: config.StringVariable(""), + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckBlockPublicAccessExclusionExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + acctest.CtKey2: knownvalue.StringExact(""), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + acctest.CtKey2: knownvalue.StringExact(""), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + acctest.CtKey2: knownvalue.StringExact(""), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + acctest.CtKey2: knownvalue.StringExact(""), + })), + }, + }, + }, + { + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags/"), + ConfigVariables: config.Variables{ + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1), + acctest.CtKey2: config.StringVariable(""), + }), + }, + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + }, + { + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags/"), + ConfigVariables: config.Variables{ + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1), + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckBlockPublicAccessExclusionExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + }, + }, + { + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags/"), + ConfigVariables: config.Variables{ + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1), + }), + }, + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + }, + }, + }) +} + +func TestAccVPCBlockPublicAccessExclusion_tags_EmptyTag_OnUpdate_Replace(t *testing.T) { + ctx := acctest.Context(t) + resourceName := "aws_vpc_block_public_access_exclusion.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.EC2ServiceID), + CheckDestroy: testAccCheckBlockPublicAccessExclusionDestroy(ctx), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + Steps: []resource.TestStep{ + { + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags/"), + ConfigVariables: config.Variables{ + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1), + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckBlockPublicAccessExclusionExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + }, + }, + { + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags/"), + ConfigVariables: config.Variables{ + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(""), + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckBlockPublicAccessExclusionExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(""), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(""), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(""), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(""), + })), + }, + }, + }, + { + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags/"), + ConfigVariables: config.Variables{ + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(""), + }), + }, + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + }, + }, + }) +} + +func TestAccVPCBlockPublicAccessExclusion_tags_DefaultTags_providerOnly(t *testing.T) { + ctx := acctest.Context(t) + resourceName := "aws_vpc_block_public_access_exclusion.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.EC2ServiceID), + CheckDestroy: testAccCheckBlockPublicAccessExclusionDestroy(ctx), + Steps: []resource.TestStep{ + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1), + }), + acctest.CtResourceTags: nil, + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckBlockPublicAccessExclusionExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1), + }), + acctest.CtResourceTags: nil, + }, + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1Updated), + acctest.CtKey2: config.StringVariable(acctest.CtValue2), + }), + acctest.CtResourceTags: nil, + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckBlockPublicAccessExclusionExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1Updated), + acctest.CtKey2: knownvalue.StringExact(acctest.CtValue2), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1Updated), + acctest.CtKey2: knownvalue.StringExact(acctest.CtValue2), + })), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1Updated), + acctest.CtKey2: config.StringVariable(acctest.CtValue2), + }), + acctest.CtResourceTags: nil, + }, + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey2: config.StringVariable(acctest.CtValue2), + }), + acctest.CtResourceTags: nil, + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckBlockPublicAccessExclusionExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey2: knownvalue.StringExact(acctest.CtValue2), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey2: knownvalue.StringExact(acctest.CtValue2), + })), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey2: config.StringVariable(acctest.CtValue2), + }), + acctest.CtResourceTags: nil, + }, + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags/"), + ConfigVariables: config.Variables{ + acctest.CtResourceTags: nil, + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckBlockPublicAccessExclusionExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{})), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{})), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags/"), + ConfigVariables: config.Variables{ + acctest.CtResourceTags: nil, + }, + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + }, + }, + }) +} + +func TestAccVPCBlockPublicAccessExclusion_tags_DefaultTags_nonOverlapping(t *testing.T) { + ctx := acctest.Context(t) + resourceName := "aws_vpc_block_public_access_exclusion.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.EC2ServiceID), + CheckDestroy: testAccCheckBlockPublicAccessExclusionDestroy(ctx), + Steps: []resource.TestStep{ + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtProviderKey1: config.StringVariable(acctest.CtProviderValue1), + }), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtResourceKey1: config.StringVariable(acctest.CtResourceValue1), + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckBlockPublicAccessExclusionExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtProviderKey1: knownvalue.StringExact(acctest.CtProviderValue1), + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtProviderKey1: knownvalue.StringExact(acctest.CtProviderValue1), + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1), + })), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtProviderKey1: config.StringVariable(acctest.CtProviderValue1), + }), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtResourceKey1: config.StringVariable(acctest.CtResourceValue1), + }), + }, + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtProviderKey1: config.StringVariable(acctest.CtProviderValue1Updated), + }), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtResourceKey1: config.StringVariable(acctest.CtResourceValue1Updated), + acctest.CtResourceKey2: config.StringVariable(acctest.CtResourceValue2), + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckBlockPublicAccessExclusionExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1Updated), + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtProviderKey1: knownvalue.StringExact(acctest.CtProviderValue1Updated), + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1Updated), + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1Updated), + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtProviderKey1: knownvalue.StringExact(acctest.CtProviderValue1Updated), + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1Updated), + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2), + })), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtProviderKey1: config.StringVariable(acctest.CtProviderValue1Updated), + }), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtResourceKey1: config.StringVariable(acctest.CtResourceValue1Updated), + acctest.CtResourceKey2: config.StringVariable(acctest.CtResourceValue2), + }), + }, + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags/"), + ConfigVariables: config.Variables{ + acctest.CtResourceTags: nil, + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckBlockPublicAccessExclusionExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{})), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{})), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags/"), + ConfigVariables: config.Variables{ + acctest.CtResourceTags: nil, + }, + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + }, + }, + }) +} + +func TestAccVPCBlockPublicAccessExclusion_tags_DefaultTags_overlapping(t *testing.T) { + ctx := acctest.Context(t) + resourceName := "aws_vpc_block_public_access_exclusion.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.EC2ServiceID), + CheckDestroy: testAccCheckBlockPublicAccessExclusionDestroy(ctx), + Steps: []resource.TestStep{ + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtOverlapKey1: config.StringVariable(acctest.CtProviderValue1), + }), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtOverlapKey1: config.StringVariable(acctest.CtResourceValue1), + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckBlockPublicAccessExclusionExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtOverlapKey1: knownvalue.StringExact(acctest.CtResourceValue1), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtOverlapKey1: knownvalue.StringExact(acctest.CtResourceValue1), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtOverlapKey1: knownvalue.StringExact(acctest.CtResourceValue1), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtOverlapKey1: knownvalue.StringExact(acctest.CtResourceValue1), + })), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtOverlapKey1: config.StringVariable(acctest.CtProviderValue1), + }), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtOverlapKey1: config.StringVariable(acctest.CtResourceValue1), + }), + }, + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtOverlapKey1: config.StringVariable(acctest.CtProviderValue1), + acctest.CtOverlapKey2: config.StringVariable("providervalue2"), + }), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtOverlapKey1: config.StringVariable(acctest.CtResourceValue1), + acctest.CtOverlapKey2: config.StringVariable(acctest.CtResourceValue2), + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckBlockPublicAccessExclusionExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtOverlapKey1: knownvalue.StringExact(acctest.CtResourceValue1), + acctest.CtOverlapKey2: knownvalue.StringExact(acctest.CtResourceValue2), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtOverlapKey1: knownvalue.StringExact(acctest.CtResourceValue1), + acctest.CtOverlapKey2: knownvalue.StringExact(acctest.CtResourceValue2), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtOverlapKey1: knownvalue.StringExact(acctest.CtResourceValue1), + acctest.CtOverlapKey2: knownvalue.StringExact(acctest.CtResourceValue2), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtOverlapKey1: knownvalue.StringExact(acctest.CtResourceValue1), + acctest.CtOverlapKey2: knownvalue.StringExact(acctest.CtResourceValue2), + })), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtOverlapKey1: config.StringVariable(acctest.CtProviderValue1), + acctest.CtOverlapKey2: config.StringVariable("providervalue2"), + }), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtOverlapKey1: config.StringVariable(acctest.CtResourceValue1), + acctest.CtOverlapKey2: config.StringVariable(acctest.CtResourceValue2), + }), + }, + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtOverlapKey1: config.StringVariable(acctest.CtProviderValue1), + }), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtOverlapKey1: config.StringVariable(acctest.CtResourceValue2), + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckBlockPublicAccessExclusionExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtOverlapKey1: knownvalue.StringExact(acctest.CtResourceValue2), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtOverlapKey1: knownvalue.StringExact(acctest.CtResourceValue2), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtOverlapKey1: knownvalue.StringExact(acctest.CtResourceValue2), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtOverlapKey1: knownvalue.StringExact(acctest.CtResourceValue2), + })), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtOverlapKey1: config.StringVariable(acctest.CtProviderValue1), + }), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtOverlapKey1: config.StringVariable(acctest.CtResourceValue2), + }), + }, + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + }, + }, + }) +} + +func TestAccVPCBlockPublicAccessExclusion_tags_DefaultTags_updateToProviderOnly(t *testing.T) { + ctx := acctest.Context(t) + resourceName := "aws_vpc_block_public_access_exclusion.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.EC2ServiceID), + CheckDestroy: testAccCheckBlockPublicAccessExclusionDestroy(ctx), + Steps: []resource.TestStep{ + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags/"), + ConfigVariables: config.Variables{ + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1), + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckBlockPublicAccessExclusionExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1), + }), + acctest.CtResourceTags: nil, + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckBlockPublicAccessExclusionExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1), + }), + acctest.CtResourceTags: nil, + }, + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + }, + }, + }) +} + +func TestAccVPCBlockPublicAccessExclusion_tags_DefaultTags_updateToResourceOnly(t *testing.T) { + ctx := acctest.Context(t) + resourceName := "aws_vpc_block_public_access_exclusion.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.EC2ServiceID), + CheckDestroy: testAccCheckBlockPublicAccessExclusionDestroy(ctx), + Steps: []resource.TestStep{ + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1), + }), + acctest.CtResourceTags: nil, + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckBlockPublicAccessExclusionExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags/"), + ConfigVariables: config.Variables{ + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1), + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckBlockPublicAccessExclusionExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags/"), + ConfigVariables: config.Variables{ + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1), + }), + }, + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + }, + }, + }) +} + +func TestAccVPCBlockPublicAccessExclusion_tags_DefaultTags_emptyResourceTag(t *testing.T) { + ctx := acctest.Context(t) + resourceName := "aws_vpc_block_public_access_exclusion.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.EC2ServiceID), + CheckDestroy: testAccCheckBlockPublicAccessExclusionDestroy(ctx), + Steps: []resource.TestStep{ + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1), + }), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(""), + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckBlockPublicAccessExclusionExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(""), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(""), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(""), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(""), + })), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1), + }), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(""), + }), + }, + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + }, + }, + }) +} + +func TestAccVPCBlockPublicAccessExclusion_tags_DefaultTags_emptyProviderOnlyTag(t *testing.T) { + ctx := acctest.Context(t) + resourceName := "aws_vpc_block_public_access_exclusion.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.EC2ServiceID), + CheckDestroy: testAccCheckBlockPublicAccessExclusionDestroy(ctx), + Steps: []resource.TestStep{ + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(""), + }), + acctest.CtResourceTags: nil, + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckBlockPublicAccessExclusionExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(""), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.Null()), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(""), + })), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(""), + }), + acctest.CtResourceTags: nil, + }, + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + }, + }, + }) +} + +func TestAccVPCBlockPublicAccessExclusion_tags_DefaultTags_nullOverlappingResourceTag(t *testing.T) { + ctx := acctest.Context(t) + resourceName := "aws_vpc_block_public_access_exclusion.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.EC2ServiceID), + CheckDestroy: testAccCheckBlockPublicAccessExclusionDestroy(ctx), + Steps: []resource.TestStep{ + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtProviderValue1), + }), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: nil, + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckBlockPublicAccessExclusionExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.Null(), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(""), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.Null(), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(""), + })), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtProviderValue1), + }), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: nil, + }), + }, + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + ImportStateVerifyIgnore: []string{ + acctest.CtTagsKey1, // The canonical value returned by the AWS API is "" + }, + }, + }, + }) +} + +func TestAccVPCBlockPublicAccessExclusion_tags_DefaultTags_nullNonOverlappingResourceTag(t *testing.T) { + ctx := acctest.Context(t) + resourceName := "aws_vpc_block_public_access_exclusion.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.EC2ServiceID), + CheckDestroy: testAccCheckBlockPublicAccessExclusionDestroy(ctx), + Steps: []resource.TestStep{ + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtProviderKey1: config.StringVariable(acctest.CtProviderValue1), + }), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtResourceKey1: nil, + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckBlockPublicAccessExclusionExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.Null(), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(""), + acctest.CtProviderKey1: knownvalue.StringExact(acctest.CtProviderValue1), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.Null(), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(""), + acctest.CtProviderKey1: knownvalue.StringExact(acctest.CtProviderValue1), + })), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags_defaults/"), + ConfigVariables: config.Variables{ + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtProviderKey1: config.StringVariable(acctest.CtProviderValue1), + }), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtResourceKey1: nil, + }), + }, + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + ImportStateVerifyIgnore: []string{ + "tags.resourcekey1", // The canonical value returned by the AWS API is "" + }, + }, + }, + }) +} + +func TestAccVPCBlockPublicAccessExclusion_tags_ComputedTag_OnCreate(t *testing.T) { + ctx := acctest.Context(t) + resourceName := "aws_vpc_block_public_access_exclusion.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.EC2ServiceID), + CheckDestroy: testAccCheckBlockPublicAccessExclusionDestroy(ctx), + Steps: []resource.TestStep{ + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tagsComputed1/"), + ConfigVariables: config.Variables{ + "unknownTagKey": config.StringVariable("computedkey1"), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckBlockPublicAccessExclusionExists(ctx, resourceName), + resource.TestCheckResourceAttrPair(resourceName, "tags.computedkey1", "null_resource.test", names.AttrID), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapSizeExact(1)), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapSizeExact(1)), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + plancheck.ExpectUnknownValue(resourceName, tfjsonpath.New(names.AttrTags).AtMapKey("computedkey1")), + plancheck.ExpectUnknownValue(resourceName, tfjsonpath.New(names.AttrTagsAll)), + }, + PostApplyPreRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tagsComputed1/"), + ConfigVariables: config.Variables{ + "unknownTagKey": config.StringVariable("computedkey1"), + }, + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + }, + }, + }) +} + +func TestAccVPCBlockPublicAccessExclusion_tags_ComputedTag_OnUpdate_Add(t *testing.T) { + ctx := acctest.Context(t) + resourceName := "aws_vpc_block_public_access_exclusion.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.EC2ServiceID), + CheckDestroy: testAccCheckBlockPublicAccessExclusionDestroy(ctx), + Steps: []resource.TestStep{ + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags/"), + ConfigVariables: config.Variables{ + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1), + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckBlockPublicAccessExclusionExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tagsComputed2/"), + ConfigVariables: config.Variables{ + "unknownTagKey": config.StringVariable("computedkey1"), + "knownTagKey": config.StringVariable(acctest.CtKey1), + "knownTagValue": config.StringVariable(acctest.CtValue1), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckBlockPublicAccessExclusionExists(ctx, resourceName), + resource.TestCheckResourceAttrPair(resourceName, "tags.computedkey1", "null_resource.test", names.AttrID), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapSizeExact(2)), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapPartial(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapSizeExact(2)), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapPartial(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectUnknownValue(resourceName, tfjsonpath.New(names.AttrTags).AtMapKey("computedkey1")), + plancheck.ExpectUnknownValue(resourceName, tfjsonpath.New(names.AttrTagsAll)), + }, + PostApplyPreRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tagsComputed2/"), + ConfigVariables: config.Variables{ + "unknownTagKey": config.StringVariable("computedkey1"), + "knownTagKey": config.StringVariable(acctest.CtKey1), + "knownTagValue": config.StringVariable(acctest.CtValue1), + }, + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + }, + }, + }) +} + +func TestAccVPCBlockPublicAccessExclusion_tags_ComputedTag_OnUpdate_Replace(t *testing.T) { + ctx := acctest.Context(t) + resourceName := "aws_vpc_block_public_access_exclusion.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.EC2ServiceID), + CheckDestroy: testAccCheckBlockPublicAccessExclusionDestroy(ctx), + Steps: []resource.TestStep{ + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags/"), + ConfigVariables: config.Variables{ + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtKey1: config.StringVariable(acctest.CtValue1), + }), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckBlockPublicAccessExclusionExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtKey1: knownvalue.StringExact(acctest.CtValue1), + })), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tagsComputed1/"), + ConfigVariables: config.Variables{ + "unknownTagKey": config.StringVariable(acctest.CtKey1), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckBlockPublicAccessExclusionExists(ctx, resourceName), + resource.TestCheckResourceAttrPair(resourceName, acctest.CtTagsKey1, "null_resource.test", names.AttrID), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapSizeExact(1)), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapSizeExact(1)), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectUnknownValue(resourceName, tfjsonpath.New(names.AttrTags).AtMapKey(acctest.CtKey1)), + plancheck.ExpectUnknownValue(resourceName, tfjsonpath.New(names.AttrTagsAll)), + }, + PostApplyPreRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + }, + }, + }, + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tagsComputed1/"), + ConfigVariables: config.Variables{ + "unknownTagKey": config.StringVariable(acctest.CtKey1), + }, + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + }, + }, + }) +} + +func TestAccVPCBlockPublicAccessExclusion_tags_IgnoreTags_Overlap_DefaultTag(t *testing.T) { + ctx := acctest.Context(t) + resourceName := "aws_vpc_block_public_access_exclusion.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.EC2ServiceID), + CheckDestroy: testAccCheckBlockPublicAccessExclusionDestroy(ctx), + Steps: []resource.TestStep{ + // 1: Create + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags_ignore/"), + ConfigVariables: config.Variables{ + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtProviderKey1: config.StringVariable(acctest.CtProviderValue1), + }), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtResourceKey1: config.StringVariable(acctest.CtResourceValue1), + }), + "ignore_tag_keys": config.SetVariable( + config.StringVariable(acctest.CtProviderKey1), + ), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckBlockPublicAccessExclusionExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1), + })), + expectFullResourceTags(resourceName, knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtProviderKey1: knownvalue.StringExact(acctest.CtProviderValue1), // TODO: Should not be set + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1), + })), + }, + PostApplyPreRefresh: []plancheck.PlanCheck{ + plancheck.ExpectEmptyPlan(), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectEmptyPlan(), + }, + }, + }, + // 2: Update ignored tag only + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags_ignore/"), + ConfigVariables: config.Variables{ + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtProviderKey1: config.StringVariable(acctest.CtProviderValue1Updated), + }), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtResourceKey1: config.StringVariable(acctest.CtResourceValue1), + }), + "ignore_tag_keys": config.SetVariable( + config.StringVariable(acctest.CtProviderKey1), + ), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckBlockPublicAccessExclusionExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1), + })), + expectFullResourceTags(resourceName, knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtProviderKey1: knownvalue.StringExact(acctest.CtProviderValue1), // TODO: Should not be set + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionNoop), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1), + })), + }, + PostApplyPreRefresh: []plancheck.PlanCheck{ + plancheck.ExpectEmptyPlan(), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectEmptyPlan(), + }, + }, + }, + // 3: Update both tags + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags_ignore/"), + ConfigVariables: config.Variables{ + acctest.CtProviderTags: config.MapVariable(map[string]config.Variable{ + acctest.CtProviderKey1: config.StringVariable(acctest.CtProviderValue1Again), + }), + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtResourceKey1: config.StringVariable(acctest.CtResourceValue1Updated), + }), + "ignore_tag_keys": config.SetVariable( + config.StringVariable(acctest.CtProviderKey1), + ), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckBlockPublicAccessExclusionExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1Updated), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1Updated), + })), + expectFullResourceTags(resourceName, knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtProviderKey1: knownvalue.StringExact(acctest.CtProviderValue1), // TODO: Should not be set + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1Updated), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1Updated), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1Updated), + })), + }, + PostApplyPreRefresh: []plancheck.PlanCheck{ + plancheck.ExpectEmptyPlan(), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectEmptyPlan(), + }, + }, + }, + }, + }) +} + +func TestAccVPCBlockPublicAccessExclusion_tags_IgnoreTags_Overlap_ResourceTag(t *testing.T) { + ctx := acctest.Context(t) + resourceName := "aws_vpc_block_public_access_exclusion.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.EC2ServiceID), + CheckDestroy: testAccCheckBlockPublicAccessExclusionDestroy(ctx), + Steps: []resource.TestStep{ + // 1: Create + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags_ignore/"), + ConfigVariables: config.Variables{ + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtResourceKey1: config.StringVariable(acctest.CtResourceValue1), + acctest.CtResourceKey2: config.StringVariable(acctest.CtResourceValue2), + }), + "ignore_tag_keys": config.SetVariable( + config.StringVariable(acctest.CtResourceKey1), + ), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckBlockPublicAccessExclusionExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1), + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2), + })), + expectFullResourceTags(resourceName, knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1), // TODO: Should not be set + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1), + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2), + })), + }, + PostApplyPreRefresh: []plancheck.PlanCheck{ + plancheck.ExpectEmptyPlan(), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), // TODO: Should be NoOp + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1), + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2), + })), + }, + }, + ExpectNonEmptyPlan: true, + }, + // 2: Update ignored tag + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags_ignore/"), + ConfigVariables: config.Variables{ + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtResourceKey1: config.StringVariable(acctest.CtResourceValue1Updated), + acctest.CtResourceKey2: config.StringVariable(acctest.CtResourceValue2), + }), + "ignore_tag_keys": config.SetVariable( + config.StringVariable(acctest.CtResourceKey1), + ), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckBlockPublicAccessExclusionExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1Updated), + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2), + })), + expectFullResourceTags(resourceName, knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1), // TODO: Should not be set + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1Updated), + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2), + })), + }, + PostApplyPreRefresh: []plancheck.PlanCheck{ + plancheck.ExpectEmptyPlan(), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), // TODO: Should be NoOp + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1Updated), + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2), + })), + }, + }, + ExpectNonEmptyPlan: true, + }, + // 3: Update both tags + { + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ConfigDirectory: config.StaticDirectory("testdata/BlockPublicAccessExclusion/tags_ignore/"), + ConfigVariables: config.Variables{ + acctest.CtResourceTags: config.MapVariable(map[string]config.Variable{ + acctest.CtResourceKey1: config.StringVariable(acctest.CtResourceValue1Again), + acctest.CtResourceKey2: config.StringVariable(acctest.CtResourceValue2Updated), + }), + "ignore_tag_keys": config.SetVariable( + config.StringVariable(acctest.CtResourceKey1), + ), + }, + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckBlockPublicAccessExclusionExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1Again), + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2Updated), + })), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2Updated), + })), + expectFullResourceTags(resourceName, knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1), // TODO: Should not be set + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2Updated), + })), + }, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1Again), + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2Updated), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2Updated), + })), + }, + PostApplyPreRefresh: []plancheck.PlanCheck{ + plancheck.ExpectEmptyPlan(), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), // TODO: Should be NoOp + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTags), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey1: knownvalue.StringExact(acctest.CtResourceValue1Again), + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2Updated), + })), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrTagsAll), knownvalue.MapExact(map[string]knownvalue.Check{ + acctest.CtResourceKey2: knownvalue.StringExact(acctest.CtResourceValue2Updated), + })), + }, + }, + ExpectNonEmptyPlan: true, + }, + }, + }) +} diff --git a/internal/service/ec2/vpc_block_public_access_exclusion_test.go b/internal/service/ec2/vpc_block_public_access_exclusion_test.go new file mode 100644 index 000000000000..893ffec911f5 --- /dev/null +++ b/internal/service/ec2/vpc_block_public_access_exclusion_test.go @@ -0,0 +1,230 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +package ec2_test + +import ( + "context" + "fmt" + "testing" + + awstypes "github.com/aws/aws-sdk-go-v2/service/ec2/types" + sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/knownvalue" + "github.com/hashicorp/terraform-plugin-testing/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" + tfec2 "github.com/hashicorp/terraform-provider-aws/internal/service/ec2" + "github.com/hashicorp/terraform-provider-aws/internal/tfresource" + "github.com/hashicorp/terraform-provider-aws/names" +) + +func TestAccVPCBlockPublicAccessExclusion_basicVPC(t *testing.T) { + ctx := acctest.Context(t) + resourceName := "aws_vpc_block_public_access_exclusion.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + internetGatewayExclusionMode := string(awstypes.InternetGatewayExclusionModeAllowEgress) + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { + acctest.PreCheck(ctx, t) + testAccPreCheckVPCBlockPublicAccess(ctx, t) + }, + ErrorCheck: acctest.ErrorCheck(t, names.EC2ServiceID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckVPCBlockPublicAccessExclusionDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccVPCBlockPublicAccessExclusionConfig_basicVPC(rName, internetGatewayExclusionMode), + Check: resource.ComposeTestCheckFunc( + testAccCheckVPCBlockPublicAccessExclusionExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New("internet_gateway_exclusion_mode"), knownvalue.StringExact(internetGatewayExclusionMode)), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrResourceARN), knownvalue.NotNull()), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrSubnetID), knownvalue.Null()), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrVPCID), knownvalue.NotNull()), + }, + }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + }, + }, + }) +} + +func TestAccVPCBlockPublicAccessExclusion_basicSubnet(t *testing.T) { + ctx := acctest.Context(t) + resourceName := "aws_vpc_block_public_access_exclusion.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + internetGatewayExclusionMode := string(awstypes.InternetGatewayExclusionModeAllowEgress) + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { + acctest.PreCheck(ctx, t) + testAccPreCheckVPCBlockPublicAccess(ctx, t) + }, + ErrorCheck: acctest.ErrorCheck(t, names.EC2ServiceID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckVPCBlockPublicAccessExclusionDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccVPCBlockPublicAccessExclusionConfig_basicSubnet(rName, internetGatewayExclusionMode), + Check: resource.ComposeTestCheckFunc( + testAccCheckVPCBlockPublicAccessExclusionExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New("internet_gateway_exclusion_mode"), knownvalue.StringExact(internetGatewayExclusionMode)), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrResourceARN), knownvalue.NotNull()), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrSubnetID), knownvalue.NotNull()), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrVPCID), knownvalue.Null()), + }, + }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + }, + }, + }) +} + +func TestAccVPCBlockPublicAccessExclusion_disappears(t *testing.T) { + ctx := acctest.Context(t) + resourceName := "aws_vpc_block_public_access_exclusion.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + internetGatewayExclusionMode := string(awstypes.InternetGatewayExclusionModeAllowEgress) + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { + acctest.PreCheck(ctx, t) + testAccPreCheckVPCBlockPublicAccess(ctx, t) + }, + ErrorCheck: acctest.ErrorCheck(t, names.EC2ServiceID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckVPCBlockPublicAccessExclusionDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccVPCBlockPublicAccessExclusionConfig_basicVPC(rName, internetGatewayExclusionMode), + Check: resource.ComposeTestCheckFunc( + testAccCheckVPCBlockPublicAccessExclusionExists(ctx, resourceName), + acctest.CheckFrameworkResourceDisappears(ctx, acctest.Provider, tfec2.ResourceVPCBlockPublicAccessExclusion, resourceName), + ), + ExpectNonEmptyPlan: true, + }, + }, + }) +} + +func TestAccVPCBlockPublicAccessExclusion_update(t *testing.T) { + ctx := acctest.Context(t) + resourceName := "aws_vpc_block_public_access_exclusion.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + internetGatewayExclusionMode1 := string(awstypes.InternetGatewayExclusionModeAllowBidirectional) + internetGatewayExclusionMode2 := string(awstypes.InternetGatewayExclusionModeAllowEgress) + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { + acctest.PreCheck(ctx, t) + testAccPreCheckVPCBlockPublicAccess(ctx, t) + }, + ErrorCheck: acctest.ErrorCheck(t, names.EC2ServiceID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckVPCBlockPublicAccessExclusionDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccVPCBlockPublicAccessExclusionConfig_basicVPC(rName, internetGatewayExclusionMode1), + Check: resource.ComposeTestCheckFunc( + testAccCheckVPCBlockPublicAccessExclusionExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New("internet_gateway_exclusion_mode"), knownvalue.StringExact(internetGatewayExclusionMode1)), + }, + }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + }, + { + Config: testAccVPCBlockPublicAccessExclusionConfig_basicVPC(rName, internetGatewayExclusionMode2), + Check: resource.ComposeTestCheckFunc( + testAccCheckVPCBlockPublicAccessExclusionExists(ctx, resourceName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New("internet_gateway_exclusion_mode"), knownvalue.StringExact(internetGatewayExclusionMode2)), + }, + }, + }, + }) +} + +func testAccCheckVPCBlockPublicAccessExclusionDestroy(ctx context.Context) resource.TestCheckFunc { + return func(s *terraform.State) error { + conn := acctest.Provider.Meta().(*conns.AWSClient).EC2Client(ctx) + + for _, rs := range s.RootModule().Resources { + if rs.Type != "aws_vpc_block_public_access_exclusion" { + continue + } + + _, err := tfec2.FindVPCBlockPublicAccessExclusionByID(ctx, conn, rs.Primary.ID) + + if tfresource.NotFound(err) { + continue + } + + if err != nil { + return err + } + + return fmt.Errorf("VPC Block Public Access Exclusion %s still exists", rs.Primary.ID) + } + + return nil + } +} + +func testAccCheckVPCBlockPublicAccessExclusionExists(ctx context.Context, n string) resource.TestCheckFunc { + return func(s *terraform.State) error { + rs, ok := s.RootModule().Resources[n] + if !ok { + return fmt.Errorf("Not found: %s", n) + } + + conn := acctest.Provider.Meta().(*conns.AWSClient).EC2Client(ctx) + + _, err := tfec2.FindVPCBlockPublicAccessExclusionByID(ctx, conn, rs.Primary.ID) + + return err + } +} + +// For generated tests. +var ( + testAccCheckBlockPublicAccessExclusionDestroy = testAccCheckVPCBlockPublicAccessExclusionDestroy + testAccCheckBlockPublicAccessExclusionExists = testAccCheckVPCBlockPublicAccessExclusionExists +) + +func testAccVPCBlockPublicAccessExclusionConfig_basicVPC(rName, internetGatewayExclusionMode string) string { + return acctest.ConfigCompose(acctest.ConfigVPCWithSubnets(rName, 1), fmt.Sprintf(` +resource "aws_vpc_block_public_access_exclusion" "test" { + internet_gateway_exclusion_mode = %[1]q + vpc_id = aws_vpc.test.id +} +`, internetGatewayExclusionMode)) +} + +func testAccVPCBlockPublicAccessExclusionConfig_basicSubnet(rName, internetGatewayExclusionMode string) string { + return acctest.ConfigCompose(acctest.ConfigVPCWithSubnets(rName, 1), fmt.Sprintf(` +resource "aws_vpc_block_public_access_exclusion" "test" { + internet_gateway_exclusion_mode = %[1]q + subnet_id = aws_subnet.test[0].id +} +`, internetGatewayExclusionMode)) +} diff --git a/internal/service/ec2/vpc_block_public_access_options.go b/internal/service/ec2/vpc_block_public_access_options.go new file mode 100644 index 000000000000..48398eb3fa41 --- /dev/null +++ b/internal/service/ec2/vpc_block_public_access_options.go @@ -0,0 +1,214 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +package ec2 + +import ( + "context" + "fmt" + "time" + + "github.com/aws/aws-sdk-go-v2/service/ec2" + awstypes "github.com/aws/aws-sdk-go-v2/service/ec2/types" + "github.com/hashicorp/terraform-plugin-framework-timeouts/resource/timeouts" + "github.com/hashicorp/terraform-plugin-framework/path" + "github.com/hashicorp/terraform-plugin-framework/resource" + "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/types" + "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" + "github.com/hashicorp/terraform-provider-aws/names" +) + +// @FrameworkResource("aws_vpc_block_public_access_options", name="VPC Block Public Access Options") +func newVPCBlockPublicAccessOptionsResource(context.Context) (resource.ResourceWithConfigure, error) { + r := &vpcBlockPublicAccessOptionsResource{} + + r.SetDefaultCreateTimeout(30 * time.Minute) + r.SetDefaultUpdateTimeout(30 * time.Minute) + r.SetDefaultDeleteTimeout(30 * time.Minute) + + return r, nil +} + +type vpcBlockPublicAccessOptionsResource struct { + framework.ResourceWithConfigure + framework.WithTimeouts + framework.WithImportByID +} + +func (*vpcBlockPublicAccessOptionsResource) Metadata(_ context.Context, request resource.MetadataRequest, response *resource.MetadataResponse) { + response.TypeName = "aws_vpc_block_public_access_options" +} + +func (r *vpcBlockPublicAccessOptionsResource) Schema(ctx context.Context, request resource.SchemaRequest, response *resource.SchemaResponse) { + response.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + names.AttrAWSAccountID: schema.StringAttribute{ + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + }, + "aws_region": schema.StringAttribute{ + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + }, + names.AttrID: framework.IDAttribute(), + "internet_gateway_block_mode": schema.StringAttribute{ + CustomType: fwtypes.StringEnumType[awstypes.InternetGatewayBlockMode](), + Required: true, + }, + }, + Blocks: map[string]schema.Block{ + names.AttrTimeouts: timeouts.Block(ctx, timeouts.Opts{ + Create: true, + Update: true, + Delete: true, + }), + }, + } +} + +func (r *vpcBlockPublicAccessOptionsResource) Create(ctx context.Context, request resource.CreateRequest, response *resource.CreateResponse) { + var data vpcBlockPublicAccessOptionsResourceModel + response.Diagnostics.Append(request.Plan.Get(ctx, &data)...) + if response.Diagnostics.HasError() { + return + } + + conn := r.Meta().EC2Client(ctx) + + input := &ec2.ModifyVpcBlockPublicAccessOptionsInput{ + InternetGatewayBlockMode: data.InternetGatewayBlockMode.ValueEnum(), + } + + output, err := conn.ModifyVpcBlockPublicAccessOptions(ctx, input) + + if err != nil { + response.Diagnostics.AddError("creating VPC Block Public Access Options", err.Error()) + + return + } + + // Set values for unknowns. + data.AWSAccountID = fwflex.StringToFramework(ctx, output.VpcBlockPublicAccessOptions.AwsAccountId) + data.AWSRegion = fwflex.StringToFramework(ctx, output.VpcBlockPublicAccessOptions.AwsRegion) + data.ID = data.AWSRegion + + if _, err := waitVPCBlockPublicAccessOptionsUpdated(ctx, conn, r.CreateTimeout(ctx, data.Timeouts)); err != nil { + response.State.SetAttribute(ctx, path.Root(names.AttrID), data.ID) // Set 'id' so as to taint the resource. + response.Diagnostics.AddError(fmt.Sprintf("waiting for VPC Block Public Access Options (%s) create", data.ID.ValueString()), err.Error()) + + return + } + + response.Diagnostics.Append(response.State.Set(ctx, &data)...) +} + +func (r *vpcBlockPublicAccessOptionsResource) Read(ctx context.Context, request resource.ReadRequest, response *resource.ReadResponse) { + var data vpcBlockPublicAccessOptionsResourceModel + response.Diagnostics.Append(request.State.Get(ctx, &data)...) + if response.Diagnostics.HasError() { + return + } + + conn := r.Meta().EC2Client(ctx) + + options, err := findVPCBlockPublicAccessOptions(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 VPC Block Public Access Options (%s)", data.ID.ValueString()), err.Error()) + + return + } + + // Set attributes for import. + response.Diagnostics.Append(fwflex.Flatten(ctx, options, &data)...) + if response.Diagnostics.HasError() { + return + } + + response.Diagnostics.Append(response.State.Set(ctx, &data)...) +} + +func (r *vpcBlockPublicAccessOptionsResource) Update(ctx context.Context, request resource.UpdateRequest, response *resource.UpdateResponse) { + var new vpcBlockPublicAccessOptionsResourceModel + response.Diagnostics.Append(request.Plan.Get(ctx, &new)...) + if response.Diagnostics.HasError() { + return + } + + conn := r.Meta().EC2Client(ctx) + + input := &ec2.ModifyVpcBlockPublicAccessOptionsInput{ + InternetGatewayBlockMode: new.InternetGatewayBlockMode.ValueEnum(), + } + + _, err := conn.ModifyVpcBlockPublicAccessOptions(ctx, input) + + if err != nil { + response.Diagnostics.AddError(fmt.Sprintf("updating VPC Block Public Access Options (%s)", new.ID.ValueString()), err.Error()) + + return + } + + if _, err := waitVPCBlockPublicAccessOptionsUpdated(ctx, conn, r.UpdateTimeout(ctx, new.Timeouts)); err != nil { + response.Diagnostics.AddError(fmt.Sprintf("waiting for VPC Block Public Access Options (%s) update", new.ID.ValueString()), err.Error()) + + return + } + + response.Diagnostics.Append(response.State.Set(ctx, &new)...) +} + +func (r *vpcBlockPublicAccessOptionsResource) Delete(ctx context.Context, request resource.DeleteRequest, response *resource.DeleteResponse) { + var data vpcBlockPublicAccessOptionsResourceModel + response.Diagnostics.Append(request.State.Get(ctx, &data)...) + if response.Diagnostics.HasError() { + return + } + + conn := r.Meta().EC2Client(ctx) + + // On deletion of this resource set the VPC Block Public Access Options to off. + input := &ec2.ModifyVpcBlockPublicAccessOptionsInput{ + InternetGatewayBlockMode: awstypes.InternetGatewayBlockModeOff, + } + + _, err := conn.ModifyVpcBlockPublicAccessOptions(ctx, input) + + if err != nil { + response.Diagnostics.AddError(fmt.Sprintf("deleting VPC Block Public Access Options (%s)", data.ID.ValueString()), err.Error()) + + return + } + + if _, err := waitVPCBlockPublicAccessOptionsUpdated(ctx, conn, r.DeleteTimeout(ctx, data.Timeouts)); err != nil { + response.Diagnostics.AddError(fmt.Sprintf("waiting for VPC Block Public Access Options (%s) delete", data.ID.ValueString()), err.Error()) + + return + } +} + +type vpcBlockPublicAccessOptionsResourceModel struct { + AWSAccountID types.String `tfsdk:"aws_account_id"` + AWSRegion types.String `tfsdk:"aws_region"` + ID types.String `tfsdk:"id"` + InternetGatewayBlockMode fwtypes.StringEnum[awstypes.InternetGatewayBlockMode] `tfsdk:"internet_gateway_block_mode"` + Timeouts timeouts.Value `tfsdk:"timeouts"` +} diff --git a/internal/service/ec2/vpc_block_public_access_options_test.go b/internal/service/ec2/vpc_block_public_access_options_test.go new file mode 100644 index 000000000000..80f1e205bc04 --- /dev/null +++ b/internal/service/ec2/vpc_block_public_access_options_test.go @@ -0,0 +1,128 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +package ec2_test + +import ( + "context" + "fmt" + "testing" + + "github.com/aws/aws-sdk-go-v2/service/ec2" + awstypes "github.com/aws/aws-sdk-go-v2/service/ec2/types" + "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/tfjsonpath" + "github.com/hashicorp/terraform-provider-aws/internal/acctest" + "github.com/hashicorp/terraform-provider-aws/internal/conns" + "github.com/hashicorp/terraform-provider-aws/names" +) + +func TestAccVPCBlockPublicAccessOptions_serial(t *testing.T) { + t.Parallel() + + testCases := map[string]func(t *testing.T){ + acctest.CtBasic: testAccVPCBlockPublicAccessOptions_basic, + "update": testAccVPCBlockPublicAccessOptions_update, + } + + acctest.RunSerialTests1Level(t, testCases, 0) +} + +func testAccVPCBlockPublicAccessOptions_basic(t *testing.T) { + ctx := acctest.Context(t) + resourceName := "aws_vpc_block_public_access_options.test" + internetGatewayBlockMode := string(awstypes.InternetGatewayBlockModeBlockBidirectional) + + resource.Test(t, resource.TestCase{ + PreCheck: func() { + acctest.PreCheck(ctx, t) + testAccPreCheckVPCBlockPublicAccess(ctx, t) + }, + ErrorCheck: acctest.ErrorCheck(t, names.EC2), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: acctest.CheckDestroyNoop, + Steps: []resource.TestStep{ + { + Config: testAccVPCBlockPublicAccessOptionsConfig_basic(internetGatewayBlockMode), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrAWSAccountID), knownvalue.NotNull()), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New("aws_region"), knownvalue.NotNull()), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New("internet_gateway_block_mode"), knownvalue.StringExact(internetGatewayBlockMode)), + }, + }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + }, + }, + }) +} + +func testAccVPCBlockPublicAccessOptions_update(t *testing.T) { + ctx := acctest.Context(t) + resourceName := "aws_vpc_block_public_access_options.test" + internetGatewayBlockMode1 := string(awstypes.InternetGatewayBlockModeBlockBidirectional) + internetGatewayBlockMode2 := string(awstypes.InternetGatewayBlockModeBlockIngress) + internetGatewayBlockMode3 := string(awstypes.InternetGatewayBlockModeOff) + + resource.Test(t, resource.TestCase{ + PreCheck: func() { + acctest.PreCheck(ctx, t) + acctest.PreCheckPartitionHasService(t, names.EC2) + testAccPreCheckVPCBlockPublicAccess(ctx, t) + }, + ErrorCheck: acctest.ErrorCheck(t, names.EC2), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: acctest.CheckDestroyNoop, + Steps: []resource.TestStep{ + { + Config: testAccVPCBlockPublicAccessOptionsConfig_basic(internetGatewayBlockMode1), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New("internet_gateway_block_mode"), knownvalue.StringExact(internetGatewayBlockMode1)), + }, + }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + }, + { + Config: testAccVPCBlockPublicAccessOptionsConfig_basic(internetGatewayBlockMode2), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New("internet_gateway_block_mode"), knownvalue.StringExact(internetGatewayBlockMode2)), + }, + }, + { + Config: testAccVPCBlockPublicAccessOptionsConfig_basic(internetGatewayBlockMode3), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New("internet_gateway_block_mode"), knownvalue.StringExact(internetGatewayBlockMode3)), + }, + }, + }, + }) +} + +func testAccPreCheckVPCBlockPublicAccess(ctx context.Context, t *testing.T) { + conn := acctest.Provider.Meta().(*conns.AWSClient).EC2Client(ctx) + + input := &ec2.DescribeVpcBlockPublicAccessOptionsInput{} + _, err := conn.DescribeVpcBlockPublicAccessOptions(ctx, input) + + if acctest.PreCheckSkipError(err) { + t.Skipf("skipping acceptance testing: %s", err) + } + if err != nil { + t.Fatalf("unexpected PreCheck error: %s", err) + } +} + +func testAccVPCBlockPublicAccessOptionsConfig_basic(internetGatewayBlockMode string) string { + return fmt.Sprintf(` +resource "aws_vpc_block_public_access_options" "test" { + internet_gateway_block_mode = %[1]q +} +`, internetGatewayBlockMode) +} diff --git a/internal/service/ec2/vpc_data_source.go b/internal/service/ec2/vpc_data_source.go index 929586bf4547..624b508aafc7 100644 --- a/internal/service/ec2/vpc_data_source.go +++ b/internal/service/ec2/vpc_data_source.go @@ -169,7 +169,7 @@ func dataSourceVPCRead(ctx context.Context, d *schema.ResourceData, meta interfa arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: names.EC2, - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), AccountID: aws.ToString(ownerID), Resource: "vpc/" + d.Id(), }.String() diff --git a/internal/service/ec2/vpc_default_network_acl_test.go b/internal/service/ec2/vpc_default_network_acl_test.go index 2d207b8d9571..21ddf315fe12 100644 --- a/internal/service/ec2/vpc_default_network_acl_test.go +++ b/internal/service/ec2/vpc_default_network_acl_test.go @@ -37,10 +37,10 @@ func TestAccVPCDefaultNetworkACL_basic(t *testing.T) { Config: testAccVPCDefaultNetworkACLConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckDefaultNetworkACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`network-acl/acl-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`network-acl/acl-.+`)), resource.TestCheckResourceAttr(resourceName, "egress.#", "0"), resource.TestCheckResourceAttr(resourceName, "ingress.#", "0"), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, "subnet_ids.#", "0"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttrPair(resourceName, names.AttrVPCID, vpcResourceName, names.AttrID), diff --git a/internal/service/ec2/vpc_default_route_table_test.go b/internal/service/ec2/vpc_default_route_table_test.go index df14c578418b..748ddc05f9d6 100644 --- a/internal/service/ec2/vpc_default_route_table_test.go +++ b/internal/service/ec2/vpc_default_route_table_test.go @@ -49,8 +49,8 @@ func TestAccVPCDefaultRouteTable_basic(t *testing.T) { Config: testAccVPCDefaultRouteTableConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckRouteTableExists(ctx, resourceName, &routeTable), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, "propagating_vgws.#", "0"), resource.TestCheckResourceAttr(resourceName, "route.#", "0"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), @@ -113,8 +113,8 @@ func TestAccVPCDefaultRouteTable_Route_mode(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckRouteTableExists(ctx, resourceName, &routeTable), testAccCheckRouteTableNumberOfRoutes(&routeTable, 2), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, "propagating_vgws.#", "0"), resource.TestCheckResourceAttr(resourceName, "route.#", "1"), testAccCheckRouteTableRoute(resourceName, names.AttrCIDRBlock, destinationCidr, "gateway_id", igwResourceName, names.AttrID), @@ -133,8 +133,8 @@ func TestAccVPCDefaultRouteTable_Route_mode(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckRouteTableExists(ctx, resourceName, &routeTable), testAccCheckRouteTableNumberOfRoutes(&routeTable, 2), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, "propagating_vgws.#", "0"), // The route block from the previous step should still be // present, because no blocks means "ignore existing blocks". @@ -149,8 +149,8 @@ func TestAccVPCDefaultRouteTable_Route_mode(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckRouteTableExists(ctx, resourceName, &routeTable), testAccCheckRouteTableNumberOfRoutes(&routeTable, 1), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, "propagating_vgws.#", "0"), // This config uses attribute syntax to set zero routes // explicitly, so should remove the one we created before. @@ -184,8 +184,8 @@ func TestAccVPCDefaultRouteTable_swap(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckRouteTableExists(ctx, resourceName, &routeTable), testAccCheckRouteTableNumberOfRoutes(&routeTable, 2), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, "propagating_vgws.#", "0"), resource.TestCheckResourceAttr(resourceName, "route.#", "1"), testAccCheckRouteTableRoute(resourceName, names.AttrCIDRBlock, destinationCidr1, "gateway_id", igwResourceName, names.AttrID), diff --git a/internal/service/ec2/vpc_default_security_group_test.go b/internal/service/ec2/vpc_default_security_group_test.go index a40757c3ecce..8e12ef25194f 100644 --- a/internal/service/ec2/vpc_default_security_group_test.go +++ b/internal/service/ec2/vpc_default_security_group_test.go @@ -4,6 +4,7 @@ package ec2_test import ( + "context" "fmt" "testing" @@ -52,8 +53,8 @@ func TestAccVPCDefaultSecurityGroup_basic(t *testing.T) { "cidr_blocks.#": "1", "cidr_blocks.0": "10.0.0.0/8", }), - testAccCheckDefaultSecurityGroupARN(resourceName, &group), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + testAccCheckDefaultSecurityGroupARN(ctx, resourceName, &group), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -103,9 +104,9 @@ func TestAccVPCDefaultSecurityGroup_empty(t *testing.T) { }) } -func testAccCheckDefaultSecurityGroupARN(resourceName string, group *awstypes.SecurityGroup) resource.TestCheckFunc { +func testAccCheckDefaultSecurityGroupARN(ctx context.Context, resourceName string, group *awstypes.SecurityGroup) resource.TestCheckFunc { return func(s *terraform.State) error { - return acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", fmt.Sprintf("security-group/%s", aws.ToString(group.GroupId)))(s) + return acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", fmt.Sprintf("security-group/%s", aws.ToString(group.GroupId)))(s) } } diff --git a/internal/service/ec2/vpc_default_subnet_test.go b/internal/service/ec2/vpc_default_subnet_test.go index 2fed51345c31..c0b2b6769524 100644 --- a/internal/service/ec2/vpc_default_subnet_test.go +++ b/internal/service/ec2/vpc_default_subnet_test.go @@ -11,6 +11,7 @@ import ( "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/service/ec2" awstypes "github.com/aws/aws-sdk-go-v2/service/ec2/types" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" "github.com/hashicorp/aws-sdk-go-base/v2/tfawserr" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" @@ -86,7 +87,7 @@ func testAccDefaultSubnet_Existing_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckRegionNot(t, names.USWest2RegionID, names.USGovWest1RegionID) + acctest.PreCheckRegionNot(t, endpoints.UsWest2RegionID, endpoints.UsGovWest1RegionID) testAccPreCheckDefaultSubnetExists(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, names.EC2ServiceID), @@ -114,7 +115,7 @@ func testAccDefaultSubnet_Existing_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "map_customer_owned_ip_on_launch", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "map_public_ip_on_launch", acctest.CtTrue), resource.TestCheckResourceAttr(resourceName, "outpost_arn", ""), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttrSet(resourceName, "private_dns_hostname_type_on_launch"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttrSet(resourceName, names.AttrVPCID), @@ -132,7 +133,7 @@ func testAccDefaultSubnet_Existing_forceDestroy(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckRegionNot(t, names.USWest2RegionID, names.USGovWest1RegionID) + acctest.PreCheckRegionNot(t, endpoints.UsWest2RegionID, endpoints.UsGovWest1RegionID) testAccPreCheckDefaultSubnetExists(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, names.EC2ServiceID), @@ -159,7 +160,7 @@ func testAccDefaultSubnet_Existing_ipv6(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckRegionNot(t, names.USWest2RegionID, names.USGovWest1RegionID) + acctest.PreCheckRegionNot(t, endpoints.UsWest2RegionID, endpoints.UsGovWest1RegionID) testAccPreCheckDefaultSubnetExists(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, names.EC2ServiceID), @@ -187,7 +188,7 @@ func testAccDefaultSubnet_Existing_ipv6(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "map_customer_owned_ip_on_launch", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "map_public_ip_on_launch", acctest.CtTrue), resource.TestCheckResourceAttr(resourceName, "outpost_arn", ""), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, "private_dns_hostname_type_on_launch", "ip-name"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttrSet(resourceName, names.AttrVPCID), @@ -206,7 +207,7 @@ func testAccDefaultSubnet_Existing_privateDNSNameOptionsOnLaunch(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckRegionNot(t, names.USWest2RegionID, names.USGovWest1RegionID) + acctest.PreCheckRegionNot(t, endpoints.UsWest2RegionID, endpoints.UsGovWest1RegionID) testAccPreCheckDefaultSubnetExists(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, names.EC2ServiceID), @@ -234,7 +235,7 @@ func testAccDefaultSubnet_Existing_privateDNSNameOptionsOnLaunch(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "map_customer_owned_ip_on_launch", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "map_public_ip_on_launch", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "outpost_arn", ""), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, "private_dns_hostname_type_on_launch", "resource-name"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "1"), resource.TestCheckResourceAttr(resourceName, "tags.Name", rName), @@ -253,7 +254,7 @@ func testAccDefaultSubnet_NotFound_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckRegionNot(t, names.USWest2RegionID, names.USGovWest1RegionID) + acctest.PreCheckRegionNot(t, endpoints.UsWest2RegionID, endpoints.UsGovWest1RegionID) testAccPreCheckDefaultSubnetNotFound(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, names.EC2ServiceID), @@ -281,7 +282,7 @@ func testAccDefaultSubnet_NotFound_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "map_customer_owned_ip_on_launch", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "map_public_ip_on_launch", acctest.CtTrue), resource.TestCheckResourceAttr(resourceName, "outpost_arn", ""), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttrSet(resourceName, "private_dns_hostname_type_on_launch"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttrSet(resourceName, names.AttrVPCID), @@ -299,7 +300,7 @@ func testAccDefaultSubnet_NotFound_ipv6Native(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckRegionNot(t, names.USWest2RegionID, names.USGovWest1RegionID) + acctest.PreCheckRegionNot(t, endpoints.UsWest2RegionID, endpoints.UsGovWest1RegionID) testAccPreCheckDefaultSubnetNotFound(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, names.EC2ServiceID), @@ -327,7 +328,7 @@ func testAccDefaultSubnet_NotFound_ipv6Native(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "map_customer_owned_ip_on_launch", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "map_public_ip_on_launch", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "outpost_arn", ""), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttrSet(resourceName, "private_dns_hostname_type_on_launch"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttrSet(resourceName, names.AttrVPCID), diff --git a/internal/service/ec2/vpc_default_vpc_dhcp_options_test.go b/internal/service/ec2/vpc_default_vpc_dhcp_options_test.go index 8a27ce81e49b..bea180b0c993 100644 --- a/internal/service/ec2/vpc_default_vpc_dhcp_options_test.go +++ b/internal/service/ec2/vpc_default_vpc_dhcp_options_test.go @@ -40,10 +40,10 @@ func testAccDefaultVPCDHCPOptions_basic(t *testing.T) { Config: testAccVPCDefaultVPCDHCPOptionsConfig_basic, Check: resource.ComposeTestCheckFunc( testAccCheckDHCPOptionsExists(ctx, resourceName, &d), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`dhcp-options/dopt-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`dhcp-options/dopt-.+`)), resource.TestCheckResourceAttrSet(resourceName, names.AttrDomainName), resource.TestCheckResourceAttr(resourceName, "domain_name_servers", "AmazonProvidedDNS"), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "1"), resource.TestCheckResourceAttr(resourceName, "tags.Name", "Default DHCP Option Set"), ), @@ -67,10 +67,10 @@ func testAccDefaultVPCDHCPOptions_owner(t *testing.T) { Config: testAccVPCDefaultVPCDHCPOptionsConfig_owner, Check: resource.ComposeTestCheckFunc( testAccCheckDHCPOptionsExists(ctx, resourceName, &d), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`dhcp-options/dopt-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`dhcp-options/dopt-.+`)), resource.TestCheckResourceAttrSet(resourceName, names.AttrDomainName), resource.TestCheckResourceAttr(resourceName, "domain_name_servers", "AmazonProvidedDNS"), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "1"), resource.TestCheckResourceAttr(resourceName, "tags.Name", "Default DHCP Option Set"), ), diff --git a/internal/service/ec2/vpc_default_vpc_test.go b/internal/service/ec2/vpc_default_vpc_test.go index f517c177065d..496d36865164 100644 --- a/internal/service/ec2/vpc_default_vpc_test.go +++ b/internal/service/ec2/vpc_default_vpc_test.go @@ -12,6 +12,7 @@ import ( "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/service/ec2" awstypes "github.com/aws/aws-sdk-go-v2/service/ec2/types" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-plugin-testing/terraform" @@ -84,7 +85,7 @@ func testAccDefaultVPC_Existing_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckRegionNot(t, names.USWest2RegionID, names.USGovWest1RegionID) + acctest.PreCheckRegionNot(t, endpoints.UsWest2RegionID, endpoints.UsGovWest1RegionID) testAccPreCheckDefaultVPCExists(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, names.EC2ServiceID), @@ -114,7 +115,7 @@ func testAccDefaultVPC_Existing_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "ipv6_ipam_pool_id", ""), resource.TestCheckResourceAttr(resourceName, "ipv6_netmask_length", "0"), resource.TestCheckResourceAttrSet(resourceName, "main_route_table_id"), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -131,7 +132,7 @@ func testAccDefaultVPC_Existing_assignGeneratedIPv6CIDRBlock(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckRegionNot(t, names.USWest2RegionID, names.USGovWest1RegionID) + acctest.PreCheckRegionNot(t, endpoints.UsWest2RegionID, endpoints.UsGovWest1RegionID) testAccPreCheckDefaultVPCExists(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, names.EC2ServiceID), @@ -161,7 +162,7 @@ func testAccDefaultVPC_Existing_assignGeneratedIPv6CIDRBlock(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "ipv6_ipam_pool_id", ""), resource.TestCheckResourceAttr(resourceName, "ipv6_netmask_length", "0"), resource.TestCheckResourceAttrSet(resourceName, "main_route_table_id"), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "1"), resource.TestCheckResourceAttr(resourceName, "tags.Name", rName), ), @@ -178,7 +179,7 @@ func testAccDefaultVPC_Existing_forceDestroy(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckRegionNot(t, names.USWest2RegionID, names.USGovWest1RegionID) + acctest.PreCheckRegionNot(t, endpoints.UsWest2RegionID, endpoints.UsGovWest1RegionID) testAccPreCheckDefaultVPCExists(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, names.EC2ServiceID), @@ -206,7 +207,7 @@ func testAccDefaultVPC_NotFound_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckRegionNot(t, names.USWest2RegionID, names.USGovWest1RegionID) + acctest.PreCheckRegionNot(t, endpoints.UsWest2RegionID, endpoints.UsGovWest1RegionID) testAccPreCheckDefaultVPCNotFound(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, names.EC2ServiceID), @@ -236,7 +237,7 @@ func testAccDefaultVPC_NotFound_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "ipv6_ipam_pool_id", ""), resource.TestCheckResourceAttr(resourceName, "ipv6_netmask_length", "0"), resource.TestCheckResourceAttrSet(resourceName, "main_route_table_id"), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -253,7 +254,7 @@ func testAccDefaultVPC_NotFound_assignGeneratedIPv6CIDRBlock(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckRegionNot(t, names.USWest2RegionID, names.USGovWest1RegionID) + acctest.PreCheckRegionNot(t, endpoints.UsWest2RegionID, endpoints.UsGovWest1RegionID) testAccPreCheckDefaultVPCNotFound(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, names.EC2ServiceID), @@ -283,7 +284,7 @@ func testAccDefaultVPC_NotFound_assignGeneratedIPv6CIDRBlock(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "ipv6_ipam_pool_id", ""), resource.TestCheckResourceAttr(resourceName, "ipv6_netmask_length", "0"), resource.TestCheckResourceAttrSet(resourceName, "main_route_table_id"), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "1"), resource.TestCheckResourceAttr(resourceName, "tags.Name", rName), ), @@ -300,7 +301,7 @@ func testAccDefaultVPC_NotFound_forceDestroy(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckRegionNot(t, names.USWest2RegionID, names.USGovWest1RegionID) + acctest.PreCheckRegionNot(t, endpoints.UsWest2RegionID, endpoints.UsGovWest1RegionID) testAccPreCheckDefaultVPCNotFound(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, names.EC2ServiceID), @@ -329,7 +330,7 @@ func testAccDefaultVPC_NotFound_assignGeneratedIPv6CIDRBlockAdoption(t *testing. resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckRegionNot(t, names.USWest2RegionID, names.USGovWest1RegionID) + acctest.PreCheckRegionNot(t, endpoints.UsWest2RegionID, endpoints.UsGovWest1RegionID) testAccPreCheckDefaultVPCNotFound(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, names.EC2ServiceID), @@ -359,7 +360,7 @@ func testAccDefaultVPC_NotFound_assignGeneratedIPv6CIDRBlockAdoption(t *testing. resource.TestCheckResourceAttr(resourceName, "ipv6_ipam_pool_id", ""), resource.TestCheckResourceAttr(resourceName, "ipv6_netmask_length", "0"), resource.TestCheckResourceAttrSet(resourceName, "main_route_table_id"), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "1"), resource.TestCheckResourceAttr(resourceName, "tags.Name", rName), ), @@ -401,7 +402,7 @@ func testAccDefaultVPC_NotFound_assignGeneratedIPv6CIDRBlockAdoption(t *testing. resource.TestCheckResourceAttr(resourceName, "ipv6_ipam_pool_id", ""), resource.TestCheckResourceAttr(resourceName, "ipv6_netmask_length", "0"), resource.TestCheckResourceAttrSet(resourceName, "main_route_table_id"), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "1"), resource.TestCheckResourceAttr(resourceName, "tags.Name", rName), ), diff --git a/internal/service/ec2/vpc_dhcp_options.go b/internal/service/ec2/vpc_dhcp_options.go index ffe2642be976..0921aacf029b 100644 --- a/internal/service/ec2/vpc_dhcp_options.go +++ b/internal/service/ec2/vpc_dhcp_options.go @@ -156,7 +156,7 @@ func resourceVPCDHCPOptionsRead(ctx context.Context, d *schema.ResourceData, met arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: names.EC2, - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), AccountID: ownerID, Resource: fmt.Sprintf("dhcp-options/%s", d.Id()), }.String() diff --git a/internal/service/ec2/vpc_dhcp_options_data_source.go b/internal/service/ec2/vpc_dhcp_options_data_source.go index 8f174c6a2eb5..1483e11c34db 100644 --- a/internal/service/ec2/vpc_dhcp_options_data_source.go +++ b/internal/service/ec2/vpc_dhcp_options_data_source.go @@ -107,7 +107,7 @@ func dataSourceVPCDHCPOptionsRead(ctx context.Context, d *schema.ResourceData, m arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: names.EC2, - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), AccountID: ownerID, Resource: fmt.Sprintf("dhcp-options/%s", d.Id()), }.String() diff --git a/internal/service/ec2/vpc_dhcp_options_test.go b/internal/service/ec2/vpc_dhcp_options_test.go index 59b8eabff098..29a5221b1099 100644 --- a/internal/service/ec2/vpc_dhcp_options_test.go +++ b/internal/service/ec2/vpc_dhcp_options_test.go @@ -35,14 +35,14 @@ func TestAccVPCDHCPOptions_basic(t *testing.T) { Config: testAccVPCDHCPOptionsConfig_basic, Check: resource.ComposeTestCheckFunc( testAccCheckDHCPOptionsExists(ctx, resourceName, &d), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`dhcp-options/dopt-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`dhcp-options/dopt-.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrDomainName, ""), resource.TestCheckResourceAttr(resourceName, "domain_name_servers.#", "0"), resource.TestCheckResourceAttr(resourceName, "ipv6_address_preferred_lease_time", ""), resource.TestCheckResourceAttr(resourceName, "netbios_name_servers.#", "0"), resource.TestCheckResourceAttr(resourceName, "netbios_node_type", "1"), resource.TestCheckResourceAttr(resourceName, "ntp_servers.#", "0"), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -72,7 +72,7 @@ func TestAccVPCDHCPOptions_full(t *testing.T) { Config: testAccVPCDHCPOptionsConfig_full(rName, domainName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckDHCPOptionsExists(ctx, resourceName, &d), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`dhcp-options/dopt-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`dhcp-options/dopt-.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrDomainName, domainName), resource.TestCheckResourceAttr(resourceName, "domain_name_servers.#", "2"), resource.TestCheckResourceAttr(resourceName, "domain_name_servers.0", "127.0.0.1"), @@ -83,7 +83,7 @@ func TestAccVPCDHCPOptions_full(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "netbios_node_type", "2"), resource.TestCheckResourceAttr(resourceName, "ntp_servers.#", "1"), resource.TestCheckResourceAttr(resourceName, "ntp_servers.0", "127.0.0.1"), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "1"), resource.TestCheckResourceAttr(resourceName, "tags.Name", rName), ), diff --git a/internal/service/ec2/vpc_endpoint.go b/internal/service/ec2/vpc_endpoint.go index 59ff63618c53..6aaaf145efe0 100644 --- a/internal/service/ec2/vpc_endpoint.go +++ b/internal/service/ec2/vpc_endpoint.go @@ -333,7 +333,7 @@ func resourceVPCEndpointRead(ctx context.Context, d *schema.ResourceData, meta i arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: names.EC2, - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), AccountID: aws.ToString(vpce.OwnerId), Resource: fmt.Sprintf("vpc-endpoint/%s", d.Id()), }.String() diff --git a/internal/service/ec2/vpc_endpoint_data_source.go b/internal/service/ec2/vpc_endpoint_data_source.go index 673dabb05798..0de695c279c0 100644 --- a/internal/service/ec2/vpc_endpoint_data_source.go +++ b/internal/service/ec2/vpc_endpoint_data_source.go @@ -188,7 +188,7 @@ func dataSourceVPCEndpointRead(ctx context.Context, d *schema.ResourceData, meta arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: names.EC2, - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), AccountID: aws.ToString(vpce.OwnerId), Resource: fmt.Sprintf("vpc-endpoint/%s", d.Id()), }.String() diff --git a/internal/service/ec2/vpc_endpoint_service.go b/internal/service/ec2/vpc_endpoint_service.go index 84857044f31f..ce4764d151b6 100644 --- a/internal/service/ec2/vpc_endpoint_service.go +++ b/internal/service/ec2/vpc_endpoint_service.go @@ -21,6 +21,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/enum" "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" @@ -138,6 +139,14 @@ func resourceVPCEndpointService() *schema.Resource { ValidateDiagFunc: enum.Validate[awstypes.ServiceConnectivityType](), }, }, + "supported_regions": { + Type: schema.TypeSet, + Optional: true, + Computed: true, + Elem: &schema.Schema{ + Type: schema.TypeString, + }, + }, names.AttrTags: tftags.TagsSchema(), names.AttrTagsAll: tftags.TagsSchemaComputed(), }, @@ -178,7 +187,10 @@ func resourceVPCEndpointServiceCreate(ctx context.Context, d *schema.ResourceDat input.SupportedIpAddressTypes = flex.ExpandStringValueSet(v.(*schema.Set)) } - log.Printf("[DEBUG] Creating EC2 VPC Endpoint Service: %v", input) + if v, ok := d.GetOk("supported_regions"); ok && v.(*schema.Set).Len() > 0 { + input.SupportedRegions = flex.ExpandStringValueSet(v.(*schema.Set)) + } + output, err := conn.CreateVpcEndpointServiceConfiguration(ctx, input) if err != nil { @@ -225,8 +237,8 @@ func resourceVPCEndpointServiceRead(ctx context.Context, d *schema.ResourceData, arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: names.EC2, - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("vpc-endpoint-service/%s", d.Id()), }.String() d.Set(names.AttrARN, arn) @@ -252,6 +264,7 @@ func resourceVPCEndpointServiceRead(ctx context.Context, d *schema.ResourceData, } d.Set(names.AttrState, svcCfg.ServiceState) d.Set("supported_ip_address_types", svcCfg.SupportedIpAddressTypes) + d.Set("supported_regions", flattenSupportedRegionDetails(svcCfg.SupportedRegions)) setTagsOut(ctx, svcCfg.Tags) @@ -270,7 +283,7 @@ func resourceVPCEndpointServiceUpdate(ctx context.Context, d *schema.ResourceDat var diags diag.Diagnostics conn := meta.(*conns.AWSClient).EC2Client(ctx) - if d.HasChanges("acceptance_required", "gateway_load_balancer_arns", "network_load_balancer_arns", "private_dns_name", "supported_ip_address_types") { + if d.HasChanges("acceptance_required", "gateway_load_balancer_arns", "network_load_balancer_arns", "private_dns_name", "supported_ip_address_types", "supported_regions") { input := &ec2.ModifyVpcEndpointServiceConfigurationInput{ ServiceId: aws.String(d.Id()), } @@ -287,8 +300,8 @@ func resourceVPCEndpointServiceUpdate(ctx context.Context, d *schema.ResourceDat } input.AddSupportedIpAddressTypes, input.RemoveSupportedIpAddressTypes = flattenAddAndRemoveStringValueLists(d, "supported_ip_address_types") + input.AddSupportedRegions, input.RemoveSupportedRegions = flattenAddAndRemoveStringValueLists(d, "supported_regions") - log.Printf("[DEBUG] Updating EC2 VPC Endpoint Service: %v", input) _, err := conn.ModifyVpcEndpointServiceConfiguration(ctx, input) if err != nil { @@ -343,18 +356,14 @@ func resourceVPCEndpointServiceDelete(ctx context.Context, d *schema.ResourceDat return diags } -func flattenAllowedPrincipals(apiObjects []awstypes.AllowedPrincipal) []*string { +func flattenAllowedPrincipals(apiObjects []awstypes.AllowedPrincipal) []string { if len(apiObjects) == 0 { return nil } - var tfList []*string - - for _, apiObject := range apiObjects { - tfList = append(tfList, apiObject.Principal) - } - - return tfList + return tfslices.ApplyToAll(apiObjects, func(v awstypes.AllowedPrincipal) string { + return aws.ToString(v.Principal) + }) } func flattenPrivateDNSNameConfiguration(apiObject *awstypes.PrivateDnsNameConfiguration) map[string]interface{} { @@ -382,3 +391,17 @@ func flattenPrivateDNSNameConfiguration(apiObject *awstypes.PrivateDnsNameConfig return tfMap } + +func flattenSupportedRegionDetails(apiObjects []awstypes.SupportedRegionDetail) []string { + if len(apiObjects) == 0 { + return nil + } + + apiObjects = tfslices.Filter(apiObjects, func(v awstypes.SupportedRegionDetail) bool { + return aws.ToString(v.ServiceState) == supportedRegionServiceStateAvailable + }) + + return tfslices.ApplyToAll(apiObjects, func(v awstypes.SupportedRegionDetail) string { + return aws.ToString(v.Region) + }) +} diff --git a/internal/service/ec2/vpc_endpoint_service_data_source.go b/internal/service/ec2/vpc_endpoint_service_data_source.go index 34a46a402e3f..8ace3f8de458 100644 --- a/internal/service/ec2/vpc_endpoint_service_data_source.go +++ b/internal/service/ec2/vpc_endpoint_service_data_source.go @@ -122,7 +122,7 @@ func dataSourceVPCEndpointServiceRead(ctx context.Context, d *schema.ResourceDat if v, ok := d.GetOk(names.AttrServiceName); ok { serviceName = v.(string) } else if v, ok := d.GetOk("service"); ok { - serviceName = fmt.Sprintf("com.amazonaws.%s.%s", meta.(*conns.AWSClient).Region, v.(string)) + serviceName = fmt.Sprintf("com.amazonaws.%s.%s", meta.(*conns.AWSClient).Region(ctx), v.(string)) } if serviceName != "" { @@ -181,8 +181,8 @@ func dataSourceVPCEndpointServiceRead(ctx context.Context, d *schema.ResourceDat arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: names.EC2, - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("vpc-endpoint-service/%s", serviceID), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/ec2/vpc_endpoint_service_data_source_test.go b/internal/service/ec2/vpc_endpoint_service_data_source_test.go index 3b993e710ca4..5b31dcd96773 100644 --- a/internal/service/ec2/vpc_endpoint_service_data_source_test.go +++ b/internal/service/ec2/vpc_endpoint_service_data_source_test.go @@ -28,7 +28,7 @@ func TestAccVPCEndpointServiceDataSource_ServiceType_gateway(t *testing.T) { Config: testAccVPCEndpointServiceDataSourceConfig_type("dynamodb", "Gateway"), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttr(datasourceName, "acceptance_required", acctest.CtFalse), - acctest.MatchResourceAttrRegionalARN(datasourceName, names.AttrARN, "ec2", regexache.MustCompile(`vpc-endpoint-service/vpce-svc-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, datasourceName, names.AttrARN, "ec2", regexache.MustCompile(`vpc-endpoint-service/vpce-svc-.+`)), acctest.CheckResourceAttrGreaterThanValue(datasourceName, "availability_zones.#", 0), resource.TestCheckResourceAttr(datasourceName, "base_endpoint_dns_names.#", "1"), resource.TestCheckResourceAttr(datasourceName, "manages_vpc_endpoints", acctest.CtFalse), @@ -59,7 +59,7 @@ func TestAccVPCEndpointServiceDataSource_ServiceType_interface(t *testing.T) { Config: testAccVPCEndpointServiceDataSourceConfig_type("ec2", "Interface"), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttr(datasourceName, "acceptance_required", acctest.CtFalse), - acctest.MatchResourceAttrRegionalARN(datasourceName, names.AttrARN, "ec2", regexache.MustCompile(`vpc-endpoint-service/vpce-svc-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, datasourceName, names.AttrARN, "ec2", regexache.MustCompile(`vpc-endpoint-service/vpce-svc-.+`)), acctest.CheckResourceAttrGreaterThanValue(datasourceName, "availability_zones.#", 0), resource.TestCheckResourceAttr(datasourceName, "base_endpoint_dns_names.#", "1"), resource.TestCheckResourceAttr(datasourceName, "manages_vpc_endpoints", acctest.CtFalse), @@ -95,7 +95,7 @@ func TestAccVPCEndpointServiceDataSource_custom(t *testing.T) { resource.TestCheckResourceAttrPair(datasourceName, "availability_zones.#", resourceName, "availability_zones.#"), resource.TestCheckResourceAttrPair(datasourceName, "base_endpoint_dns_names.#", resourceName, "base_endpoint_dns_names.#"), resource.TestCheckResourceAttrPair(datasourceName, "manages_vpc_endpoints", resourceName, "manages_vpc_endpoints"), - acctest.CheckResourceAttrAccountID(datasourceName, names.AttrOwner), + acctest.CheckResourceAttrAccountID(ctx, datasourceName, names.AttrOwner), resource.TestCheckResourceAttrPair(datasourceName, "private_dns_name", resourceName, "private_dns_name"), resource.TestCheckResourceAttrPair(datasourceName, "private_dns_names.#", resourceName, "private_dns_names.#"), resource.TestCheckResourceAttr(datasourceName, "service_type", "Interface"), @@ -127,7 +127,7 @@ func TestAccVPCEndpointServiceDataSource_Custom_filter(t *testing.T) { resource.TestCheckResourceAttrPair(datasourceName, "availability_zones.#", resourceName, "availability_zones.#"), resource.TestCheckResourceAttrPair(datasourceName, "base_endpoint_dns_names.#", resourceName, "base_endpoint_dns_names.#"), resource.TestCheckResourceAttrPair(datasourceName, "manages_vpc_endpoints", resourceName, "manages_vpc_endpoints"), - acctest.CheckResourceAttrAccountID(datasourceName, names.AttrOwner), + acctest.CheckResourceAttrAccountID(ctx, datasourceName, names.AttrOwner), resource.TestCheckResourceAttrPair(datasourceName, "private_dns_name", resourceName, "private_dns_name"), resource.TestCheckResourceAttrPair(datasourceName, "private_dns_names.#", resourceName, "private_dns_names.#"), resource.TestCheckResourceAttr(datasourceName, "service_type", "Interface"), @@ -159,7 +159,7 @@ func TestAccVPCEndpointServiceDataSource_CustomFilter_tags(t *testing.T) { resource.TestCheckResourceAttrPair(datasourceName, "availability_zones.#", resourceName, "availability_zones.#"), resource.TestCheckResourceAttrPair(datasourceName, "base_endpoint_dns_names.#", resourceName, "base_endpoint_dns_names.#"), resource.TestCheckResourceAttrPair(datasourceName, "manages_vpc_endpoints", resourceName, "manages_vpc_endpoints"), - acctest.CheckResourceAttrAccountID(datasourceName, names.AttrOwner), + acctest.CheckResourceAttrAccountID(ctx, datasourceName, names.AttrOwner), resource.TestCheckResourceAttrPair(datasourceName, "private_dns_name", resourceName, "private_dns_name"), resource.TestCheckResourceAttrPair(datasourceName, "private_dns_names.#", resourceName, "private_dns_names.#"), resource.TestCheckResourceAttr(datasourceName, "service_type", "Interface"), diff --git a/internal/service/ec2/vpc_endpoint_service_test.go b/internal/service/ec2/vpc_endpoint_service_test.go index 85704b96ecf4..41270434ebe8 100644 --- a/internal/service/ec2/vpc_endpoint_service_test.go +++ b/internal/service/ec2/vpc_endpoint_service_test.go @@ -10,6 +10,7 @@ import ( "github.com/YakDriver/regexache" awstypes "github.com/aws/aws-sdk-go-v2/service/ec2/types" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-plugin-testing/terraform" @@ -38,7 +39,7 @@ func TestAccVPCEndpointService_basic(t *testing.T) { testAccCheckVPCEndpointServiceExists(ctx, resourceName, &svcCfg), resource.TestCheckResourceAttr(resourceName, "acceptance_required", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "allowed_principals.#", "0"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`vpc-endpoint-service/vpce-svc-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`vpc-endpoint-service/vpce-svc-.+`)), acctest.CheckResourceAttrGreaterThanValue(resourceName, "availability_zones.#", 0), acctest.CheckResourceAttrGreaterThanValue(resourceName, "base_endpoint_dns_names.#", 0), resource.TestCheckResourceAttr(resourceName, "gateway_load_balancer_arns.#", "0"), @@ -50,6 +51,8 @@ func TestAccVPCEndpointService_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "service_type", "Interface"), resource.TestCheckResourceAttr(resourceName, "supported_ip_address_types.#", "1"), resource.TestCheckTypeSetElemAttr(resourceName, "supported_ip_address_types.*", "ipv4"), + resource.TestCheckResourceAttr(resourceName, "supported_regions.#", "1"), + resource.TestCheckTypeSetElemAttr(resourceName, "supported_regions.*", acctest.Region()), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -323,6 +326,75 @@ func TestAccVPCEndpointService_privateDNSName(t *testing.T) { }) } +func TestAccVPCEndpointService_crossRegion(t *testing.T) { + ctx := acctest.Context(t) + var svcCfg awstypes.ServiceConfiguration + resourceName := "aws_vpc_endpoint_service.test" + rName := sdkacctest.RandomWithPrefix("tfacctest") // 32 character limit + supportedRegions := []string{ + endpoints.ApNortheast1RegionID, + endpoints.ApSoutheast1RegionID, + endpoints.ApSoutheast2RegionID, + endpoints.EuWest1RegionID, + endpoints.SaEast1RegionID, + endpoints.UsEast1RegionID, + endpoints.UsWest2RegionID, + } + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { + acctest.PreCheck(ctx, t) + acctest.PreCheckMultipleRegion(t, 3) + acctest.PreCheckRegion(t, supportedRegions...) + acctest.PreCheckAlternateRegion(t, supportedRegions...) + acctest.PreCheckThirdRegion(t, supportedRegions...) + }, + ErrorCheck: acctest.ErrorCheck(t, names.EC2ServiceID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckVPCEndpointServiceDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccVPCEndpointServiceConfig_crossRegion(rName, acctest.Region(), acctest.AlternateRegion()), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckVPCEndpointServiceExists(ctx, resourceName, &svcCfg), + resource.TestCheckResourceAttr(resourceName, "acceptance_required", acctest.CtFalse), + resource.TestCheckResourceAttr(resourceName, "allowed_principals.#", "0"), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`vpc-endpoint-service/vpce-svc-.+`)), + acctest.CheckResourceAttrGreaterThanValue(resourceName, "availability_zones.#", 0), + acctest.CheckResourceAttrGreaterThanValue(resourceName, "base_endpoint_dns_names.#", 0), + resource.TestCheckResourceAttr(resourceName, "gateway_load_balancer_arns.#", "0"), + resource.TestCheckResourceAttr(resourceName, "manages_vpc_endpoints", acctest.CtFalse), + resource.TestCheckResourceAttr(resourceName, "network_load_balancer_arns.#", "1"), + resource.TestCheckResourceAttr(resourceName, "private_dns_name", ""), + resource.TestCheckResourceAttr(resourceName, "private_dns_name_configuration.#", "0"), + resource.TestCheckResourceAttrSet(resourceName, names.AttrServiceName), + resource.TestCheckResourceAttr(resourceName, "service_type", "Interface"), + resource.TestCheckResourceAttr(resourceName, "supported_ip_address_types.#", "1"), + resource.TestCheckTypeSetElemAttr(resourceName, "supported_ip_address_types.*", "ipv4"), + resource.TestCheckResourceAttr(resourceName, "supported_regions.#", "2"), + resource.TestCheckTypeSetElemAttr(resourceName, "supported_regions.*", acctest.Region()), + resource.TestCheckTypeSetElemAttr(resourceName, "supported_regions.*", acctest.AlternateRegion()), + resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), + ), + }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + }, + { + Config: testAccVPCEndpointServiceConfig_crossRegion(rName, acctest.Region(), acctest.ThirdRegion()), + Check: resource.ComposeTestCheckFunc( + testAccCheckVPCEndpointServiceExists(ctx, resourceName, &svcCfg), + resource.TestCheckResourceAttr(resourceName, "supported_regions.#", "2"), + resource.TestCheckTypeSetElemAttr(resourceName, "supported_regions.*", acctest.Region()), + resource.TestCheckTypeSetElemAttr(resourceName, "supported_regions.*", acctest.ThirdRegion()), + ), + }, + }, + }) +} + func testAccCheckVPCEndpointServiceDestroy(ctx context.Context) resource.TestCheckFunc { return func(s *terraform.State) error { conn := acctest.Provider.Meta().(*conns.AWSClient).EC2Client(ctx) @@ -447,6 +519,16 @@ resource "aws_vpc_endpoint_service" "test" { `) } +func testAccVPCEndpointServiceConfig_crossRegion(rName string, primaryRegion, altRegion string) string { + return acctest.ConfigCompose(testAccVPCEndpointServiceConfig_baseNetworkLoadBalancer(rName, 1), fmt.Sprintf(` +resource "aws_vpc_endpoint_service" "test" { + acceptance_required = false + network_load_balancer_arns = aws_lb.test[*].arn + supported_regions = [%[1]q,%[2]q] +} +`, primaryRegion, altRegion)) +} + func testAccVPCEndpointServiceConfig_gatewayLoadBalancerARNs(rName string, count int) string { return acctest.ConfigCompose(acctest.ConfigVPCWithSubnets(rName, 1), fmt.Sprintf(` resource "aws_lb" "test" { diff --git a/internal/service/ec2/vpc_endpoint_test.go b/internal/service/ec2/vpc_endpoint_test.go index bb691885b705..1394f190b7c4 100644 --- a/internal/service/ec2/vpc_endpoint_test.go +++ b/internal/service/ec2/vpc_endpoint_test.go @@ -36,13 +36,13 @@ func TestAccVPCEndpoint_gatewayBasic(t *testing.T) { Config: testAccVPCEndpointConfig_gatewayBasic(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckVPCEndpointExists(ctx, resourceName, &endpoint), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`vpc-endpoint/vpce-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`vpc-endpoint/vpce-.+`)), acctest.CheckResourceAttrGreaterThanValue(resourceName, "cidr_blocks.#", 0), resource.TestCheckResourceAttr(resourceName, "dns_entry.#", "0"), resource.TestCheckResourceAttr(resourceName, "dns_options.#", "0"), resource.TestCheckResourceAttr(resourceName, names.AttrIPAddressType, ""), resource.TestCheckResourceAttr(resourceName, "network_interface_ids.#", "0"), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttrSet(resourceName, names.AttrPolicy), resource.TestCheckResourceAttrSet(resourceName, "prefix_list_id"), resource.TestCheckResourceAttr(resourceName, "private_dns_enabled", acctest.CtFalse), @@ -79,7 +79,7 @@ func TestAccVPCEndpoint_interfaceBasic(t *testing.T) { Config: testAccVPCEndpointConfig_interfaceBasic(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckVPCEndpointExists(ctx, resourceName, &endpoint), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`vpc-endpoint/vpce-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`vpc-endpoint/vpce-.+`)), resource.TestCheckResourceAttr(resourceName, "cidr_blocks.#", "0"), resource.TestCheckResourceAttr(resourceName, "dns_entry.#", "0"), resource.TestCheckResourceAttr(resourceName, "dns_options.#", "1"), @@ -87,7 +87,7 @@ func TestAccVPCEndpoint_interfaceBasic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "dns_options.0.private_dns_only_for_inbound_resolver_endpoint", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, names.AttrIPAddressType, "ipv4"), resource.TestCheckResourceAttr(resourceName, "network_interface_ids.#", "0"), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttrSet(resourceName, names.AttrPolicy), resource.TestCheckNoResourceAttr(resourceName, "prefix_list_id"), resource.TestCheckResourceAttr(resourceName, "private_dns_enabled", acctest.CtFalse), @@ -123,7 +123,7 @@ func TestAccVPCEndpoint_interfaceNoPrivateDNS(t *testing.T) { Config: testAccVPCEndpointConfig_interfaceNoPrivateDNS(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckVPCEndpointExists(ctx, resourceName, &endpoint), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`vpc-endpoint/vpce-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`vpc-endpoint/vpce-.+`)), resource.TestCheckResourceAttr(resourceName, "cidr_blocks.#", "0"), resource.TestCheckResourceAttr(resourceName, "dns_entry.#", "0"), resource.TestCheckResourceAttr(resourceName, "dns_options.#", "1"), @@ -131,7 +131,7 @@ func TestAccVPCEndpoint_interfaceNoPrivateDNS(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "dns_options.0.private_dns_only_for_inbound_resolver_endpoint", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, names.AttrIPAddressType, "ipv4"), resource.TestCheckResourceAttr(resourceName, "network_interface_ids.#", "0"), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttrSet(resourceName, names.AttrPolicy), resource.TestCheckNoResourceAttr(resourceName, "prefix_list_id"), resource.TestCheckResourceAttr(resourceName, "private_dns_enabled", acctest.CtFalse), @@ -606,7 +606,7 @@ func TestAccVPCEndpoint_interfaceUserDefinedIPv4(t *testing.T) { Config: testAccVPCEndpointConfig_interfaceUserDefinedIPv4(rName, ipv4Address1, ipv4Address2), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckVPCEndpointExists(ctx, resourceName, &endpoint), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`vpc-endpoint/vpce-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`vpc-endpoint/vpce-.+`)), resource.TestCheckResourceAttr(resourceName, "cidr_blocks.#", "0"), resource.TestCheckResourceAttr(resourceName, "dns_entry.#", "3"), resource.TestCheckResourceAttr(resourceName, "dns_options.#", "1"), @@ -614,7 +614,7 @@ func TestAccVPCEndpoint_interfaceUserDefinedIPv4(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "dns_options.0.private_dns_only_for_inbound_resolver_endpoint", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, names.AttrIPAddressType, "ipv4"), resource.TestCheckResourceAttr(resourceName, "network_interface_ids.#", "2"), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttrSet(resourceName, names.AttrPolicy), resource.TestCheckNoResourceAttr(resourceName, "prefix_list_id"), resource.TestCheckResourceAttr(resourceName, "private_dns_enabled", acctest.CtFalse), @@ -642,7 +642,7 @@ func TestAccVPCEndpoint_interfaceUserDefinedIPv4(t *testing.T) { Config: testAccVPCEndpointConfig_interfaceUserDefinedIPv4(rName, ipv4Address1Updated, ipv4Address2Updated), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckVPCEndpointExists(ctx, resourceName, &endpoint), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`vpc-endpoint/vpce-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`vpc-endpoint/vpce-.+`)), resource.TestCheckResourceAttr(resourceName, "cidr_blocks.#", "0"), resource.TestCheckResourceAttr(resourceName, "dns_entry.#", "3"), resource.TestCheckResourceAttr(resourceName, "dns_options.#", "1"), @@ -650,7 +650,7 @@ func TestAccVPCEndpoint_interfaceUserDefinedIPv4(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "dns_options.0.private_dns_only_for_inbound_resolver_endpoint", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, names.AttrIPAddressType, "ipv4"), resource.TestCheckResourceAttr(resourceName, "network_interface_ids.#", "2"), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttrSet(resourceName, names.AttrPolicy), resource.TestCheckNoResourceAttr(resourceName, "prefix_list_id"), resource.TestCheckResourceAttr(resourceName, "private_dns_enabled", acctest.CtFalse), @@ -691,7 +691,7 @@ func TestAccVPCEndpoint_interfaceUserDefinedIPv6(t *testing.T) { Config: testAccVPCEndpointConfig_interfaceUserDefinedIPv6(rName, ipv6HostNum1), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckVPCEndpointExists(ctx, resourceName, &endpoint), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`vpc-endpoint/vpce-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`vpc-endpoint/vpce-.+`)), resource.TestCheckResourceAttr(resourceName, "cidr_blocks.#", "0"), resource.TestCheckResourceAttr(resourceName, "dns_entry.#", "3"), resource.TestCheckResourceAttr(resourceName, "dns_options.#", "1"), @@ -699,7 +699,7 @@ func TestAccVPCEndpoint_interfaceUserDefinedIPv6(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "dns_options.0.private_dns_only_for_inbound_resolver_endpoint", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, names.AttrIPAddressType, "ipv6"), resource.TestCheckResourceAttr(resourceName, "network_interface_ids.#", "2"), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttrSet(resourceName, names.AttrPolicy), resource.TestCheckNoResourceAttr(resourceName, "prefix_list_id"), resource.TestCheckResourceAttr(resourceName, "private_dns_enabled", acctest.CtFalse), @@ -721,7 +721,7 @@ func TestAccVPCEndpoint_interfaceUserDefinedIPv6(t *testing.T) { Config: testAccVPCEndpointConfig_interfaceUserDefinedIPv6(rName, ipv6HostNum2), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckVPCEndpointExists(ctx, resourceName, &endpoint), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`vpc-endpoint/vpce-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`vpc-endpoint/vpce-.+`)), resource.TestCheckResourceAttr(resourceName, "cidr_blocks.#", "0"), resource.TestCheckResourceAttr(resourceName, "dns_entry.#", "3"), resource.TestCheckResourceAttr(resourceName, "dns_options.#", "1"), @@ -729,7 +729,7 @@ func TestAccVPCEndpoint_interfaceUserDefinedIPv6(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "dns_options.0.private_dns_only_for_inbound_resolver_endpoint", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, names.AttrIPAddressType, "ipv6"), resource.TestCheckResourceAttr(resourceName, "network_interface_ids.#", "2"), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttrSet(resourceName, names.AttrPolicy), resource.TestCheckNoResourceAttr(resourceName, "prefix_list_id"), resource.TestCheckResourceAttr(resourceName, "private_dns_enabled", acctest.CtFalse), @@ -768,14 +768,14 @@ func TestAccVPCEndpoint_interfaceUserDefinedDualstack(t *testing.T) { Config: testAccVPCEndpointConfig_interfaceUserDefinedDualstackCombined(rName, ipv4Address1, ipv4Address2, ipv6HostNum1), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckVPCEndpointExists(ctx, resourceName, &endpoint), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`vpc-endpoint/vpce-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`vpc-endpoint/vpce-.+`)), resource.TestCheckResourceAttr(resourceName, "cidr_blocks.#", "0"), resource.TestCheckResourceAttr(resourceName, "dns_entry.#", "3"), resource.TestCheckResourceAttr(resourceName, "dns_options.#", "1"), resource.TestCheckResourceAttr(resourceName, "dns_options.0.dns_record_ip_type", "dualstack"), resource.TestCheckResourceAttr(resourceName, names.AttrIPAddressType, "dualstack"), resource.TestCheckResourceAttr(resourceName, "network_interface_ids.#", "2"), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttrSet(resourceName, names.AttrPolicy), resource.TestCheckNoResourceAttr(resourceName, "prefix_list_id"), resource.TestCheckResourceAttr(resourceName, "private_dns_enabled", acctest.CtFalse), @@ -803,14 +803,14 @@ func TestAccVPCEndpoint_interfaceUserDefinedDualstack(t *testing.T) { Config: testAccVPCEndpointConfig_interfaceUserDefinedDualstackCombined(rName, ipv4Address1Updated, ipv4Address2Updated, ipv6HostNum2), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckVPCEndpointExists(ctx, resourceName, &endpoint), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`vpc-endpoint/vpce-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`vpc-endpoint/vpce-.+`)), resource.TestCheckResourceAttr(resourceName, "cidr_blocks.#", "0"), resource.TestCheckResourceAttr(resourceName, "dns_entry.#", "3"), resource.TestCheckResourceAttr(resourceName, "dns_options.#", "1"), resource.TestCheckResourceAttr(resourceName, "dns_options.0.dns_record_ip_type", "dualstack"), resource.TestCheckResourceAttr(resourceName, names.AttrIPAddressType, "dualstack"), resource.TestCheckResourceAttr(resourceName, "network_interface_ids.#", "2"), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttrSet(resourceName, names.AttrPolicy), resource.TestCheckNoResourceAttr(resourceName, "prefix_list_id"), resource.TestCheckResourceAttr(resourceName, "private_dns_enabled", acctest.CtFalse), diff --git a/internal/service/ec2/vpc_flow_log.go b/internal/service/ec2/vpc_flow_log.go index bc810a3afcbd..86bf6b6cd6aa 100644 --- a/internal/service/ec2/vpc_flow_log.go +++ b/internal/service/ec2/vpc_flow_log.go @@ -284,8 +284,8 @@ func resourceLogFlowRead(ctx context.Context, d *schema.ResourceData, meta inter arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: names.EC2, - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("vpc-flow-log/%s", d.Id()), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/ec2/vpc_flow_log_test.go b/internal/service/ec2/vpc_flow_log_test.go index cfd722dbb09f..cfa708c36872 100644 --- a/internal/service/ec2/vpc_flow_log_test.go +++ b/internal/service/ec2/vpc_flow_log_test.go @@ -39,7 +39,7 @@ func TestAccVPCFlowLog_basic(t *testing.T) { Config: testAccVPCFlowLogConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckFlowLogExists(ctx, resourceName, &flowLog), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`vpc-flow-log/fl-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`vpc-flow-log/fl-.+`)), resource.TestCheckResourceAttr(resourceName, "deliver_cross_account_role", ""), resource.TestCheckResourceAttrPair(resourceName, names.AttrIAMRoleARN, iamRoleResourceName, names.AttrARN), resource.TestCheckResourceAttr(resourceName, "log_destination", ""), @@ -145,7 +145,7 @@ func TestAccVPCFlowLog_transitGatewayID(t *testing.T) { Config: testAccVPCFlowLogConfig_transitGatewayID(rName), Check: resource.ComposeTestCheckFunc( testAccCheckFlowLogExists(ctx, resourceName, &flowLog), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`vpc-flow-log/fl-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`vpc-flow-log/fl-.+`)), resource.TestCheckResourceAttrPair(resourceName, names.AttrIAMRoleARN, iamRoleResourceName, names.AttrARN), resource.TestCheckResourceAttr(resourceName, "log_destination", ""), resource.TestCheckResourceAttr(resourceName, "log_destination_type", "cloud-watch-logs"), @@ -182,7 +182,7 @@ func TestAccVPCFlowLog_transitGatewayAttachmentID(t *testing.T) { Config: testAccVPCFlowLogConfig_transitGatewayAttachmentID(rName), Check: resource.ComposeTestCheckFunc( testAccCheckFlowLogExists(ctx, resourceName, &flowLog), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`vpc-flow-log/fl-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`vpc-flow-log/fl-.+`)), resource.TestCheckResourceAttrPair(resourceName, names.AttrIAMRoleARN, iamRoleResourceName, names.AttrARN), resource.TestCheckResourceAttr(resourceName, "log_destination", ""), resource.TestCheckResourceAttr(resourceName, "log_destination_type", "cloud-watch-logs"), @@ -218,7 +218,7 @@ func TestAccVPCFlowLog_LogDestinationType_cloudWatchLogs(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckFlowLogExists(ctx, resourceName, &flowLog), // We automatically trim :* from ARNs if present - acctest.CheckResourceAttrRegionalARN(resourceName, "log_destination", "logs", fmt.Sprintf("log-group:%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, "log_destination", "logs", fmt.Sprintf("log-group:%s", rName)), resource.TestCheckResourceAttr(resourceName, "log_destination_type", "cloud-watch-logs"), resource.TestCheckResourceAttrPair(resourceName, names.AttrLogGroupName, cloudwatchLogGroupResourceName, names.AttrName), ), diff --git a/internal/service/ec2/vpc_internet_gateway.go b/internal/service/ec2/vpc_internet_gateway.go index 9530b8c1af3f..e1f5fd7e8221 100644 --- a/internal/service/ec2/vpc_internet_gateway.go +++ b/internal/service/ec2/vpc_internet_gateway.go @@ -116,7 +116,7 @@ func resourceInternetGatewayRead(ctx context.Context, d *schema.ResourceData, me arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: names.EC2, - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), AccountID: ownerID, Resource: fmt.Sprintf("internet-gateway/%s", d.Id()), }.String() diff --git a/internal/service/ec2/vpc_internet_gateway_data_source.go b/internal/service/ec2/vpc_internet_gateway_data_source.go index 23ffe75d1695..60ccc0b5ded3 100644 --- a/internal/service/ec2/vpc_internet_gateway_data_source.go +++ b/internal/service/ec2/vpc_internet_gateway_data_source.go @@ -102,7 +102,7 @@ func dataSourceInternetGatewayRead(ctx context.Context, d *schema.ResourceData, arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: names.EC2, - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), AccountID: ownerID, Resource: fmt.Sprintf("internet-gateway/%s", d.Id()), }.String() diff --git a/internal/service/ec2/vpc_internet_gateway_test.go b/internal/service/ec2/vpc_internet_gateway_test.go index c8d83bc66263..93a5cd80f013 100644 --- a/internal/service/ec2/vpc_internet_gateway_test.go +++ b/internal/service/ec2/vpc_internet_gateway_test.go @@ -35,8 +35,8 @@ func TestAccVPCInternetGateway_basic(t *testing.T) { Config: testAccVPCInternetGatewayConfig_basic, Check: resource.ComposeTestCheckFunc( testAccCheckInternetGatewayExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`internet-gateway/igw-.+`)), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`internet-gateway/igw-.+`)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttr(resourceName, names.AttrVPCID, ""), ), diff --git a/internal/service/ec2/vpc_managed_prefix_list_test.go b/internal/service/ec2/vpc_managed_prefix_list_test.go index 149dd749e9ec..6f4bb6894295 100644 --- a/internal/service/ec2/vpc_managed_prefix_list_test.go +++ b/internal/service/ec2/vpc_managed_prefix_list_test.go @@ -37,11 +37,11 @@ func TestAccVPCManagedPrefixList_basic(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccManagedPrefixListExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, "address_family", "IPv4"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`prefix-list/pl-[[:xdigit:]]+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`prefix-list/pl-[[:xdigit:]]+`)), resource.TestCheckResourceAttr(resourceName, "entry.#", "0"), resource.TestCheckResourceAttr(resourceName, "max_entries", "1"), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttr(resourceName, names.AttrVersion, "1"), ), diff --git a/internal/service/ec2/vpc_managed_prefix_lists_data_source.go b/internal/service/ec2/vpc_managed_prefix_lists_data_source.go index 17bf480291c0..4f49541bb5b5 100644 --- a/internal/service/ec2/vpc_managed_prefix_lists_data_source.go +++ b/internal/service/ec2/vpc_managed_prefix_lists_data_source.go @@ -65,7 +65,7 @@ func dataSourceManagedPrefixListsRead(ctx context.Context, d *schema.ResourceDat prefixListIDs = append(prefixListIDs, aws.ToString(v.PrefixListId)) } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) d.Set(names.AttrIDs, prefixListIDs) return diags diff --git a/internal/service/ec2/vpc_nat_gateways_data_source.go b/internal/service/ec2/vpc_nat_gateways_data_source.go index 10d6a3da972b..3227fdc06419 100644 --- a/internal/service/ec2/vpc_nat_gateways_data_source.go +++ b/internal/service/ec2/vpc_nat_gateways_data_source.go @@ -83,7 +83,7 @@ func dataSourceNATGatewaysRead(ctx context.Context, d *schema.ResourceData, meta natGatewayIDs = append(natGatewayIDs, aws.ToString(v.NatGatewayId)) } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) d.Set(names.AttrIDs, natGatewayIDs) return diags diff --git a/internal/service/ec2/vpc_network_acl.go b/internal/service/ec2/vpc_network_acl.go index 699160142b7e..9f6d3ca05884 100644 --- a/internal/service/ec2/vpc_network_acl.go +++ b/internal/service/ec2/vpc_network_acl.go @@ -216,7 +216,7 @@ func resourceNetworkACLRead(ctx context.Context, d *schema.ResourceData, meta in arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: names.EC2, - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), AccountID: ownerID, Resource: fmt.Sprintf("network-acl/%s", d.Id()), }.String() diff --git a/internal/service/ec2/vpc_network_acl_test.go b/internal/service/ec2/vpc_network_acl_test.go index 93b41ef600ba..77762c18fbaf 100644 --- a/internal/service/ec2/vpc_network_acl_test.go +++ b/internal/service/ec2/vpc_network_acl_test.go @@ -37,10 +37,10 @@ func TestAccVPCNetworkACL_basic(t *testing.T) { Config: testAccVPCNetworkACLConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckNetworkACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`network-acl/acl-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`network-acl/acl-.+`)), resource.TestCheckResourceAttr(resourceName, "egress.#", "0"), resource.TestCheckResourceAttr(resourceName, "ingress.#", "0"), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, "subnet_ids.#", "0"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttrPair(resourceName, names.AttrVPCID, vpcResourceName, names.AttrID), diff --git a/internal/service/ec2/vpc_network_acls_data_source.go b/internal/service/ec2/vpc_network_acls_data_source.go index 1135e2b6b614..3d4691cbb710 100644 --- a/internal/service/ec2/vpc_network_acls_data_source.go +++ b/internal/service/ec2/vpc_network_acls_data_source.go @@ -80,7 +80,7 @@ func dataSourceNetworkACLsRead(ctx context.Context, d *schema.ResourceData, meta naclIDs = append(naclIDs, aws.ToString(v.NetworkAclId)) } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) d.Set(names.AttrIDs, naclIDs) return diags diff --git a/internal/service/ec2/vpc_network_insights_analysis_test.go b/internal/service/ec2/vpc_network_insights_analysis_test.go index dd9ec23b203d..b3eeb8278a64 100644 --- a/internal/service/ec2/vpc_network_insights_analysis_test.go +++ b/internal/service/ec2/vpc_network_insights_analysis_test.go @@ -34,7 +34,7 @@ func TestAccVPCNetworkInsightsAnalysis_basic(t *testing.T) { Config: testAccVPCNetworkInsightsAnalysisConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckNetworkInsightsAnalysisExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`network-insights-analysis/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`network-insights-analysis/.+$`)), resource.TestCheckResourceAttr(resourceName, "filter_in_arns.#", "0"), resource.TestCheckResourceAttrPair(resourceName, "network_insights_path_id", "aws_ec2_network_insights_path.test", names.AttrID), resource.TestCheckResourceAttr(resourceName, "path_found", acctest.CtTrue), @@ -138,7 +138,7 @@ func TestAccVPCNetworkInsightsAnalysis_filterInARNs(t *testing.T) { Config: testAccVPCNetworkInsightsAnalysisConfig_filterInARNs(rName, "vpc-peering-connection/pcx-fakearn1"), Check: resource.ComposeTestCheckFunc( testAccCheckNetworkInsightsAnalysisExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, "filter_in_arns.0", "ec2", regexache.MustCompile(`vpc-peering-connection/pcx-fakearn1$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, "filter_in_arns.0", "ec2", regexache.MustCompile(`vpc-peering-connection/pcx-fakearn1$`)), ), }, { @@ -151,7 +151,7 @@ func TestAccVPCNetworkInsightsAnalysis_filterInARNs(t *testing.T) { Config: testAccVPCNetworkInsightsAnalysisConfig_filterInARNs(rName, "vpc-peering-connection/pcx-fakearn2"), Check: resource.ComposeTestCheckFunc( testAccCheckNetworkInsightsAnalysisExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, "filter_in_arns.0", "ec2", regexache.MustCompile(`vpc-peering-connection/pcx-fakearn2$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, "filter_in_arns.0", "ec2", regexache.MustCompile(`vpc-peering-connection/pcx-fakearn2$`)), ), }, }, diff --git a/internal/service/ec2/vpc_network_insights_path_test.go b/internal/service/ec2/vpc_network_insights_path_test.go index 15b459caeb1e..51e83052c092 100644 --- a/internal/service/ec2/vpc_network_insights_path_test.go +++ b/internal/service/ec2/vpc_network_insights_path_test.go @@ -34,7 +34,7 @@ func TestAccVPCNetworkInsightsPath_basic(t *testing.T) { Config: testAccVPCNetworkInsightsPathConfig_basic(rName, "tcp"), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckNetworkInsightsPathExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`network-insights-path/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`network-insights-path/.+$`)), resource.TestCheckResourceAttrPair(resourceName, names.AttrDestination, "aws_network_interface.test.1", names.AttrID), resource.TestCheckResourceAttrPair(resourceName, names.AttrDestinationARN, "aws_network_interface.test.1", names.AttrARN), resource.TestCheckResourceAttr(resourceName, "destination_ip", ""), diff --git a/internal/service/ec2/vpc_network_interface.go b/internal/service/ec2/vpc_network_interface.go index 1a832a3c7be5..c8bd103b9c3b 100644 --- a/internal/service/ec2/vpc_network_interface.go +++ b/internal/service/ec2/vpc_network_interface.go @@ -513,7 +513,7 @@ func resourceNetworkInterfaceRead(ctx context.Context, d *schema.ResourceData, m arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "ec2", - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), AccountID: ownerID, Resource: "network-interface/" + d.Id(), }.String() @@ -1077,7 +1077,9 @@ func attachNetworkInterface(ctx context.Context, conn *ec2.Client, networkInterf } func deleteNetworkInterface(ctx context.Context, conn *ec2.Client, networkInterfaceID string) error { - log.Printf("[INFO] Deleting EC2 Network Interface: %s", networkInterfaceID) + tflog.Info(ctx, "Deleting EC2 Network Interface", map[string]any{ + names.AttrNetworkInterfaceID: networkInterfaceID, + }) _, err := conn.DeleteNetworkInterface(ctx, &ec2.DeleteNetworkInterfaceInput{ NetworkInterfaceId: aws.String(networkInterfaceID), }) @@ -1094,7 +1096,9 @@ func deleteNetworkInterface(ctx context.Context, conn *ec2.Client, networkInterf } func detachNetworkInterface(ctx context.Context, conn *ec2.Client, networkInterfaceID, attachmentID string, timeout time.Duration) error { - log.Printf("[INFO] Detaching EC2 Network Interface: %s", networkInterfaceID) + tflog.Info(ctx, "Detaching EC2 Network Interface", map[string]any{ + names.AttrNetworkInterfaceID: networkInterfaceID, + }) _, err := conn.DetachNetworkInterface(ctx, &ec2.DetachNetworkInterfaceInput{ AttachmentId: aws.String(attachmentID), Force: aws.Bool(true), diff --git a/internal/service/ec2/vpc_network_interface_data_source.go b/internal/service/ec2/vpc_network_interface_data_source.go index c8d1fdcaee1d..e3f6856efb73 100644 --- a/internal/service/ec2/vpc_network_interface_data_source.go +++ b/internal/service/ec2/vpc_network_interface_data_source.go @@ -191,7 +191,7 @@ func dataSourceNetworkInterfaceRead(ctx context.Context, d *schema.ResourceData, arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "ec2", - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), AccountID: ownerID, Resource: "network-interface/" + d.Id(), }.String() diff --git a/internal/service/ec2/vpc_network_interface_data_source_test.go b/internal/service/ec2/vpc_network_interface_data_source_test.go index ee469861aa1f..1014bb9b20fe 100644 --- a/internal/service/ec2/vpc_network_interface_data_source_test.go +++ b/internal/service/ec2/vpc_network_interface_data_source_test.go @@ -89,7 +89,7 @@ func TestAccVPCNetworkInterfaceDataSource_carrierIPAssociation(t *testing.T) { resource.TestCheckResourceAttrPair(datasourceName, "association.0.association_id", eipAssociationResourceName, names.AttrID), resource.TestCheckResourceAttrPair(datasourceName, "association.0.carrier_ip", eipResourceName, "carrier_ip"), resource.TestCheckResourceAttr(datasourceName, "association.0.customer_owned_ip", ""), - acctest.CheckResourceAttrAccountID(datasourceName, "association.0.ip_owner_id"), + acctest.CheckResourceAttrAccountID(ctx, datasourceName, "association.0.ip_owner_id"), resource.TestCheckResourceAttr(datasourceName, "association.0.public_dns_name", ""), resource.TestCheckResourceAttr(datasourceName, "association.0.public_ip", ""), resource.TestCheckResourceAttr(datasourceName, "attachment.#", "0"), @@ -99,7 +99,7 @@ func TestAccVPCNetworkInterfaceDataSource_carrierIPAssociation(t *testing.T) { resource.TestCheckResourceAttr(datasourceName, "ipv6_addresses.#", "0"), resource.TestCheckResourceAttrSet(datasourceName, "mac_address"), resource.TestCheckResourceAttr(datasourceName, "outpost_arn", ""), - acctest.CheckResourceAttrAccountID(datasourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, datasourceName, names.AttrOwnerID), resource.TestCheckResourceAttrPair(datasourceName, "private_dns_name", resourceName, "private_dns_name"), resource.TestCheckResourceAttrPair(datasourceName, "private_ip", resourceName, "private_ip"), resource.TestCheckResourceAttrPair(datasourceName, "private_ips.#", resourceName, "private_ips.#"), @@ -138,7 +138,7 @@ func TestAccVPCNetworkInterfaceDataSource_publicIPAssociation(t *testing.T) { resource.TestCheckResourceAttrPair(datasourceName, "association.0.association_id", eipAssociationResourceName, names.AttrID), resource.TestCheckResourceAttr(datasourceName, "association.0.carrier_ip", ""), resource.TestCheckResourceAttr(datasourceName, "association.0.customer_owned_ip", ""), - acctest.CheckResourceAttrAccountID(datasourceName, "association.0.ip_owner_id"), + acctest.CheckResourceAttrAccountID(ctx, datasourceName, "association.0.ip_owner_id"), // Public DNS name is not set by the EC2 API. resource.TestCheckResourceAttr(datasourceName, "association.0.public_dns_name", ""), resource.TestCheckResourceAttrPair(datasourceName, "association.0.public_ip", eipResourceName, "public_ip"), @@ -149,7 +149,7 @@ func TestAccVPCNetworkInterfaceDataSource_publicIPAssociation(t *testing.T) { resource.TestCheckResourceAttr(datasourceName, "ipv6_addresses.#", "0"), resource.TestCheckResourceAttrSet(datasourceName, "mac_address"), resource.TestCheckResourceAttr(datasourceName, "outpost_arn", ""), - acctest.CheckResourceAttrAccountID(datasourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, datasourceName, names.AttrOwnerID), resource.TestCheckResourceAttrPair(datasourceName, "private_dns_name", resourceName, "private_dns_name"), resource.TestCheckResourceAttrPair(datasourceName, "private_ip", resourceName, "private_ip"), resource.TestCheckResourceAttrPair(datasourceName, "private_ips.#", resourceName, "private_ips.#"), @@ -184,14 +184,14 @@ func TestAccVPCNetworkInterfaceDataSource_attachment(t *testing.T) { resource.TestCheckResourceAttr(datasourceName, "attachment.#", "1"), resource.TestCheckResourceAttr(datasourceName, "attachment.0.device_index", "1"), resource.TestCheckResourceAttrPair(datasourceName, "attachment.0.instance_id", instanceResourceName, names.AttrID), - acctest.CheckResourceAttrAccountID(datasourceName, "attachment.0.instance_owner_id"), + acctest.CheckResourceAttrAccountID(ctx, datasourceName, "attachment.0.instance_owner_id"), resource.TestCheckResourceAttrSet(datasourceName, names.AttrAvailabilityZone), resource.TestCheckResourceAttrPair(datasourceName, names.AttrDescription, resourceName, names.AttrDescription), resource.TestCheckResourceAttr(datasourceName, "interface_type", "interface"), resource.TestCheckResourceAttr(datasourceName, "ipv6_addresses.#", "0"), resource.TestCheckResourceAttrSet(datasourceName, "mac_address"), resource.TestCheckResourceAttr(datasourceName, "outpost_arn", ""), - acctest.CheckResourceAttrAccountID(datasourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, datasourceName, names.AttrOwnerID), resource.TestCheckResourceAttrPair(datasourceName, "private_dns_name", resourceName, "private_dns_name"), resource.TestCheckResourceAttrPair(datasourceName, "private_ip", resourceName, "private_ip"), resource.TestCheckResourceAttrPair(datasourceName, "private_ips.#", resourceName, "private_ips.#"), diff --git a/internal/service/ec2/vpc_network_interface_test.go b/internal/service/ec2/vpc_network_interface_test.go index d36e127b519d..f3a3af2c9fd6 100644 --- a/internal/service/ec2/vpc_network_interface_test.go +++ b/internal/service/ec2/vpc_network_interface_test.go @@ -15,6 +15,7 @@ import ( "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/service/ec2" "github.com/aws/aws-sdk-go-v2/service/ec2/types" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-plugin-testing/terraform" @@ -42,7 +43,7 @@ func TestAccVPCNetworkInterface_basic(t *testing.T) { Config: testAccVPCNetworkInterfaceConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckENIExists(ctx, resourceName, &conf), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`network-interface/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`network-interface/.+$`)), resource.TestCheckResourceAttr(resourceName, "attachment.#", "0"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), resource.TestCheckResourceAttr(resourceName, "interface_type", "interface"), @@ -50,7 +51,7 @@ func TestAccVPCNetworkInterface_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "ipv6_addresses.#", "0"), resource.TestCheckResourceAttrSet(resourceName, "mac_address"), resource.TestCheckResourceAttr(resourceName, "outpost_arn", ""), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), checkResourceAttrPrivateDNSName(resourceName, "private_dns_name", &conf.PrivateIpAddress), resource.TestCheckResourceAttrSet(resourceName, "private_ip"), resource.TestCheckResourceAttr(resourceName, "private_ips.#", "1"), @@ -977,7 +978,7 @@ func convertIPToDashIP(ip string) string { } func regionalPrivateDNSSuffix(region string) string { - if region == names.USEast1RegionID { + if region == endpoints.UsEast1RegionID { return "ec2.internal" } diff --git a/internal/service/ec2/vpc_network_interfaces_data_source.go b/internal/service/ec2/vpc_network_interfaces_data_source.go index c5e70609641d..5bfb48026bae 100644 --- a/internal/service/ec2/vpc_network_interfaces_data_source.go +++ b/internal/service/ec2/vpc_network_interfaces_data_source.go @@ -68,7 +68,7 @@ func dataSourceNetworkInterfacesRead(ctx context.Context, d *schema.ResourceData networkInterfaceIDs = append(networkInterfaceIDs, aws.ToString(v.NetworkInterfaceId)) } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) d.Set(names.AttrIDs, networkInterfaceIDs) return diags diff --git a/internal/service/ec2/vpc_peering_connection.go b/internal/service/ec2/vpc_peering_connection.go index fa5fcf69f460..63a97cde073e 100644 --- a/internal/service/ec2/vpc_peering_connection.go +++ b/internal/service/ec2/vpc_peering_connection.go @@ -174,7 +174,7 @@ func resourceVPCPeeringConnectionRead(ctx context.Context, d *schema.ResourceDat d.Set("accept_status", vpcPeeringConnection.Status.Code) d.Set("peer_region", vpcPeeringConnection.AccepterVpcInfo.Region) - if accountID := meta.(*conns.AWSClient).AccountID; accountID == aws.ToString(vpcPeeringConnection.AccepterVpcInfo.OwnerId) && accountID != aws.ToString(vpcPeeringConnection.RequesterVpcInfo.OwnerId) { + if accountID := meta.(*conns.AWSClient).AccountID(ctx); accountID == aws.ToString(vpcPeeringConnection.AccepterVpcInfo.OwnerId) && accountID != aws.ToString(vpcPeeringConnection.RequesterVpcInfo.OwnerId) { // We're the accepter. d.Set("peer_owner_id", vpcPeeringConnection.RequesterVpcInfo.OwnerId) d.Set("peer_vpc_id", vpcPeeringConnection.RequesterVpcInfo.VpcId) diff --git a/internal/service/ec2/vpc_peering_connection_accepter_test.go b/internal/service/ec2/vpc_peering_connection_accepter_test.go index cfdf8f7d3893..6bb8e8a2e629 100644 --- a/internal/service/ec2/vpc_peering_connection_accepter_test.go +++ b/internal/service/ec2/vpc_peering_connection_accepter_test.go @@ -93,7 +93,7 @@ func TestAccVPCPeeringConnectionAccepter_differentRegionSameAccount(t *testing.T Config: testAccVPCPeeringConnectionAccepterConfig_differentRegionSameAccount(rName), Check: resource.ComposeTestCheckFunc( testAccCheckVPCPeeringConnectionExists(ctx, resourceNameConnection, &vMain), - testAccCheckVPCPeeringConnectionExistsWithProvider(ctx, resourceNameAccepter, &vPeer, acctest.RegionProviderFunc(acctest.AlternateRegion(), &providers)), + testAccCheckVPCPeeringConnectionExistsWithProvider(ctx, resourceNameAccepter, &vPeer, acctest.RegionProviderFunc(ctx, acctest.AlternateRegion(), &providers)), resource.TestCheckResourceAttrPair(resourceNameConnection, names.AttrVPCID, resourceNameMainVpc, names.AttrID), resource.TestCheckResourceAttrPair(resourceNameConnection, "peer_vpc_id", resourceNamePeerVpc, names.AttrID), resource.TestCheckResourceAttrPair(resourceNameConnection, "peer_owner_id", resourceNamePeerVpc, names.AttrOwnerID), diff --git a/internal/service/ec2/vpc_peering_connection_options_test.go b/internal/service/ec2/vpc_peering_connection_options_test.go index 0613eb42837e..428c5f68905f 100644 --- a/internal/service/ec2/vpc_peering_connection_options_test.go +++ b/internal/service/ec2/vpc_peering_connection_options_test.go @@ -131,7 +131,7 @@ func TestAccVPCPeeringConnectionOptions_differentRegionSameAccount(t *testing.T) &awstypes.VpcPeeringConnectionOptionsDescription{ AllowDnsResolutionFromRemoteVpc: aws.Bool(true), }, - acctest.RegionProviderFunc(acctest.AlternateRegion(), &providers), + acctest.RegionProviderFunc(ctx, acctest.AlternateRegion(), &providers), ), ), }, @@ -168,7 +168,7 @@ func TestAccVPCPeeringConnectionOptions_differentRegionSameAccount(t *testing.T) &awstypes.VpcPeeringConnectionOptionsDescription{ AllowDnsResolutionFromRemoteVpc: aws.Bool(false), }, - acctest.RegionProviderFunc(acctest.AlternateRegion(), &providers), + acctest.RegionProviderFunc(ctx, acctest.AlternateRegion(), &providers), ), ), }, diff --git a/internal/service/ec2/vpc_peering_connections_data_source.go b/internal/service/ec2/vpc_peering_connections_data_source.go index 4268a62b4169..570522195ccb 100644 --- a/internal/service/ec2/vpc_peering_connections_data_source.go +++ b/internal/service/ec2/vpc_peering_connections_data_source.go @@ -66,7 +66,7 @@ func dataSourceVPCPeeringConnectionsRead(ctx context.Context, d *schema.Resource vpcPeeringConnectionIDs = append(vpcPeeringConnectionIDs, aws.ToString(v.VpcPeeringConnectionId)) } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) d.Set(names.AttrIDs, vpcPeeringConnectionIDs) return diags diff --git a/internal/service/ec2/vpc_route_table.go b/internal/service/ec2/vpc_route_table.go index 891535c75720..33c0bd06eaee 100644 --- a/internal/service/ec2/vpc_route_table.go +++ b/internal/service/ec2/vpc_route_table.go @@ -236,7 +236,7 @@ func resourceRouteTableRead(ctx context.Context, d *schema.ResourceData, meta in arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: names.EC2, - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), AccountID: ownerID, Resource: fmt.Sprintf("route-table/%s", d.Id()), }.String() diff --git a/internal/service/ec2/vpc_route_table_data_source.go b/internal/service/ec2/vpc_route_table_data_source.go index 532a8cdbd0a5..809bfcc8382e 100644 --- a/internal/service/ec2/vpc_route_table_data_source.go +++ b/internal/service/ec2/vpc_route_table_data_source.go @@ -236,7 +236,7 @@ func dataSourceRouteTableRead(ctx context.Context, d *schema.ResourceData, meta arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: names.EC2, - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), AccountID: ownerID, Resource: fmt.Sprintf("route-table/%s", d.Id()), }.String() diff --git a/internal/service/ec2/vpc_route_table_data_source_test.go b/internal/service/ec2/vpc_route_table_data_source_test.go index 97bbd92168ea..2bdfdf4136db 100644 --- a/internal/service/ec2/vpc_route_table_data_source_test.go +++ b/internal/service/ec2/vpc_route_table_data_source_test.go @@ -37,7 +37,7 @@ func TestAccVPCRouteTableDataSource_basic(t *testing.T) { Config: testAccVPCRouteTableDataSourceConfig_basic(rName), Check: resource.ComposeTestCheckFunc( // By tags. - acctest.MatchResourceAttrRegionalARN(datasource1Name, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, datasource1Name, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), resource.TestCheckResourceAttrPair(datasource1Name, names.AttrID, rtResourceName, names.AttrID), resource.TestCheckResourceAttrPair(datasource1Name, "route_table_id", rtResourceName, names.AttrID), resource.TestCheckResourceAttrPair(datasource1Name, names.AttrOwnerID, rtResourceName, names.AttrOwnerID), @@ -49,7 +49,7 @@ func TestAccVPCRouteTableDataSource_basic(t *testing.T) { testAccCheckListHasSomeElementAttrPair(datasource1Name, "associations", "gateway_id", igwResourceName, names.AttrID), resource.TestCheckResourceAttr(datasource1Name, "tags.Name", rName), // By filter. - acctest.MatchResourceAttrRegionalARN(datasource2Name, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, datasource2Name, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), resource.TestCheckResourceAttrPair(datasource2Name, names.AttrID, rtResourceName, names.AttrID), resource.TestCheckResourceAttrPair(datasource2Name, "route_table_id", rtResourceName, names.AttrID), resource.TestCheckResourceAttrPair(datasource2Name, names.AttrOwnerID, rtResourceName, names.AttrOwnerID), @@ -61,7 +61,7 @@ func TestAccVPCRouteTableDataSource_basic(t *testing.T) { testAccCheckListHasSomeElementAttrPair(datasource2Name, "associations", "gateway_id", igwResourceName, names.AttrID), resource.TestCheckResourceAttr(datasource2Name, "tags.Name", rName), // By subnet ID. - acctest.MatchResourceAttrRegionalARN(datasource3Name, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, datasource3Name, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), resource.TestCheckResourceAttrPair(datasource3Name, names.AttrID, rtResourceName, names.AttrID), resource.TestCheckResourceAttrPair(datasource3Name, "route_table_id", rtResourceName, names.AttrID), resource.TestCheckResourceAttrPair(datasource3Name, names.AttrOwnerID, rtResourceName, names.AttrOwnerID), @@ -73,7 +73,7 @@ func TestAccVPCRouteTableDataSource_basic(t *testing.T) { testAccCheckListHasSomeElementAttrPair(datasource3Name, "associations", "gateway_id", igwResourceName, names.AttrID), resource.TestCheckResourceAttr(datasource3Name, "tags.Name", rName), // By route table ID. - acctest.MatchResourceAttrRegionalARN(datasource4Name, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, datasource4Name, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), resource.TestCheckResourceAttrPair(datasource4Name, names.AttrID, rtResourceName, names.AttrID), resource.TestCheckResourceAttrPair(datasource4Name, "route_table_id", rtResourceName, names.AttrID), resource.TestCheckResourceAttrPair(datasource4Name, names.AttrOwnerID, rtResourceName, names.AttrOwnerID), @@ -85,7 +85,7 @@ func TestAccVPCRouteTableDataSource_basic(t *testing.T) { testAccCheckListHasSomeElementAttrPair(datasource4Name, "associations", "gateway_id", igwResourceName, names.AttrID), resource.TestCheckResourceAttr(datasource4Name, "tags.Name", rName), // By gateway ID. - acctest.MatchResourceAttrRegionalARN(datasource5Name, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, datasource5Name, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), resource.TestCheckResourceAttrPair(datasource5Name, names.AttrID, rtResourceName, names.AttrID), resource.TestCheckResourceAttrPair(datasource5Name, "route_table_id", rtResourceName, names.AttrID), resource.TestCheckResourceAttrPair(datasource5Name, names.AttrOwnerID, rtResourceName, names.AttrOwnerID), diff --git a/internal/service/ec2/vpc_route_table_test.go b/internal/service/ec2/vpc_route_table_test.go index 37ad6a86c063..ba51a02c37ac 100644 --- a/internal/service/ec2/vpc_route_table_test.go +++ b/internal/service/ec2/vpc_route_table_test.go @@ -41,8 +41,8 @@ func TestAccVPCRouteTable_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckRouteTableExists(ctx, resourceName, &routeTable), testAccCheckRouteTableNumberOfRoutes(&routeTable, 1), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, "propagating_vgws.#", "0"), resource.TestCheckResourceAttr(resourceName, "route.#", "0"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), @@ -126,8 +126,8 @@ func TestAccVPCRouteTable_ipv4ToInternetGateway(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckRouteTableExists(ctx, resourceName, &routeTable), testAccCheckRouteTableNumberOfRoutes(&routeTable, 3), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, "propagating_vgws.#", "0"), resource.TestCheckResourceAttr(resourceName, "route.#", "2"), testAccCheckRouteTableRoute(resourceName, names.AttrCIDRBlock, destinationCidr1, "gateway_id", igwResourceName, names.AttrID), @@ -141,8 +141,8 @@ func TestAccVPCRouteTable_ipv4ToInternetGateway(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckRouteTableExists(ctx, resourceName, &routeTable), testAccCheckRouteTableNumberOfRoutes(&routeTable, 3), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, "propagating_vgws.#", "0"), resource.TestCheckResourceAttr(resourceName, "route.#", "2"), testAccCheckRouteTableRoute(resourceName, names.AttrCIDRBlock, destinationCidr2, "gateway_id", igwResourceName, names.AttrID), @@ -174,8 +174,8 @@ func TestAccVPCRouteTable_ipv4ToInstance(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckRouteTableExists(ctx, resourceName, &routeTable), testAccCheckRouteTableNumberOfRoutes(&routeTable, 2), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, "propagating_vgws.#", "0"), resource.TestCheckResourceAttr(resourceName, "route.#", "1"), testAccCheckRouteTableRoute(resourceName, names.AttrCIDRBlock, destinationCidr, names.AttrNetworkInterfaceID, instanceResourceName, "primary_network_interface_id"), @@ -211,8 +211,8 @@ func TestAccVPCRouteTable_ipv6ToEgressOnlyInternetGateway(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckRouteTableExists(ctx, resourceName, &routeTable), testAccCheckRouteTableNumberOfRoutes(&routeTable, 3), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, "propagating_vgws.#", "0"), resource.TestCheckResourceAttr(resourceName, "route.#", "1"), testAccCheckRouteTableRoute(resourceName, "ipv6_cidr_block", destinationCidr, "egress_only_gateway_id", eoigwResourceName, names.AttrID), @@ -294,8 +294,8 @@ func TestAccVPCRouteTable_Route_mode(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckRouteTableExists(ctx, resourceName, &routeTable), testAccCheckRouteTableNumberOfRoutes(&routeTable, 3), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, "propagating_vgws.#", "0"), resource.TestCheckResourceAttr(resourceName, "route.#", "2"), testAccCheckRouteTableRoute(resourceName, names.AttrCIDRBlock, destinationCidr1, "gateway_id", igwResourceName, names.AttrID), @@ -314,8 +314,8 @@ func TestAccVPCRouteTable_Route_mode(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckRouteTableExists(ctx, resourceName, &routeTable), testAccCheckRouteTableNumberOfRoutes(&routeTable, 3), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, "propagating_vgws.#", "0"), resource.TestCheckResourceAttr(resourceName, "route.#", "2"), testAccCheckRouteTableRoute(resourceName, names.AttrCIDRBlock, destinationCidr1, "gateway_id", igwResourceName, names.AttrID), @@ -334,8 +334,8 @@ func TestAccVPCRouteTable_Route_mode(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckRouteTableExists(ctx, resourceName, &routeTable), testAccCheckRouteTableNumberOfRoutes(&routeTable, 1), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, "propagating_vgws.#", "0"), resource.TestCheckResourceAttr(resourceName, "route.#", "0"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "1"), @@ -374,8 +374,8 @@ func TestAccVPCRouteTable_ipv4ToTransitGateway(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckRouteTableExists(ctx, resourceName, &routeTable), testAccCheckRouteTableNumberOfRoutes(&routeTable, 2), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, "propagating_vgws.#", "0"), resource.TestCheckResourceAttr(resourceName, "route.#", "1"), testAccCheckRouteTableRoute(resourceName, names.AttrCIDRBlock, destinationCidr, names.AttrTransitGatewayID, tgwResourceName, names.AttrID), @@ -415,8 +415,8 @@ func TestAccVPCRouteTable_ipv4ToVPCEndpoint(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckRouteTableExists(ctx, resourceName, &routeTable), testAccCheckRouteTableNumberOfRoutes(&routeTable, 2), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, "propagating_vgws.#", "0"), resource.TestCheckResourceAttr(resourceName, "route.#", "1"), testAccCheckRouteTableRoute(resourceName, names.AttrCIDRBlock, destinationCidr, names.AttrVPCEndpointID, vpceResourceName, names.AttrID), @@ -452,8 +452,8 @@ func TestAccVPCRouteTable_ipv4ToCarrierGateway(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckRouteTableExists(ctx, resourceName, &routeTable), testAccCheckRouteTableNumberOfRoutes(&routeTable, 2), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, "propagating_vgws.#", "0"), resource.TestCheckResourceAttr(resourceName, "route.#", "1"), testAccCheckRouteTableRoute(resourceName, names.AttrCIDRBlock, destinationCidr, "carrier_gateway_id", cgwResourceName, names.AttrID), @@ -489,8 +489,8 @@ func TestAccVPCRouteTable_ipv4ToLocalGateway(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckRouteTableExists(ctx, resourceName, &routeTable), testAccCheckRouteTableNumberOfRoutes(&routeTable, 2), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, "propagating_vgws.#", "0"), resource.TestCheckResourceAttr(resourceName, "route.#", "1"), testAccCheckRouteTableRoute(resourceName, names.AttrCIDRBlock, destinationCidr, "local_gateway_id", lgwDataSourceName, names.AttrID), @@ -526,8 +526,8 @@ func TestAccVPCRouteTable_ipv4ToVPCPeeringConnection(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckRouteTableExists(ctx, resourceName, &routeTable), testAccCheckRouteTableNumberOfRoutes(&routeTable, 2), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, "propagating_vgws.#", "0"), resource.TestCheckResourceAttr(resourceName, "route.#", "1"), testAccCheckRouteTableRoute(resourceName, names.AttrCIDRBlock, destinationCidr, "vpc_peering_connection_id", pcxResourceName, names.AttrID), @@ -563,8 +563,8 @@ func TestAccVPCRouteTable_vgwRoutePropagation(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckRouteTableExists(ctx, resourceName, &routeTable), testAccCheckRouteTableNumberOfRoutes(&routeTable, 1), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, "propagating_vgws.#", "1"), resource.TestCheckTypeSetElemAttrPair(resourceName, "propagating_vgws.*", vgwResourceName1, names.AttrID), resource.TestCheckResourceAttr(resourceName, "route.#", "0"), @@ -577,8 +577,8 @@ func TestAccVPCRouteTable_vgwRoutePropagation(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckRouteTableExists(ctx, resourceName, &routeTable), testAccCheckRouteTableNumberOfRoutes(&routeTable, 1), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, "propagating_vgws.#", "1"), resource.TestCheckTypeSetElemAttrPair(resourceName, "propagating_vgws.*", vgwResourceName2, names.AttrID), resource.TestCheckResourceAttr(resourceName, "route.#", "0"), @@ -652,8 +652,8 @@ func TestAccVPCRouteTable_ipv4ToNatGateway(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckRouteTableExists(ctx, resourceName, &routeTable), testAccCheckRouteTableNumberOfRoutes(&routeTable, 2), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, "propagating_vgws.#", "0"), resource.TestCheckResourceAttr(resourceName, "route.#", "1"), testAccCheckRouteTableRoute(resourceName, names.AttrCIDRBlock, destinationCidr, "nat_gateway_id", ngwResourceName, names.AttrID), @@ -689,8 +689,8 @@ func TestAccVPCRouteTable_IPv6ToNetworkInterface_unattached(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckRouteTableExists(ctx, resourceName, &routeTable), testAccCheckRouteTableNumberOfRoutes(&routeTable, 3), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, "propagating_vgws.#", "0"), resource.TestCheckResourceAttr(resourceName, "route.#", "1"), testAccCheckRouteTableRoute(resourceName, "ipv6_cidr_block", destinationCidr, names.AttrNetworkInterfaceID, eniResourceName, names.AttrID), @@ -728,8 +728,8 @@ func TestAccVPCRouteTable_IPv4ToNetworkInterfaces_unattached(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckRouteTableExists(ctx, resourceName, &routeTable), testAccCheckRouteTableNumberOfRoutes(&routeTable, 1), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, "propagating_vgws.#", "0"), resource.TestCheckResourceAttr(resourceName, "route.#", "0"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), @@ -740,8 +740,8 @@ func TestAccVPCRouteTable_IPv4ToNetworkInterfaces_unattached(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckRouteTableExists(ctx, resourceName, &routeTable), testAccCheckRouteTableNumberOfRoutes(&routeTable, 3), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, "propagating_vgws.#", "0"), resource.TestCheckResourceAttr(resourceName, "route.#", "2"), testAccCheckRouteTableRoute(resourceName, names.AttrCIDRBlock, destinationCidr1, names.AttrNetworkInterfaceID, eni1ResourceName, names.AttrID), @@ -760,8 +760,8 @@ func TestAccVPCRouteTable_IPv4ToNetworkInterfaces_unattached(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckRouteTableExists(ctx, resourceName, &routeTable), testAccCheckRouteTableNumberOfRoutes(&routeTable, 3), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, "propagating_vgws.#", "0"), resource.TestCheckResourceAttr(resourceName, "route.#", "2"), testAccCheckRouteTableRoute(resourceName, names.AttrCIDRBlock, destinationCidr2, names.AttrNetworkInterfaceID, eni1ResourceName, names.AttrID), @@ -775,8 +775,8 @@ func TestAccVPCRouteTable_IPv4ToNetworkInterfaces_unattached(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckRouteTableExists(ctx, resourceName, &routeTable), testAccCheckRouteTableNumberOfRoutes(&routeTable, 1), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, "propagating_vgws.#", "0"), resource.TestCheckResourceAttr(resourceName, "route.#", "0"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "1"), @@ -804,8 +804,8 @@ func TestAccVPCRouteTable_vpcMultipleCIDRs(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckRouteTableExists(ctx, resourceName, &routeTable), testAccCheckRouteTableNumberOfRoutes(&routeTable, 2), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, "propagating_vgws.#", "0"), resource.TestCheckResourceAttr(resourceName, "route.#", "0"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "1"), @@ -844,8 +844,8 @@ func TestAccVPCRouteTable_gatewayVPCEndpoint(t *testing.T) { // Refresh the route table once the VPC endpoint route is present. testAccCheckRouteTableExists(ctx, resourceName, &routeTable), testAccCheckRouteTableNumberOfRoutes(&routeTable, 2), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, "propagating_vgws.#", "0"), resource.TestCheckResourceAttr(resourceName, "route.#", "0"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "1"), @@ -889,8 +889,8 @@ func TestAccVPCRouteTable_multipleRoutes(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckRouteTableExists(ctx, resourceName, &routeTable), testAccCheckRouteTableNumberOfRoutes(&routeTable, 5), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, "propagating_vgws.#", "0"), resource.TestCheckResourceAttr(resourceName, "route.#", "3"), testAccCheckRouteTableRoute(resourceName, names.AttrCIDRBlock, destinationCidr1, "gateway_id", igwResourceName, names.AttrID), @@ -908,8 +908,8 @@ func TestAccVPCRouteTable_multipleRoutes(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckRouteTableExists(ctx, resourceName, &routeTable), testAccCheckRouteTableNumberOfRoutes(&routeTable, 5), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, "propagating_vgws.#", "0"), resource.TestCheckResourceAttr(resourceName, "route.#", "3"), testAccCheckRouteTableRoute(resourceName, names.AttrCIDRBlock, destinationCidr1, "vpc_peering_connection_id", pcxResourceName, names.AttrID), @@ -927,8 +927,8 @@ func TestAccVPCRouteTable_multipleRoutes(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckRouteTableExists(ctx, resourceName, &routeTable), testAccCheckRouteTableNumberOfRoutes(&routeTable, 5), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, "propagating_vgws.#", "0"), resource.TestCheckResourceAttr(resourceName, "route.#", "3"), testAccCheckRouteTableRoute(resourceName, "ipv6_cidr_block", destinationCidr4, "vpc_peering_connection_id", pcxResourceName, names.AttrID), @@ -966,8 +966,8 @@ func TestAccVPCRouteTable_prefixListToInternetGateway(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckRouteTableExists(ctx, resourceName, &routeTable), testAccCheckRouteTableNumberOfRoutes(&routeTable, 2), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`route-table/.+$`)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, "propagating_vgws.#", "0"), resource.TestCheckResourceAttr(resourceName, "route.#", "1"), testAccCheckRouteTablePrefixListRoute(resourceName, plResourceName, "gateway_id", igwResourceName, names.AttrID), diff --git a/internal/service/ec2/vpc_route_tables_data_source.go b/internal/service/ec2/vpc_route_tables_data_source.go index 1642bfe23d3e..8b055c79d96f 100644 --- a/internal/service/ec2/vpc_route_tables_data_source.go +++ b/internal/service/ec2/vpc_route_tables_data_source.go @@ -80,7 +80,7 @@ func dataSourceRouteTablesRead(ctx context.Context, d *schema.ResourceData, meta routeTableIDs = append(routeTableIDs, aws.ToString(v.RouteTableId)) } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) d.Set(names.AttrIDs, routeTableIDs) return diags diff --git a/internal/service/ec2/vpc_route_test.go b/internal/service/ec2/vpc_route_test.go index 0e7e035ed6e7..9ef47dfaaa02 100644 --- a/internal/service/ec2/vpc_route_test.go +++ b/internal/service/ec2/vpc_route_test.go @@ -249,7 +249,7 @@ func TestAccVPCRoute_ipv6ToInstance(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "egress_only_gateway_id", ""), resource.TestCheckResourceAttr(resourceName, "gateway_id", ""), resource.TestCheckResourceAttrPair(resourceName, names.AttrInstanceID, instanceResourceName, names.AttrID), - acctest.CheckResourceAttrAccountID(resourceName, "instance_owner_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "instance_owner_id"), resource.TestCheckResourceAttr(resourceName, "local_gateway_id", ""), resource.TestCheckResourceAttr(resourceName, "nat_gateway_id", ""), resource.TestCheckResourceAttrPair(resourceName, names.AttrNetworkInterfaceID, instanceResourceName, "primary_network_interface_id"), @@ -484,7 +484,7 @@ func TestAccVPCRoute_ipv4ToInstance(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "egress_only_gateway_id", ""), resource.TestCheckResourceAttr(resourceName, "gateway_id", ""), resource.TestCheckResourceAttrPair(resourceName, names.AttrInstanceID, instanceResourceName, names.AttrID), - acctest.CheckResourceAttrAccountID(resourceName, "instance_owner_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "instance_owner_id"), resource.TestCheckResourceAttr(resourceName, "local_gateway_id", ""), resource.TestCheckResourceAttr(resourceName, "nat_gateway_id", ""), resource.TestCheckResourceAttrPair(resourceName, names.AttrNetworkInterfaceID, instanceResourceName, "primary_network_interface_id"), @@ -579,7 +579,7 @@ func TestAccVPCRoute_IPv4ToNetworkInterface_attached(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "egress_only_gateway_id", ""), resource.TestCheckResourceAttr(resourceName, "gateway_id", ""), resource.TestCheckResourceAttrPair(resourceName, names.AttrInstanceID, instanceResourceName, names.AttrID), - acctest.CheckResourceAttrAccountID(resourceName, "instance_owner_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "instance_owner_id"), resource.TestCheckResourceAttr(resourceName, "local_gateway_id", ""), resource.TestCheckResourceAttr(resourceName, "nat_gateway_id", ""), resource.TestCheckResourceAttrPair(resourceName, names.AttrNetworkInterfaceID, eniResourceName, names.AttrID), @@ -628,7 +628,7 @@ func TestAccVPCRoute_IPv4ToNetworkInterface_twoAttachments(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "egress_only_gateway_id", ""), resource.TestCheckResourceAttr(resourceName, "gateway_id", ""), resource.TestCheckResourceAttrPair(resourceName, names.AttrInstanceID, instanceResourceName, names.AttrID), - acctest.CheckResourceAttrAccountID(resourceName, "instance_owner_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "instance_owner_id"), resource.TestCheckResourceAttr(resourceName, "local_gateway_id", ""), resource.TestCheckResourceAttr(resourceName, "nat_gateway_id", ""), resource.TestCheckResourceAttrPair(resourceName, names.AttrNetworkInterfaceID, eni1ResourceName, names.AttrID), @@ -651,7 +651,7 @@ func TestAccVPCRoute_IPv4ToNetworkInterface_twoAttachments(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "egress_only_gateway_id", ""), resource.TestCheckResourceAttr(resourceName, "gateway_id", ""), resource.TestCheckResourceAttrPair(resourceName, names.AttrInstanceID, instanceResourceName, names.AttrID), - acctest.CheckResourceAttrAccountID(resourceName, "instance_owner_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "instance_owner_id"), resource.TestCheckResourceAttr(resourceName, "local_gateway_id", ""), resource.TestCheckResourceAttr(resourceName, "nat_gateway_id", ""), resource.TestCheckResourceAttrPair(resourceName, names.AttrNetworkInterfaceID, eni2ResourceName, names.AttrID), @@ -1826,7 +1826,7 @@ func TestAccVPCRoute_prefixListToInstance(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "egress_only_gateway_id", ""), resource.TestCheckResourceAttr(resourceName, "gateway_id", ""), resource.TestCheckResourceAttrPair(resourceName, names.AttrInstanceID, instanceResourceName, names.AttrID), - acctest.CheckResourceAttrAccountID(resourceName, "instance_owner_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "instance_owner_id"), resource.TestCheckResourceAttr(resourceName, "local_gateway_id", ""), resource.TestCheckResourceAttr(resourceName, "nat_gateway_id", ""), resource.TestCheckResourceAttrPair(resourceName, names.AttrNetworkInterfaceID, instanceResourceName, "primary_network_interface_id"), @@ -1921,7 +1921,7 @@ func TestAccVPCRoute_PrefixListToNetworkInterface_attached(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "egress_only_gateway_id", ""), resource.TestCheckResourceAttr(resourceName, "gateway_id", ""), resource.TestCheckResourceAttrPair(resourceName, names.AttrInstanceID, instanceResourceName, names.AttrID), - acctest.CheckResourceAttrAccountID(resourceName, "instance_owner_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "instance_owner_id"), resource.TestCheckResourceAttr(resourceName, "local_gateway_id", ""), resource.TestCheckResourceAttr(resourceName, "nat_gateway_id", ""), resource.TestCheckResourceAttrPair(resourceName, names.AttrNetworkInterfaceID, eniResourceName, names.AttrID), diff --git a/internal/service/ec2/vpc_security_group.go b/internal/service/ec2/vpc_security_group.go index 90c20748955c..82b8dae6e726 100644 --- a/internal/service/ec2/vpc_security_group.go +++ b/internal/service/ec2/vpc_security_group.go @@ -299,7 +299,7 @@ func resourceSecurityGroupRead(ctx context.Context, d *schema.ResourceData, meta arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: names.EC2, - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), AccountID: ownerID, Resource: fmt.Sprintf("security-group/%s", d.Id()), } diff --git a/internal/service/ec2/vpc_security_group_data_source.go b/internal/service/ec2/vpc_security_group_data_source.go index ff68375475c6..e2259dced557 100644 --- a/internal/service/ec2/vpc_security_group_data_source.go +++ b/internal/service/ec2/vpc_security_group_data_source.go @@ -103,7 +103,7 @@ func dataSourceSecurityGroupRead(ctx context.Context, d *schema.ResourceData, me arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: names.EC2, - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), AccountID: *sg.OwnerId, Resource: fmt.Sprintf("security-group/%s", *sg.GroupId), }.String() diff --git a/internal/service/ec2/vpc_security_group_ingress_rule.go b/internal/service/ec2/vpc_security_group_ingress_rule.go index ffecce97926c..7f4a4c5f043d 100644 --- a/internal/service/ec2/vpc_security_group_ingress_rule.go +++ b/internal/service/ec2/vpc_security_group_ingress_rule.go @@ -296,7 +296,7 @@ func (r *securityGroupRuleResource) Read(ctx context.Context, request resource.R data.Description = fwflex.StringToFramework(ctx, output.Description) data.IPProtocol = fwflex.StringToFrameworkValuable[ipProtocol](ctx, output.IpProtocol) data.PrefixListID = fwflex.StringToFramework(ctx, output.PrefixListId) - data.ReferencedSecurityGroupID = flattenReferencedSecurityGroup(ctx, output.ReferencedGroupInfo, r.Meta().AccountID) + data.ReferencedSecurityGroupID = flattenReferencedSecurityGroup(ctx, output.ReferencedGroupInfo, r.Meta().AccountID(ctx)) data.SecurityGroupID = fwflex.StringToFramework(ctx, output.GroupId) data.SecurityGroupRuleID = fwflex.StringToFramework(ctx, output.SecurityGroupRuleId) diff --git a/internal/service/ec2/vpc_security_group_rule_data_source.go b/internal/service/ec2/vpc_security_group_rule_data_source.go index 260b6f4b6787..8c068accacb9 100644 --- a/internal/service/ec2/vpc_security_group_rule_data_source.go +++ b/internal/service/ec2/vpc_security_group_rule_data_source.go @@ -122,7 +122,7 @@ func (d *securityGroupRuleDataSource) Read(ctx context.Context, request datasour data.IPProtocol = flex.StringToFramework(ctx, output.IpProtocol) data.IsEgress = flex.BoolToFramework(ctx, output.IsEgress) data.PrefixListID = flex.StringToFramework(ctx, output.PrefixListId) - data.ReferencedSecurityGroupID = flattenReferencedSecurityGroup(ctx, output.ReferencedGroupInfo, d.Meta().AccountID) + data.ReferencedSecurityGroupID = flattenReferencedSecurityGroup(ctx, output.ReferencedGroupInfo, d.Meta().AccountID(ctx)) data.SecurityGroupID = flex.StringToFramework(ctx, output.GroupId) data.SecurityGroupRuleID = flex.StringToFramework(ctx, output.SecurityGroupRuleId) data.Tags = tftags.FlattenStringValueMap(ctx, keyValueTags(ctx, output.Tags).IgnoreAWS().IgnoreConfig(ignoreTagsConfig).Map()) diff --git a/internal/service/ec2/vpc_security_group_rules_data_source.go b/internal/service/ec2/vpc_security_group_rules_data_source.go index 1b0fa0e049a7..a61543de1b35 100644 --- a/internal/service/ec2/vpc_security_group_rules_data_source.go +++ b/internal/service/ec2/vpc_security_group_rules_data_source.go @@ -76,7 +76,7 @@ func (d *securityGroupRulesDataSource) Read(ctx context.Context, request datasou return } - data.ID = types.StringValue(d.Meta().Region) + data.ID = types.StringValue(d.Meta().Region(ctx)) data.IDs = flex.FlattenFrameworkStringValueList(ctx, tfslices.ApplyToAll(output, func(v awstypes.SecurityGroupRule) string { return aws.ToString(v.SecurityGroupRuleId) })) diff --git a/internal/service/ec2/vpc_security_group_test.go b/internal/service/ec2/vpc_security_group_test.go index 87737290f62e..62c6d45bffc7 100644 --- a/internal/service/ec2/vpc_security_group_test.go +++ b/internal/service/ec2/vpc_security_group_test.go @@ -890,13 +890,13 @@ func TestAccVPCSecurityGroup_basic(t *testing.T) { Config: testAccVPCSecurityGroupConfig_name(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckSecurityGroupExists(ctx, resourceName, &group), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`security-group/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`security-group/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "Managed by Terraform"), resource.TestCheckResourceAttr(resourceName, "egress.#", "0"), resource.TestCheckResourceAttr(resourceName, "ingress.#", "0"), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, names.AttrNamePrefix, ""), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, "revoke_rules_on_delete", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttrPair(resourceName, names.AttrVPCID, "aws_vpc.test", names.AttrID), @@ -2667,10 +2667,10 @@ func TestAccVPCSecurityGroup_emrDependencyViolation(t *testing.T) { Config: testAccVPCSecurityGroupConfig_emrLinkedRulesDestroy(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckSecurityGroupExists(ctx, resourceName, &group), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`security-group/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`security-group/.+$`)), resource.TestCheckResourceAttr(resourceName, "egress.#", "1"), resource.TestCheckResourceAttr(resourceName, "ingress.#", "1"), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, "revoke_rules_on_delete", acctest.CtTrue), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "1"), resource.TestCheckResourceAttrPair(resourceName, names.AttrVPCID, "aws_vpc.test", names.AttrID), diff --git a/internal/service/ec2/vpc_security_groups_data_source.go b/internal/service/ec2/vpc_security_groups_data_source.go index 630d8e1486f0..b2c977440a0d 100644 --- a/internal/service/ec2/vpc_security_groups_data_source.go +++ b/internal/service/ec2/vpc_security_groups_data_source.go @@ -81,7 +81,7 @@ func dataSourceSecurityGroupsRead(ctx context.Context, d *schema.ResourceData, m arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: names.EC2, - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), AccountID: aws.ToString(v.OwnerId), Resource: fmt.Sprintf("security-group/%s", aws.ToString(v.GroupId)), }.String() @@ -90,7 +90,7 @@ func dataSourceSecurityGroupsRead(ctx context.Context, d *schema.ResourceData, m vpcIDs = append(vpcIDs, aws.ToString(v.VpcId)) } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) d.Set(names.AttrARNs, arns) d.Set(names.AttrIDs, securityGroupIDs) d.Set("vpc_ids", vpcIDs) diff --git a/internal/service/ec2/vpc_subnet_cidr_reservation_test.go b/internal/service/ec2/vpc_subnet_cidr_reservation_test.go index d3d552ad0800..68b92d5b18dd 100644 --- a/internal/service/ec2/vpc_subnet_cidr_reservation_test.go +++ b/internal/service/ec2/vpc_subnet_cidr_reservation_test.go @@ -38,7 +38,7 @@ func TestAccVPCSubnetCIDRReservation_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, names.AttrCIDRBlock, "10.1.1.16/28"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "test"), resource.TestCheckResourceAttr(resourceName, "reservation_type", names.AttrPrefix), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), ), }, { @@ -68,7 +68,7 @@ func TestAccVPCSubnetCIDRReservation_ipv6(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckSubnetCIDRReservationExists(ctx, resourceName, &res), resource.TestCheckResourceAttr(resourceName, "reservation_type", "explicit"), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), ), }, { diff --git a/internal/service/ec2/vpc_subnet_test.go b/internal/service/ec2/vpc_subnet_test.go index 20bc2c065a66..7eb4ab20631c 100644 --- a/internal/service/ec2/vpc_subnet_test.go +++ b/internal/service/ec2/vpc_subnet_test.go @@ -37,7 +37,7 @@ func TestAccVPCSubnet_basic(t *testing.T) { Config: testAccVPCSubnetConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckSubnetExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`subnet/subnet-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`subnet/subnet-.+`)), resource.TestCheckResourceAttrSet(resourceName, names.AttrAvailabilityZone), resource.TestCheckResourceAttrSet(resourceName, "availability_zone_id"), resource.TestCheckResourceAttr(resourceName, names.AttrCIDRBlock, "10.1.1.0/24"), @@ -50,7 +50,7 @@ func TestAccVPCSubnet_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "map_customer_owned_ip_on_launch", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "map_public_ip_on_launch", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "outpost_arn", ""), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, "private_dns_hostname_type_on_launch", "ip-name"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), diff --git a/internal/service/ec2/vpc_subnets_data_source.go b/internal/service/ec2/vpc_subnets_data_source.go index 677f55817f67..f06d1cadc7cc 100644 --- a/internal/service/ec2/vpc_subnets_data_source.go +++ b/internal/service/ec2/vpc_subnets_data_source.go @@ -71,7 +71,7 @@ func dataSourceSubnetsRead(ctx context.Context, d *schema.ResourceData, meta int subnetIDs = append(subnetIDs, aws.ToString(v.SubnetId)) } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) d.Set(names.AttrIDs, subnetIDs) return diags diff --git a/internal/service/ec2/vpc_test.go b/internal/service/ec2/vpc_test.go index 2a14439c4501..335f14582d34 100644 --- a/internal/service/ec2/vpc_test.go +++ b/internal/service/ec2/vpc_test.go @@ -38,7 +38,7 @@ func TestAccVPC_basic(t *testing.T) { Config: testAccVPCConfig_basic, Check: resource.ComposeAggregateTestCheckFunc( acctest.CheckVPCExists(ctx, resourceName, &vpc), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`vpc/vpc-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`vpc/vpc-.+`)), resource.TestCheckResourceAttr(resourceName, "assign_generated_ipv6_cidr_block", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, names.AttrCIDRBlock, "10.1.0.0/16"), resource.TestCheckResourceAttrSet(resourceName, "default_network_acl_id"), @@ -57,7 +57,7 @@ func TestAccVPC_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "ipv6_ipam_pool_id", ""), resource.TestCheckResourceAttr(resourceName, "ipv6_netmask_length", "0"), resource.TestCheckResourceAttrSet(resourceName, "main_route_table_id"), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -490,7 +490,7 @@ func TestAccVPC_assignGeneratedIPv6CIDRBlockWithNetworkBorderGroup(t *testing.T) resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckRegion(t, names.USWest2RegionID) + acctest.PreCheckRegion(t, endpoints.UsWest2RegionID) // https://docs.aws.amazon.com/vpc/latest/userguide/Extend_VPCs.html#local-zone: // "You can request the IPv6 Amazon-provided IP addresses and associate them with the network border group // for a new or existing VPCs only for us-west-2-lax-1a and use-west-2-lax-1b. All other Local Zones don't support IPv6." diff --git a/internal/service/ec2/vpc_traffic_mirror_filter.go b/internal/service/ec2/vpc_traffic_mirror_filter.go index ccb2f9b1bc8e..7e288eac1760 100644 --- a/internal/service/ec2/vpc_traffic_mirror_filter.go +++ b/internal/service/ec2/vpc_traffic_mirror_filter.go @@ -125,8 +125,8 @@ func resourceTrafficMirrorFilterRead(ctx context.Context, d *schema.ResourceData arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "ec2", - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: "traffic-mirror-filter/" + d.Id(), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/ec2/vpc_traffic_mirror_filter_rule.go b/internal/service/ec2/vpc_traffic_mirror_filter_rule.go index 62ac5c276499..18a42b940e22 100644 --- a/internal/service/ec2/vpc_traffic_mirror_filter_rule.go +++ b/internal/service/ec2/vpc_traffic_mirror_filter_rule.go @@ -182,8 +182,8 @@ func resourceTrafficMirrorFilterRuleRead(ctx context.Context, d *schema.Resource arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "ec2", - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: "traffic-mirror-filter-rule/" + d.Id(), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/ec2/vpc_traffic_mirror_filter_rule_test.go b/internal/service/ec2/vpc_traffic_mirror_filter_rule_test.go index ee54face730c..51a5f915a27d 100644 --- a/internal/service/ec2/vpc_traffic_mirror_filter_rule_test.go +++ b/internal/service/ec2/vpc_traffic_mirror_filter_rule_test.go @@ -50,7 +50,7 @@ func TestAccVPCTrafficMirrorFilterRule_basic(t *testing.T) { Config: testAccVPCTrafficMirrorFilterRuleConfig_basic(dstCidr, srcCidr, action, direction, ruleNum1), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckTrafficMirrorFilterRuleExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`traffic-mirror-filter-rule/tmfr-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`traffic-mirror-filter-rule/tmfr-.+`)), resource.TestMatchResourceAttr(resourceName, "traffic_mirror_filter_id", regexache.MustCompile("tmf-.*")), resource.TestCheckResourceAttr(resourceName, "destination_cidr_block", dstCidr), resource.TestCheckResourceAttr(resourceName, "rule_action", action), diff --git a/internal/service/ec2/vpc_traffic_mirror_filter_test.go b/internal/service/ec2/vpc_traffic_mirror_filter_test.go index e758525f1381..2b2f7b2a542b 100644 --- a/internal/service/ec2/vpc_traffic_mirror_filter_test.go +++ b/internal/service/ec2/vpc_traffic_mirror_filter_test.go @@ -40,7 +40,7 @@ func TestAccVPCTrafficMirrorFilter_basic(t *testing.T) { Config: testAccVPCTrafficMirrorFilterConfig_basic(description), Check: resource.ComposeTestCheckFunc( testAccCheckTrafficMirrorFilterExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`traffic-mirror-filter/tmf-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`traffic-mirror-filter/tmf-.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, description), resource.TestCheckResourceAttr(resourceName, "network_services.#", "1"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), diff --git a/internal/service/ec2/vpc_traffic_mirror_session.go b/internal/service/ec2/vpc_traffic_mirror_session.go index f995419645e0..fc9930515732 100644 --- a/internal/service/ec2/vpc_traffic_mirror_session.go +++ b/internal/service/ec2/vpc_traffic_mirror_session.go @@ -147,7 +147,7 @@ func resourceTrafficMirrorSessionRead(ctx context.Context, d *schema.ResourceDat arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "ec2", - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), AccountID: ownerID, Resource: "traffic-mirror-session/" + d.Id(), }.String() diff --git a/internal/service/ec2/vpc_traffic_mirror_session_test.go b/internal/service/ec2/vpc_traffic_mirror_session_test.go index f1acc8f766de..cd420103a903 100644 --- a/internal/service/ec2/vpc_traffic_mirror_session_test.go +++ b/internal/service/ec2/vpc_traffic_mirror_session_test.go @@ -52,8 +52,8 @@ func TestAccVPCTrafficMirrorSession_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "session_number", strconv.Itoa(session)), resource.TestMatchResourceAttr(resourceName, "virtual_network_id", regexache.MustCompile(`\d+`)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`traffic-mirror-session/tms-.+`)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`traffic-mirror-session/tms-.+`)), ), }, // update of description, packet length and VNI diff --git a/internal/service/ec2/vpc_traffic_mirror_target.go b/internal/service/ec2/vpc_traffic_mirror_target.go index 2989dffa5315..e1235e0fc990 100644 --- a/internal/service/ec2/vpc_traffic_mirror_target.go +++ b/internal/service/ec2/vpc_traffic_mirror_target.go @@ -147,7 +147,7 @@ func resourceTrafficMirrorTargetRead(ctx context.Context, d *schema.ResourceData arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: names.EC2, - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), AccountID: ownerID, Resource: fmt.Sprintf("traffic-mirror-target/%s", d.Id()), }.String() diff --git a/internal/service/ec2/vpc_traffic_mirror_target_test.go b/internal/service/ec2/vpc_traffic_mirror_target_test.go index f38d257a1bf5..0307e950e7db 100644 --- a/internal/service/ec2/vpc_traffic_mirror_target_test.go +++ b/internal/service/ec2/vpc_traffic_mirror_target_test.go @@ -41,8 +41,8 @@ func TestAccVPCTrafficMirrorTarget_nlb(t *testing.T) { Config: testAccVPCTrafficMirrorTargetConfig_nlb(rName, description), Check: resource.ComposeTestCheckFunc( testAccCheckTrafficMirrorTargetExists(ctx, resourceName, &v), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`traffic-mirror-target/tmt-.+`)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`traffic-mirror-target/tmt-.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, description), resource.TestCheckResourceAttrPair(resourceName, "network_load_balancer_arn", "aws_lb.test", names.AttrARN), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), diff --git a/internal/service/ec2/vpc_vpcs_data_source.go b/internal/service/ec2/vpc_vpcs_data_source.go index 0066c7f68110..55c9ffe82f25 100644 --- a/internal/service/ec2/vpc_vpcs_data_source.go +++ b/internal/service/ec2/vpc_vpcs_data_source.go @@ -71,7 +71,7 @@ func dataSourceVPCsRead(ctx context.Context, d *schema.ResourceData, meta interf vpcIDs = append(vpcIDs, aws.ToString(v.VpcId)) } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) d.Set(names.AttrIDs, vpcIDs) return diags diff --git a/internal/service/ec2/vpnclient_endpoint.go b/internal/service/ec2/vpnclient_endpoint.go index 3b6ba76279cf..3acf64032a80 100644 --- a/internal/service/ec2/vpnclient_endpoint.go +++ b/internal/service/ec2/vpnclient_endpoint.go @@ -315,8 +315,8 @@ func resourceClientVPNEndpointRead(ctx context.Context, d *schema.ResourceData, arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: names.EC2, - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("client-vpn-endpoint/%s", d.Id()), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/ec2/vpnclient_endpoint_data_source.go b/internal/service/ec2/vpnclient_endpoint_data_source.go index 8e88dad91a5b..b2ed8cbb50c4 100644 --- a/internal/service/ec2/vpnclient_endpoint_data_source.go +++ b/internal/service/ec2/vpnclient_endpoint_data_source.go @@ -214,8 +214,8 @@ func dataSourceClientVPNEndpointRead(ctx context.Context, d *schema.ResourceData arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: names.EC2, - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("client-vpn-endpoint/%s", d.Id()), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/ec2/vpnclient_endpoint_test.go b/internal/service/ec2/vpnclient_endpoint_test.go index 556f995138f1..6109f3180e70 100644 --- a/internal/service/ec2/vpnclient_endpoint_test.go +++ b/internal/service/ec2/vpnclient_endpoint_test.go @@ -40,7 +40,7 @@ func testAccClientVPNEndpoint_basic(t *testing.T, semaphore tfsync.Semaphore) { Config: testAccClientVPNEndpointConfig_basic(t, rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckClientVPNEndpointExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`client-vpn-endpoint/cvpn-endpoint-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`client-vpn-endpoint/cvpn-endpoint-.+`)), resource.TestCheckResourceAttr(resourceName, "authentication_options.#", "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "authentication_options.*", map[string]string{ names.AttrType: "certificate-authentication", diff --git a/internal/service/ec2/vpnsite_connection.go b/internal/service/ec2/vpnsite_connection.go index eaa9d44ab95f..9ac28c50ef71 100644 --- a/internal/service/ec2/vpnsite_connection.go +++ b/internal/service/ec2/vpnsite_connection.go @@ -732,8 +732,8 @@ func resourceVPNConnectionRead(ctx context.Context, d *schema.ResourceData, meta arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: names.EC2, - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("vpn-connection/%s", d.Id()), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/ec2/vpnsite_connection_test.go b/internal/service/ec2/vpnsite_connection_test.go index f45b55f6edf2..24ee784b7026 100644 --- a/internal/service/ec2/vpnsite_connection_test.go +++ b/internal/service/ec2/vpnsite_connection_test.go @@ -171,7 +171,7 @@ func TestAccSiteVPNConnection_basic(t *testing.T) { Config: testAccSiteVPNConnectionConfig_basic(rName, rBgpAsn), Check: resource.ComposeAggregateTestCheckFunc( testAccVPNConnectionExists(ctx, resourceName, &vpn), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`vpn-connection/vpn-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`vpn-connection/vpn-.+`)), resource.TestCheckResourceAttr(resourceName, "core_network_arn", ""), resource.TestCheckResourceAttr(resourceName, "core_network_attachment_arn", ""), resource.TestCheckResourceAttrSet(resourceName, "customer_gateway_configuration"), @@ -268,7 +268,7 @@ func TestAccSiteVPNConnection_withoutTGWorVGW(t *testing.T) { Config: testAccSiteVPNConnectionConfig_withoutTGWorVGW(rName, rBgpAsn), Check: resource.ComposeAggregateTestCheckFunc( testAccVPNConnectionExists(ctx, resourceName, &vpn), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`vpn-connection/vpn-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`vpn-connection/vpn-.+`)), resource.TestCheckResourceAttr(resourceName, "core_network_arn", ""), resource.TestCheckResourceAttr(resourceName, "core_network_attachment_arn", ""), resource.TestCheckResourceAttrSet(resourceName, "customer_gateway_configuration"), diff --git a/internal/service/ec2/vpnsite_customer_gateway.go b/internal/service/ec2/vpnsite_customer_gateway.go index 5e96bf565270..8e4b51742ef9 100644 --- a/internal/service/ec2/vpnsite_customer_gateway.go +++ b/internal/service/ec2/vpnsite_customer_gateway.go @@ -166,8 +166,8 @@ func resourceCustomerGatewayRead(ctx context.Context, d *schema.ResourceData, me arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: names.EC2, - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("customer-gateway/%s", d.Id()), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/ec2/vpnsite_customer_gateway_data_source.go b/internal/service/ec2/vpnsite_customer_gateway_data_source.go index b1eeee18d11b..b5f4976924f4 100644 --- a/internal/service/ec2/vpnsite_customer_gateway_data_source.go +++ b/internal/service/ec2/vpnsite_customer_gateway_data_source.go @@ -97,8 +97,8 @@ func dataSourceCustomerGatewayRead(ctx context.Context, d *schema.ResourceData, arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: names.EC2, - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("customer-gateway/%s", d.Id()), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/ec2/vpnsite_customer_gateway_test.go b/internal/service/ec2/vpnsite_customer_gateway_test.go index 0c4d6b8ed655..e4408075aa44 100644 --- a/internal/service/ec2/vpnsite_customer_gateway_test.go +++ b/internal/service/ec2/vpnsite_customer_gateway_test.go @@ -38,7 +38,7 @@ func TestAccSiteVPNCustomerGateway_basic(t *testing.T) { Config: testAccSiteVPNCustomerGatewayConfig_basic(rBgpAsn), Check: resource.ComposeTestCheckFunc( testAccCheckCustomerGatewayExists(ctx, resourceName, &gateway), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`customer-gateway/cgw-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`customer-gateway/cgw-.+`)), resource.TestCheckResourceAttr(resourceName, "bgp_asn", strconv.Itoa(rBgpAsn)), resource.TestCheckResourceAttr(resourceName, names.AttrCertificateARN, ""), resource.TestCheckResourceAttr(resourceName, names.AttrDeviceName, ""), @@ -72,7 +72,7 @@ func TestAccSiteVPNCustomerGateway_bgpASNExtended(t *testing.T) { Config: testAccSiteVPNCustomerGatewayConfig_bgpASNExtended(rBgpAsnExtended), Check: resource.ComposeTestCheckFunc( testAccCheckCustomerGatewayExists(ctx, resourceName, &gateway), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`customer-gateway/cgw-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`customer-gateway/cgw-.+`)), resource.TestCheckResourceAttr(resourceName, "bgp_asn_extended", strconv.Itoa(rBgpAsnExtended)), resource.TestCheckResourceAttr(resourceName, names.AttrCertificateARN, ""), resource.TestCheckResourceAttr(resourceName, names.AttrDeviceName, ""), diff --git a/internal/service/ec2/vpnsite_gateway.go b/internal/service/ec2/vpnsite_gateway.go index b72acdb4b324..5dc9ee08e032 100644 --- a/internal/service/ec2/vpnsite_gateway.go +++ b/internal/service/ec2/vpnsite_gateway.go @@ -128,8 +128,8 @@ func resourceVPNGatewayRead(ctx context.Context, d *schema.ResourceData, meta in arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: names.EC2, - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("vpn-gateway/%s", d.Id()), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/ec2/vpnsite_gateway_data_source.go b/internal/service/ec2/vpnsite_gateway_data_source.go index 4535fd23e2c4..4f8e19f05216 100644 --- a/internal/service/ec2/vpnsite_gateway_data_source.go +++ b/internal/service/ec2/vpnsite_gateway_data_source.go @@ -123,8 +123,8 @@ func dataSourceVPNGatewayRead(ctx context.Context, d *schema.ResourceData, meta arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: names.EC2, - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("vpn-gateway/%s", d.Id()), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/ec2/vpnsite_gateway_test.go b/internal/service/ec2/vpnsite_gateway_test.go index f4512be41c4e..1c5f6c571b48 100644 --- a/internal/service/ec2/vpnsite_gateway_test.go +++ b/internal/service/ec2/vpnsite_gateway_test.go @@ -54,7 +54,7 @@ func TestAccSiteVPNGateway_basic(t *testing.T) { Config: testAccSiteVPNGatewayConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckVPNGatewayExists(ctx, resourceName, &v1), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`vpn-gateway/vgw-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`vpn-gateway/vgw-.+`)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, diff --git a/internal/service/ec2/wait.go b/internal/service/ec2/wait.go index 60b60024b138..757628c86974 100644 --- a/internal/service/ec2/wait.go +++ b/internal/service/ec2/wait.go @@ -3195,3 +3195,88 @@ func waitVPNGatewayVPCAttachmentDetached(ctx context.Context, conn *ec2.Client, return nil, err } + +func waitVPCBlockPublicAccessOptionsUpdated(ctx context.Context, conn *ec2.Client, timeout time.Duration) (*awstypes.VpcBlockPublicAccessOptions, error) { //nolint:unparam + stateConf := &retry.StateChangeConf{ + Pending: enum.Slice(awstypes.VpcBlockPublicAccessStateUpdateInProgress), + Target: enum.Slice(awstypes.VpcBlockPublicAccessStateUpdateComplete), + Refresh: statusVPCBlockPublicAccessOptions(ctx, conn), + Timeout: timeout, + ContinuousTargetOccurence: 2, + } + + outputRaw, err := stateConf.WaitForStateContext(ctx) + + if output, ok := outputRaw.(*awstypes.VpcBlockPublicAccessOptions); ok { + tfresource.SetLastError(err, errors.New(aws.ToString(output.Reason))) + + return output, err + } + + return nil, err +} + +func waitVPCBlockPublicAccessExclusionCreated(ctx context.Context, conn *ec2.Client, id string, timeout time.Duration) (*awstypes.VpcBlockPublicAccessExclusion, error) { + stateConf := &retry.StateChangeConf{ + Pending: enum.Slice(awstypes.VpcBlockPublicAccessExclusionStateCreateInProgress), + Target: enum.Slice(awstypes.VpcBlockPublicAccessExclusionStateCreateComplete), + Refresh: statusVPCBlockPublicAccessExclusion(ctx, conn, id), + Timeout: timeout, + ContinuousTargetOccurence: 2, + } + + outputRaw, err := stateConf.WaitForStateContext(ctx) + + if output, ok := outputRaw.(*awstypes.VpcBlockPublicAccessExclusion); ok { + tfresource.SetLastError(err, errors.New(aws.ToString(output.Reason))) + + return output, err + } + + return nil, err +} + +func waitVPCBlockPublicAccessExclusionUpdated(ctx context.Context, conn *ec2.Client, id string, timeout time.Duration) (*awstypes.VpcBlockPublicAccessExclusion, error) { + stateConf := &retry.StateChangeConf{ + Pending: enum.Slice(awstypes.VpcBlockPublicAccessExclusionStateUpdateInProgress), + Target: enum.Slice(awstypes.VpcBlockPublicAccessExclusionStateUpdateComplete), + Refresh: statusVPCBlockPublicAccessExclusion(ctx, conn, id), + Timeout: timeout, + ContinuousTargetOccurence: 2, + } + + outputRaw, err := stateConf.WaitForStateContext(ctx) + + if output, ok := outputRaw.(*awstypes.VpcBlockPublicAccessExclusion); ok { + tfresource.SetLastError(err, errors.New(aws.ToString(output.Reason))) + + return output, err + } + + return nil, err +} + +func waitVPCBlockPublicAccessExclusionDeleted(ctx context.Context, conn *ec2.Client, id string, timeout time.Duration) (*awstypes.VpcBlockPublicAccessExclusion, error) { + stateConf := &retry.StateChangeConf{ + Pending: enum.Slice( + awstypes.VpcBlockPublicAccessExclusionStateDeleteInProgress, + // There might API inconsistencies where even after invoking delete, the Describe might come back with a CreateComplete or UpdateComplete status (the status before delete was invoked). + // To account for that, we are also adding those two statuses as valid statues to retry. + awstypes.VpcBlockPublicAccessExclusionStateCreateComplete, + awstypes.VpcBlockPublicAccessExclusionStateUpdateComplete, + ), + Target: []string{}, + Refresh: statusVPCBlockPublicAccessExclusion(ctx, conn, id), + Timeout: timeout, + } + + outputRaw, err := stateConf.WaitForStateContext(ctx) + + if output, ok := outputRaw.(*awstypes.VpcBlockPublicAccessExclusion); ok { + tfresource.SetLastError(err, errors.New(aws.ToString(output.Reason))) + + return output, err + } + + return nil, err +} diff --git a/internal/service/ec2/wavelength_carrier_gateway.go b/internal/service/ec2/wavelength_carrier_gateway.go index 86c321857258..008f1896a2cb 100644 --- a/internal/service/ec2/wavelength_carrier_gateway.go +++ b/internal/service/ec2/wavelength_carrier_gateway.go @@ -105,7 +105,7 @@ func resourceCarrierGatewayRead(ctx context.Context, d *schema.ResourceData, met arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: names.EC2, - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), AccountID: ownerID, Resource: fmt.Sprintf("carrier-gateway/%s", d.Id()), }.String() diff --git a/internal/service/ec2/wavelength_carrier_gateway_test.go b/internal/service/ec2/wavelength_carrier_gateway_test.go index fb0c42953c95..0f3b1f41d693 100644 --- a/internal/service/ec2/wavelength_carrier_gateway_test.go +++ b/internal/service/ec2/wavelength_carrier_gateway_test.go @@ -38,8 +38,8 @@ func TestAccWavelengthCarrierGateway_basic(t *testing.T) { Config: testAccWavelengthCarrierGatewayConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckCarrierGatewayExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ec2", regexache.MustCompile(`carrier-gateway/cagw-.+`)), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ec2", regexache.MustCompile(`carrier-gateway/cagw-.+`)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttrPair(resourceName, names.AttrVPCID, vpcResourceName, names.AttrID), ), diff --git a/internal/service/ecr/authorization_token_data_source.go b/internal/service/ecr/authorization_token_data_source.go index 5ebebfe09105..4c67fafbb708 100644 --- a/internal/service/ecr/authorization_token_data_source.go +++ b/internal/service/ecr/authorization_token_data_source.go @@ -79,7 +79,7 @@ func dataSourceAuthorizationTokenRead(ctx context.Context, d *schema.ResourceDat } userName := basicAuthorization[0] password := basicAuthorization[1] - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) d.Set("authorization_token", authorizationToken) d.Set("proxy_endpoint", proxyEndpoint) d.Set("expires_at", expiresAt) diff --git a/internal/service/ecr/pull_through_cache_rule_data_source_test.go b/internal/service/ecr/pull_through_cache_rule_data_source_test.go index 9e8f5143c8fd..4581c08c7f6c 100644 --- a/internal/service/ecr/pull_through_cache_rule_data_source_test.go +++ b/internal/service/ecr/pull_through_cache_rule_data_source_test.go @@ -25,7 +25,7 @@ func TestAccECRPullThroughCacheRuleDataSource_basic(t *testing.T) { { Config: testAccPullThroughCacheRuleDataSourceConfig_basic(), Check: resource.ComposeAggregateTestCheckFunc( - acctest.CheckResourceAttrAccountID(dataSource, "registry_id"), + acctest.CheckResourceAttrAccountID(ctx, dataSource, "registry_id"), resource.TestCheckResourceAttr(dataSource, "upstream_registry_url", "public.ecr.aws"), ), }, @@ -47,7 +47,7 @@ func TestAccECRPullThroughCacheRuleDataSource_repositoryPrefixWithSlash(t *testi { Config: testAccPullThroughCacheRuleDataSourceConfig_repositoryPrefixWithSlash(repositoryPrefix), Check: resource.ComposeAggregateTestCheckFunc( - acctest.CheckResourceAttrAccountID(dataSource, "registry_id"), + acctest.CheckResourceAttrAccountID(ctx, dataSource, "registry_id"), resource.TestCheckResourceAttr(dataSource, "upstream_registry_url", "public.ecr.aws"), ), }, @@ -69,7 +69,7 @@ func TestAccECRPullThroughCacheRuleDataSource_credential(t *testing.T) { Config: testAccPullThroughCacheRuleDataSourceConfig_credentialARN(repositoryPrefix), Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttrSet(dataSource, "credential_arn"), - acctest.CheckResourceAttrAccountID(dataSource, "registry_id"), + acctest.CheckResourceAttrAccountID(ctx, dataSource, "registry_id"), resource.TestCheckResourceAttr(dataSource, "upstream_registry_url", "registry-1.docker.io"), ), }, diff --git a/internal/service/ecr/pull_through_cache_rule_test.go b/internal/service/ecr/pull_through_cache_rule_test.go index 4ed53ccf2397..ca216eb8a8fe 100644 --- a/internal/service/ecr/pull_through_cache_rule_test.go +++ b/internal/service/ecr/pull_through_cache_rule_test.go @@ -36,7 +36,7 @@ func TestAccECRPullThroughCacheRule_basic(t *testing.T) { testAccCheckPullThroughCacheRuleExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, "credential_arn", ""), resource.TestCheckResourceAttr(resourceName, "ecr_repository_prefix", repositoryPrefix), - acctest.CheckResourceAttrAccountID(resourceName, "registry_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "registry_id"), resource.TestCheckResourceAttr(resourceName, "upstream_registry_url", "public.ecr.aws"), ), }, @@ -66,7 +66,7 @@ func TestAccECRPullThroughCacheRule_credentialARN(t *testing.T) { testAccCheckPullThroughCacheRuleExists(ctx, resourceName), resource.TestCheckResourceAttrSet(resourceName, "credential_arn"), resource.TestCheckResourceAttr(resourceName, "ecr_repository_prefix", repositoryPrefix), - acctest.CheckResourceAttrAccountID(resourceName, "registry_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "registry_id"), resource.TestCheckResourceAttr(resourceName, "upstream_registry_url", "registry-1.docker.io"), ), }, @@ -144,7 +144,7 @@ func TestAccECRPullThroughCacheRule_repositoryPrefixWithSlash(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckPullThroughCacheRuleExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, "ecr_repository_prefix", repositoryPrefix), - acctest.CheckResourceAttrAccountID(resourceName, "registry_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "registry_id"), resource.TestCheckResourceAttr(resourceName, "upstream_registry_url", "public.ecr.aws"), ), }, diff --git a/internal/service/ecr/registry_policy_test.go b/internal/service/ecr/registry_policy_test.go index a3a74d9e6c92..73a28db6701f 100644 --- a/internal/service/ecr/registry_policy_test.go +++ b/internal/service/ecr/registry_policy_test.go @@ -46,7 +46,7 @@ func testAccRegistryPolicy_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckRegistryPolicyExists(ctx, resourceName, &v), resource.TestMatchResourceAttr(resourceName, names.AttrPolicy, regexache.MustCompile(`"ecr:ReplicateImage".+`)), - acctest.CheckResourceAttrAccountID(resourceName, "registry_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "registry_id"), ), }, { @@ -60,7 +60,7 @@ func testAccRegistryPolicy_basic(t *testing.T) { testAccCheckRegistryPolicyExists(ctx, resourceName, &v), resource.TestMatchResourceAttr(resourceName, names.AttrPolicy, regexache.MustCompile(`"ecr:ReplicateImage".+`)), resource.TestMatchResourceAttr(resourceName, names.AttrPolicy, regexache.MustCompile(`"ecr:CreateRepository".+`)), - acctest.CheckResourceAttrAccountID(resourceName, "registry_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "registry_id"), ), }, }, diff --git a/internal/service/ecr/registry_scanning_configuration.go b/internal/service/ecr/registry_scanning_configuration.go index 53afcc007090..eda745c32c3f 100644 --- a/internal/service/ecr/registry_scanning_configuration.go +++ b/internal/service/ecr/registry_scanning_configuration.go @@ -100,7 +100,7 @@ func resourceRegistryScanningConfigurationPut(ctx context.Context, d *schema.Res } if d.IsNewResource() { - d.SetId(meta.(*conns.AWSClient).AccountID) + d.SetId(meta.(*conns.AWSClient).AccountID(ctx)) } return append(diags, resourceRegistryScanningConfigurationRead(ctx, d, meta)...) diff --git a/internal/service/ecr/registry_scanning_configuration_test.go b/internal/service/ecr/registry_scanning_configuration_test.go index c296e8beb264..ba2ddaeb2217 100644 --- a/internal/service/ecr/registry_scanning_configuration_test.go +++ b/internal/service/ecr/registry_scanning_configuration_test.go @@ -43,7 +43,7 @@ func testAccRegistryScanningConfiguration_basic(t *testing.T) { Config: testAccRegistryScanningConfigurationConfig_basic(), Check: resource.ComposeTestCheckFunc( testAccRegistryScanningConfigurationExists(ctx, resourceName, &v), - acctest.CheckResourceAttrAccountID(resourceName, "registry_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "registry_id"), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "0"), resource.TestCheckResourceAttr(resourceName, "scan_type", "BASIC"), ), @@ -72,7 +72,7 @@ func testAccRegistryScanningConfiguration_update(t *testing.T) { Config: testAccRegistryScanningConfigurationConfig_oneRule(), Check: resource.ComposeTestCheckFunc( testAccRegistryScanningConfigurationExists(ctx, resourceName, &v), - acctest.CheckResourceAttrAccountID(resourceName, "registry_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "registry_id"), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ "scan_frequency": "SCAN_ON_PUSH", @@ -115,7 +115,7 @@ func testAccRegistryScanningConfiguration_update(t *testing.T) { Config: testAccRegistryScanningConfigurationConfig_basic(), Check: resource.ComposeTestCheckFunc( testAccRegistryScanningConfigurationExists(ctx, resourceName, &v), - acctest.CheckResourceAttrAccountID(resourceName, "registry_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "registry_id"), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "0"), resource.TestCheckResourceAttr(resourceName, "scan_type", "BASIC"), ), diff --git a/internal/service/ecr/replication_configuration.go b/internal/service/ecr/replication_configuration.go index 58e55b777bda..096b2466a892 100644 --- a/internal/service/ecr/replication_configuration.go +++ b/internal/service/ecr/replication_configuration.go @@ -112,7 +112,7 @@ func resourceReplicationConfigurationPut(ctx context.Context, d *schema.Resource } if d.IsNewResource() { - d.SetId(meta.(*conns.AWSClient).AccountID) + d.SetId(meta.(*conns.AWSClient).AccountID(ctx)) } return append(diags, resourceReplicationConfigurationRead(ctx, d, meta)...) diff --git a/internal/service/ecr/replication_configuration_test.go b/internal/service/ecr/replication_configuration_test.go index ed5da6a6b79a..30244fc08583 100644 --- a/internal/service/ecr/replication_configuration_test.go +++ b/internal/service/ecr/replication_configuration_test.go @@ -43,12 +43,12 @@ func testAccReplicationConfiguration_basic(t *testing.T) { Config: testAccReplicationConfigurationConfig_basic(acctest.AlternateRegion()), Check: resource.ComposeTestCheckFunc( testAccCheckReplicationConfigurationExists(ctx, resourceName), - acctest.CheckResourceAttrAccountID(resourceName, "registry_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "registry_id"), resource.TestCheckResourceAttr(resourceName, "replication_configuration.#", "1"), resource.TestCheckResourceAttr(resourceName, "replication_configuration.0.rule.#", "1"), resource.TestCheckResourceAttr(resourceName, "replication_configuration.0.rule.0.destination.#", "1"), resource.TestCheckResourceAttr(resourceName, "replication_configuration.0.rule.0.destination.0.region", acctest.AlternateRegion()), - acctest.CheckResourceAttrAccountID(resourceName, "replication_configuration.0.rule.0.destination.0.registry_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "replication_configuration.0.rule.0.destination.0.registry_id"), resource.TestCheckResourceAttr(resourceName, "replication_configuration.0.rule.0.repository_filter.#", "0"), ), }, @@ -61,14 +61,14 @@ func testAccReplicationConfiguration_basic(t *testing.T) { Config: testAccReplicationConfigurationConfig_multipleRegion(acctest.AlternateRegion(), acctest.ThirdRegion()), Check: resource.ComposeTestCheckFunc( testAccCheckReplicationConfigurationExists(ctx, resourceName), - acctest.CheckResourceAttrAccountID(resourceName, "registry_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "registry_id"), resource.TestCheckResourceAttr(resourceName, "replication_configuration.#", "1"), resource.TestCheckResourceAttr(resourceName, "replication_configuration.0.rule.#", "1"), resource.TestCheckResourceAttr(resourceName, "replication_configuration.0.rule.0.destination.#", "2"), resource.TestCheckResourceAttr(resourceName, "replication_configuration.0.rule.0.destination.0.region", acctest.AlternateRegion()), - acctest.CheckResourceAttrAccountID(resourceName, "replication_configuration.0.rule.0.destination.0.registry_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "replication_configuration.0.rule.0.destination.0.registry_id"), resource.TestCheckResourceAttr(resourceName, "replication_configuration.0.rule.0.destination.1.region", acctest.ThirdRegion()), - acctest.CheckResourceAttrAccountID(resourceName, "replication_configuration.0.rule.0.destination.1.registry_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "replication_configuration.0.rule.0.destination.1.registry_id"), resource.TestCheckResourceAttr(resourceName, "replication_configuration.0.rule.0.repository_filter.#", "0"), ), }, @@ -76,12 +76,12 @@ func testAccReplicationConfiguration_basic(t *testing.T) { Config: testAccReplicationConfigurationConfig_basic(acctest.AlternateRegion()), Check: resource.ComposeTestCheckFunc( testAccCheckReplicationConfigurationExists(ctx, resourceName), - acctest.CheckResourceAttrAccountID(resourceName, "registry_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "registry_id"), resource.TestCheckResourceAttr(resourceName, "replication_configuration.#", "1"), resource.TestCheckResourceAttr(resourceName, "replication_configuration.0.rule.#", "1"), resource.TestCheckResourceAttr(resourceName, "replication_configuration.0.rule.0.destination.#", "1"), resource.TestCheckResourceAttr(resourceName, "replication_configuration.0.rule.0.destination.0.region", acctest.AlternateRegion()), - acctest.CheckResourceAttrAccountID(resourceName, "replication_configuration.0.rule.0.destination.0.registry_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "replication_configuration.0.rule.0.destination.0.registry_id"), resource.TestCheckResourceAttr(resourceName, "replication_configuration.0.rule.0.repository_filter.#", "0"), ), }, @@ -125,7 +125,7 @@ func testAccReplicationConfiguration_repositoryFilter(t *testing.T) { Config: testAccReplicationConfigurationConfig_repositoryFilter(acctest.AlternateRegion()), Check: resource.ComposeTestCheckFunc( testAccCheckReplicationConfigurationExists(ctx, resourceName), - acctest.CheckResourceAttrAccountID(resourceName, "registry_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "registry_id"), resource.TestCheckResourceAttr(resourceName, "replication_configuration.#", "1"), resource.TestCheckResourceAttr(resourceName, "replication_configuration.0.rule.#", "1"), resource.TestCheckResourceAttr(resourceName, "replication_configuration.0.rule.0.destination.#", "1"), @@ -143,7 +143,7 @@ func testAccReplicationConfiguration_repositoryFilter(t *testing.T) { Config: testAccReplicationConfigurationConfig_repositoryFilterMultiple(acctest.AlternateRegion()), Check: resource.ComposeTestCheckFunc( testAccCheckReplicationConfigurationExists(ctx, resourceName), - acctest.CheckResourceAttrAccountID(resourceName, "registry_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "registry_id"), resource.TestCheckResourceAttr(resourceName, "replication_configuration.#", "1"), resource.TestCheckResourceAttr(resourceName, "replication_configuration.0.rule.#", "1"), resource.TestCheckResourceAttr(resourceName, "replication_configuration.0.rule.0.repository_filter.#", "2"), @@ -157,7 +157,7 @@ func testAccReplicationConfiguration_repositoryFilter(t *testing.T) { Config: testAccReplicationConfigurationConfig_repositoryFilter(acctest.AlternateRegion()), Check: resource.ComposeTestCheckFunc( testAccCheckReplicationConfigurationExists(ctx, resourceName), - acctest.CheckResourceAttrAccountID(resourceName, "registry_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "registry_id"), resource.TestCheckResourceAttr(resourceName, "replication_configuration.#", "1"), resource.TestCheckResourceAttr(resourceName, "replication_configuration.0.rule.#", "1"), resource.TestCheckResourceAttr(resourceName, "replication_configuration.0.rule.0.destination.#", "1"), diff --git a/internal/service/ecr/repositories_data_source.go b/internal/service/ecr/repositories_data_source.go index 616bf8615f05..f4ab1b96e256 100644 --- a/internal/service/ecr/repositories_data_source.go +++ b/internal/service/ecr/repositories_data_source.go @@ -63,7 +63,7 @@ func (d *repositoriesDataSource) Read(ctx context.Context, req datasource.ReadRe return } - data.ID = fwflex.StringValueToFramework(ctx, d.Meta().Region) + data.ID = fwflex.StringValueToFramework(ctx, d.Meta().Region(ctx)) data.Names.SetValue = fwflex.FlattenFrameworkStringValueSet(ctx, tfslices.ApplyToAll(output, func(v awstypes.Repository) string { return aws.ToString(v.RepositoryName) })) diff --git a/internal/service/ecr/repository_creation_template_data_source_test.go b/internal/service/ecr/repository_creation_template_data_source_test.go index 230bef64e646..c404088f4a0f 100644 --- a/internal/service/ecr/repository_creation_template_data_source_test.go +++ b/internal/service/ecr/repository_creation_template_data_source_test.go @@ -27,7 +27,7 @@ func TestAccECRRepositoryCreationTemplateDataSource_basic(t *testing.T) { { Config: testAccRepositoryCreationTemplateDataSourceConfig_basic(repositoryPrefix), Check: resource.ComposeAggregateTestCheckFunc( - acctest.CheckResourceAttrAccountID(dataSource, "registry_id"), + acctest.CheckResourceAttrAccountID(ctx, dataSource, "registry_id"), resource.TestCheckResourceAttr(dataSource, "applied_for.#", "1"), resource.TestCheckTypeSetElemAttr(dataSource, "applied_for.*", string(types.RCTAppliedForPullThroughCache)), resource.TestCheckResourceAttr(dataSource, "custom_role_arn", ""), diff --git a/internal/service/ecr/repository_creation_template_test.go b/internal/service/ecr/repository_creation_template_test.go index dea4bdbbf92b..e9c9d50c2037 100644 --- a/internal/service/ecr/repository_creation_template_test.go +++ b/internal/service/ecr/repository_creation_template_test.go @@ -49,7 +49,7 @@ func TestAccECRRepositoryCreationTemplate_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "repository_policy", ""), resource.TestCheckResourceAttr(resourceName, "resource_tags.%", "1"), resource.TestCheckResourceAttr(resourceName, "resource_tags.Foo", "Bar"), - acctest.CheckResourceAttrAccountID(resourceName, "registry_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "registry_id"), ), }, { @@ -147,7 +147,7 @@ func TestAccECRRepositoryCreationTemplate_repository(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckRepositoryCreationTemplateExists(ctx, resourceName), resource.TestMatchResourceAttr(resourceName, "repository_policy", regexache.MustCompile(repositoryPrefix)), - acctest.CheckResourceAttrAccountID(resourceName, "registry_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "registry_id"), ), }, { @@ -161,7 +161,7 @@ func TestAccECRRepositoryCreationTemplate_repository(t *testing.T) { testAccCheckRepositoryCreationTemplateExists(ctx, resourceName), resource.TestMatchResourceAttr(resourceName, "repository_policy", regexache.MustCompile(repositoryPrefix)), resource.TestMatchResourceAttr(resourceName, "repository_policy", regexache.MustCompile("ecr:DescribeImages")), - acctest.CheckResourceAttrAccountID(resourceName, "registry_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "registry_id"), ), }, }, diff --git a/internal/service/ecr/repository_policy_test.go b/internal/service/ecr/repository_policy_test.go index 7237e8aac202..902c1cfa0b19 100644 --- a/internal/service/ecr/repository_policy_test.go +++ b/internal/service/ecr/repository_policy_test.go @@ -36,7 +36,7 @@ func TestAccECRRepositoryPolicy_basic(t *testing.T) { testAccCheckRepositoryPolicyExists(ctx, resourceName), resource.TestCheckResourceAttrPair(resourceName, "repository", "aws_ecr_repository.test", names.AttrName), resource.TestMatchResourceAttr(resourceName, names.AttrPolicy, regexache.MustCompile(rName)), - acctest.CheckResourceAttrAccountID(resourceName, "registry_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "registry_id"), ), }, { @@ -51,7 +51,7 @@ func TestAccECRRepositoryPolicy_basic(t *testing.T) { resource.TestCheckResourceAttrPair(resourceName, "repository", "aws_ecr_repository.test", names.AttrName), resource.TestMatchResourceAttr(resourceName, names.AttrPolicy, regexache.MustCompile(rName)), resource.TestMatchResourceAttr(resourceName, names.AttrPolicy, regexache.MustCompile("ecr:DescribeImages")), - acctest.CheckResourceAttrAccountID(resourceName, "registry_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "registry_id"), ), }, }, diff --git a/internal/service/ecr/repository_test.go b/internal/service/ecr/repository_test.go index 218e85eeae84..34997ad6d073 100644 --- a/internal/service/ecr/repository_test.go +++ b/internal/service/ecr/repository_test.go @@ -38,10 +38,10 @@ func TestAccECRRepository_basic(t *testing.T) { Config: testAccRepositoryConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckRepositoryExists(ctx, resourceName, &v), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "ecr", fmt.Sprintf("repository/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ecr", fmt.Sprintf("repository/%s", rName)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), - testAccCheckRepositoryRegistryID(resourceName), - testAccCheckRepositoryRepositoryURL(resourceName, rName), + testAccCheckRepositoryRegistryID(ctx, resourceName), + testAccCheckRepositoryRepositoryURL(ctx, resourceName, rName), resource.TestCheckResourceAttr(resourceName, "encryption_configuration.#", "1"), resource.TestCheckResourceAttr(resourceName, "encryption_configuration.0.encryption_type", string(types.EncryptionTypeAes256)), resource.TestCheckResourceAttr(resourceName, "encryption_configuration.0.kms_key", ""), @@ -226,7 +226,7 @@ func TestAccECRRepository_Encryption_kms(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "encryption_configuration.#", "1"), resource.TestCheckResourceAttr(resourceName, "encryption_configuration.0.encryption_type", string(types.EncryptionTypeKms)), // This will be the default ECR service KMS key. We don't currently have a way to look this up. - acctest.MatchResourceAttrRegionalARN(resourceName, "encryption_configuration.0.kms_key", "kms", regexache.MustCompile(fmt.Sprintf("key/%s$", verify.UUIDRegexPattern))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, "encryption_configuration.0.kms_key", "kms", regexache.MustCompile(fmt.Sprintf("key/%s$", verify.UUIDRegexPattern))), ), }, { @@ -346,16 +346,16 @@ func testAccCheckRepositoryExists(ctx context.Context, n string, v *types.Reposi } } -func testAccCheckRepositoryRegistryID(resourceName string) resource.TestCheckFunc { +func testAccCheckRepositoryRegistryID(ctx context.Context, resourceName string) resource.TestCheckFunc { return func(s *terraform.State) error { - attributeValue := acctest.AccountID() + attributeValue := acctest.AccountID(ctx) return resource.TestCheckResourceAttr(resourceName, "registry_id", attributeValue)(s) } } -func testAccCheckRepositoryRepositoryURL(resourceName, repositoryName string) resource.TestCheckFunc { +func testAccCheckRepositoryRepositoryURL(ctx context.Context, resourceName, repositoryName string) resource.TestCheckFunc { return func(s *terraform.State) error { - attributeValue := fmt.Sprintf("%s.dkr.ecr.%s.amazonaws.com/%s", acctest.AccountID(), acctest.Region(), repositoryName) + attributeValue := fmt.Sprintf("%s.dkr.ecr.%s.amazonaws.com/%s", acctest.AccountID(ctx), acctest.Region(), repositoryName) return resource.TestCheckResourceAttr(resourceName, "repository_url", attributeValue)(s) } } diff --git a/internal/service/ecr/service_endpoints_gen_test.go b/internal/service/ecr/service_endpoints_gen_test.go index 7d7229bfa3cb..3deb58277cdb 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/authorization_token_data_source.go b/internal/service/ecrpublic/authorization_token_data_source.go index 9d7b802cf1bf..4c195e658e7f 100644 --- a/internal/service/ecrpublic/authorization_token_data_source.go +++ b/internal/service/ecrpublic/authorization_token_data_source.go @@ -73,7 +73,7 @@ func dataSourceAuthorizationTokenRead(ctx context.Context, d *schema.ResourceDat userName := basicAuthorization[0] password := basicAuthorization[1] - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) d.Set("authorization_token", authorizationToken) d.Set("expires_at", expiresAt) d.Set(names.AttrUserName, userName) diff --git a/internal/service/ecrpublic/authorization_token_data_source_test.go b/internal/service/ecrpublic/authorization_token_data_source_test.go index caf56ca71a31..523d0218556d 100644 --- a/internal/service/ecrpublic/authorization_token_data_source_test.go +++ b/internal/service/ecrpublic/authorization_token_data_source_test.go @@ -7,6 +7,7 @@ import ( "testing" "github.com/YakDriver/regexache" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-provider-aws/internal/acctest" "github.com/hashicorp/terraform-provider-aws/names" @@ -17,7 +18,7 @@ func TestAccECRPublicAuthorizationTokenDataSource_basic(t *testing.T) { dataSourceName := "data.aws_ecrpublic_authorization_token.repo" resource.Test(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckRegion(t, names.USEast1RegionID) }, + PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckRegion(t, endpoints.UsEast1RegionID) }, ErrorCheck: acctest.ErrorCheck(t, names.ECRServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, Steps: []resource.TestStep{ diff --git a/internal/service/ecrpublic/repository_policy_test.go b/internal/service/ecrpublic/repository_policy_test.go index 41103b0da2e5..baab9e98f7c1 100644 --- a/internal/service/ecrpublic/repository_policy_test.go +++ b/internal/service/ecrpublic/repository_policy_test.go @@ -8,6 +8,7 @@ import ( "fmt" "testing" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-plugin-testing/terraform" @@ -24,7 +25,7 @@ func TestAccECRPublicRepositoryPolicy_basic(t *testing.T) { resourceName := "aws_ecrpublic_repository_policy.test" resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckRegion(t, names.USEast1RegionID) }, + PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckRegion(t, endpoints.UsEast1RegionID) }, ErrorCheck: acctest.ErrorCheck(t, names.ECRPublicServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckRepositoryPolicyDestroy(ctx), @@ -58,7 +59,7 @@ func TestAccECRPublicRepositoryPolicy_disappears(t *testing.T) { resourceName := "aws_ecrpublic_repository_policy.test" resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckRegion(t, names.USEast1RegionID) }, + PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckRegion(t, endpoints.UsEast1RegionID) }, ErrorCheck: acctest.ErrorCheck(t, names.ECRPublicServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckRepositoryPolicyDestroy(ctx), @@ -83,7 +84,7 @@ func TestAccECRPublicRepositoryPolicy_Disappears_repository(t *testing.T) { repositoryResourceName := "aws_ecrpublic_repository.test" resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckRegion(t, names.USEast1RegionID) }, + PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckRegion(t, endpoints.UsEast1RegionID) }, ErrorCheck: acctest.ErrorCheck(t, names.ECRPublicServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckRepositoryPolicyDestroy(ctx), @@ -107,7 +108,7 @@ func TestAccECRPublicRepositoryPolicy_iam(t *testing.T) { resourceName := "aws_ecrpublic_repository_policy.test" resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckRegion(t, names.USEast1RegionID) }, + PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckRegion(t, endpoints.UsEast1RegionID) }, ErrorCheck: acctest.ErrorCheck(t, names.ECRPublicServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckRepositoryPolicyDestroy(ctx), diff --git a/internal/service/ecrpublic/repository_test.go b/internal/service/ecrpublic/repository_test.go index 8bac56b643e8..01b0de9c0b24 100644 --- a/internal/service/ecrpublic/repository_test.go +++ b/internal/service/ecrpublic/repository_test.go @@ -11,6 +11,7 @@ import ( "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/service/ecrpublic" awstypes "github.com/aws/aws-sdk-go-v2/service/ecrpublic/types" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-plugin-testing/terraform" @@ -28,7 +29,7 @@ func TestAccECRPublicRepository_basic(t *testing.T) { resourceName := "aws_ecrpublic_repository.test" resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckRegion(t, names.USEast1RegionID) }, + PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckRegion(t, endpoints.UsEast1RegionID) }, ErrorCheck: acctest.ErrorCheck(t, names.ECRPublicServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckRepositoryDestroy(ctx), @@ -38,8 +39,8 @@ func TestAccECRPublicRepository_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckRepositoryExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, names.AttrRepositoryName, rName), - acctest.CheckResourceAttrAccountID(resourceName, "registry_id"), - acctest.CheckResourceAttrGlobalARN(resourceName, names.AttrARN, "ecr-public", "repository/"+rName), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "registry_id"), + acctest.CheckResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "ecr-public", "repository/"+rName), ), }, { @@ -58,7 +59,7 @@ func TestAccECRPublicRepository_tags(t *testing.T) { resourceName := "aws_ecrpublic_repository.test" resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckRegion(t, names.USEast1RegionID) }, + PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckRegion(t, endpoints.UsEast1RegionID) }, ErrorCheck: acctest.ErrorCheck(t, names.ECRPublicServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckRepositoryDestroy(ctx), @@ -104,7 +105,7 @@ func TestAccECRPublicRepository_CatalogData_aboutText(t *testing.T) { resourceName := "aws_ecrpublic_repository.test" resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckRegion(t, names.USEast1RegionID) }, + PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckRegion(t, endpoints.UsEast1RegionID) }, ErrorCheck: acctest.ErrorCheck(t, names.ECRPublicServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckRepositoryDestroy(ctx), @@ -141,7 +142,7 @@ func TestAccECRPublicRepository_CatalogData_architectures(t *testing.T) { resourceName := "aws_ecrpublic_repository.test" resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckRegion(t, names.USEast1RegionID) }, + PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckRegion(t, endpoints.UsEast1RegionID) }, ErrorCheck: acctest.ErrorCheck(t, names.ECRPublicServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckRepositoryDestroy(ctx), @@ -178,7 +179,7 @@ func TestAccECRPublicRepository_CatalogData_description(t *testing.T) { resourceName := "aws_ecrpublic_repository.test" resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckRegion(t, names.USEast1RegionID) }, + PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckRegion(t, endpoints.UsEast1RegionID) }, ErrorCheck: acctest.ErrorCheck(t, names.ECRPublicServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckRepositoryDestroy(ctx), @@ -215,7 +216,7 @@ func TestAccECRPublicRepository_CatalogData_operatingSystems(t *testing.T) { resourceName := "aws_ecrpublic_repository.test" resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckRegion(t, names.USEast1RegionID) }, + PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckRegion(t, endpoints.UsEast1RegionID) }, ErrorCheck: acctest.ErrorCheck(t, names.ECRPublicServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckRepositoryDestroy(ctx), @@ -252,7 +253,7 @@ func TestAccECRPublicRepository_CatalogData_usageText(t *testing.T) { resourceName := "aws_ecrpublic_repository.test" resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckRegion(t, names.USEast1RegionID) }, + PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckRegion(t, endpoints.UsEast1RegionID) }, ErrorCheck: acctest.ErrorCheck(t, names.ECRPublicServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckRepositoryDestroy(ctx), @@ -289,7 +290,7 @@ func TestAccECRPublicRepository_CatalogData_logoImageBlob(t *testing.T) { resourceName := "aws_ecrpublic_repository.test" resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckRegion(t, names.USEast1RegionID) }, + PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckRegion(t, endpoints.UsEast1RegionID) }, ErrorCheck: acctest.ErrorCheck(t, names.ECRPublicServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckRepositoryDestroy(ctx), @@ -319,7 +320,7 @@ func TestAccECRPublicRepository_Basic_forceDestroy(t *testing.T) { resourceName := "aws_ecrpublic_repository.test" resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckRegion(t, names.USEast1RegionID) }, + PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckRegion(t, endpoints.UsEast1RegionID) }, ErrorCheck: acctest.ErrorCheck(t, names.ECRPublicServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckRepositoryDestroy(ctx), @@ -329,8 +330,8 @@ func TestAccECRPublicRepository_Basic_forceDestroy(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckRepositoryExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, names.AttrRepositoryName, rName), - acctest.CheckResourceAttrAccountID(resourceName, "registry_id"), - acctest.CheckResourceAttrGlobalARN(resourceName, names.AttrARN, "ecr-public", "repository/"+rName), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "registry_id"), + acctest.CheckResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "ecr-public", "repository/"+rName), ), }, { @@ -350,7 +351,7 @@ func TestAccECRPublicRepository_disappears(t *testing.T) { resourceName := "aws_ecrpublic_repository.test" resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckRegion(t, names.USEast1RegionID) }, + PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckRegion(t, endpoints.UsEast1RegionID) }, ErrorCheck: acctest.ErrorCheck(t, names.ECRPublicServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckRepositoryDestroy(ctx), diff --git a/internal/service/ecrpublic/service_endpoints_gen_test.go b/internal/service/ecrpublic/service_endpoints_gen_test.go index b448239fdec3..7e37283a6e9b 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/ecrpublic/sweep.go b/internal/service/ecrpublic/sweep.go index f1fd856f2b75..3dfd5978bf2e 100644 --- a/internal/service/ecrpublic/sweep.go +++ b/internal/service/ecrpublic/sweep.go @@ -9,6 +9,7 @@ import ( "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/service/ecrpublic" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-provider-aws/internal/sweep" "github.com/hashicorp/terraform-provider-aws/internal/sweep/awsv2" @@ -25,7 +26,7 @@ func RegisterSweepers() { func sweepRepositories(region string) error { ctx := sweep.Context(region) // "UnsupportedCommandException: DescribeRepositories command is only supported in us-east-1". - if region != names.USEast1RegionID { + if region != endpoints.UsEast1RegionID { log.Printf("[WARN] Skipping ECR Public Repository sweep for region: %s", region) return nil } diff --git a/internal/service/ecs/account_setting_default.go b/internal/service/ecs/account_setting_default.go index 8fdabc2cddc2..4a605dd8e698 100644 --- a/internal/service/ecs/account_setting_default.go +++ b/internal/service/ecs/account_setting_default.go @@ -140,8 +140,8 @@ func resourceAccountSettingDefaultImport(ctx context.Context, d *schema.Resource d.Set(names.AttrName, d.Id()) d.SetId(arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Service: names.ECSEndpointID, Resource: "cluster/" + d.Id(), }.String()) diff --git a/internal/service/ecs/account_setting_default_test.go b/internal/service/ecs/account_setting_default_test.go index 82086f0c3ec2..3d600ef0714d 100644 --- a/internal/service/ecs/account_setting_default_test.go +++ b/internal/service/ecs/account_setting_default_test.go @@ -52,7 +52,7 @@ func testAccAccountSettingDefault_containerInstanceLongARNFormat(t *testing.T) { testAccCheckAccountSettingDefaultExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, names.AttrName, settingName), resource.TestCheckResourceAttr(resourceName, names.AttrValue, names.AttrEnabled), - acctest.MatchResourceAttrGlobalARN(resourceName, "principal_arn", "iam", regexache.MustCompile("root")), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, "principal_arn", "iam", regexache.MustCompile("root")), ), }, { @@ -82,7 +82,7 @@ func testAccAccountSettingDefault_serviceLongARNFormat(t *testing.T) { testAccCheckAccountSettingDefaultExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, names.AttrName, settingName), resource.TestCheckResourceAttr(resourceName, names.AttrValue, names.AttrEnabled), - acctest.MatchResourceAttrGlobalARN(resourceName, "principal_arn", "iam", regexache.MustCompile("root")), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, "principal_arn", "iam", regexache.MustCompile("root")), ), }, { @@ -112,7 +112,7 @@ func testAccAccountSettingDefault_taskLongARNFormat(t *testing.T) { testAccCheckAccountSettingDefaultExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, names.AttrName, settingName), resource.TestCheckResourceAttr(resourceName, names.AttrValue, names.AttrEnabled), - acctest.MatchResourceAttrGlobalARN(resourceName, "principal_arn", "iam", regexache.MustCompile("root")), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, "principal_arn", "iam", regexache.MustCompile("root")), ), }, { @@ -142,7 +142,7 @@ func testAccAccountSettingDefault_vpcTrunking(t *testing.T) { testAccCheckAccountSettingDefaultExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, names.AttrName, settingName), resource.TestCheckResourceAttr(resourceName, names.AttrValue, names.AttrEnabled), - acctest.MatchResourceAttrGlobalARN(resourceName, "principal_arn", "iam", regexache.MustCompile("root")), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, "principal_arn", "iam", regexache.MustCompile("root")), ), }, { @@ -172,7 +172,7 @@ func testAccAccountSettingDefault_containerInsights(t *testing.T) { testAccCheckAccountSettingDefaultExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, names.AttrName, settingName), resource.TestCheckResourceAttr(resourceName, names.AttrValue, names.AttrEnabled), - acctest.MatchResourceAttrGlobalARN(resourceName, "principal_arn", "iam", regexache.MustCompile("root")), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, "principal_arn", "iam", regexache.MustCompile("root")), ), }, { @@ -202,7 +202,7 @@ func testAccAccountSettingDefault_fargateTaskRetirementWaitPeriod(t *testing.T) testAccCheckAccountSettingDefaultExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, names.AttrName, "fargateTaskRetirementWaitPeriod"), resource.TestCheckResourceAttr(resourceName, names.AttrValue, "14"), - acctest.MatchResourceAttrGlobalARN(resourceName, "principal_arn", "iam", regexache.MustCompile("root")), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, "principal_arn", "iam", regexache.MustCompile("root")), ), }, { diff --git a/internal/service/ecs/capacity_provider.go b/internal/service/ecs/capacity_provider.go index daf72621f7fb..afa2d0613eb8 100644 --- a/internal/service/ecs/capacity_provider.go +++ b/internal/service/ecs/capacity_provider.go @@ -257,8 +257,8 @@ func resourceCapacityProviderImport(ctx context.Context, d *schema.ResourceData, d.Set(names.AttrName, d.Id()) d.SetId(arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Service: "ecs", Resource: "capacity-provider/" + d.Id(), }.String()) diff --git a/internal/service/ecs/capacity_provider_test.go b/internal/service/ecs/capacity_provider_test.go index 7d1e8412bae1..a9e8bbce13fd 100644 --- a/internal/service/ecs/capacity_provider_test.go +++ b/internal/service/ecs/capacity_provider_test.go @@ -45,7 +45,7 @@ func TestAccECSCapacityProvider_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "auto_scaling_group_provider.0.managed_scaling.0.status", "DISABLED"), resource.TestCheckResourceAttr(resourceName, "auto_scaling_group_provider.0.managed_scaling.0.target_capacity", "100"), resource.TestCheckResourceAttr(resourceName, "auto_scaling_group_provider.0.managed_termination_protection", "DISABLED"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrID, "ecs", fmt.Sprintf("capacity-provider/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrID, "ecs", fmt.Sprintf("capacity-provider/%s", rName)), resource.TestCheckResourceAttrPair(resourceName, names.AttrID, resourceName, names.AttrARN), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), diff --git a/internal/service/ecs/cluster.go b/internal/service/ecs/cluster.go index db25c78e3e34..738ee4f6b1b6 100644 --- a/internal/service/ecs/cluster.go +++ b/internal/service/ecs/cluster.go @@ -333,8 +333,8 @@ func resourceClusterImport(ctx context.Context, d *schema.ResourceData, meta int d.Set(names.AttrName, d.Id()) d.SetId(arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Service: "ecs", Resource: "cluster/" + d.Id(), }.String()) diff --git a/internal/service/ecs/cluster_test.go b/internal/service/ecs/cluster_test.go index c108bf2739b9..e21b7cce64c2 100644 --- a/internal/service/ecs/cluster_test.go +++ b/internal/service/ecs/cluster_test.go @@ -35,7 +35,7 @@ func TestAccECSCluster_basic(t *testing.T) { Config: testAccClusterConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckClusterExists(ctx, resourceName, &v), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "ecs", fmt.Sprintf("cluster/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ecs", fmt.Sprintf("cluster/%s", rName)), resource.TestCheckResourceAttr(resourceName, "configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "default_capacity_provider_strategy.#", "0"), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), @@ -186,14 +186,14 @@ func TestAccECSCluster_containerInsights(t *testing.T) { Config: testAccClusterConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckClusterExists(ctx, resourceName, &cluster1), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "ecs", fmt.Sprintf("cluster/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ecs", fmt.Sprintf("cluster/%s", rName)), ), }, { Config: testAccClusterConfig_containerInsights(rName, names.AttrEnabled), Check: resource.ComposeTestCheckFunc( testAccCheckClusterExists(ctx, resourceName, &cluster1), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "ecs", fmt.Sprintf("cluster/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ecs", fmt.Sprintf("cluster/%s", rName)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "setting.#", "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "setting.*", map[string]string{ diff --git a/internal/service/ecs/service.go b/internal/service/ecs/service.go index 67cbdf69861c..d2475c357dc7 100644 --- a/internal/service/ecs/service.go +++ b/internal/service/ecs/service.go @@ -12,6 +12,7 @@ import ( "strings" "time" + "github.com/YakDriver/regexache" "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/aws/arn" "github.com/aws/aws-sdk-go-v2/service/ecs" @@ -553,6 +554,12 @@ func resourceService() *schema.Resource { }, }, }, + "availability_zone_rebalancing": { + Type: schema.TypeString, + Optional: true, + Default: awstypes.AvailabilityZoneRebalancingDisabled, + ValidateDiagFunc: enum.Validate[awstypes.AvailabilityZoneRebalancing](), + }, names.AttrCapacityProviderStrategy: { Type: schema.TypeSet, Optional: true, @@ -1081,6 +1088,33 @@ func resourceService() *schema.Resource { }, }, }, + "vpc_lattice_configurations": { + Type: schema.TypeSet, + Optional: true, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + names.AttrRoleARN: { + Type: schema.TypeString, + Required: true, + ValidateFunc: verify.ValidARN, + }, + "target_group_arn": { + Type: schema.TypeString, + Required: true, + ValidateFunc: verify.ValidARN, + }, + "port_name": { + Type: schema.TypeString, + Required: true, + ValidateFunc: validation.All( + validation.StringLenBetween(1, 64), + validation.StringMatch(regexache.MustCompile(`^[0-9a-z_-]+$`), "must contain only lowercase letters, numbers, underscores and hyphens"), + validation.StringDoesNotMatch(regexache.MustCompile(`^-`), "cannot begin with a hyphen"), + ), + }, + }, + }, + }, }, SchemaVersion: 1, @@ -1143,12 +1177,17 @@ func resourceServiceCreate(ctx context.Context, d *schema.ResourceData, meta int SchedulingStrategy: schedulingStrategy, ServiceName: aws.String(name), Tags: getTagsIn(ctx), + VpcLatticeConfigurations: expandVPCLatticeConfiguration(d.Get("vpc_lattice_configurations").(*schema.Set)), } if v, ok := d.GetOk("alarms"); ok && len(v.([]interface{})) > 0 && v.([]interface{})[0] != nil { input.DeploymentConfiguration.Alarms = expandAlarms(v.([]interface{})[0].(map[string]interface{})) } + if v, ok := d.GetOk("availability_zone_rebalancing"); ok { + input.AvailabilityZoneRebalancing = awstypes.AvailabilityZoneRebalancing(v.(string)) + } + if v, ok := d.GetOk("cluster"); ok { input.Cluster = aws.String(v.(string)) } @@ -1288,6 +1327,7 @@ func resourceServiceRead(ctx context.Context, d *schema.ResourceData, meta inter } d.SetId(aws.ToString(service.ServiceArn)) + d.Set("availability_zone_rebalancing", service.AvailabilityZoneRebalancing) if err := d.Set(names.AttrCapacityProviderStrategy, flattenCapacityProviderStrategyItems(service.CapacityProviderStrategy)); err != nil { return sdkdiag.AppendErrorf(diags, "setting capacity_provider_strategy: %s", err) } @@ -1342,6 +1382,15 @@ func resourceServiceRead(ctx context.Context, d *schema.ResourceData, meta inter if err := d.Set(names.AttrNetworkConfiguration, flattenNetworkConfiguration(service.NetworkConfiguration)); err != nil { return sdkdiag.AppendErrorf(diags, "setting network_configuration: %s", err) } + + for _, deployment := range service.Deployments { + if aws.ToString(deployment.Status) == "PRIMARY" { + if err := d.Set("vpc_lattice_configurations", flattenVPCLatticeConfigurations(deployment.VpcLatticeConfigurations)); err != nil { + return sdkdiag.AppendErrorf(diags, "setting vpc_lattice_configurations: %s", err) + } + } + } + if err := d.Set("ordered_placement_strategy", flattenPlacementStrategy(service.PlacementStrategy)); err != nil { return sdkdiag.AppendErrorf(diags, "setting ordered_placement_strategy: %s", err) } @@ -1397,6 +1446,12 @@ func resourceServiceUpdate(ctx context.Context, d *schema.ResourceData, meta int } } + if d.HasChange("availability_zone_rebalancing") { + if v, ok := d.GetOk("availability_zone_rebalancing"); ok { + input.AvailabilityZoneRebalancing = awstypes.AvailabilityZoneRebalancing(v.(string)) + } + } + if d.HasChange(names.AttrCapacityProviderStrategy) { input.CapacityProviderStrategy = expandCapacityProviderStrategyItems(d.Get(names.AttrCapacityProviderStrategy).(*schema.Set)) } @@ -1514,6 +1569,10 @@ func resourceServiceUpdate(ctx context.Context, d *schema.ResourceData, meta int input.VolumeConfigurations = expandVolumeConfigurations(ctx, d.Get("volume_configuration").([]interface{})) } + if d.HasChange("vpc_lattice_configurations") { + input.VpcLatticeConfigurations = expandVPCLatticeConfiguration(d.Get("vpc_lattice_configurations").(*schema.Set)) + } + // Retry due to IAM eventual consistency. const ( serviceUpdateTimeout = 2 * time.Minute @@ -1633,9 +1692,9 @@ func resourceServiceImport(ctx context.Context, d *schema.ResourceData, meta int d.SetId(name) clusterArn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), Service: "ecs", - AccountID: meta.(*conns.AWSClient).AccountID, + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("cluster/%s", cluster), }.String() d.Set("cluster", clusterArn) @@ -2096,6 +2155,48 @@ func expandNetworkConfiguration(nc []interface{}) *awstypes.NetworkConfiguration return &awstypes.NetworkConfiguration{AwsvpcConfiguration: awsVpcConfig} } +func expandVPCLatticeConfiguration(tfSet *schema.Set) []awstypes.VpcLatticeConfiguration { + tfList := tfSet.List() + if len(tfList) == 0 { + return nil + } + + apiObjects := make([]awstypes.VpcLatticeConfiguration, 0) + + for _, tfMapRaw := range tfSet.List() { + config := tfMapRaw.(map[string]interface{}) + + apiObject := awstypes.VpcLatticeConfiguration{ + RoleArn: aws.String(config[names.AttrRoleARN].(string)), + TargetGroupArn: aws.String(config["target_group_arn"].(string)), + PortName: aws.String(config["port_name"].(string)), + } + + apiObjects = append(apiObjects, apiObject) + } + + return apiObjects +} + +func flattenVPCLatticeConfigurations(apiObjects []awstypes.VpcLatticeConfiguration) []interface{} { + if len(apiObjects) == 0 { + return nil + } + + tfList := make([]interface{}, 0, len(apiObjects)) + + for _, apiObject := range apiObjects { + tfMap := map[string]interface{}{ + names.AttrRoleARN: aws.ToString(apiObject.RoleArn), + "target_group_arn": aws.ToString(apiObject.TargetGroupArn), + "port_name": aws.ToString(apiObject.PortName), + } + tfList = append(tfList, tfMap) + } + + return tfList +} + func expandPlacementConstraints(tfList []interface{}) ([]awstypes.PlacementConstraint, error) { if len(tfList) == 0 { return nil, nil diff --git a/internal/service/ecs/service_data_source.go b/internal/service/ecs/service_data_source.go index 99355fc437e8..660082ed6595 100644 --- a/internal/service/ecs/service_data_source.go +++ b/internal/service/ecs/service_data_source.go @@ -27,6 +27,10 @@ func dataSourceService() *schema.Resource { Type: schema.TypeString, Computed: true, }, + "availability_zone_rebalancing": { + Type: schema.TypeString, + Computed: true, + }, "cluster_arn": { Type: schema.TypeString, Required: true, @@ -69,6 +73,7 @@ func dataSourceServiceRead(ctx context.Context, d *schema.ResourceData, meta int arn := aws.ToString(service.ServiceArn) d.SetId(arn) d.Set(names.AttrARN, arn) + d.Set("availability_zone_rebalancing", service.AvailabilityZoneRebalancing) d.Set("cluster_arn", service.ClusterArn) d.Set("desired_count", service.DesiredCount) d.Set("launch_type", service.LaunchType) diff --git a/internal/service/ecs/service_data_source_test.go b/internal/service/ecs/service_data_source_test.go index 813a9de3dd76..7c25c05ec2af 100644 --- a/internal/service/ecs/service_data_source_test.go +++ b/internal/service/ecs/service_data_source_test.go @@ -28,6 +28,7 @@ func TestAccECSServiceDataSource_basic(t *testing.T) { Config: testAccServiceDataSourceConfig_basic(rName), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrPair(resourceName, names.AttrID, dataSourceName, names.AttrARN), + resource.TestCheckResourceAttrPair(resourceName, "availability_zone_rebalancing", dataSourceName, "availability_zone_rebalancing"), resource.TestCheckResourceAttrPair(resourceName, "desired_count", dataSourceName, "desired_count"), resource.TestCheckResourceAttrPair(resourceName, "launch_type", dataSourceName, "launch_type"), resource.TestCheckResourceAttrPair(resourceName, "scheduling_strategy", dataSourceName, "scheduling_strategy"), diff --git a/internal/service/ecs/service_endpoints_gen_test.go b/internal/service/ecs/service_endpoints_gen_test.go index 6a1fdeb51704..e9d48effa9c4 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/ecs/service_test.go b/internal/service/ecs/service_test.go index ac630ade3eb8..a21b43f42bf0 100644 --- a/internal/service/ecs/service_test.go +++ b/internal/service/ecs/service_test.go @@ -103,6 +103,8 @@ func TestAccECSService_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "alarms.#", "0"), resource.TestCheckResourceAttr(resourceName, "service_registries.#", "0"), resource.TestCheckResourceAttr(resourceName, "scheduling_strategy", "REPLICA"), + resource.TestCheckResourceAttr(resourceName, "availability_zone_rebalancing", "DISABLED"), + resource.TestCheckResourceAttr(resourceName, "vpc_lattice_configuration.#", "0"), ), }, @@ -113,6 +115,8 @@ func TestAccECSService_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "alarms.#", "0"), resource.TestCheckResourceAttr(resourceName, "service_registries.#", "0"), resource.TestCheckResourceAttr(resourceName, "scheduling_strategy", "REPLICA"), + resource.TestCheckResourceAttr(resourceName, "availability_zone_rebalancing", "DISABLED"), + resource.TestCheckResourceAttr(resourceName, "vpc_lattice_configuration.#", "0"), ), }, }, @@ -183,6 +187,42 @@ func TestAccECSService_disappears(t *testing.T) { }) } +func TestAccECSService_LatticeConfigurations(t *testing.T) { + ctx := acctest.Context(t) + var cluster awstypes.Cluster + var service awstypes.Service + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + resourceName := "aws_ecs_cluster.test" + serviceName := "aws_ecs_service.test" + + if testing.Short() { + t.Skip("skipping long-running test in short mode") + } + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.ECSServiceID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckServiceDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccService_vpcLatticeConfiguration_basic(rName), + Check: resource.ComposeTestCheckFunc( + testAccCheckClusterExists(ctx, resourceName, &cluster), + testAccCheckServiceExists(ctx, serviceName, &service), + resource.TestCheckResourceAttr(serviceName, "vpc_lattice_configurations.#", "2"), + resource.TestCheckTypeSetElemNestedAttrs(serviceName, "vpc_lattice_configurations.*", map[string]string{ + "port_name": "testvpclattice", + }), + resource.TestCheckTypeSetElemNestedAttrs(serviceName, "vpc_lattice_configurations.*", map[string]string{ + "port_name": "testvpclattice-ipv6", + }), + ), + }, + }, + }) +} + func TestAccECSService_PlacementStrategy_unnormalized(t *testing.T) { ctx := acctest.Context(t) var service awstypes.Service @@ -1732,6 +1772,50 @@ func TestAccECSService_executeCommand(t *testing.T) { }) } +func TestAccECSService_AvailabilityZoneRebalancing(t *testing.T) { + ctx := acctest.Context(t) + var service awstypes.Service + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + resourceName := "aws_ecs_service.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.ECSServiceID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckServiceDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccServiceConfig_availabilityZoneRebalancing(rName, "ENABLED"), + Check: resource.ComposeTestCheckFunc( + testAccCheckServiceExists(ctx, resourceName, &service), + resource.TestCheckResourceAttr(resourceName, "availability_zone_rebalancing", string(awstypes.AvailabilityZoneRebalancingEnabled)), + ), + }, + { + Config: testAccServiceConfig_availabilityZoneRebalancing_nullUpdate(rName), + Check: resource.ComposeTestCheckFunc( + testAccCheckServiceExists(ctx, resourceName, &service), + resource.TestCheckResourceAttr(resourceName, "availability_zone_rebalancing", string(awstypes.AvailabilityZoneRebalancingDisabled)), + ), + }, + { + Config: testAccServiceConfig_availabilityZoneRebalancing(rName, "DISABLED"), + Check: resource.ComposeTestCheckFunc( + testAccCheckServiceExists(ctx, resourceName, &service), + resource.TestCheckResourceAttr(resourceName, "availability_zone_rebalancing", string(awstypes.AvailabilityZoneRebalancingDisabled)), + ), + }, + { + Config: testAccServiceConfig_availabilityZoneRebalancing(rName, "ENABLED"), + Check: resource.ComposeTestCheckFunc( + testAccCheckServiceExists(ctx, resourceName, &service), + resource.TestCheckResourceAttr(resourceName, "availability_zone_rebalancing", string(awstypes.AvailabilityZoneRebalancingEnabled)), + ), + }, + }, + }) +} + func testAccCheckServiceDestroy(ctx context.Context) resource.TestCheckFunc { return func(s *terraform.State) error { conn := acctest.Provider.Meta().(*conns.AWSClient).ECSClient(ctx) @@ -4563,6 +4647,366 @@ resource "aws_ecs_service" "test" { `, rName) } +func testAccService_vpcLatticeConfiguration_basic(rName string) string { + return acctest.ConfigCompose(acctest.ConfigAvailableAZsNoOptInDefaultExclude(), fmt.Sprintf(` +resource "aws_ecs_service" "test" { + name = %[1]q + cluster = aws_ecs_cluster.test.name + task_definition = aws_ecs_task_definition.test.arn + desired_count = 1 + launch_type = "FARGATE" + enable_execute_command = true + network_configuration { + subnets = [aws_subnet.test.id] + security_groups = [aws_security_group.test.id] + assign_public_ip = true + } + vpc_lattice_configurations { + role_arn = aws_iam_role.vpc_lattice_infrastructure.arn + target_group_arn = aws_vpclattice_target_group.test.arn + port_name = "testvpclattice" + } + + vpc_lattice_configurations { + role_arn = aws_iam_role.vpc_lattice_infrastructure.arn + target_group_arn = aws_vpclattice_target_group.test_ipv6.arn + port_name = "testvpclattice-ipv6" + } +} + +resource "aws_vpc" "test" { + cidr_block = "10.10.0.0/16" + + tags = { + Name = %[1]q + } +} + +resource "aws_subnet" "test" { + cidr_block = cidrsubnet(aws_vpc.test.cidr_block, 8, 1) + vpc_id = aws_vpc.test.id + map_public_ip_on_launch = true + + tags = { + Name = %[1]q + } +} + + +resource "aws_internet_gateway" "test" { + vpc_id = aws_vpc.test.id + tags = { + Name = %[1]q + } +} + +resource "aws_eip" "test" { + domain = "vpc" + tags = { + Name = %[1]q + } +} + +resource "aws_route_table" "test" { + vpc_id = aws_vpc.test.id + + route { + cidr_block = "0.0.0.0/0" + gateway_id = aws_internet_gateway.test.id + } + tags = { + Name = %[1]q + } +} + +resource "aws_route_table_association" "test" { + subnet_id = aws_subnet.test.id + route_table_id = aws_route_table.test.id +} + + +data "aws_ec2_managed_prefix_list" "test" { + filter { + name = "prefix-list-name" + values = ["com.amazonaws.${data.aws_region.current.name}.vpc-lattice"] + } +} + +resource "aws_security_group" "test" { + name = %[1]q + vpc_id = aws_vpc.test.id + + ingress { + from_port = 80 + to_port = 80 + protocol = "tcp" + cidr_blocks = ["10.0.0.0/16"] + } + + ingress { + from_port = 22 + to_port = 22 + protocol = "tcp" + cidr_blocks = ["10.0.0.0/16"] + } + + ingress { + prefix_list_ids = [data.aws_ec2_managed_prefix_list.test.id] + from_port = 0 + to_port = 0 + protocol = -1 + + } + + egress { + from_port = 0 + to_port = 0 + protocol = "-1" + cidr_blocks = ["0.0.0.0/0"] + } + + tags = { + Name = %[1]q + } +} + + +resource "aws_vpclattice_service" "test" { + name = %[1]q + tags = { + Name = %[1]q + } +} + +resource "aws_vpclattice_service_network" "test" { + name = %[1]q + tags = { + Name = %[1]q + } +} + +resource "aws_vpclattice_target_group" "test" { + name = %[1]q + type = "IP" + + config { + port = 80 + protocol = "HTTP" + protocol_version = "HTTP1" + vpc_identifier = aws_vpc.test.id + health_check { + enabled = false + } + } + +} + +resource "aws_vpclattice_target_group" "test_ipv6" { + name = "%[1]s-ipv6" + type = "IP" + + config { + port = 80 + protocol = "HTTP" + protocol_version = "HTTP1" + vpc_identifier = aws_vpc.test.id + ip_address_type = "IPV6" + health_check { + enabled = false + } + } +} + + +resource "aws_vpclattice_listener" "test" { + name = "%[1]s-listener" + protocol = "HTTP" + service_identifier = aws_vpclattice_service.test.id + + default_action { + forward { + target_groups { + target_group_identifier = aws_vpclattice_target_group.test.id + weight = 80 + } + target_groups { + target_group_identifier = aws_vpclattice_target_group.test_ipv6.id + weight = 20 + } + } + + } +} + +resource "aws_vpclattice_service_network_service_association" "test" { + service_network_identifier = aws_vpclattice_service_network.test.arn + service_identifier = aws_vpclattice_service.test.arn +} + +resource "aws_vpclattice_service_network_vpc_association" "test" { + service_network_identifier = aws_vpclattice_service_network.test.arn + vpc_identifier = aws_vpc.test.id +} + +resource "aws_iam_role" "vpc_lattice_infrastructure" { + name = "%[1]s-vpcl-infrastructure" + managed_policy_arns = ["arn:${data.aws_partition.current.partition}:iam::aws:policy/VPCLatticeFullAccess"] + assume_role_policy = < 0 { + apiObject.NodePools = flex.ExpandStringValueSet(v) + } + + if v, ok := tfMap["node_role_arn"].(string); ok && v != "" { + apiObject.NodeRoleArn = aws.String(v) + } + + return apiObject +} + func expandEncryptionConfig(tfList []interface{}) []types.EncryptionConfig { if len(tfList) == 0 { return nil @@ -992,6 +1186,44 @@ func expandProvider(tfList []interface{}) *types.Provider { return apiObject } +func expandStorageConfigRequest(tfList []interface{}) *types.StorageConfigRequest { + if len(tfList) == 0 { + return nil + } + + tfMap, ok := tfList[0].(map[string]interface{}) + if !ok { + return nil + } + + apiObject := &types.StorageConfigRequest{} + + if v, ok := tfMap["block_storage"].([]interface{}); ok { + apiObject.BlockStorage = expandBlockStorage(v) + } + + return apiObject +} + +func expandBlockStorage(tfList []interface{}) *types.BlockStorage { + if len(tfList) == 0 { + return nil + } + + tfMap, ok := tfList[0].(map[string]interface{}) + if !ok { + return nil + } + + apiObject := &types.BlockStorage{} + + if v, ok := tfMap[names.AttrEnabled].(bool); ok { + apiObject.Enabled = aws.Bool(v) + } + + return apiObject +} + func expandOutpostConfigRequest(tfList []interface{}) *types.OutpostConfigRequest { if len(tfList) == 0 { return nil @@ -1074,6 +1306,10 @@ func expandKubernetesNetworkConfigRequest(tfList []interface{}) *types.Kubernete apiObject := &types.KubernetesNetworkConfigRequest{} + if v, ok := tfMap["elastic_load_balancing"].([]interface{}); ok { + apiObject.ElasticLoadBalancing = expandKubernetesNetworkConfigElasticLoadBalancing(v) + } + if v, ok := tfMap["ip_family"].(string); ok && v != "" { apiObject.IpFamily = types.IpFamily(v) } @@ -1085,6 +1321,92 @@ func expandKubernetesNetworkConfigRequest(tfList []interface{}) *types.Kubernete return apiObject } +func expandKubernetesNetworkConfigElasticLoadBalancing(tfList []interface{}) *types.ElasticLoadBalancing { + if len(tfList) == 0 { + return nil + } + + tfMap, ok := tfList[0].(map[string]interface{}) + if !ok { + return nil + } + + apiObject := &types.ElasticLoadBalancing{} + + if v, ok := tfMap[names.AttrEnabled].(bool); ok { + apiObject.Enabled = aws.Bool(v) + } + + return apiObject +} + +func expandRemoteNetworkConfigRequest(tfList []interface{}) *types.RemoteNetworkConfigRequest { + if len(tfList) == 0 { + return nil + } + + tfMap, ok := tfList[0].(map[string]interface{}) + if !ok { + return nil + } + + apiObject := &types.RemoteNetworkConfigRequest{ + RemoteNodeNetworks: expandRemoteNodeNetworks(tfMap["remote_node_networks"].([]interface{})), + } + + if v, ok := tfMap["remote_pod_networks"].([]interface{}); ok { + apiObject.RemotePodNetworks = expandRemotePodNetworks(v) + } + + return apiObject +} + +func expandRemoteNodeNetworks(tfList []interface{}) []types.RemoteNodeNetwork { + if len(tfList) == 0 { + return nil + } + + var apiObjects []types.RemoteNodeNetwork + + for _, tfMapRaw := range tfList { + tfMap, ok := tfMapRaw.(map[string]interface{}) + if !ok { + continue + } + + apiObject := types.RemoteNodeNetwork{ + Cidrs: flex.ExpandStringValueSet(tfMap["cidrs"].(*schema.Set)), + } + + apiObjects = append(apiObjects, apiObject) + } + + return apiObjects +} + +func expandRemotePodNetworks(tfList []interface{}) []types.RemotePodNetwork { + if len(tfList) == 0 { + return nil + } + + var apiObjects []types.RemotePodNetwork + + for _, tfMapRaw := range tfList { + tfMap, ok := tfMapRaw.(map[string]interface{}) + if !ok { + continue + } + + apiObject := types.RemotePodNetwork{ + Cidrs: flex.ExpandStringValueSet(tfMap["cidrs"].(*schema.Set)), + } + + apiObjects = append(apiObjects, apiObject) + } + + return apiObjects +} + func expandLogging(vEnabledLogTypes *schema.Set) *types.Logging { allLogTypes := enum.EnumValues[types.LogType]() enabledLogTypes := flex.ExpandStringyValueSet[types.LogType](vEnabledLogTypes) @@ -1153,6 +1475,20 @@ func flattenCertificate(certificate *types.Certificate) []map[string]interface{} return []map[string]interface{}{m} } +func flattenComputeConfigResponse(apiObject *types.ComputeConfigResponse) []map[string]interface{} { + if apiObject == nil { + return []map[string]interface{}{} + } + + m := map[string]interface{}{ + names.AttrEnabled: aws.ToBool(apiObject.Enabled), + "node_pools": flex.FlattenStringValueList(apiObject.NodePools), + "node_role_arn": aws.ToString(apiObject.NodeRoleArn), + } + + return []map[string]interface{}{m} +} + func flattenIdentity(identity *types.Identity) []map[string]interface{} { if identity == nil { return []map[string]interface{}{} @@ -1268,9 +1604,22 @@ func flattenKubernetesNetworkConfigResponse(apiObject *types.KubernetesNetworkCo } tfMap := map[string]interface{}{ - "service_ipv4_cidr": aws.ToString(apiObject.ServiceIpv4Cidr), - "service_ipv6_cidr": aws.ToString(apiObject.ServiceIpv6Cidr), - "ip_family": apiObject.IpFamily, + "elastic_load_balancing": flattenKubernetesNetworkConfigElasticLoadBalancing(apiObject.ElasticLoadBalancing), + "service_ipv4_cidr": aws.ToString(apiObject.ServiceIpv4Cidr), + "service_ipv6_cidr": aws.ToString(apiObject.ServiceIpv6Cidr), + "ip_family": apiObject.IpFamily, + } + + return []interface{}{tfMap} +} + +func flattenKubernetesNetworkConfigElasticLoadBalancing(apiObjects *types.ElasticLoadBalancing) []interface{} { + if apiObjects == nil { + return nil + } + + tfMap := map[string]interface{}{ + names.AttrEnabled: aws.ToBool(apiObjects.Enabled), } return []interface{}{tfMap} @@ -1290,6 +1639,55 @@ func flattenOutpostConfigResponse(apiObject *types.OutpostConfigResponse) []inte return []interface{}{tfMap} } +func flattenRemoteNetworkConfigResponse(apiObject *types.RemoteNetworkConfigResponse) []interface{} { + if apiObject == nil { + return nil + } + + tfMap := map[string]interface{}{ + "remote_node_networks": flattenRemoteNodeNetwork(apiObject.RemoteNodeNetworks), + "remote_pod_networks": flattenRemotePodNetwork(apiObject.RemotePodNetworks), + } + + return []interface{}{tfMap} +} + +func flattenRemoteNodeNetwork(apiObjects []types.RemoteNodeNetwork) []interface{} { + if len(apiObjects) == 0 { + return nil + } + + var tfList []interface{} + + for _, apiObject := range apiObjects { + tfMap := map[string]interface{}{ + "cidrs": flex.FlattenStringValueList(apiObject.Cidrs), + } + + tfList = append(tfList, tfMap) + } + + return tfList +} + +func flattenRemotePodNetwork(apiObjects []types.RemotePodNetwork) []interface{} { + if len(apiObjects) == 0 { + return nil + } + + var tfList []interface{} + + for _, apiObject := range apiObjects { + tfMap := map[string]interface{}{ + "cidrs": flex.FlattenStringValueList(apiObject.Cidrs), + } + + tfList = append(tfList, tfMap) + } + + return tfList +} + func flattenControlPlanePlacementResponse(apiObject *types.ControlPlanePlacementResponse) []interface{} { if apiObject == nil { return nil @@ -1302,6 +1700,30 @@ func flattenControlPlanePlacementResponse(apiObject *types.ControlPlanePlacement return []interface{}{tfMap} } +func flattenStorageConfigResponse(apiObject *types.StorageConfigResponse) []interface{} { + if apiObject == nil { + return nil + } + + tfMap := map[string]interface{}{ + "block_storage": flattenBlockStorage(apiObject.BlockStorage), + } + + return []interface{}{tfMap} +} + +func flattenBlockStorage(apiObject *types.BlockStorage) []interface{} { + if apiObject == nil { + return nil + } + + tfMap := map[string]interface{}{ + names.AttrEnabled: aws.ToBool(apiObject.Enabled), + } + + return []interface{}{tfMap} +} + func flattenUpgradePolicy(apiObject *types.UpgradePolicyResponse) []interface{} { if apiObject == nil { return nil @@ -1325,3 +1747,23 @@ func flattenZonalShiftConfig(apiObject *types.ZonalShiftConfigResponse) []interf return []interface{}{tfMap} } + +// InvalidParameterException: For EKS Auto Mode, please ensure that all required configs, +// including computeConfig, kubernetesNetworkConfig, and blockStorage are all either fully enabled or fully disabled. +func validateAutoModeCustsomizeDiff(_ context.Context, d *schema.ResourceDiff, _ any) error { + if d.HasChanges("compute_config", "kubernetes_network_config", "storage_config") { + computeConfig := expandComputeConfigRequest(d.Get("compute_config").([]interface{})) + kubernetesNetworkConfig := expandKubernetesNetworkConfigRequest(d.Get("kubernetes_network_config").([]interface{})) + storageConfig := expandStorageConfigRequest(d.Get("storage_config").([]interface{})) + + computeConfigEnabled := computeConfig != nil && computeConfig.Enabled != nil && aws.ToBool(computeConfig.Enabled) + kubernetesNetworkConfigEnabled := kubernetesNetworkConfig != nil && kubernetesNetworkConfig.ElasticLoadBalancing != nil && kubernetesNetworkConfig.ElasticLoadBalancing.Enabled != nil && aws.ToBool(kubernetesNetworkConfig.ElasticLoadBalancing.Enabled) + storageConfigEnabled := storageConfig != nil && storageConfig.BlockStorage != nil && storageConfig.BlockStorage.Enabled != nil && aws.ToBool(storageConfig.BlockStorage.Enabled) + + if computeConfigEnabled != kubernetesNetworkConfigEnabled || computeConfigEnabled != storageConfigEnabled { + return errors.New("compute_config.enabled, kubernetes_networking_config.elastic_load_balancing.enabled, and storage_config.block_storage.enabled must all be set to either true or false") + } + } + + return nil +} diff --git a/internal/service/eks/cluster_data_source.go b/internal/service/eks/cluster_data_source.go index f20ed3139b1d..10c84e7f1cde 100644 --- a/internal/service/eks/cluster_data_source.go +++ b/internal/service/eks/cluster_data_source.go @@ -57,6 +57,29 @@ func dataSourceCluster() *schema.Resource { Type: schema.TypeString, Computed: true, }, + "compute_config": { + Type: schema.TypeList, + Computed: true, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + names.AttrEnabled: { + Type: schema.TypeBool, + Computed: true, + }, + "node_pools": { + Type: schema.TypeSet, + Computed: true, + Elem: &schema.Schema{ + Type: schema.TypeString, + }, + }, + "node_role_arn": { + Type: schema.TypeString, + Computed: true, + }, + }, + }, + }, names.AttrCreatedAt: { Type: schema.TypeString, Computed: true, @@ -95,6 +118,18 @@ func dataSourceCluster() *schema.Resource { Computed: true, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ + "elastic_load_balancing": { + Type: schema.TypeList, + Computed: true, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + names.AttrEnabled: { + Type: schema.TypeBool, + Computed: true, + }, + }, + }, + }, "ip_family": { Type: schema.TypeString, Computed: true, @@ -150,6 +185,40 @@ func dataSourceCluster() *schema.Resource { Type: schema.TypeString, Computed: true, }, + "remote_network_config": { + Type: schema.TypeList, + Computed: true, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "remote_node_networks": { + Type: schema.TypeList, + Computed: true, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "cidrs": { + Type: schema.TypeSet, + Computed: true, + Elem: &schema.Schema{Type: schema.TypeString}, + }, + }, + }, + }, + "remote_pod_networks": { + Type: schema.TypeList, + Computed: true, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "cidrs": { + Type: schema.TypeSet, + Computed: true, + Elem: &schema.Schema{Type: schema.TypeString}, + }, + }, + }, + }, + }, + }, + }, names.AttrRoleARN: { Type: schema.TypeString, Computed: true, @@ -158,6 +227,26 @@ func dataSourceCluster() *schema.Resource { Type: schema.TypeString, Computed: true, }, + "storage_config": { + Type: schema.TypeList, + Computed: true, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "block_storage": { + Type: schema.TypeList, + Computed: true, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + names.AttrEnabled: { + Type: schema.TypeBool, + Computed: true, + }, + }, + }, + }, + }, + }, + }, names.AttrTags: tftags.TagsSchemaComputed(), "upgrade_policy": { Type: schema.TypeList, @@ -255,6 +344,9 @@ func dataSourceClusterRead(ctx context.Context, d *schema.ResourceData, meta int if cluster.OutpostConfig != nil { d.Set("cluster_id", cluster.Id) } + if err := d.Set("compute_config", flattenComputeConfigResponse(cluster.ComputeConfig)); err != nil { + return sdkdiag.AppendErrorf(diags, "setting compute_config: %s", err) + } d.Set(names.AttrCreatedAt, cluster.CreatedAt.Format(time.RFC3339)) if err := d.Set("enabled_cluster_log_types", flattenLogging(cluster.Logging)); err != nil { return sdkdiag.AppendErrorf(diags, "setting enabled_cluster_log_types: %s", err) @@ -271,8 +363,14 @@ func dataSourceClusterRead(ctx context.Context, d *schema.ResourceData, meta int return sdkdiag.AppendErrorf(diags, "setting outpost_config: %s", err) } d.Set("platform_version", cluster.PlatformVersion) + if err := d.Set("remote_network_config", flattenRemoteNetworkConfigResponse(cluster.RemoteNetworkConfig)); err != nil { + return sdkdiag.AppendErrorf(diags, "setting remote_network_config: %s", err) + } d.Set(names.AttrRoleARN, cluster.RoleArn) d.Set(names.AttrStatus, cluster.Status) + if err := d.Set("storage_config", flattenStorageConfigResponse(cluster.StorageConfig)); err != nil { + return sdkdiag.AppendErrorf(diags, "setting storage_config: %s", err) + } if err := d.Set("upgrade_policy", flattenUpgradePolicy(cluster.UpgradePolicy)); err != nil { return sdkdiag.AppendErrorf(diags, "setting upgrade_policy: %s", err) } diff --git a/internal/service/eks/cluster_data_source_test.go b/internal/service/eks/cluster_data_source_test.go index dee9734b446d..66aec92b5ddb 100644 --- a/internal/service/eks/cluster_data_source_test.go +++ b/internal/service/eks/cluster_data_source_test.go @@ -33,6 +33,7 @@ func TestAccEKSClusterDataSource_basic(t *testing.T) { resource.TestCheckResourceAttr(dataSourceResourceName, "certificate_authority.#", "1"), resource.TestCheckResourceAttrPair(resourceName, "certificate_authority.0.data", dataSourceResourceName, "certificate_authority.0.data"), resource.TestCheckNoResourceAttr(dataSourceResourceName, "cluster_id"), + resource.TestCheckResourceAttr(resourceName, "compute_config.#", "0"), resource.TestCheckResourceAttrPair(resourceName, names.AttrCreatedAt, dataSourceResourceName, names.AttrCreatedAt), resource.TestCheckResourceAttr(dataSourceResourceName, "enabled_cluster_log_types.#", "2"), resource.TestCheckTypeSetElemAttr(dataSourceResourceName, "enabled_cluster_log_types.*", "api"), @@ -42,13 +43,16 @@ func TestAccEKSClusterDataSource_basic(t *testing.T) { resource.TestCheckResourceAttrPair(resourceName, "identity.0.oidc.#", dataSourceResourceName, "identity.0.oidc.#"), resource.TestCheckResourceAttrPair(resourceName, "identity.0.oidc.0.issuer", dataSourceResourceName, "identity.0.oidc.0.issuer"), resource.TestCheckResourceAttrPair(resourceName, "kubernetes_network_config.#", dataSourceResourceName, "kubernetes_network_config.#"), + resource.TestCheckResourceAttr(resourceName, "kubernetes_network_config.0.elastic_load_balancing.#", "1"), resource.TestCheckResourceAttrPair(resourceName, "kubernetes_network_config.0.ip_family", dataSourceResourceName, "kubernetes_network_config.0.ip_family"), resource.TestCheckResourceAttrPair(resourceName, "kubernetes_network_config.0.service_ipv4_cidr", dataSourceResourceName, "kubernetes_network_config.0.service_ipv4_cidr"), resource.TestCheckResourceAttrPair(resourceName, "kubernetes_network_config.0.service_ipv6_cidr", dataSourceResourceName, "kubernetes_network_config.0.service_ipv6_cidr"), resource.TestCheckResourceAttrPair(resourceName, "outpost_config.#", dataSourceResourceName, "outpost_config.#"), resource.TestMatchResourceAttr(dataSourceResourceName, "platform_version", regexache.MustCompile(`^eks\.\d+$`)), + resource.TestCheckResourceAttr(dataSourceResourceName, "remote_network_config.#", "0"), resource.TestCheckResourceAttrPair(resourceName, names.AttrRoleARN, dataSourceResourceName, names.AttrRoleARN), resource.TestCheckResourceAttrPair(resourceName, names.AttrStatus, dataSourceResourceName, names.AttrStatus), + resource.TestCheckResourceAttr(resourceName, "storage_config.#", "0"), resource.TestCheckResourceAttrPair(resourceName, acctest.CtTagsPercent, dataSourceResourceName, acctest.CtTagsPercent), resource.TestCheckResourceAttr(resourceName, "upgrade_policy.#", "1"), resource.TestCheckResourceAttr(resourceName, "upgrade_policy.0.support_type", "EXTENDED"), @@ -86,17 +90,21 @@ func TestAccEKSClusterDataSource_outpost(t *testing.T) { resource.TestCheckResourceAttrPair(resourceName, names.AttrARN, dataSourceResourceName, names.AttrARN), resource.TestCheckResourceAttr(dataSourceResourceName, "certificate_authority.#", "1"), resource.TestCheckResourceAttrPair(resourceName, "certificate_authority.0.data", dataSourceResourceName, "certificate_authority.0.data"), + resource.TestCheckResourceAttr(resourceName, "compute_config.#", "0"), resource.TestCheckResourceAttrPair(resourceName, names.AttrCreatedAt, dataSourceResourceName, names.AttrCreatedAt), resource.TestCheckResourceAttr(dataSourceResourceName, "enabled_cluster_log_types.#", "0"), resource.TestCheckResourceAttrPair(resourceName, names.AttrEndpoint, dataSourceResourceName, names.AttrEndpoint), resource.TestCheckResourceAttr(dataSourceResourceName, "identity.#", "0"), resource.TestCheckResourceAttrPair(resourceName, "kubernetes_network_config.#", dataSourceResourceName, "kubernetes_network_config.#"), + resource.TestCheckResourceAttr(resourceName, "kubernetes_network_config.0.elastic_load_balancing.#", "1"), resource.TestCheckResourceAttrPair(resourceName, "kubernetes_network_config.0.ip_family", dataSourceResourceName, "kubernetes_network_config.0.ip_family"), resource.TestCheckResourceAttrPair(resourceName, "kubernetes_network_config.0.service_ipv4_cidr", dataSourceResourceName, "kubernetes_network_config.0.service_ipv4_cidr"), resource.TestCheckResourceAttrPair(resourceName, "kubernetes_network_config.0.service_ipv6_cidr", dataSourceResourceName, "kubernetes_network_config.0.service_ipv6_cidr"), resource.TestMatchResourceAttr(dataSourceResourceName, "platform_version", regexache.MustCompile(`^eks-local-outposts\.\d+$`)), + resource.TestCheckResourceAttr(dataSourceResourceName, "remote_network_config.#", "0"), resource.TestCheckResourceAttrPair(resourceName, names.AttrRoleARN, dataSourceResourceName, names.AttrRoleARN), resource.TestCheckResourceAttrPair(resourceName, names.AttrStatus, dataSourceResourceName, names.AttrStatus), + resource.TestCheckResourceAttr(resourceName, "storage_config.#", "0"), resource.TestCheckResourceAttrPair(resourceName, acctest.CtTagsPercent, dataSourceResourceName, acctest.CtTagsPercent), resource.TestCheckResourceAttr(resourceName, "upgrade_policy.#", "1"), resource.TestCheckResourceAttr(resourceName, "upgrade_policy.0.support_type", "EXTENDED"), @@ -118,6 +126,62 @@ func TestAccEKSClusterDataSource_outpost(t *testing.T) { }) } +func TestAccEKSClusterDataSource_remoteNetwork(t *testing.T) { + ctx := acctest.Context(t) + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + dataSourceResourceName := "data.aws_eks_cluster.test" + resourceName := "aws_eks_cluster.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.EKSServiceID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckClusterDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccClusterDataSourceConfig_remoteNetwork(rName), + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttrPair(resourceName, names.AttrARN, dataSourceResourceName, names.AttrARN), + resource.TestCheckResourceAttr(dataSourceResourceName, "certificate_authority.#", "1"), + resource.TestCheckResourceAttrPair(resourceName, "certificate_authority.0.data", dataSourceResourceName, "certificate_authority.0.data"), + resource.TestCheckResourceAttrPair(resourceName, names.AttrCreatedAt, dataSourceResourceName, names.AttrCreatedAt), + resource.TestCheckResourceAttr(dataSourceResourceName, "enabled_cluster_log_types.#", "0"), + resource.TestCheckResourceAttrPair(resourceName, names.AttrEndpoint, dataSourceResourceName, names.AttrEndpoint), + resource.TestCheckResourceAttr(dataSourceResourceName, "identity.#", "1"), + resource.TestCheckResourceAttrPair(resourceName, "kubernetes_network_config.#", dataSourceResourceName, "kubernetes_network_config.#"), + resource.TestCheckResourceAttrPair(resourceName, "kubernetes_network_config.0.ip_family", dataSourceResourceName, "kubernetes_network_config.0.ip_family"), + resource.TestCheckResourceAttrPair(resourceName, "kubernetes_network_config.0.service_ipv4_cidr", dataSourceResourceName, "kubernetes_network_config.0.service_ipv4_cidr"), + resource.TestCheckResourceAttrPair(resourceName, "kubernetes_network_config.0.service_ipv6_cidr", dataSourceResourceName, "kubernetes_network_config.0.service_ipv6_cidr"), + resource.TestCheckResourceAttrPair(resourceName, "outpost_config.#", dataSourceResourceName, "outpost_config.#"), + resource.TestMatchResourceAttr(dataSourceResourceName, "platform_version", regexache.MustCompile(`^eks\.\d+$`)), + resource.TestCheckResourceAttr(resourceName, "remote_network_config.#", "1"), + resource.TestCheckResourceAttr(resourceName, "remote_network_config.0.remote_node_networks.#", "1"), + resource.TestCheckResourceAttr(resourceName, "remote_network_config.0.remote_node_networks.0.cidrs.#", "1"), + resource.TestCheckResourceAttr(resourceName, "remote_network_config.0.remote_node_networks.0.cidrs.0", "10.90.0.0/22"), + resource.TestCheckResourceAttr(resourceName, "remote_network_config.0.remote_pod_networks.#", "1"), + resource.TestCheckResourceAttr(resourceName, "remote_network_config.0.remote_pod_networks.0.cidrs.#", "1"), + resource.TestCheckResourceAttr(resourceName, "remote_network_config.0.remote_pod_networks.0.cidrs.0", "10.80.0.0/22"), + resource.TestCheckResourceAttrPair(resourceName, names.AttrRoleARN, dataSourceResourceName, names.AttrRoleARN), + resource.TestCheckResourceAttrPair(resourceName, names.AttrStatus, dataSourceResourceName, names.AttrStatus), + resource.TestCheckResourceAttrPair(resourceName, acctest.CtTagsPercent, dataSourceResourceName, acctest.CtTagsPercent), + resource.TestCheckResourceAttr(resourceName, "upgrade_policy.#", "1"), + resource.TestCheckResourceAttr(resourceName, "upgrade_policy.0.support_type", "EXTENDED"), + resource.TestCheckResourceAttrPair(resourceName, names.AttrVersion, dataSourceResourceName, names.AttrVersion), + resource.TestCheckResourceAttr(dataSourceResourceName, "vpc_config.#", "1"), + resource.TestCheckResourceAttrPair(resourceName, "vpc_config.0.cluster_security_group_id", dataSourceResourceName, "vpc_config.0.cluster_security_group_id"), + resource.TestCheckResourceAttrPair(resourceName, "vpc_config.0.endpoint_private_access", dataSourceResourceName, "vpc_config.0.endpoint_private_access"), + resource.TestCheckResourceAttrPair(resourceName, "vpc_config.0.endpoint_public_access", dataSourceResourceName, "vpc_config.0.endpoint_public_access"), + resource.TestCheckResourceAttrPair(resourceName, "vpc_config.0.security_group_ids.#", dataSourceResourceName, "vpc_config.0.security_group_ids.#"), + resource.TestCheckResourceAttrPair(resourceName, "vpc_config.0.subnet_ids.#", dataSourceResourceName, "vpc_config.0.subnet_ids.#"), + resource.TestCheckResourceAttrPair(resourceName, "vpc_config.0.public_access_cidrs.#", dataSourceResourceName, "vpc_config.0.public_access_cidrs.#"), + resource.TestCheckResourceAttrPair(resourceName, "vpc_config.0.vpc_id", dataSourceResourceName, "vpc_config.0.vpc_id"), + resource.TestCheckResourceAttr(resourceName, "zonal_shift_config.#", "0"), + ), + }, + }, + }) +} + func testAccClusterDataSourceConfig_basic(rName string) string { return acctest.ConfigCompose(testAccClusterConfig_logging(rName, []string{"api", "audit"}), ` data "aws_eks_cluster" "test" { @@ -133,3 +197,11 @@ data "aws_eks_cluster" "test" { } `) } + +func testAccClusterDataSourceConfig_remoteNetwork(rName string) string { + return acctest.ConfigCompose(testAccClusterConfig_remotePodNetwork(rName, "10.90.0.0/22", "10.80.0.0/22"), ` +data "aws_eks_cluster" "test" { + name = aws_eks_cluster.test.name +} +`) +} diff --git a/internal/service/eks/cluster_test.go b/internal/service/eks/cluster_test.go index 753da1a8e697..2c3cef477fac 100644 --- a/internal/service/eks/cluster_test.go +++ b/internal/service/eks/cluster_test.go @@ -47,11 +47,12 @@ func TestAccEKSCluster_basic(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckClusterExists(ctx, resourceName, &cluster), resource.TestCheckResourceAttr(resourceName, "access_config.#", "1"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "eks", regexache.MustCompile(fmt.Sprintf("cluster/%s$", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "eks", regexache.MustCompile(fmt.Sprintf("cluster/%s$", rName))), resource.TestCheckResourceAttr(resourceName, "bootstrap_self_managed_addons", acctest.CtTrue), resource.TestCheckResourceAttr(resourceName, "certificate_authority.#", "1"), resource.TestCheckResourceAttrSet(resourceName, "certificate_authority.0.data"), resource.TestCheckNoResourceAttr(resourceName, "cluster_id"), + resource.TestCheckResourceAttr(resourceName, "compute_config.#", "0"), acctest.CheckResourceAttrRFC3339(resourceName, names.AttrCreatedAt), resource.TestCheckResourceAttr(resourceName, "enabled_cluster_log_types.#", "0"), resource.TestCheckResourceAttr(resourceName, "encryption_config.#", "0"), @@ -60,13 +61,16 @@ func TestAccEKSCluster_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "identity.0.oidc.#", "1"), resource.TestMatchResourceAttr(resourceName, "identity.0.oidc.0.issuer", regexache.MustCompile(`^https://`)), resource.TestCheckResourceAttr(resourceName, "kubernetes_network_config.#", "1"), + resource.TestCheckResourceAttr(resourceName, "kubernetes_network_config.0.elastic_load_balancing.#", "1"), + resource.TestCheckResourceAttr(resourceName, "kubernetes_network_config.0.elastic_load_balancing.0.enabled", acctest.CtFalse), resource.TestCheckResourceAttrSet(resourceName, "kubernetes_network_config.0.service_ipv4_cidr"), resource.TestCheckResourceAttr(resourceName, "kubernetes_network_config.0.ip_family", "ipv4"), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "outpost_config.#", "0"), resource.TestMatchResourceAttr(resourceName, "platform_version", regexache.MustCompile(`^eks\.\d+$`)), - resource.TestCheckResourceAttrPair(resourceName, names.AttrRoleARN, "aws_iam_role.test", names.AttrARN), + resource.TestCheckResourceAttrPair(resourceName, names.AttrRoleARN, "aws_iam_role.cluster", names.AttrARN), resource.TestCheckResourceAttr(resourceName, names.AttrStatus, string(types.ClusterStatusActive)), + resource.TestCheckResourceAttr(resourceName, "storage_config.#", "0"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestMatchResourceAttr(resourceName, names.AttrVersion, regexache.MustCompile(`^\d+\.\d+$`)), resource.TestCheckResourceAttr(resourceName, "upgrade_policy.#", "1"), @@ -283,6 +287,63 @@ func TestAccEKSCluster_BootstrapSelfManagedAddons_migrate(t *testing.T) { }) } +func TestAccEKSCluster_ComputeConfig(t *testing.T) { + ctx := acctest.Context(t) + var cluster1, cluster2 types.Cluster + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + resourceName := "aws_eks_cluster.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.EKSServiceID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckClusterDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccClusterConfig_computeConfig(rName, true), + Check: resource.ComposeTestCheckFunc( + testAccCheckClusterExists(ctx, resourceName, &cluster1), + resource.TestCheckResourceAttr(resourceName, "compute_config.#", "1"), + resource.TestCheckResourceAttr(resourceName, "compute_config.0.enabled", acctest.CtTrue), + resource.TestCheckResourceAttr(resourceName, "compute_config.0.node_pools.#", "1"), + resource.TestCheckResourceAttr(resourceName, "compute_config.0.node_pools.0", "general-purpose"), + resource.TestCheckResourceAttrPair(resourceName, "compute_config.0.node_role_arn", "aws_iam_role.node", names.AttrARN), + resource.TestCheckResourceAttr(resourceName, "kubernetes_network_config.#", "1"), + resource.TestCheckResourceAttr(resourceName, "kubernetes_network_config.0.elastic_load_balancing.#", "1"), + resource.TestCheckResourceAttr(resourceName, "kubernetes_network_config.0.elastic_load_balancing.0.enabled", acctest.CtTrue), + resource.TestCheckResourceAttr(resourceName, "storage_config.#", "1"), + resource.TestCheckResourceAttr(resourceName, "storage_config.0.block_storage.#", "1"), + resource.TestCheckResourceAttr(resourceName, "storage_config.0.block_storage.0.enabled", acctest.CtTrue), + ), + }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + ImportStateVerifyIgnore: []string{"bootstrap_self_managed_addons"}, + }, + { + Config: testAccClusterConfig_computeConfig(rName, false), + Check: resource.ComposeTestCheckFunc( + testAccCheckClusterExists(ctx, resourceName, &cluster2), + testAccCheckClusterNotRecreated(&cluster1, &cluster2), + resource.TestCheckResourceAttr(resourceName, "compute_config.#", "1"), + resource.TestCheckResourceAttr(resourceName, "compute_config.0.enabled", acctest.CtFalse), + resource.TestCheckResourceAttr(resourceName, "compute_config.0.node_pools.#", "1"), + resource.TestCheckResourceAttr(resourceName, "compute_config.0.node_pools.0", "general-purpose"), + resource.TestCheckResourceAttrPair(resourceName, "compute_config.0.node_role_arn", "aws_iam_role.node", names.AttrARN), + resource.TestCheckResourceAttr(resourceName, "kubernetes_network_config.#", "1"), + resource.TestCheckResourceAttr(resourceName, "kubernetes_network_config.0.elastic_load_balancing.#", "1"), + resource.TestCheckResourceAttr(resourceName, "kubernetes_network_config.0.elastic_load_balancing.0.enabled", acctest.CtFalse), + resource.TestCheckResourceAttr(resourceName, "storage_config.#", "1"), + resource.TestCheckResourceAttr(resourceName, "storage_config.0.block_storage.#", "1"), + resource.TestCheckResourceAttr(resourceName, "storage_config.0.block_storage.0.enabled", acctest.CtFalse), + ), + }, + }, + }) +} + func TestAccEKSCluster_Encryption_create(t *testing.T) { ctx := acctest.Context(t) var cluster types.Cluster @@ -917,6 +978,77 @@ func TestAccEKSCluster_Outpost_placement(t *testing.T) { }) } +func TestAccEKSCluster_RemoteNetwork_Node(t *testing.T) { + ctx := acctest.Context(t) + var cluster types.Cluster + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + resourceName := "aws_eks_cluster.test" + remoteNodeCIDR := "10.90.0.0/22" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.EKSServiceID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckClusterDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccClusterConfig_remoteNodeNetwork(rName, remoteNodeCIDR), + Check: resource.ComposeTestCheckFunc( + testAccCheckClusterExists(ctx, resourceName, &cluster), + resource.TestCheckResourceAttr(resourceName, "remote_network_config.#", "1"), + resource.TestCheckResourceAttr(resourceName, "remote_network_config.0.remote_node_networks.#", "1"), + resource.TestCheckResourceAttr(resourceName, "remote_network_config.0.remote_node_networks.0.cidrs.#", "1"), + resource.TestCheckResourceAttr(resourceName, "remote_network_config.0.remote_node_networks.0.cidrs.0", remoteNodeCIDR), + resource.TestCheckResourceAttr(resourceName, "remote_network_config.0.remote_pod_networks.#", "0"), + ), + }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + ImportStateVerifyIgnore: []string{"bootstrap_self_managed_addons"}, + }, + }, + }) +} + +func TestAccEKSCluster_RemoteNetwork_Pod(t *testing.T) { + ctx := acctest.Context(t) + var cluster types.Cluster + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + resourceName := "aws_eks_cluster.test" + remoteNodeCIDR := "10.90.0.0/22" + remotePodCIDR := "10.80.0.0/22" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.EKSServiceID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckClusterDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccClusterConfig_remotePodNetwork(rName, remoteNodeCIDR, remotePodCIDR), + Check: resource.ComposeTestCheckFunc( + testAccCheckClusterExists(ctx, resourceName, &cluster), + resource.TestCheckResourceAttr(resourceName, "remote_network_config.#", "1"), + resource.TestCheckResourceAttr(resourceName, "remote_network_config.0.remote_node_networks.#", "1"), + resource.TestCheckResourceAttr(resourceName, "remote_network_config.0.remote_node_networks.0.cidrs.#", "1"), + resource.TestCheckResourceAttr(resourceName, "remote_network_config.0.remote_node_networks.0.cidrs.0", remoteNodeCIDR), + resource.TestCheckResourceAttr(resourceName, "remote_network_config.0.remote_pod_networks.#", "1"), + resource.TestCheckResourceAttr(resourceName, "remote_network_config.0.remote_pod_networks.0.cidrs.#", "1"), + resource.TestCheckResourceAttr(resourceName, "remote_network_config.0.remote_pod_networks.0.cidrs.0", remotePodCIDR), + ), + }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + ImportStateVerifyIgnore: []string{"bootstrap_self_managed_addons"}, + }, + }, + }) +} + func TestAccEKSCluster_upgradePolicy(t *testing.T) { ctx := acctest.Context(t) var cluster types.Cluster @@ -1086,7 +1218,7 @@ func testAccClusterConfig_base(rName string) string { return acctest.ConfigCompose(acctest.ConfigAvailableAZsNoOptIn(), fmt.Sprintf(` data "aws_partition" "current" {} -resource "aws_iam_role" "test" { +resource "aws_iam_role" "cluster" { name = %[1]q assume_role_policy = < 350000 { - return fmt.Errorf("expected disk_iops_configuration.0.iops to be in the range (0 - 350000) when deployment_type (%s), got %d", awstypes.OpenZFSDeploymentTypeSingleAz2, v) + if v < 0 || v > 400000 { + return fmt.Errorf("expected disk_iops_configuration.0.iops to be in the range (0 - 400000) when deployment_type (%s), got %d", awstypes.OpenZFSDeploymentTypeSingleAz2, v) } } } diff --git a/internal/service/fsx/openzfs_file_system_test.go b/internal/service/fsx/openzfs_file_system_test.go index db436c8d35c2..f9712d6cd1b4 100644 --- a/internal/service/fsx/openzfs_file_system_test.go +++ b/internal/service/fsx/openzfs_file_system_test.go @@ -49,7 +49,7 @@ func TestAccFSxOpenZFSFileSystem_basic(t *testing.T) { Config: testAccOpenZFSFileSystemConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckOpenZFSFileSystemExists(ctx, resourceName, &filesystem), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "fsx", regexache.MustCompile(`file-system/fs-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "fsx", regexache.MustCompile(`file-system/fs-.+`)), resource.TestCheckResourceAttr(resourceName, "automatic_backup_retention_days", "0"), resource.TestCheckNoResourceAttr(resourceName, "backup_id"), resource.TestCheckResourceAttr(resourceName, "copy_tags_to_backups", acctest.CtFalse), @@ -64,7 +64,7 @@ func TestAccFSxOpenZFSFileSystem_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "endpoint_ip_address_range", ""), resource.TestCheckResourceAttrSet(resourceName, names.AttrKMSKeyID), resource.TestCheckResourceAttr(resourceName, "network_interface_ids.#", "1"), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, "preferred_subnet_id", ""), resource.TestCheckResourceAttr(resourceName, "root_volume_configuration.#", "1"), resource.TestCheckResourceAttr(resourceName, "root_volume_configuration.0.data_compression_type", "NONE"), @@ -901,7 +901,7 @@ func TestAccFSxOpenZFSFileSystem_multiAZ(t *testing.T) { Config: testAccOpenZFSFileSystemConfig_multiAZ(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckOpenZFSFileSystemExists(ctx, resourceName, &filesystem), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "fsx", regexache.MustCompile(`file-system/fs-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "fsx", regexache.MustCompile(`file-system/fs-.+`)), resource.TestCheckResourceAttr(resourceName, "automatic_backup_retention_days", "0"), resource.TestCheckNoResourceAttr(resourceName, "backup_id"), resource.TestCheckResourceAttr(resourceName, "copy_tags_to_backups", acctest.CtFalse), @@ -916,7 +916,7 @@ func TestAccFSxOpenZFSFileSystem_multiAZ(t *testing.T) { resource.TestCheckResourceAttrSet(resourceName, "endpoint_ip_address_range"), resource.TestCheckResourceAttrSet(resourceName, names.AttrKMSKeyID), resource.TestCheckResourceAttr(resourceName, "network_interface_ids.#", "2"), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttrPair(resourceName, "preferred_subnet_id", "aws_subnet.test.0", names.AttrID), resource.TestCheckResourceAttr(resourceName, "root_volume_configuration.#", "1"), resource.TestCheckResourceAttr(resourceName, "root_volume_configuration.0.data_compression_type", "NONE"), diff --git a/internal/service/fsx/openzfs_snapshot_test.go b/internal/service/fsx/openzfs_snapshot_test.go index 7d811b5675e2..1e214cbbf9f5 100644 --- a/internal/service/fsx/openzfs_snapshot_test.go +++ b/internal/service/fsx/openzfs_snapshot_test.go @@ -37,7 +37,7 @@ func TestAccFSxOpenZFSSnapshot_basic(t *testing.T) { Config: testAccOpenZFSSnapshotConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckOpenZFSSnapshotExists(ctx, resourceName, &snapshot), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "fsx", regexache.MustCompile(`snapshot/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "fsx", regexache.MustCompile(`snapshot/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttrSet(resourceName, "volume_id"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreationTime), @@ -176,7 +176,7 @@ func TestAccFSxOpenZFSSnapshot_childVolume(t *testing.T) { Config: testAccOpenZFSSnapshotConfig_childVolume(rName), Check: resource.ComposeTestCheckFunc( testAccCheckOpenZFSSnapshotExists(ctx, resourceName, &snapshot), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "fsx", regexache.MustCompile(`snapshot/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "fsx", regexache.MustCompile(`snapshot/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), diff --git a/internal/service/fsx/openzfs_volume_test.go b/internal/service/fsx/openzfs_volume_test.go index 9f24c1b437ab..77f59f72b180 100644 --- a/internal/service/fsx/openzfs_volume_test.go +++ b/internal/service/fsx/openzfs_volume_test.go @@ -37,7 +37,7 @@ func TestAccFSxOpenZFSVolume_basic(t *testing.T) { Config: testAccOpenZFSVolumeConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckOpenZFSVolumeExists(ctx, resourceName, &volume), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "fsx", regexache.MustCompile(`volume/fs-.+/fsvol-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "fsx", regexache.MustCompile(`volume/fs-.+/fsvol-.+`)), resource.TestCheckResourceAttr(resourceName, "copy_tags_to_snapshots", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "data_compression_type", "NONE"), resource.TestCheckResourceAttr(resourceName, "delete_volume_options.#", "0"), @@ -105,8 +105,8 @@ func TestAccFSxOpenZFSVolume_parentVolume(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckOpenZFSVolumeExists(ctx, resourceName, &volume), testAccCheckOpenZFSVolumeExists(ctx, resourceName2, &volume2), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "fsx", regexache.MustCompile(`volume/fs-.+/fsvol-.+`)), - acctest.MatchResourceAttrRegionalARN(resourceName2, names.AttrARN, "fsx", regexache.MustCompile(`volume/fs-.+/fsvol-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "fsx", regexache.MustCompile(`volume/fs-.+/fsvol-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName2, names.AttrARN, "fsx", regexache.MustCompile(`volume/fs-.+/fsvol-.+`)), resource.TestCheckResourceAttrPair(resourceName2, "parent_volume_id", resourceName, names.AttrID), ), }, diff --git a/internal/service/fsx/service_endpoints_gen_test.go b/internal/service/fsx/service_endpoints_gen_test.go index 922b885044cd..7613bd88b72e 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/fsx/sweep.go b/internal/service/fsx/sweep.go index bd0071ee5824..eeef50cacb60 100644 --- a/internal/service/fsx/sweep.go +++ b/internal/service/fsx/sweep.go @@ -4,6 +4,7 @@ package fsx import ( + "context" "fmt" "log" @@ -11,6 +12,7 @@ import ( "github.com/aws/aws-sdk-go-v2/service/fsx" awstypes "github.com/aws/aws-sdk-go-v2/service/fsx/types" "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/sweep" "github.com/hashicorp/terraform-provider-aws/internal/sweep/awsv2" ) @@ -48,10 +50,7 @@ func RegisterSweepers() { }, }) - resource.AddTestSweepers("aws_fsx_ontap_volume", &resource.Sweeper{ - Name: "aws_fsx_ontap_volume", - F: sweepONTAPVolumes, - }) + awsv2.Register("aws_fsx_ontap_volume", sweepONTAPVolumes) resource.AddTestSweepers("aws_fsx_openzfs_file_system", &resource.Sweeper{ Name: "aws_fsx_openzfs_file_system", @@ -251,54 +250,44 @@ func sweepONTAPStorageVirtualMachine(region string) error { return nil } -func sweepONTAPVolumes(region string) error { - ctx := sweep.Context(region) - client, err := sweep.SharedRegionalSweepClient(ctx, region) - if err != nil { - return fmt.Errorf("error getting client: %w", err) - } +func sweepONTAPVolumes(ctx context.Context, client *conns.AWSClient) ([]sweep.Sweepable, error) { conn := client.FSxClient(ctx) - input := &fsx.DescribeVolumesInput{} - sweepResources := make([]sweep.Sweepable, 0) - pages := fsx.NewDescribeVolumesPaginator(conn, input) + var sweepResources []sweep.Sweepable + + input := fsx.DescribeVolumesInput{} + pages := fsx.NewDescribeVolumesPaginator(conn, &input) for pages.HasMorePages() { page, err := pages.NextPage(ctx) - - if awsv2.SkipSweepError(err) { - log.Printf("[WARN] Skipping FSx ONTAP Volume sweep for %s: %s", region, err) - return nil - } - if err != nil { - return fmt.Errorf("error listing FSx ONTAP Volumes (%s): %w", region, err) + return nil, err } for _, v := range page.Volumes { if v.VolumeType != awstypes.VolumeTypeOntap { continue } + // Skip root volumes if v.OntapConfiguration != nil && aws.ToBool(v.OntapConfiguration.StorageVirtualMachineRoot) { continue } + var bypassSnaplock bool + if v.OntapConfiguration != nil && v.OntapConfiguration.SnaplockConfiguration != nil { + bypassSnaplock = true + } + r := resourceONTAPVolume() d := r.Data(nil) d.SetId(aws.ToString(v.VolumeId)) - d.Set("bypass_snaplock_enterprise_retention", true) + d.Set("bypass_snaplock_enterprise_retention", bypassSnaplock) d.Set("skip_final_backup", true) sweepResources = append(sweepResources, sweep.NewSweepResource(r, d, client)) } } - err = sweep.SweepOrchestrator(ctx, sweepResources) - - if err != nil { - return fmt.Errorf("error sweeping FSx ONTAP Volumes (%s): %w", region, err) - } - - return nil + return sweepResources, nil } func sweepOpenZFSFileSystems(region string) error { diff --git a/internal/service/fsx/windows_file_system_test.go b/internal/service/fsx/windows_file_system_test.go index c34077e1be22..3735d784b5fd 100644 --- a/internal/service/fsx/windows_file_system_test.go +++ b/internal/service/fsx/windows_file_system_test.go @@ -38,7 +38,7 @@ func TestAccFSxWindowsFileSystem_basic(t *testing.T) { Config: testAccWindowsFileSystemConfig_basic(rName, domainName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckWindowsFileSystemExists(ctx, resourceName, &filesystem), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "fsx", regexache.MustCompile(`file-system/fs-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "fsx", regexache.MustCompile(`file-system/fs-.+`)), resource.TestCheckResourceAttr(resourceName, "aliases.#", "0"), resource.TestCheckResourceAttr(resourceName, "audit_log_configuration.#", "1"), resource.TestCheckResourceAttr(resourceName, "audit_log_configuration.0.file_access_audit_log_level", "DISABLED"), @@ -51,9 +51,9 @@ func TestAccFSxWindowsFileSystem_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "disk_iops_configuration.0.iops", "96"), resource.TestCheckResourceAttr(resourceName, "disk_iops_configuration.0.mode", "AUTOMATIC"), resource.TestMatchResourceAttr(resourceName, names.AttrDNSName, regexache.MustCompile(`fs-.+\..+`)), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrKMSKeyID, "kms", regexache.MustCompile(`key/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrKMSKeyID, "kms", regexache.MustCompile(`key/.+`)), resource.TestCheckResourceAttr(resourceName, "network_interface_ids.#", "1"), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, "security_group_ids.#", "0"), resource.TestCheckResourceAttr(resourceName, "self_managed_active_directory.#", "0"), resource.TestCheckResourceAttr(resourceName, "skip_final_backup", acctest.CtTrue), @@ -122,16 +122,16 @@ func TestAccFSxWindowsFileSystem_singleAz2(t *testing.T) { Config: testAccWindowsFileSystemConfig_subnetIDs1SingleType(rName, domainName, "SINGLE_AZ_2"), Check: resource.ComposeTestCheckFunc( testAccCheckWindowsFileSystemExists(ctx, resourceName, &filesystem), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "fsx", regexache.MustCompile(`file-system/fs-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "fsx", regexache.MustCompile(`file-system/fs-.+`)), resource.TestCheckResourceAttr(resourceName, "aliases.#", "0"), resource.TestCheckResourceAttr(resourceName, "automatic_backup_retention_days", "7"), resource.TestCheckResourceAttr(resourceName, "copy_tags_to_backups", acctest.CtFalse), resource.TestMatchResourceAttr(resourceName, "daily_automatic_backup_start_time", regexache.MustCompile(`^\d\d:\d\d$`)), resource.TestCheckResourceAttr(resourceName, "deployment_type", "SINGLE_AZ_2"), resource.TestMatchResourceAttr(resourceName, names.AttrDNSName, regexache.MustCompile(`^amznfsx\w{8}\.\w{8}\.test$`)), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrKMSKeyID, "kms", regexache.MustCompile(`key/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrKMSKeyID, "kms", regexache.MustCompile(`key/.+`)), resource.TestCheckResourceAttr(resourceName, "network_interface_ids.#", "1"), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, "security_group_ids.#", "0"), resource.TestCheckResourceAttr(resourceName, "self_managed_active_directory.#", "0"), resource.TestCheckResourceAttr(resourceName, "skip_final_backup", acctest.CtTrue), @@ -209,16 +209,16 @@ func TestAccFSxWindowsFileSystem_multiAz(t *testing.T) { Config: testAccWindowsFileSystemConfig_subnetIDs2(rName, domainName), Check: resource.ComposeTestCheckFunc( testAccCheckWindowsFileSystemExists(ctx, resourceName, &filesystem), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "fsx", regexache.MustCompile(`file-system/fs-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "fsx", regexache.MustCompile(`file-system/fs-.+`)), resource.TestCheckResourceAttr(resourceName, "aliases.#", "0"), resource.TestCheckResourceAttr(resourceName, "automatic_backup_retention_days", "7"), resource.TestCheckResourceAttr(resourceName, "copy_tags_to_backups", acctest.CtFalse), resource.TestMatchResourceAttr(resourceName, "daily_automatic_backup_start_time", regexache.MustCompile(`^\d\d:\d\d$`)), resource.TestCheckResourceAttr(resourceName, "deployment_type", "MULTI_AZ_1"), resource.TestMatchResourceAttr(resourceName, names.AttrDNSName, regexache.MustCompile(`^amznfsx\w{8}\.\w{8}\.test$`)), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrKMSKeyID, "kms", regexache.MustCompile(`key/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrKMSKeyID, "kms", regexache.MustCompile(`key/.+`)), resource.TestCheckResourceAttr(resourceName, "network_interface_ids.#", "2"), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, "self_managed_active_directory.#", "0"), resource.TestCheckResourceAttr(resourceName, "skip_final_backup", acctest.CtTrue), resource.TestCheckResourceAttr(resourceName, "storage_capacity", "32"), diff --git a/internal/service/gamelift/build_test.go b/internal/service/gamelift/build_test.go index 9ed91bd77617..801c6361e38a 100644 --- a/internal/service/gamelift/build_test.go +++ b/internal/service/gamelift/build_test.go @@ -61,7 +61,7 @@ func TestAccGameLiftBuild_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckBuildExists(ctx, resourceName, &conf), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "gamelift", regexache.MustCompile(`build/build-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "gamelift", regexache.MustCompile(`build/build-.+`)), resource.TestCheckResourceAttr(resourceName, "operating_system", "WINDOWS_2016"), resource.TestCheckResourceAttr(resourceName, "storage_location.#", "1"), resource.TestCheckResourceAttr(resourceName, "storage_location.0.bucket", bucketName), @@ -81,7 +81,7 @@ func TestAccGameLiftBuild_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckBuildExists(ctx, resourceName, &conf), resource.TestCheckResourceAttr(resourceName, names.AttrName, rNameUpdated), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "gamelift", regexache.MustCompile(`build/build-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "gamelift", regexache.MustCompile(`build/build-.+`)), resource.TestCheckResourceAttr(resourceName, "operating_system", "WINDOWS_2016"), resource.TestCheckResourceAttr(resourceName, "storage_location.#", "1"), resource.TestCheckResourceAttr(resourceName, "storage_location.0.bucket", bucketName), diff --git a/internal/service/gamelift/fleet_test.go b/internal/service/gamelift/fleet_test.go index ce36bead9cad..d9172ba4b1aa 100644 --- a/internal/service/gamelift/fleet_test.go +++ b/internal/service/gamelift/fleet_test.go @@ -204,7 +204,7 @@ func TestAccGameLiftFleet_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckFleetExists(ctx, resourceName, &conf), resource.TestCheckResourceAttrPair(resourceName, "build_id", "aws_gamelift_build.test", names.AttrID), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "gamelift", regexache.MustCompile(`fleet/fleet-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "gamelift", regexache.MustCompile(`fleet/fleet-.+`)), resource.TestCheckResourceAttr(resourceName, "certificate_configuration.#", "1"), resource.TestCheckResourceAttr(resourceName, "certificate_configuration.0.certificate_type", "DISABLED"), resource.TestCheckResourceAttr(resourceName, "ec2_instance_type", "c4.large"), @@ -232,7 +232,7 @@ func TestAccGameLiftFleet_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckFleetExists(ctx, resourceName, &conf), resource.TestCheckResourceAttrPair(resourceName, "build_id", "aws_gamelift_build.test", names.AttrID), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "gamelift", regexache.MustCompile(`fleet/fleet-.+`)), resource.TestCheckResourceAttr(resourceName, "ec2_instance_type", "c4.large"), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "gamelift", regexache.MustCompile(`fleet/fleet-.+`)), resource.TestCheckResourceAttr(resourceName, "ec2_instance_type", "c4.large"), resource.TestCheckResourceAttr(resourceName, "log_paths.#", "0"), resource.TestCheckResourceAttr(resourceName, names.AttrName, rNameUpdated), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, rNameUpdated), @@ -379,7 +379,7 @@ func TestAccGameLiftFleet_allFields(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckFleetExists(ctx, resourceName, &conf), resource.TestCheckResourceAttrPair(resourceName, "build_id", "aws_gamelift_build.test", names.AttrID), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "gamelift", regexache.MustCompile(`fleet/fleet-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "gamelift", regexache.MustCompile(`fleet/fleet-.+`)), resource.TestCheckResourceAttr(resourceName, "ec2_instance_type", "c4.large"), resource.TestCheckResourceAttr(resourceName, "fleet_type", "ON_DEMAND"), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), @@ -431,7 +431,7 @@ func TestAccGameLiftFleet_allFields(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckFleetExists(ctx, resourceName, &conf), resource.TestCheckResourceAttrPair(resourceName, "build_id", "aws_gamelift_build.test", names.AttrID), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "gamelift", regexache.MustCompile(`fleet/fleet-.+`)), resource.TestCheckResourceAttr(resourceName, "ec2_instance_type", "c4.large"), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "gamelift", regexache.MustCompile(`fleet/fleet-.+`)), resource.TestCheckResourceAttr(resourceName, "ec2_instance_type", "c4.large"), resource.TestCheckResourceAttr(resourceName, "fleet_type", "ON_DEMAND"), resource.TestCheckResourceAttr(resourceName, names.AttrName, rNameUpdated), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, desc), @@ -560,7 +560,7 @@ func TestAccGameLiftFleet_script(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckFleetExists(ctx, resourceName, &conf), resource.TestCheckResourceAttrPair(resourceName, "script_id", "aws_gamelift_script.test", names.AttrID), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "gamelift", regexache.MustCompile(`fleet/fleet-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "gamelift", regexache.MustCompile(`fleet/fleet-.+`)), resource.TestCheckResourceAttr(resourceName, "certificate_configuration.#", "1"), resource.TestCheckResourceAttr(resourceName, "certificate_configuration.0.certificate_type", "DISABLED"), resource.TestCheckResourceAttr(resourceName, "ec2_instance_type", "t2.micro"), diff --git a/internal/service/gamelift/game_server_group_test.go b/internal/service/gamelift/game_server_group_test.go index 130d49016d93..2b141a0ccc76 100644 --- a/internal/service/gamelift/game_server_group_test.go +++ b/internal/service/gamelift/game_server_group_test.go @@ -39,8 +39,8 @@ func TestAccGameLiftGameServerGroup_basic(t *testing.T) { Config: testAccGameServerGroupConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckGameServerGroupExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "gamelift", regexache.MustCompile(`gameservergroup/.+`)), - acctest.MatchResourceAttrRegionalARN(resourceName, "auto_scaling_group_arn", "autoscaling", regexache.MustCompile(`autoScalingGroup:.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "gamelift", regexache.MustCompile(`gameservergroup/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, "auto_scaling_group_arn", "autoscaling", regexache.MustCompile(`autoScalingGroup:.+`)), resource.TestCheckResourceAttr(resourceName, "auto_scaling_policy.#", "0"), resource.TestCheckResourceAttr(resourceName, "balancing_strategy", string(awstypes.BalancingStrategySpotPreferred)), resource.TestCheckResourceAttr(resourceName, "game_server_protection_policy", string(awstypes.GameServerProtectionPolicyNoProtection)), @@ -520,7 +520,7 @@ func TestAccGameLiftGameServerGroup_roleARN(t *testing.T) { Config: testAccGameServerGroupConfig_roleARN(rName, "test1"), Check: resource.ComposeTestCheckFunc( testAccCheckGameServerGroupExists(ctx, resourceName), - acctest.CheckResourceAttrGlobalARN(resourceName, names.AttrRoleARN, "iam", fmt.Sprintf(`role/%s-test1`, rName)), + acctest.CheckResourceAttrGlobalARN(ctx, resourceName, names.AttrRoleARN, "iam", fmt.Sprintf(`role/%s-test1`, rName)), resource.TestCheckResourceAttrPair(resourceName, names.AttrRoleARN, "aws_iam_role.test1", names.AttrARN), ), }, @@ -534,7 +534,7 @@ func TestAccGameLiftGameServerGroup_roleARN(t *testing.T) { Config: testAccGameServerGroupConfig_roleARN(rName, "test2"), Check: resource.ComposeTestCheckFunc( testAccCheckGameServerGroupExists(ctx, resourceName), - acctest.CheckResourceAttrGlobalARN(resourceName, names.AttrRoleARN, "iam", fmt.Sprintf(`role/%s-test2`, rName)), + acctest.CheckResourceAttrGlobalARN(ctx, resourceName, names.AttrRoleARN, "iam", fmt.Sprintf(`role/%s-test2`, rName)), resource.TestCheckResourceAttrPair(resourceName, names.AttrRoleARN, "aws_iam_role.test2", names.AttrARN), ), }, diff --git a/internal/service/gamelift/game_session_queue_test.go b/internal/service/gamelift/game_session_queue_test.go index 34f66437b340..19ca51115325 100644 --- a/internal/service/gamelift/game_session_queue_test.go +++ b/internal/service/gamelift/game_session_queue_test.go @@ -70,7 +70,7 @@ func TestAccGameLiftGameSessionQueue_basic(t *testing.T) { playerLatencyPolicies, timeoutInSeconds, "Custom Event Data"), Check: resource.ComposeTestCheckFunc( testAccCheckGameSessionQueueExists(ctx, resourceName, &conf), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "gamelift", regexache.MustCompile(`gamesessionqueue/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "gamelift", regexache.MustCompile(`gamesessionqueue/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, queueName), resource.TestCheckResourceAttr(resourceName, "destinations.#", "0"), resource.TestCheckResourceAttr(resourceName, "notification_target", ""), @@ -91,7 +91,7 @@ func TestAccGameLiftGameSessionQueue_basic(t *testing.T) { Config: testAccGameSessionQueueConfig_basic(uQueueName, uPlayerLatencyPolicies, uTimeoutInSeconds, "Custom Event Data"), Check: resource.ComposeTestCheckFunc( testAccCheckGameSessionQueueExists(ctx, resourceName, &conf), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "gamelift", regexache.MustCompile(`gamesessionqueue/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "gamelift", regexache.MustCompile(`gamesessionqueue/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, uQueueName), resource.TestCheckResourceAttr(resourceName, "destinations.#", "0"), resource.TestCheckResourceAttr(resourceName, "notification_target", ""), diff --git a/internal/service/gamelift/gamelift_test.go b/internal/service/gamelift/gamelift_test.go index f8aaee8a4f40..5013e2c1b17c 100644 --- a/internal/service/gamelift/gamelift_test.go +++ b/internal/service/gamelift/gamelift_test.go @@ -8,9 +8,9 @@ import ( "github.com/aws/aws-sdk-go-v2/aws" awstypes "github.com/aws/aws-sdk-go-v2/service/gamelift/types" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry" "github.com/hashicorp/terraform-provider-aws/internal/acctest" - "github.com/hashicorp/terraform-provider-aws/names" ) type testAccGame struct { @@ -50,20 +50,20 @@ func testAccSampleGame(region string) (*testAccGame, error) { // Account ID found from CloudTrail event (role ARN) after finishing tutorial in given region func testAccAccountIdByRegion(region string) (string, error) { m := map[string]string{ - names.APNortheast1RegionID: "120069834884", - names.APNortheast2RegionID: "805673136642", - names.APSouth1RegionID: "134975661615", - names.APSoutheast1RegionID: "077577004113", - names.APSoutheast2RegionID: "112188327105", - names.CACentral1RegionID: "800535022691", - names.EUCentral1RegionID: "797584052317", - names.EUWest1RegionID: "319803218673", - names.EUWest2RegionID: "937342764187", - names.SAEast1RegionID: "028872612690", - names.USEast1RegionID: "783764748367", - names.USEast2RegionID: "415729564621", - names.USWest1RegionID: "715879310420", - names.USWest2RegionID: "741061592171", + endpoints.ApNortheast1RegionID: "120069834884", + endpoints.ApNortheast2RegionID: "805673136642", + endpoints.ApSouth1RegionID: "134975661615", + endpoints.ApSoutheast1RegionID: "077577004113", + endpoints.ApSoutheast2RegionID: "112188327105", + endpoints.CaCentral1RegionID: "800535022691", + endpoints.EuCentral1RegionID: "797584052317", + endpoints.EuWest1RegionID: "319803218673", + endpoints.EuWest2RegionID: "937342764187", + endpoints.SaEast1RegionID: "028872612690", + endpoints.UsEast1RegionID: "783764748367", + endpoints.UsEast2RegionID: "415729564621", + endpoints.UsWest1RegionID: "715879310420", + endpoints.UsWest2RegionID: "741061592171", } if accId, ok := m[region]; ok { diff --git a/internal/service/gamelift/script_test.go b/internal/service/gamelift/script_test.go index 18dbf2c2e765..696182c9fb2e 100644 --- a/internal/service/gamelift/script_test.go +++ b/internal/service/gamelift/script_test.go @@ -44,7 +44,7 @@ func TestAccGameLiftScript_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckScriptExists(ctx, resourceName, &conf), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "gamelift", regexache.MustCompile(`script/script-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "gamelift", regexache.MustCompile(`script/script-.+`)), resource.TestCheckResourceAttr(resourceName, "storage_location.#", "1"), resource.TestCheckResourceAttr(resourceName, "storage_location.0.bucket", fmt.Sprintf("prod-gamescale-scripts-%s", region)), resource.TestCheckResourceAttrSet(resourceName, "storage_location.0.key"), @@ -62,7 +62,7 @@ func TestAccGameLiftScript_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckScriptExists(ctx, resourceName, &conf), resource.TestCheckResourceAttr(resourceName, names.AttrName, rNameUpdated), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "gamelift", regexache.MustCompile(`script/script-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "gamelift", regexache.MustCompile(`script/script-.+`)), resource.TestCheckResourceAttr(resourceName, "storage_location.#", "1"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), diff --git a/internal/service/gamelift/service_endpoints_gen_test.go b/internal/service/gamelift/service_endpoints_gen_test.go index c22cb9bbf14b..7f2be02a7bfd 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 b468527e4d1a..79eace343887 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/glacier/vault.go b/internal/service/glacier/vault.go index e455ddfd4051..0de519dae88a 100644 --- a/internal/service/glacier/vault.go +++ b/internal/service/glacier/vault.go @@ -179,7 +179,7 @@ func resourceVaultRead(ctx context.Context, d *schema.ResourceData, meta interfa d.Set("access_policy", nil) d.Set(names.AttrARN, output.VaultARN) - d.Set(names.AttrLocation, fmt.Sprintf("/%s/vaults/%s", meta.(*conns.AWSClient).AccountID, d.Id())) + d.Set(names.AttrLocation, fmt.Sprintf("/%s/vaults/%s", meta.(*conns.AWSClient).AccountID(ctx), d.Id())) d.Set(names.AttrName, output.VaultName) d.Set("notification", nil) diff --git a/internal/service/glacier/vault_test.go b/internal/service/glacier/vault_test.go index 734a9eae9fee..650dd8a98afc 100644 --- a/internal/service/glacier/vault_test.go +++ b/internal/service/glacier/vault_test.go @@ -38,7 +38,7 @@ func TestAccGlacierVault_basic(t *testing.T) { testAccCheckVaultExists(ctx, resourceName, &vault), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "glacier", regexache.MustCompile(`vaults/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "glacier", regexache.MustCompile(`vaults/.+`)), resource.TestCheckResourceAttr(resourceName, "notification.#", "0"), resource.TestCheckResourceAttr(resourceName, "access_policy", ""), ), @@ -231,7 +231,7 @@ func TestAccGlacierVault_ignoreEquivalent(t *testing.T) { testAccCheckVaultExists(ctx, resourceName, &vault), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "glacier", regexache.MustCompile(`vaults/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "glacier", regexache.MustCompile(`vaults/.+`)), resource.TestCheckResourceAttr(resourceName, "notification.#", "0"), resource.TestMatchResourceAttr(resourceName, "access_policy", regexache.MustCompile(fmt.Sprintf(`"Sid":"%s"`, rName))), ), diff --git a/internal/service/globalaccelerator/custom_routing_endpoint_group.go b/internal/service/globalaccelerator/custom_routing_endpoint_group.go index 4acc5ce95ecd..350f94906c2a 100644 --- a/internal/service/globalaccelerator/custom_routing_endpoint_group.go +++ b/internal/service/globalaccelerator/custom_routing_endpoint_group.go @@ -111,7 +111,7 @@ func resourceCustomRoutingEndpointGroupCreate(ctx context.Context, d *schema.Res input := &globalaccelerator.CreateCustomRoutingEndpointGroupInput{ DestinationConfigurations: expandCustomRoutingDestinationConfigurations(d.Get("destination_configuration").(*schema.Set).List()), - EndpointGroupRegion: aws.String(meta.(*conns.AWSClient).Region), + EndpointGroupRegion: aws.String(meta.(*conns.AWSClient).Region(ctx)), IdempotencyToken: aws.String(id.UniqueId()), ListenerArn: aws.String(d.Get("listener_arn").(string)), } diff --git a/internal/service/globalaccelerator/endpoint_group.go b/internal/service/globalaccelerator/endpoint_group.go index 8fc97f32bb82..b1e18e2cceae 100644 --- a/internal/service/globalaccelerator/endpoint_group.go +++ b/internal/service/globalaccelerator/endpoint_group.go @@ -154,7 +154,7 @@ func resourceEndpointGroupCreate(ctx context.Context, d *schema.ResourceData, me conn := meta.(*conns.AWSClient).GlobalAcceleratorClient(ctx) input := &globalaccelerator.CreateEndpointGroupInput{ - EndpointGroupRegion: aws.String(meta.(*conns.AWSClient).Region), + EndpointGroupRegion: aws.String(meta.(*conns.AWSClient).Region(ctx)), IdempotencyToken: aws.String(id.UniqueId()), ListenerArn: aws.String(d.Get("listener_arn").(string)), } diff --git a/internal/service/globalaccelerator/endpoint_group_test.go b/internal/service/globalaccelerator/endpoint_group_test.go index 77509bf2a519..a03a938fd3f6 100644 --- a/internal/service/globalaccelerator/endpoint_group_test.go +++ b/internal/service/globalaccelerator/endpoint_group_test.go @@ -39,14 +39,14 @@ func TestAccGlobalAcceleratorEndpointGroup_basic(t *testing.T) { Config: testAccEndpointGroupConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckEndpointGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "globalaccelerator", regexache.MustCompile(`accelerator/[^/]+/listener/[^/]+/endpoint-group/[^/]+`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "globalaccelerator", regexache.MustCompile(`accelerator/[^/]+/listener/[^/]+/endpoint-group/[^/]+`)), resource.TestCheckResourceAttr(resourceName, "endpoint_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "endpoint_group_region", acctest.Region()), resource.TestCheckResourceAttr(resourceName, "health_check_interval_seconds", "30"), resource.TestCheckResourceAttr(resourceName, "health_check_path", ""), resource.TestCheckResourceAttr(resourceName, "health_check_port", "80"), resource.TestCheckResourceAttr(resourceName, "health_check_protocol", "TCP"), - acctest.MatchResourceAttrGlobalARN(resourceName, "listener_arn", "globalaccelerator", regexache.MustCompile(`accelerator/[^/]+/listener/[^/]+`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, "listener_arn", "globalaccelerator", regexache.MustCompile(`accelerator/[^/]+/listener/[^/]+`)), resource.TestCheckResourceAttr(resourceName, "port_override.#", "0"), resource.TestCheckResourceAttr(resourceName, "threshold_count", "3"), resource.TestCheckResourceAttr(resourceName, "traffic_dial_percentage", "100"), @@ -104,7 +104,7 @@ func TestAccGlobalAcceleratorEndpointGroup_ALBEndpoint_clientIP(t *testing.T) { Config: testAccEndpointGroupConfig_albClientIP(rName, false, 20), Check: resource.ComposeTestCheckFunc( testAccCheckEndpointGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "globalaccelerator", regexache.MustCompile(`accelerator/[^/]+/listener/[^/]+/endpoint-group/[^/]+`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "globalaccelerator", regexache.MustCompile(`accelerator/[^/]+/listener/[^/]+/endpoint-group/[^/]+`)), resource.TestCheckResourceAttr(resourceName, "endpoint_configuration.#", "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "endpoint_configuration.*", map[string]string{ "attachment_arn": "", @@ -117,7 +117,7 @@ func TestAccGlobalAcceleratorEndpointGroup_ALBEndpoint_clientIP(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "health_check_path", "/"), resource.TestCheckResourceAttr(resourceName, "health_check_port", "80"), resource.TestCheckResourceAttr(resourceName, "health_check_protocol", "HTTP"), - acctest.MatchResourceAttrGlobalARN(resourceName, "listener_arn", "globalaccelerator", regexache.MustCompile(`accelerator/[^/]+/listener/[^/]+`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, "listener_arn", "globalaccelerator", regexache.MustCompile(`accelerator/[^/]+/listener/[^/]+`)), resource.TestCheckResourceAttr(resourceName, "port_override.#", "0"), resource.TestCheckResourceAttr(resourceName, "threshold_count", "3"), resource.TestCheckResourceAttr(resourceName, "traffic_dial_percentage", "100"), @@ -132,7 +132,7 @@ func TestAccGlobalAcceleratorEndpointGroup_ALBEndpoint_clientIP(t *testing.T) { Config: testAccEndpointGroupConfig_albClientIP(rName, true, 0), Check: resource.ComposeTestCheckFunc( testAccCheckEndpointGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "globalaccelerator", regexache.MustCompile(`accelerator/[^/]+/listener/[^/]+/endpoint-group/[^/]+`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "globalaccelerator", regexache.MustCompile(`accelerator/[^/]+/listener/[^/]+/endpoint-group/[^/]+`)), resource.TestCheckResourceAttr(resourceName, "endpoint_configuration.#", "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "endpoint_configuration.*", map[string]string{ "client_ip_preservation_enabled": acctest.CtTrue, @@ -144,7 +144,7 @@ func TestAccGlobalAcceleratorEndpointGroup_ALBEndpoint_clientIP(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "health_check_path", "/"), resource.TestCheckResourceAttr(resourceName, "health_check_port", "80"), resource.TestCheckResourceAttr(resourceName, "health_check_protocol", "HTTP"), - acctest.MatchResourceAttrGlobalARN(resourceName, "listener_arn", "globalaccelerator", regexache.MustCompile(`accelerator/[^/]+/listener/[^/]+`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, "listener_arn", "globalaccelerator", regexache.MustCompile(`accelerator/[^/]+/listener/[^/]+`)), resource.TestCheckResourceAttr(resourceName, "port_override.#", "0"), resource.TestCheckResourceAttr(resourceName, "threshold_count", "3"), resource.TestCheckResourceAttr(resourceName, "traffic_dial_percentage", "100"), @@ -180,7 +180,7 @@ func TestAccGlobalAcceleratorEndpointGroup_instanceEndpoint(t *testing.T) { Config: testAccEndpointGroupConfig_instance(rName), Check: resource.ComposeTestCheckFunc( testAccCheckEndpointGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "globalaccelerator", regexache.MustCompile(`accelerator/[^/]+/listener/[^/]+/endpoint-group/[^/]+`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "globalaccelerator", regexache.MustCompile(`accelerator/[^/]+/listener/[^/]+/endpoint-group/[^/]+`)), resource.TestCheckResourceAttr(resourceName, "endpoint_configuration.#", "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "endpoint_configuration.*", map[string]string{ "client_ip_preservation_enabled": acctest.CtTrue, @@ -192,7 +192,7 @@ func TestAccGlobalAcceleratorEndpointGroup_instanceEndpoint(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "health_check_path", "/"), resource.TestCheckResourceAttr(resourceName, "health_check_port", "80"), resource.TestCheckResourceAttr(resourceName, "health_check_protocol", "HTTP"), - acctest.MatchResourceAttrGlobalARN(resourceName, "listener_arn", "globalaccelerator", regexache.MustCompile(`accelerator/[^/]+/listener/[^/]+`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, "listener_arn", "globalaccelerator", regexache.MustCompile(`accelerator/[^/]+/listener/[^/]+`)), resource.TestCheckResourceAttr(resourceName, "port_override.#", "0"), resource.TestCheckResourceAttr(resourceName, "threshold_count", "3"), resource.TestCheckResourceAttr(resourceName, "traffic_dial_percentage", "100"), @@ -231,7 +231,7 @@ func TestAccGlobalAcceleratorEndpointGroup_multiRegion(t *testing.T) { Config: testAccEndpointGroupConfig_multiRegion(rName), Check: resource.ComposeTestCheckFunc( testAccCheckEndpointGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "globalaccelerator", regexache.MustCompile(`accelerator/[^/]+/listener/[^/]+/endpoint-group/[^/]+`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "globalaccelerator", regexache.MustCompile(`accelerator/[^/]+/listener/[^/]+/endpoint-group/[^/]+`)), resource.TestCheckResourceAttr(resourceName, "endpoint_configuration.#", "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "endpoint_configuration.*", map[string]string{ "client_ip_preservation_enabled": acctest.CtFalse, @@ -243,7 +243,7 @@ func TestAccGlobalAcceleratorEndpointGroup_multiRegion(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "health_check_path", "/foo"), resource.TestCheckResourceAttr(resourceName, "health_check_port", "8080"), resource.TestCheckResourceAttr(resourceName, "health_check_protocol", "HTTPS"), - acctest.MatchResourceAttrGlobalARN(resourceName, "listener_arn", "globalaccelerator", regexache.MustCompile(`accelerator/[^/]+/listener/[^/]+`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, "listener_arn", "globalaccelerator", regexache.MustCompile(`accelerator/[^/]+/listener/[^/]+`)), resource.TestCheckResourceAttr(resourceName, "port_override.#", "0"), resource.TestCheckResourceAttr(resourceName, "threshold_count", "1"), resource.TestCheckResourceAttr(resourceName, "traffic_dial_percentage", "0"), @@ -274,14 +274,14 @@ func TestAccGlobalAcceleratorEndpointGroup_portOverrides(t *testing.T) { Config: testAccEndpointGroupConfig_portOverrides(rName), Check: resource.ComposeTestCheckFunc( testAccCheckEndpointGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "globalaccelerator", regexache.MustCompile(`accelerator/[^/]+/listener/[^/]+/endpoint-group/[^/]+`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "globalaccelerator", regexache.MustCompile(`accelerator/[^/]+/listener/[^/]+/endpoint-group/[^/]+`)), resource.TestCheckResourceAttr(resourceName, "endpoint_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "endpoint_group_region", acctest.Region()), resource.TestCheckResourceAttr(resourceName, "health_check_interval_seconds", "30"), resource.TestCheckResourceAttr(resourceName, "health_check_path", ""), resource.TestCheckResourceAttr(resourceName, "health_check_port", "80"), resource.TestCheckResourceAttr(resourceName, "health_check_protocol", "TCP"), - acctest.MatchResourceAttrGlobalARN(resourceName, "listener_arn", "globalaccelerator", regexache.MustCompile(`accelerator/[^/]+/listener/[^/]+`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, "listener_arn", "globalaccelerator", regexache.MustCompile(`accelerator/[^/]+/listener/[^/]+`)), resource.TestCheckResourceAttr(resourceName, "port_override.#", "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "port_override.*", map[string]string{ "endpoint_port": "8081", @@ -295,14 +295,14 @@ func TestAccGlobalAcceleratorEndpointGroup_portOverrides(t *testing.T) { Config: testAccEndpointGroupConfig_portOverridesUpdated(rName), Check: resource.ComposeTestCheckFunc( testAccCheckEndpointGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "globalaccelerator", regexache.MustCompile(`accelerator/[^/]+/listener/[^/]+/endpoint-group/[^/]+`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "globalaccelerator", regexache.MustCompile(`accelerator/[^/]+/listener/[^/]+/endpoint-group/[^/]+`)), resource.TestCheckResourceAttr(resourceName, "endpoint_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "endpoint_group_region", acctest.Region()), resource.TestCheckResourceAttr(resourceName, "health_check_interval_seconds", "30"), resource.TestCheckResourceAttr(resourceName, "health_check_path", ""), resource.TestCheckResourceAttr(resourceName, "health_check_port", "80"), resource.TestCheckResourceAttr(resourceName, "health_check_protocol", "TCP"), - acctest.MatchResourceAttrGlobalARN(resourceName, "listener_arn", "globalaccelerator", regexache.MustCompile(`accelerator/[^/]+/listener/[^/]+`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, "listener_arn", "globalaccelerator", regexache.MustCompile(`accelerator/[^/]+/listener/[^/]+`)), resource.TestCheckResourceAttr(resourceName, "port_override.#", "2"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "port_override.*", map[string]string{ "endpoint_port": "8081", @@ -342,7 +342,7 @@ func TestAccGlobalAcceleratorEndpointGroup_tcpHealthCheckProtocol(t *testing.T) Config: testAccEndpointGroupConfig_tcpHealthCheckProtocol(rName), Check: resource.ComposeTestCheckFunc( testAccCheckEndpointGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "globalaccelerator", regexache.MustCompile(`accelerator/[^/]+/listener/[^/]+/endpoint-group/[^/]+`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "globalaccelerator", regexache.MustCompile(`accelerator/[^/]+/listener/[^/]+/endpoint-group/[^/]+`)), resource.TestCheckResourceAttr(resourceName, "endpoint_configuration.#", "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "endpoint_configuration.*", map[string]string{ "client_ip_preservation_enabled": acctest.CtFalse, @@ -354,7 +354,7 @@ func TestAccGlobalAcceleratorEndpointGroup_tcpHealthCheckProtocol(t *testing.T) resource.TestCheckResourceAttr(resourceName, "health_check_interval_seconds", "30"), resource.TestCheckResourceAttr(resourceName, "health_check_port", "1234"), resource.TestCheckResourceAttr(resourceName, "health_check_protocol", "TCP"), - acctest.MatchResourceAttrGlobalARN(resourceName, "listener_arn", "globalaccelerator", regexache.MustCompile(`accelerator/[^/]+/listener/[^/]+`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, "listener_arn", "globalaccelerator", regexache.MustCompile(`accelerator/[^/]+/listener/[^/]+`)), resource.TestCheckResourceAttr(resourceName, "port_override.#", "0"), resource.TestCheckResourceAttr(resourceName, "threshold_count", "3"), resource.TestCheckResourceAttr(resourceName, "traffic_dial_percentage", "100"), @@ -386,14 +386,14 @@ func TestAccGlobalAcceleratorEndpointGroup_update(t *testing.T) { Config: testAccEndpointGroupConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckEndpointGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "globalaccelerator", regexache.MustCompile(`accelerator/[^/]+/listener/[^/]+/endpoint-group/[^/]+`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "globalaccelerator", regexache.MustCompile(`accelerator/[^/]+/listener/[^/]+/endpoint-group/[^/]+`)), resource.TestCheckResourceAttr(resourceName, "endpoint_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "endpoint_group_region", acctest.Region()), resource.TestCheckResourceAttr(resourceName, "health_check_interval_seconds", "30"), resource.TestCheckResourceAttr(resourceName, "health_check_path", ""), resource.TestCheckResourceAttr(resourceName, "health_check_port", "80"), resource.TestCheckResourceAttr(resourceName, "health_check_protocol", "TCP"), - acctest.MatchResourceAttrGlobalARN(resourceName, "listener_arn", "globalaccelerator", regexache.MustCompile(`accelerator/[^/]+/listener/[^/]+`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, "listener_arn", "globalaccelerator", regexache.MustCompile(`accelerator/[^/]+/listener/[^/]+`)), resource.TestCheckResourceAttr(resourceName, "port_override.#", "0"), resource.TestCheckResourceAttr(resourceName, "threshold_count", "3"), resource.TestCheckResourceAttr(resourceName, "traffic_dial_percentage", "100"), @@ -403,7 +403,7 @@ func TestAccGlobalAcceleratorEndpointGroup_update(t *testing.T) { Config: testAccEndpointGroupConfig_updated(rName), Check: resource.ComposeTestCheckFunc( testAccCheckEndpointGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "globalaccelerator", regexache.MustCompile(`accelerator/[^/]+/listener/[^/]+/endpoint-group/[^/]+`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "globalaccelerator", regexache.MustCompile(`accelerator/[^/]+/listener/[^/]+/endpoint-group/[^/]+`)), resource.TestCheckResourceAttr(resourceName, "endpoint_configuration.#", "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "endpoint_configuration.*", map[string]string{ "client_ip_preservation_enabled": acctest.CtFalse, @@ -415,7 +415,7 @@ func TestAccGlobalAcceleratorEndpointGroup_update(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "health_check_path", "/foo"), resource.TestCheckResourceAttr(resourceName, "health_check_port", "8080"), resource.TestCheckResourceAttr(resourceName, "health_check_protocol", "HTTPS"), - acctest.MatchResourceAttrGlobalARN(resourceName, "listener_arn", "globalaccelerator", regexache.MustCompile(`accelerator/[^/]+/listener/[^/]+`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, "listener_arn", "globalaccelerator", regexache.MustCompile(`accelerator/[^/]+/listener/[^/]+`)), resource.TestCheckResourceAttr(resourceName, "port_override.#", "0"), resource.TestCheckResourceAttr(resourceName, "threshold_count", "1"), resource.TestCheckResourceAttr(resourceName, "traffic_dial_percentage", "0"), @@ -451,7 +451,7 @@ func TestAccGlobalAcceleratorEndpointGroup_crossAccountAttachment(t *testing.T) Config: testAccEndpointGroupConfig_crossAccountAttachement(rName), Check: resource.ComposeTestCheckFunc( testAccCheckEndpointGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "globalaccelerator", regexache.MustCompile(`accelerator/[^/]+/listener/[^/]+/endpoint-group/[^/]+`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "globalaccelerator", regexache.MustCompile(`accelerator/[^/]+/listener/[^/]+/endpoint-group/[^/]+`)), resource.TestCheckResourceAttr(resourceName, "endpoint_configuration.#", "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "endpoint_configuration.*", map[string]string{ "client_ip_preservation_enabled": acctest.CtFalse, diff --git a/internal/service/globalaccelerator/service_endpoints_gen_test.go b/internal/service/globalaccelerator/service_endpoints_gen_test.go index 7cf86ae2a3cb..e3c31fbaa331 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/globalaccelerator/service_package.go b/internal/service/globalaccelerator/service_package.go index 3a1fa0764610..8b7359a6edf2 100644 --- a/internal/service/globalaccelerator/service_package.go +++ b/internal/service/globalaccelerator/service_package.go @@ -23,12 +23,12 @@ func (p *servicePackage) NewClient(ctx context.Context, config map[string]any) ( func(o *globalaccelerator.Options) { if config["partition"].(string) == endpoints.AwsPartitionID { // Global Accelerator endpoint is only available in AWS Commercial us-west-2 Region. - if cfg.Region != names.USWest2RegionID { + if cfg.Region != endpoints.UsWest2RegionID { tflog.Info(ctx, "overriding region", map[string]any{ "original_region": cfg.Region, - "override_region": names.USWest2RegionID, + "override_region": endpoints.UsWest2RegionID, }) - o.Region = names.USWest2RegionID + o.Region = endpoints.UsWest2RegionID } } }, diff --git a/internal/service/glue/catalog_database.go b/internal/service/glue/catalog_database.go index 40af7a2b187f..f3618a7bafd8 100644 --- a/internal/service/glue/catalog_database.go +++ b/internal/service/glue/catalog_database.go @@ -155,7 +155,7 @@ func ResourceCatalogDatabase() *schema.Resource { func resourceCatalogDatabaseCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics conn := meta.(*conns.AWSClient).GlueClient(ctx) - catalogID := createCatalogID(d, meta.(*conns.AWSClient).AccountID) + catalogID := createCatalogID(d, meta.(*conns.AWSClient).AccountID(ctx)) name := d.Get(names.AttrName).(string) dbInput := &awstypes.DatabaseInput{ @@ -275,8 +275,8 @@ func resourceCatalogDatabaseRead(ctx context.Context, d *schema.ResourceData, me databaseArn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "glue", - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("database/%s", aws.ToString(database.Name)), }.String() d.Set(names.AttrARN, databaseArn) diff --git a/internal/service/glue/catalog_database_test.go b/internal/service/glue/catalog_database_test.go index a3dcdd0e096b..dee18fa6751f 100644 --- a/internal/service/glue/catalog_database_test.go +++ b/internal/service/glue/catalog_database_test.go @@ -36,7 +36,7 @@ func TestAccGlueCatalogDatabase_full(t *testing.T) { Destroy: false, Check: resource.ComposeAggregateTestCheckFunc( testAccCheckCatalogDatabaseExists(ctx, resourceName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "glue", fmt.Sprintf("database/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "glue", fmt.Sprintf("database/%s", rName)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), resource.TestCheckResourceAttr(resourceName, "location_uri", ""), @@ -212,10 +212,10 @@ func TestAccGlueCatalogDatabase_federatedDatabase(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckCatalogDatabaseExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "glue", fmt.Sprintf("database/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "glue", fmt.Sprintf("database/%s", rName)), resource.TestCheckResourceAttr(resourceName, "federated_database.#", "1"), resource.TestCheckResourceAttr(resourceName, "federated_database.0.connection_name", "aws:redshift"), - acctest.MatchResourceAttrRegionalARN(resourceName, "federated_database.0.identifier", "redshift", regexache.MustCompile(`datashare:+.`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, "federated_database.0.identifier", "redshift", regexache.MustCompile(`datashare:+.`)), ), }, { diff --git a/internal/service/glue/catalog_table.go b/internal/service/glue/catalog_table.go index 5f8cce445d11..c831feada01d 100644 --- a/internal/service/glue/catalog_table.go +++ b/internal/service/glue/catalog_table.go @@ -407,7 +407,7 @@ func ReadTableID(id string) (string, string, string, error) { func resourceCatalogTableCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics conn := meta.(*conns.AWSClient).GlueClient(ctx) - catalogID := createCatalogID(d, meta.(*conns.AWSClient).AccountID) + catalogID := createCatalogID(d, meta.(*conns.AWSClient).AccountID(ctx)) dbName := d.Get(names.AttrDatabaseName).(string) name := d.Get(names.AttrName).(string) @@ -453,8 +453,8 @@ func resourceCatalogTableRead(ctx context.Context, d *schema.ResourceData, meta tableArn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "glue", - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("table/%s/%s", dbName, aws.ToString(table.Name)), }.String() d.Set(names.AttrARN, tableArn) diff --git a/internal/service/glue/catalog_table_data_source.go b/internal/service/glue/catalog_table_data_source.go index 3fea41664b8b..800acb4129d2 100644 --- a/internal/service/glue/catalog_table_data_source.go +++ b/internal/service/glue/catalog_table_data_source.go @@ -335,7 +335,7 @@ func dataSourceCatalogTableRead(ctx context.Context, d *schema.ResourceData, met conn := meta.(*conns.AWSClient).GlueClient(ctx) - catalogID := createCatalogID(d, meta.(*conns.AWSClient).AccountID) + catalogID := createCatalogID(d, meta.(*conns.AWSClient).AccountID(ctx)) dbName := d.Get(names.AttrDatabaseName).(string) name := d.Get(names.AttrName).(string) @@ -369,8 +369,8 @@ func dataSourceCatalogTableRead(ctx context.Context, d *schema.ResourceData, met tableArn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "glue", - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("table/%s/%s", dbName, aws.ToString(table.Name)), }.String() d.Set(names.AttrARN, tableArn) diff --git a/internal/service/glue/catalog_table_optimizer_test.go b/internal/service/glue/catalog_table_optimizer_test.go index 45956ceb5dde..44bc1a611d70 100644 --- a/internal/service/glue/catalog_table_optimizer_test.go +++ b/internal/service/glue/catalog_table_optimizer_test.go @@ -39,7 +39,7 @@ func testAccCatalogTableOptimizer_basic(t *testing.T) { Config: testAccCatalogTableOptimizerConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckCatalogTableOptimizerExists(ctx, resourceName, &catalogTableOptimizer), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrCatalogID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrCatalogID), resource.TestCheckResourceAttr(resourceName, names.AttrDatabaseName, rName), resource.TestCheckResourceAttr(resourceName, names.AttrTableName, rName), resource.TestCheckResourceAttr(resourceName, names.AttrType, "compaction"), @@ -75,7 +75,7 @@ func testAccCatalogTableOptimizer_update(t *testing.T) { Config: testAccCatalogTableOptimizerConfig_update(rName, true), Check: resource.ComposeTestCheckFunc( testAccCheckCatalogTableOptimizerExists(ctx, resourceName, &catalogTableOptimizer), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrCatalogID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrCatalogID), resource.TestCheckResourceAttr(resourceName, names.AttrDatabaseName, rName), resource.TestCheckResourceAttr(resourceName, names.AttrTableName, rName), resource.TestCheckResourceAttr(resourceName, names.AttrType, "compaction"), @@ -86,7 +86,7 @@ func testAccCatalogTableOptimizer_update(t *testing.T) { Config: testAccCatalogTableOptimizerConfig_update(rName, false), Check: resource.ComposeTestCheckFunc( testAccCheckCatalogTableOptimizerExists(ctx, resourceName, &catalogTableOptimizer), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrCatalogID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrCatalogID), resource.TestCheckResourceAttr(resourceName, names.AttrDatabaseName, rName), resource.TestCheckResourceAttr(resourceName, names.AttrTableName, rName), resource.TestCheckResourceAttr(resourceName, names.AttrType, "compaction"), diff --git a/internal/service/glue/catalog_table_test.go b/internal/service/glue/catalog_table_test.go index d2df7a739de3..4bbdf86541bc 100644 --- a/internal/service/glue/catalog_table_test.go +++ b/internal/service/glue/catalog_table_test.go @@ -44,12 +44,12 @@ func TestAccGlueCatalogTable_basic(t *testing.T) { Destroy: false, Check: resource.ComposeTestCheckFunc( testAccCheckCatalogTableExists(ctx, resourceName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "glue", fmt.Sprintf("table/%s/%s", rName, rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "glue", fmt.Sprintf("table/%s/%s", rName, rName)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, names.AttrDatabaseName, rName), resource.TestCheckResourceAttr(resourceName, "partition_keys.#", "0"), resource.TestCheckResourceAttr(resourceName, "target_table.#", "0"), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrCatalogID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrCatalogID), resource.TestCheckResourceAttr(resourceName, "storage_descriptor.#", "0"), resource.TestCheckResourceAttr(resourceName, "partition_index.#", "0"), ), @@ -553,7 +553,7 @@ func TestAccGlueCatalogTable_partitionIndexesSingle(t *testing.T) { Destroy: false, Check: resource.ComposeTestCheckFunc( testAccCheckCatalogTableExists(ctx, resourceName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "glue", fmt.Sprintf("table/%s/%s", rName, rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "glue", fmt.Sprintf("table/%s/%s", rName, rName)), resource.TestCheckResourceAttr(resourceName, "partition_index.#", "1"), resource.TestCheckResourceAttr(resourceName, "partition_index.0.index_name", rName), resource.TestCheckResourceAttr(resourceName, "partition_index.0.index_status", "ACTIVE"), @@ -585,7 +585,7 @@ func TestAccGlueCatalogTable_partitionIndexesMultiple(t *testing.T) { Destroy: false, Check: resource.ComposeTestCheckFunc( testAccCheckCatalogTableExists(ctx, resourceName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "glue", fmt.Sprintf("table/%s/%s", rName, rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "glue", fmt.Sprintf("table/%s/%s", rName, rName)), resource.TestCheckResourceAttr(resourceName, "partition_index.#", "2"), resource.TestCheckResourceAttr(resourceName, "partition_index.0.index_name", rName), resource.TestCheckResourceAttr(resourceName, "partition_index.0.index_status", "ACTIVE"), diff --git a/internal/service/glue/connection.go b/internal/service/glue/connection.go index 23f0e216b2f9..7a1239d827b0 100644 --- a/internal/service/glue/connection.go +++ b/internal/service/glue/connection.go @@ -122,7 +122,7 @@ func resourceConnectionCreate(ctx context.Context, d *schema.ResourceData, meta if v, ok := d.GetOkExists(names.AttrCatalogID); ok { catalogID = v.(string) } else { - catalogID = meta.(*conns.AWSClient).AccountID + catalogID = meta.(*conns.AWSClient).AccountID(ctx) } name := d.Get(names.AttrName).(string) @@ -166,8 +166,8 @@ func resourceConnectionRead(ctx context.Context, d *schema.ResourceData, meta in connectionArn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "glue", - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("connection/%s", connectionName), }.String() d.Set(names.AttrARN, connectionArn) diff --git a/internal/service/glue/connection_data_source.go b/internal/service/glue/connection_data_source.go index acfc199fde6d..f0681d689cb0 100644 --- a/internal/service/glue/connection_data_source.go +++ b/internal/service/glue/connection_data_source.go @@ -117,8 +117,8 @@ func dataSourceConnectionRead(ctx context.Context, d *schema.ResourceData, meta connectionArn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "glue", - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("connection/%s", connectionName), }.String() d.Set(names.AttrARN, connectionArn) diff --git a/internal/service/glue/connection_test.go b/internal/service/glue/connection_test.go index 538774ca1474..53fb59592dbc 100644 --- a/internal/service/glue/connection_test.go +++ b/internal/service/glue/connection_test.go @@ -39,7 +39,7 @@ func TestAccGlueConnection_basic(t *testing.T) { Config: testAccConnectionConfig_required(rName, jdbcConnectionUrl), Check: resource.ComposeTestCheckFunc( testAccCheckConnectionExists(ctx, resourceName, &connection), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "glue", fmt.Sprintf("connection/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "glue", fmt.Sprintf("connection/%s", rName)), resource.TestCheckResourceAttr(resourceName, "connection_properties.%", "3"), resource.TestCheckResourceAttr(resourceName, "connection_properties.JDBC_CONNECTION_URL", jdbcConnectionUrl), resource.TestCheckResourceAttr(resourceName, "connection_properties.PASSWORD", "testpassword"), diff --git a/internal/service/glue/crawler.go b/internal/service/glue/crawler.go index daa062f28fdc..79c7fd97438d 100644 --- a/internal/service/glue/crawler.go +++ b/internal/service/glue/crawler.go @@ -500,8 +500,8 @@ func resourceCrawlerRead(ctx context.Context, d *schema.ResourceData, meta inter crawlerARN := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "glue", - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("crawler/%s", d.Id()), }.String() d.Set(names.AttrARN, crawlerARN) diff --git a/internal/service/glue/crawler_test.go b/internal/service/glue/crawler_test.go index a810ecbe7d26..b319da2ddfe1 100644 --- a/internal/service/glue/crawler_test.go +++ b/internal/service/glue/crawler_test.go @@ -41,7 +41,7 @@ func TestAccGlueCrawler_dynamoDBTarget(t *testing.T) { Config: testAccCrawlerConfig_dynamoDBTarget(rName, "table1"), Check: resource.ComposeTestCheckFunc( testAccCheckCrawlerExists(ctx, resourceName, &crawler), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "glue", fmt.Sprintf("crawler/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "glue", fmt.Sprintf("crawler/%s", rName)), resource.TestCheckResourceAttr(resourceName, "classifiers.#", "0"), resource.TestCheckResourceAttr(resourceName, names.AttrConfiguration, ""), resource.TestCheckResourceAttr(resourceName, names.AttrDatabaseName, rName), @@ -65,7 +65,7 @@ func TestAccGlueCrawler_dynamoDBTarget(t *testing.T) { Config: testAccCrawlerConfig_dynamoDBTarget(rName, "table2"), Check: resource.ComposeTestCheckFunc( testAccCheckCrawlerExists(ctx, resourceName, &crawler), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "glue", fmt.Sprintf("crawler/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "glue", fmt.Sprintf("crawler/%s", rName)), resource.TestCheckResourceAttr(resourceName, "classifiers.#", "0"), resource.TestCheckResourceAttr(resourceName, names.AttrConfiguration, ""), resource.TestCheckResourceAttr(resourceName, names.AttrDatabaseName, rName), @@ -202,7 +202,7 @@ func TestAccGlueCrawler_jdbcTarget(t *testing.T) { Config: testAccCrawlerConfig_jdbcTarget(rName, jdbcConnectionUrl, "database-name/%"), Check: resource.ComposeTestCheckFunc( testAccCheckCrawlerExists(ctx, resourceName, &crawler), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "glue", fmt.Sprintf("crawler/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "glue", fmt.Sprintf("crawler/%s", rName)), resource.TestCheckResourceAttr(resourceName, "classifiers.#", "0"), resource.TestCheckResourceAttr(resourceName, names.AttrConfiguration, ""), resource.TestCheckResourceAttr(resourceName, names.AttrDatabaseName, rName), @@ -228,7 +228,7 @@ func TestAccGlueCrawler_jdbcTarget(t *testing.T) { Config: testAccCrawlerConfig_jdbcTarget(rName, jdbcConnectionUrl, "database-name/table-name"), Check: resource.ComposeTestCheckFunc( testAccCheckCrawlerExists(ctx, resourceName, &crawler), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "glue", fmt.Sprintf("crawler/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "glue", fmt.Sprintf("crawler/%s", rName)), resource.TestCheckResourceAttr(resourceName, "classifiers.#", "0"), resource.TestCheckResourceAttr(resourceName, names.AttrConfiguration, ""), resource.TestCheckResourceAttr(resourceName, names.AttrDatabaseName, rName), @@ -259,7 +259,7 @@ func TestAccGlueCrawler_jdbcTarget(t *testing.T) { Config: testAccCrawlerConfig_jdbcTargetMetadata(rName, jdbcConnectionUrl, "database-name/table-name"), Check: resource.ComposeTestCheckFunc( testAccCheckCrawlerExists(ctx, resourceName, &crawler), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "glue", fmt.Sprintf("crawler/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "glue", fmt.Sprintf("crawler/%s", rName)), resource.TestCheckResourceAttr(resourceName, "classifiers.#", "0"), resource.TestCheckResourceAttr(resourceName, names.AttrConfiguration, ""), resource.TestCheckResourceAttr(resourceName, names.AttrDatabaseName, rName), @@ -303,7 +303,7 @@ func TestAccGlueCrawler_JDBCTarget_exclusions(t *testing.T) { Config: testAccCrawlerConfig_jdbcTargetExclusions2(rName, jdbcConnectionUrl, "exclusion1", "exclusion2"), Check: resource.ComposeTestCheckFunc( testAccCheckCrawlerExists(ctx, resourceName, &crawler), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "glue", fmt.Sprintf("crawler/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "glue", fmt.Sprintf("crawler/%s", rName)), resource.TestCheckResourceAttr(resourceName, "jdbc_target.#", "1"), resource.TestCheckResourceAttr(resourceName, "jdbc_target.0.exclusions.#", "2"), resource.TestCheckResourceAttr(resourceName, "jdbc_target.0.exclusions.0", "exclusion1"), @@ -314,7 +314,7 @@ func TestAccGlueCrawler_JDBCTarget_exclusions(t *testing.T) { Config: testAccCrawlerConfig_jdbcTargetExclusions1(rName, jdbcConnectionUrl, "exclusion1"), Check: resource.ComposeTestCheckFunc( testAccCheckCrawlerExists(ctx, resourceName, &crawler), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "glue", fmt.Sprintf("crawler/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "glue", fmt.Sprintf("crawler/%s", rName)), resource.TestCheckResourceAttr(resourceName, "jdbc_target.#", "1"), resource.TestCheckResourceAttr(resourceName, "jdbc_target.0.exclusions.#", "1"), resource.TestCheckResourceAttr(resourceName, "jdbc_target.0.exclusions.0", "exclusion1"), @@ -346,7 +346,7 @@ func TestAccGlueCrawler_JDBCTarget_multiple(t *testing.T) { Config: testAccCrawlerConfig_jdbcTargetMultiple(rName, jdbcConnectionUrl, "database-name/table1", "database-name/table2"), Check: resource.ComposeTestCheckFunc( testAccCheckCrawlerExists(ctx, resourceName, &crawler), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "glue", fmt.Sprintf("crawler/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "glue", fmt.Sprintf("crawler/%s", rName)), resource.TestCheckResourceAttr(resourceName, "jdbc_target.#", "2"), resource.TestCheckResourceAttr(resourceName, "jdbc_target.0.connection_name", rName), resource.TestCheckResourceAttr(resourceName, "jdbc_target.0.exclusions.#", "0"), @@ -360,7 +360,7 @@ func TestAccGlueCrawler_JDBCTarget_multiple(t *testing.T) { Config: testAccCrawlerConfig_jdbcTarget(rName, jdbcConnectionUrl, "database-name/table1"), Check: resource.ComposeTestCheckFunc( testAccCheckCrawlerExists(ctx, resourceName, &crawler), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "glue", fmt.Sprintf("crawler/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "glue", fmt.Sprintf("crawler/%s", rName)), resource.TestCheckResourceAttr(resourceName, "jdbc_target.#", "1"), resource.TestCheckResourceAttr(resourceName, "jdbc_target.0.connection_name", rName), resource.TestCheckResourceAttr(resourceName, "jdbc_target.0.exclusions.#", "0"), @@ -372,7 +372,7 @@ func TestAccGlueCrawler_JDBCTarget_multiple(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckCrawlerExists(ctx, resourceName, &crawler), resource.TestCheckResourceAttr(resourceName, "jdbc_target.#", "2"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "glue", fmt.Sprintf("crawler/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "glue", fmt.Sprintf("crawler/%s", rName)), resource.TestCheckResourceAttr(resourceName, "jdbc_target.0.connection_name", rName), resource.TestCheckResourceAttr(resourceName, "jdbc_target.0.exclusions.#", "0"), resource.TestCheckResourceAttr(resourceName, "jdbc_target.0.path", "database-name/table1"), @@ -692,7 +692,7 @@ func TestAccGlueCrawler_s3Target(t *testing.T) { Config: testAccCrawlerConfig_s3Target(rName, "bucket1"), Check: resource.ComposeTestCheckFunc( testAccCheckCrawlerExists(ctx, resourceName, &crawler), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "glue", fmt.Sprintf("crawler/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "glue", fmt.Sprintf("crawler/%s", rName)), resource.TestCheckResourceAttr(resourceName, "classifiers.#", "0"), resource.TestCheckResourceAttr(resourceName, names.AttrConfiguration, ""), resource.TestCheckResourceAttr(resourceName, names.AttrDatabaseName, rName), @@ -716,7 +716,7 @@ func TestAccGlueCrawler_s3Target(t *testing.T) { Config: testAccCrawlerConfig_s3Target(rName, "bucket2"), Check: resource.ComposeTestCheckFunc( testAccCheckCrawlerExists(ctx, resourceName, &crawler), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "glue", fmt.Sprintf("crawler/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "glue", fmt.Sprintf("crawler/%s", rName)), resource.TestCheckResourceAttr(resourceName, "classifiers.#", "0"), resource.TestCheckResourceAttr(resourceName, names.AttrConfiguration, ""), resource.TestCheckResourceAttr(resourceName, names.AttrDatabaseName, rName), @@ -762,7 +762,7 @@ func TestAccGlueCrawler_S3Target_connectionName(t *testing.T) { Config: testAccCrawlerConfig_s3TargetConnectionName(rName), Check: resource.ComposeTestCheckFunc( testAccCheckCrawlerExists(ctx, resourceName, &crawler), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "glue", fmt.Sprintf("crawler/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "glue", fmt.Sprintf("crawler/%s", rName)), resource.TestCheckResourceAttr(resourceName, "s3_target.#", "1"), resource.TestCheckResourceAttrPair(resourceName, "s3_target.0.connection_name", connectionName, names.AttrName), ), @@ -829,7 +829,7 @@ func TestAccGlueCrawler_S3Target_exclusions(t *testing.T) { Config: testAccCrawlerConfig_s3TargetExclusions2(rName, "exclusion1", "exclusion2"), Check: resource.ComposeTestCheckFunc( testAccCheckCrawlerExists(ctx, resourceName, &crawler), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "glue", fmt.Sprintf("crawler/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "glue", fmt.Sprintf("crawler/%s", rName)), resource.TestCheckResourceAttr(resourceName, "s3_target.#", "1"), resource.TestCheckResourceAttr(resourceName, "s3_target.0.exclusions.#", "2"), resource.TestCheckResourceAttr(resourceName, "s3_target.0.exclusions.0", "exclusion1"), @@ -840,7 +840,7 @@ func TestAccGlueCrawler_S3Target_exclusions(t *testing.T) { Config: testAccCrawlerConfig_s3TargetExclusions1(rName, "exclusion1"), Check: resource.ComposeTestCheckFunc( testAccCheckCrawlerExists(ctx, resourceName, &crawler), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "glue", fmt.Sprintf("crawler/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "glue", fmt.Sprintf("crawler/%s", rName)), resource.TestCheckResourceAttr(resourceName, "s3_target.#", "1"), resource.TestCheckResourceAttr(resourceName, "s3_target.0.exclusions.#", "1"), resource.TestCheckResourceAttr(resourceName, "s3_target.0.exclusions.0", "exclusion1"), @@ -871,9 +871,9 @@ func TestAccGlueCrawler_S3Target_eventqueue(t *testing.T) { Config: testAccCrawlerConfig_s3TargetEventQueue(rName), Check: resource.ComposeTestCheckFunc( testAccCheckCrawlerExists(ctx, resourceName, &crawler), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "glue", fmt.Sprintf("crawler/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "glue", fmt.Sprintf("crawler/%s", rName)), resource.TestCheckResourceAttr(resourceName, "s3_target.#", "1"), - acctest.CheckResourceAttrRegionalARN(resourceName, "s3_target.0.event_queue_arn", "sqs", rName), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, "s3_target.0.event_queue_arn", "sqs", rName), resource.TestCheckResourceAttr(resourceName, "recrawl_policy.0.recrawl_behavior", "CRAWL_EVENT_MODE"), ), }, @@ -902,7 +902,7 @@ func TestAccGlueCrawler_CatalogTarget_dlqeventqueue(t *testing.T) { Config: testAccCrawlerConfig_catalogTargetDlqEventQueue(rName), Check: resource.ComposeTestCheckFunc( testAccCheckCrawlerExists(ctx, resourceName, &crawler), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "glue", fmt.Sprintf("crawler/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "glue", fmt.Sprintf("crawler/%s", rName)), resource.TestCheckResourceAttr(resourceName, "catalog_target.#", "1"), resource.TestCheckResourceAttrPair(resourceName, "catalog_target.0.event_queue_arn", "aws_sqs_queue.test", names.AttrARN), resource.TestCheckResourceAttrPair(resourceName, "catalog_target.0.dlq_event_queue_arn", "aws_sqs_queue.test_dlq", names.AttrARN), @@ -933,7 +933,7 @@ func TestAccGlueCrawler_S3Target_dlqeventqueue(t *testing.T) { Config: testAccCrawlerConfig_s3TargetDlqEventQueue(rName), Check: resource.ComposeTestCheckFunc( testAccCheckCrawlerExists(ctx, resourceName, &crawler), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "glue", fmt.Sprintf("crawler/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "glue", fmt.Sprintf("crawler/%s", rName)), resource.TestCheckResourceAttr(resourceName, "s3_target.#", "1"), resource.TestCheckResourceAttrPair(resourceName, "s3_target.0.event_queue_arn", "aws_sqs_queue.test", names.AttrARN), resource.TestCheckResourceAttrPair(resourceName, "s3_target.0.dlq_event_queue_arn", "aws_sqs_queue.test_dlq", names.AttrARN), @@ -965,7 +965,7 @@ func TestAccGlueCrawler_S3Target_multiple(t *testing.T) { Config: testAccCrawlerConfig_s3TargetMultiple(rName, "bucket1", "bucket2"), Check: resource.ComposeTestCheckFunc( testAccCheckCrawlerExists(ctx, resourceName, &crawler), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "glue", fmt.Sprintf("crawler/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "glue", fmt.Sprintf("crawler/%s", rName)), resource.TestCheckResourceAttr(resourceName, "s3_target.#", "2"), resource.TestCheckResourceAttr(resourceName, "s3_target.0.exclusions.#", "0"), resource.TestCheckResourceAttr(resourceName, "s3_target.0.path", fmt.Sprintf("s3://%s-bucket1", rName)), @@ -977,7 +977,7 @@ func TestAccGlueCrawler_S3Target_multiple(t *testing.T) { Config: testAccCrawlerConfig_s3Target(rName, "bucket1"), Check: resource.ComposeTestCheckFunc( testAccCheckCrawlerExists(ctx, resourceName, &crawler), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "glue", fmt.Sprintf("crawler/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "glue", fmt.Sprintf("crawler/%s", rName)), resource.TestCheckResourceAttr(resourceName, "s3_target.#", "1"), resource.TestCheckResourceAttr(resourceName, "s3_target.0.exclusions.#", "0"), resource.TestCheckResourceAttr(resourceName, "s3_target.0.path", fmt.Sprintf("s3://%s-bucket1", rName)), @@ -987,7 +987,7 @@ func TestAccGlueCrawler_S3Target_multiple(t *testing.T) { Config: testAccCrawlerConfig_s3TargetMultiple(rName, "bucket1", "bucket2"), Check: resource.ComposeTestCheckFunc( testAccCheckCrawlerExists(ctx, resourceName, &crawler), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "glue", fmt.Sprintf("crawler/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "glue", fmt.Sprintf("crawler/%s", rName)), resource.TestCheckResourceAttr(resourceName, "s3_target.#", "2"), resource.TestCheckResourceAttr(resourceName, "s3_target.0.exclusions.#", "0"), resource.TestCheckResourceAttr(resourceName, "s3_target.0.path", fmt.Sprintf("s3://%s-bucket1", rName)), @@ -1020,7 +1020,7 @@ func TestAccGlueCrawler_catalogTarget(t *testing.T) { Config: testAccCrawlerConfig_catalogTarget(rName, 1), Check: resource.ComposeTestCheckFunc( testAccCheckCrawlerExists(ctx, resourceName, &crawler), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "glue", fmt.Sprintf("crawler/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "glue", fmt.Sprintf("crawler/%s", rName)), resource.TestCheckResourceAttr(resourceName, "classifiers.#", "0"), resource.TestCheckResourceAttr(resourceName, names.AttrDatabaseName, rName), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -1046,7 +1046,7 @@ func TestAccGlueCrawler_catalogTarget(t *testing.T) { Config: testAccCrawlerConfig_catalogTarget(rName, 2), Check: resource.ComposeTestCheckFunc( testAccCheckCrawlerExists(ctx, resourceName, &crawler), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "glue", fmt.Sprintf("crawler/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "glue", fmt.Sprintf("crawler/%s", rName)), resource.TestCheckResourceAttr(resourceName, "classifiers.#", "0"), resource.TestCheckResourceAttr(resourceName, names.AttrDatabaseName, rName), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -1094,7 +1094,7 @@ func TestAccGlueCrawler_CatalogTarget_multiple(t *testing.T) { Config: testAccCrawlerConfig_catalogTarget(rName, 1), Check: resource.ComposeTestCheckFunc( testAccCheckCrawlerExists(ctx, resourceName, &crawler), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "glue", fmt.Sprintf("crawler/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "glue", fmt.Sprintf("crawler/%s", rName)), resource.TestCheckResourceAttr(resourceName, "catalog_target.#", "1"), resource.TestCheckResourceAttr(resourceName, "catalog_target.0.database_name", rName), resource.TestCheckResourceAttr(resourceName, "catalog_target.0.tables.#", "1"), @@ -1105,7 +1105,7 @@ func TestAccGlueCrawler_CatalogTarget_multiple(t *testing.T) { Config: testAccCrawlerConfig_catalogTargetMultiple(rName), Check: resource.ComposeTestCheckFunc( testAccCheckCrawlerExists(ctx, resourceName, &crawler), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "glue", fmt.Sprintf("crawler/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "glue", fmt.Sprintf("crawler/%s", rName)), resource.TestCheckResourceAttr(resourceName, "catalog_target.#", "2"), resource.TestCheckResourceAttr(resourceName, "catalog_target.0.database_name", fmt.Sprintf("%s_database_0", rName)), resource.TestCheckResourceAttr(resourceName, "catalog_target.1.database_name", fmt.Sprintf("%s_database_1", rName)), @@ -1119,7 +1119,7 @@ func TestAccGlueCrawler_CatalogTarget_multiple(t *testing.T) { Config: testAccCrawlerConfig_catalogTarget(rName, 1), Check: resource.ComposeTestCheckFunc( testAccCheckCrawlerExists(ctx, resourceName, &crawler), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "glue", fmt.Sprintf("crawler/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "glue", fmt.Sprintf("crawler/%s", rName)), resource.TestCheckResourceAttr(resourceName, "catalog_target.#", "1"), resource.TestCheckResourceAttr(resourceName, "catalog_target.0.database_name", rName), resource.TestCheckResourceAttr(resourceName, "catalog_target.0.tables.#", "1"), diff --git a/internal/service/glue/data_catalog_encryption_settings.go b/internal/service/glue/data_catalog_encryption_settings.go index 041660597b4d..fefb6188fedd 100644 --- a/internal/service/glue/data_catalog_encryption_settings.go +++ b/internal/service/glue/data_catalog_encryption_settings.go @@ -96,7 +96,7 @@ func resourceDataCatalogEncryptionSettingsPut(ctx context.Context, d *schema.Res var diags diag.Diagnostics conn := meta.(*conns.AWSClient).GlueClient(ctx) - catalogID := createCatalogID(d, meta.(*conns.AWSClient).AccountID) + catalogID := createCatalogID(d, meta.(*conns.AWSClient).AccountID(ctx)) input := &glue.PutDataCatalogEncryptionSettingsInput{ CatalogId: aws.String(catalogID), } diff --git a/internal/service/glue/data_quality_ruleset.go b/internal/service/glue/data_quality_ruleset.go index 05b19e9145eb..f827b03f2a9f 100644 --- a/internal/service/glue/data_quality_ruleset.go +++ b/internal/service/glue/data_quality_ruleset.go @@ -155,8 +155,8 @@ func resourceDataQualityRulesetRead(ctx context.Context, d *schema.ResourceData, dataQualityRulesetArn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "glue", - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("dataQualityRuleset/%s", aws.ToString(dataQualityRuleset.Name)), }.String() diff --git a/internal/service/glue/data_quality_ruleset_test.go b/internal/service/glue/data_quality_ruleset_test.go index ce8ef63c8a80..530abb9d8617 100644 --- a/internal/service/glue/data_quality_ruleset_test.go +++ b/internal/service/glue/data_quality_ruleset_test.go @@ -36,7 +36,7 @@ func TestAccGlueDataQualityRuleset_basic(t *testing.T) { Config: testAccDataQualityRulesetConfig_basic(rName, ruleset), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckDataQualityRulesetExists(ctx, resourceName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "glue", fmt.Sprintf("dataQualityRuleset/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "glue", fmt.Sprintf("dataQualityRuleset/%s", rName)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttrSet(resourceName, "created_on"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), diff --git a/internal/service/glue/dev_endpoint.go b/internal/service/glue/dev_endpoint.go index 68fe18adbce3..c433e38f2d42 100644 --- a/internal/service/glue/dev_endpoint.go +++ b/internal/service/glue/dev_endpoint.go @@ -292,8 +292,8 @@ func resourceDevEndpointRead(ctx context.Context, d *schema.ResourceData, meta i endpointARN := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "glue", - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("devEndpoint/%s", d.Id()), }.String() diff --git a/internal/service/glue/dev_endpoint_test.go b/internal/service/glue/dev_endpoint_test.go index ae55ca845e64..8f10637fb4a2 100644 --- a/internal/service/glue/dev_endpoint_test.go +++ b/internal/service/glue/dev_endpoint_test.go @@ -37,7 +37,7 @@ func TestAccGlueDevEndpoint_basic(t *testing.T) { Config: testAccDevEndpointConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckDevEndpointExists(ctx, resourceName, &endpoint), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "glue", fmt.Sprintf("devEndpoint/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "glue", fmt.Sprintf("devEndpoint/%s", rName)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttrPair(resourceName, names.AttrRoleARN, "aws_iam_role.test", names.AttrARN), resource.TestCheckResourceAttr(resourceName, names.AttrStatus, "READY"), diff --git a/internal/service/glue/job.go b/internal/service/glue/job.go index d57e628b6a05..906a4c69cebe 100644 --- a/internal/service/glue/job.go +++ b/internal/service/glue/job.go @@ -303,8 +303,8 @@ func resourceJobRead(ctx context.Context, d *schema.ResourceData, meta interface jobARN := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "glue", - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("job/%s", d.Id()), }.String() d.Set(names.AttrARN, jobARN) diff --git a/internal/service/glue/job_test.go b/internal/service/glue/job_test.go index 6076ea9b3d61..dc4bfccab2c4 100644 --- a/internal/service/glue/job_test.go +++ b/internal/service/glue/job_test.go @@ -37,7 +37,7 @@ func TestAccGlueJob_basic(t *testing.T) { Config: testAccJobConfig_required(rName), Check: resource.ComposeTestCheckFunc( testAccCheckJobExists(ctx, resourceName, &job), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "glue", fmt.Sprintf("job/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "glue", fmt.Sprintf("job/%s", rName)), resource.TestCheckResourceAttr(resourceName, "command.#", "1"), resource.TestCheckResourceAttr(resourceName, "command.0.script_location", "testscriptlocation"), resource.TestCheckResourceAttr(resourceName, "default_arguments.%", "0"), @@ -99,7 +99,7 @@ func TestAccGlueJob_basicStreaming(t *testing.T) { Config: testAccJobConfig_requiredStreaming(rName), Check: resource.ComposeTestCheckFunc( testAccCheckJobExists(ctx, resourceName, &job), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "glue", fmt.Sprintf("job/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "glue", fmt.Sprintf("job/%s", rName)), resource.TestCheckResourceAttr(resourceName, "command.#", "1"), resource.TestCheckResourceAttr(resourceName, "command.0.name", "gluestreaming"), resource.TestCheckResourceAttr(resourceName, "command.0.script_location", "testscriptlocation"), diff --git a/internal/service/glue/ml_transform.go b/internal/service/glue/ml_transform.go index 660acf3993da..2f737b268391 100644 --- a/internal/service/glue/ml_transform.go +++ b/internal/service/glue/ml_transform.go @@ -271,8 +271,8 @@ func resourceMLTransformRead(ctx context.Context, d *schema.ResourceData, meta i mlTransformArn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "glue", - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("mlTransform/%s", d.Id()), }.String() d.Set(names.AttrARN, mlTransformArn) diff --git a/internal/service/glue/ml_transform_test.go b/internal/service/glue/ml_transform_test.go index 869358a90cd3..2cf8db2af485 100644 --- a/internal/service/glue/ml_transform_test.go +++ b/internal/service/glue/ml_transform_test.go @@ -41,7 +41,7 @@ func TestAccGlueMlTransform_basic(t *testing.T) { Config: testAccMLTransformConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckMLTransformExists(ctx, resourceName, &transform), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "glue", regexache.MustCompile(`mlTransform/tfm-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "glue", regexache.MustCompile(`mlTransform/tfm-.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttrPair(resourceName, names.AttrRoleARN, roleResourceName, names.AttrARN), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), diff --git a/internal/service/glue/partition.go b/internal/service/glue/partition.go index f078d8833a99..8a63275eabc7 100644 --- a/internal/service/glue/partition.go +++ b/internal/service/glue/partition.go @@ -209,7 +209,7 @@ func ResourcePartition() *schema.Resource { func resourcePartitionCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics conn := meta.(*conns.AWSClient).GlueClient(ctx) - catalogID := createCatalogID(d, meta.(*conns.AWSClient).AccountID) + catalogID := createCatalogID(d, meta.(*conns.AWSClient).AccountID(ctx)) dbName := d.Get(names.AttrDatabaseName).(string) tableName := d.Get(names.AttrTableName).(string) values := d.Get("partition_values").([]interface{}) diff --git a/internal/service/glue/partition_index.go b/internal/service/glue/partition_index.go index 348c697c6e56..6d0a73714305 100644 --- a/internal/service/glue/partition_index.go +++ b/internal/service/glue/partition_index.go @@ -88,7 +88,7 @@ func ResourcePartitionIndex() *schema.Resource { func resourcePartitionIndexCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics conn := meta.(*conns.AWSClient).GlueClient(ctx) - catalogID := createCatalogID(d, meta.(*conns.AWSClient).AccountID) + catalogID := createCatalogID(d, meta.(*conns.AWSClient).AccountID(ctx)) dbName := d.Get(names.AttrDatabaseName).(string) tableName := d.Get(names.AttrTableName).(string) diff --git a/internal/service/glue/partition_test.go b/internal/service/glue/partition_test.go index 910094b62e2f..6ea93967ca5f 100644 --- a/internal/service/glue/partition_test.go +++ b/internal/service/glue/partition_test.go @@ -35,7 +35,7 @@ func TestAccGluePartition_basic(t *testing.T) { Config: testAccPartitionConfig_basic(rName, parValue), Check: resource.ComposeTestCheckFunc( testAccCheckPartitionExists(ctx, resourceName), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrCatalogID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrCatalogID), resource.TestCheckResourceAttr(resourceName, names.AttrDatabaseName, rName), resource.TestCheckResourceAttr(resourceName, "partition_values.#", "1"), resource.TestCheckResourceAttr(resourceName, "partition_values.0", parValue), diff --git a/internal/service/glue/registry_test.go b/internal/service/glue/registry_test.go index 187806c8ebb6..3076c4fee56d 100644 --- a/internal/service/glue/registry_test.go +++ b/internal/service/glue/registry_test.go @@ -38,7 +38,7 @@ func TestAccGlueRegistry_basic(t *testing.T) { Config: testAccRegistryConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckRegistryExists(ctx, resourceName, ®istry), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "glue", fmt.Sprintf("registry/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "glue", fmt.Sprintf("registry/%s", rName)), resource.TestCheckResourceAttr(resourceName, "registry_name", rName), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), diff --git a/internal/service/glue/resource_policy.go b/internal/service/glue/resource_policy.go index db00570c7a55..e2914348a703 100644 --- a/internal/service/glue/resource_policy.go +++ b/internal/service/glue/resource_policy.go @@ -78,7 +78,7 @@ func resourceResourcePolicyPut(condition awstypes.ExistCondition) func(context.C if err != nil { return sdkdiag.AppendErrorf(diags, "putting policy request: %s", err) } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) return append(diags, resourceResourcePolicyRead(ctx, d, meta)...) } diff --git a/internal/service/glue/resource_policy_test.go b/internal/service/glue/resource_policy_test.go index 062dd75f71c8..8f7cc2902746 100644 --- a/internal/service/glue/resource_policy_test.go +++ b/internal/service/glue/resource_policy_test.go @@ -178,7 +178,7 @@ func testAccResourcePolicy(ctx context.Context, n string, action string) resourc actualPolicyText := aws.ToString(policy.PolicyInJson) - expectedPolicy := CreateTablePolicy(action) + expectedPolicy := CreateTablePolicy(ctx, action) equivalent, err := awspolicy.PoliciesAreEquivalent(actualPolicyText, expectedPolicy) if err != nil { return fmt.Errorf("Error testing policy equivalence: %s", err) @@ -212,7 +212,7 @@ func testAccCheckResourcePolicyDestroy(ctx context.Context) resource.TestCheckFu } } -func CreateTablePolicy(action string) string { +func CreateTablePolicy(ctx context.Context, action string) string { return fmt.Sprintf(`{ "Version" : "2012-10-17", "Statement" : [ @@ -227,7 +227,7 @@ func CreateTablePolicy(action string) string { "Resource" : "arn:%s:glue:%s:%s:*" } ] -}`, action, acctest.Partition(), acctest.Region(), acctest.AccountID()) +}`, action, acctest.Partition(), acctest.Region(), acctest.AccountID(ctx)) } func testAccResourcePolicyConfig_required(action string) string { diff --git a/internal/service/glue/schema_test.go b/internal/service/glue/schema_test.go index 5489cb7f017e..f67c59fcff56 100644 --- a/internal/service/glue/schema_test.go +++ b/internal/service/glue/schema_test.go @@ -40,7 +40,7 @@ func TestAccGlueSchema_basic(t *testing.T) { Config: testAccSchemaConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckSchemaExists(ctx, resourceName, &schema), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "glue", fmt.Sprintf("schema/%s/%s", rName, rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "glue", fmt.Sprintf("schema/%s/%s", rName, rName)), resource.TestCheckResourceAttr(resourceName, "schema_name", rName), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), resource.TestCheckResourceAttr(resourceName, "compatibility", "NONE"), diff --git a/internal/service/glue/script_data_source.go b/internal/service/glue/script_data_source.go index 5b159392f483..3e15d744c7b8 100644 --- a/internal/service/glue/script_data_source.go +++ b/internal/service/glue/script_data_source.go @@ -128,7 +128,7 @@ func dataSourceScriptRead(ctx context.Context, d *schema.ResourceData, meta inte return sdkdiag.AppendErrorf(diags, "script not created") } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) d.Set("python_script", output.PythonScript) d.Set("scala_code", output.ScalaCode) diff --git a/internal/service/glue/service_endpoints_gen_test.go b/internal/service/glue/service_endpoints_gen_test.go index 9da7219779e4..a18eecfda580 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/glue/sweep.go b/internal/service/glue/sweep.go index ec8f7a144c38..168e0cd9d6d8 100644 --- a/internal/service/glue/sweep.go +++ b/internal/service/glue/sweep.go @@ -193,7 +193,7 @@ func sweepConnections(region string) error { return fmt.Errorf("error getting client: %s", err) } conn := client.GlueClient(ctx) - catalogID := client.AccountID + catalogID := client.AccountID(ctx) sweepResources := make([]sweep.Sweepable, 0) var sweeperErrs *multierror.Error diff --git a/internal/service/glue/trigger.go b/internal/service/glue/trigger.go index 8a3ab6102987..12e81ab10291 100644 --- a/internal/service/glue/trigger.go +++ b/internal/service/glue/trigger.go @@ -339,8 +339,8 @@ func resourceTriggerRead(ctx context.Context, d *schema.ResourceData, meta inter triggerARN := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "glue", - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("trigger/%s", d.Id()), }.String() d.Set(names.AttrARN, triggerARN) diff --git a/internal/service/glue/trigger_test.go b/internal/service/glue/trigger_test.go index 3a5abb48bcc5..a45d39306fb1 100644 --- a/internal/service/glue/trigger_test.go +++ b/internal/service/glue/trigger_test.go @@ -41,7 +41,7 @@ func TestAccGlueTrigger_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "actions.#", "1"), resource.TestCheckResourceAttr(resourceName, "actions.0.job_name", rName), resource.TestCheckResourceAttr(resourceName, "actions.0.notification_property.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "glue", fmt.Sprintf("trigger/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "glue", fmt.Sprintf("trigger/%s", rName)), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), resource.TestCheckResourceAttr(resourceName, names.AttrEnabled, acctest.CtTrue), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), diff --git a/internal/service/glue/user_defined_function.go b/internal/service/glue/user_defined_function.go index 8c20d5dbb110..48e662ba8931 100644 --- a/internal/service/glue/user_defined_function.go +++ b/internal/service/glue/user_defined_function.go @@ -101,7 +101,7 @@ func ResourceUserDefinedFunction() *schema.Resource { func resourceUserDefinedFunctionCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics conn := meta.(*conns.AWSClient).GlueClient(ctx) - catalogID := createCatalogID(d, meta.(*conns.AWSClient).AccountID) + catalogID := createCatalogID(d, meta.(*conns.AWSClient).AccountID(ctx)) dbName := d.Get(names.AttrDatabaseName).(string) funcName := d.Get(names.AttrName).(string) @@ -175,8 +175,8 @@ func resourceUserDefinedFunctionRead(ctx context.Context, d *schema.ResourceData udfArn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "glue", - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("userDefinedFunction/%s/%s", dbName, aws.ToString(udf.FunctionName)), }.String() diff --git a/internal/service/glue/user_defined_function_test.go b/internal/service/glue/user_defined_function_test.go index 15326e95d91a..e37617b549b7 100644 --- a/internal/service/glue/user_defined_function_test.go +++ b/internal/service/glue/user_defined_function_test.go @@ -36,7 +36,7 @@ func TestAccGlueUserDefinedFunction_basic(t *testing.T) { Config: testAccUserDefinedFunctionConfig_basic(rName, rName), Check: resource.ComposeTestCheckFunc( testAccCheckUserDefinedFunctionExists(ctx, resourceName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "glue", fmt.Sprintf("userDefinedFunction/%s/%s", rName, rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "glue", fmt.Sprintf("userDefinedFunction/%s/%s", rName, rName)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "class_name", rName), resource.TestCheckResourceAttr(resourceName, "owner_name", rName), diff --git a/internal/service/glue/workflow.go b/internal/service/glue/workflow.go index 82837cf081ed..b6bc0e2fdaad 100644 --- a/internal/service/glue/workflow.go +++ b/internal/service/glue/workflow.go @@ -129,8 +129,8 @@ func resourceWorkflowRead(ctx context.Context, d *schema.ResourceData, meta inte workFlowArn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "glue", - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("workflow/%s", d.Id()), }.String() d.Set(names.AttrARN, workFlowArn) diff --git a/internal/service/glue/workflow_test.go b/internal/service/glue/workflow_test.go index 0ac686d43dd8..44c883fbb9c7 100644 --- a/internal/service/glue/workflow_test.go +++ b/internal/service/glue/workflow_test.go @@ -39,7 +39,7 @@ func TestAccGlueWorkflow_basic(t *testing.T) { Config: testAccWorkflowConfig_required(rName), Check: resource.ComposeTestCheckFunc( testAccCheckWorkflowExists(ctx, resourceName, &workflow), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "glue", fmt.Sprintf("workflow/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "glue", fmt.Sprintf("workflow/%s", rName)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), diff --git a/internal/service/grafana/service_endpoints_gen_test.go b/internal/service/grafana/service_endpoints_gen_test.go index d9db6aa43ca8..d2c65bd14fbb 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/grafana/workspace.go b/internal/service/grafana/workspace.go index 3e887ab0c743..33ac3edd49fe 100644 --- a/internal/service/grafana/workspace.go +++ b/internal/service/grafana/workspace.go @@ -287,8 +287,8 @@ func resourceWorkspaceRead(ctx context.Context, d *schema.ResourceData, meta int workspaceARN := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "grafana", - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("/workspaces/%s", d.Id()), }.String() d.Set(names.AttrARN, workspaceARN) diff --git a/internal/service/grafana/workspace_data_source.go b/internal/service/grafana/workspace_data_source.go index d11e6fdc9b06..e490d4dc0642 100644 --- a/internal/service/grafana/workspace_data_source.go +++ b/internal/service/grafana/workspace_data_source.go @@ -126,8 +126,8 @@ func dataSourceWorkspaceRead(ctx context.Context, d *schema.ResourceData, meta i workspaceARN := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "grafana", - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("/workspaces/%s", d.Id()), }.String() d.Set(names.AttrARN, workspaceARN) diff --git a/internal/service/grafana/workspace_test.go b/internal/service/grafana/workspace_test.go index 3ba2b863cd19..9bab24909ab2 100644 --- a/internal/service/grafana/workspace_test.go +++ b/internal/service/grafana/workspace_test.go @@ -39,7 +39,7 @@ func testAccWorkspace_saml(t *testing.T) { Config: testAccWorkspaceConfig_authenticationProvider(rName, "SAML"), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckWorkspaceExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "grafana", regexache.MustCompile(`/workspaces/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "grafana", regexache.MustCompile(`/workspaces/.+`)), resource.TestCheckResourceAttr(resourceName, "account_access_type", string(awstypes.AccountAccessTypeCurrentAccount)), resource.TestCheckResourceAttr(resourceName, "authentication_providers.#", "1"), resource.TestCheckResourceAttr(resourceName, "authentication_providers.0", string(awstypes.AuthenticationProviderTypesSaml)), @@ -136,7 +136,7 @@ func testAccWorkspace_sso(t *testing.T) { Config: testAccWorkspaceConfig_authenticationProvider(rName, "AWS_SSO"), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckWorkspaceExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "grafana", regexache.MustCompile(`/workspaces/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "grafana", regexache.MustCompile(`/workspaces/.+`)), resource.TestCheckResourceAttr(resourceName, "account_access_type", string(awstypes.AccountAccessTypeCurrentAccount)), resource.TestCheckResourceAttr(resourceName, "authentication_providers.#", "1"), resource.TestCheckResourceAttr(resourceName, "authentication_providers.0", string(awstypes.AuthenticationProviderTypesAwsSso)), @@ -288,7 +288,7 @@ func testAccWorkspace_dataSources(t *testing.T) { Config: testAccWorkspaceConfig_dataSources(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckWorkspaceExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "grafana", regexache.MustCompile(`/workspaces/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "grafana", regexache.MustCompile(`/workspaces/.+`)), resource.TestCheckResourceAttr(resourceName, "account_access_type", string(awstypes.AccountAccessTypeCurrentAccount)), resource.TestCheckResourceAttr(resourceName, "authentication_providers.#", "1"), resource.TestCheckResourceAttr(resourceName, "authentication_providers.0", string(awstypes.AuthenticationProviderTypesSaml)), diff --git a/internal/service/greengrass/service_endpoints_gen_test.go b/internal/service/greengrass/service_endpoints_gen_test.go index b05eb37fec9b..2d40b8e17188 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 98438121a261..22e0664bdd68 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/detector.go b/internal/service/guardduty/detector.go index d437b675b8e9..13de94061caf 100644 --- a/internal/service/guardduty/detector.go +++ b/internal/service/guardduty/detector.go @@ -189,12 +189,12 @@ func resourceDetectorRead(ctx context.Context, d *schema.ResourceData, meta inte return sdkdiag.AppendErrorf(diags, "reading GuardDuty Detector (%s): %s", d.Id(), err) } - d.Set(names.AttrAccountID, meta.(*conns.AWSClient).AccountID) + d.Set(names.AttrAccountID, meta.(*conns.AWSClient).AccountID(ctx)) arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), Service: "guardduty", - AccountID: meta.(*conns.AWSClient).AccountID, + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("detector/%s", d.Id()), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/guardduty/detector_data_source_test.go b/internal/service/guardduty/detector_data_source_test.go index d85e82e9d2a7..4a7ba9a1d18c 100644 --- a/internal/service/guardduty/detector_data_source_test.go +++ b/internal/service/guardduty/detector_data_source_test.go @@ -31,7 +31,7 @@ func testAccDetectorDataSource_basic(t *testing.T) { acctest.CheckResourceAttrGreaterThanValue(datasourceName, "features.#", 0), resource.TestCheckResourceAttrPair(datasourceName, "finding_publishing_frequency", resourceName, "finding_publishing_frequency"), resource.TestCheckResourceAttrPair(datasourceName, names.AttrID, resourceName, names.AttrID), - acctest.CheckResourceAttrGlobalARN(datasourceName, names.AttrServiceRoleARN, "iam", "role/aws-service-role/guardduty.amazonaws.com/AWSServiceRoleForAmazonGuardDuty"), + acctest.CheckResourceAttrGlobalARN(ctx, datasourceName, names.AttrServiceRoleARN, "iam", "role/aws-service-role/guardduty.amazonaws.com/AWSServiceRoleForAmazonGuardDuty"), resource.TestCheckResourceAttr(datasourceName, names.AttrStatus, "ENABLED"), ), }, @@ -58,7 +58,7 @@ func testAccDetectorDataSource_ID(t *testing.T) { acctest.CheckResourceAttrGreaterThanValue(datasourceName, "features.#", 0), resource.TestCheckResourceAttrPair(datasourceName, "finding_publishing_frequency", resourceName, "finding_publishing_frequency"), resource.TestCheckResourceAttrPair(datasourceName, names.AttrID, resourceName, names.AttrID), - acctest.CheckResourceAttrGlobalARN(datasourceName, names.AttrServiceRoleARN, "iam", "role/aws-service-role/guardduty.amazonaws.com/AWSServiceRoleForAmazonGuardDuty"), + acctest.CheckResourceAttrGlobalARN(ctx, datasourceName, names.AttrServiceRoleARN, "iam", "role/aws-service-role/guardduty.amazonaws.com/AWSServiceRoleForAmazonGuardDuty"), resource.TestCheckResourceAttr(datasourceName, names.AttrStatus, "ENABLED"), ), }, diff --git a/internal/service/guardduty/detector_test.go b/internal/service/guardduty/detector_test.go index 6488c5325593..6af85fb2fae6 100644 --- a/internal/service/guardduty/detector_test.go +++ b/internal/service/guardduty/detector_test.go @@ -36,7 +36,7 @@ func testAccDetector_basic(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckDetectorExists(ctx, resourceName), resource.TestCheckResourceAttrSet(resourceName, names.AttrAccountID), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "guardduty", regexache.MustCompile("detector/.+$")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "guardduty", regexache.MustCompile("detector/.+$")), resource.TestCheckResourceAttr(resourceName, "enable", acctest.CtTrue), resource.TestCheckResourceAttr(resourceName, "datasources.#", "1"), resource.TestCheckResourceAttr(resourceName, "datasources.0.s3_logs.0.enable", acctest.CtTrue), diff --git a/internal/service/guardduty/filter.go b/internal/service/guardduty/filter.go index 6ba9cf36e7e4..8c741358b615 100644 --- a/internal/service/guardduty/filter.go +++ b/internal/service/guardduty/filter.go @@ -204,9 +204,9 @@ func resourceFilterRead(ctx context.Context, d *schema.ResourceData, meta interf arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), Service: "guardduty", - AccountID: meta.(*conns.AWSClient).AccountID, + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("detector/%s/filter/%s", detectorID, name), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/guardduty/filter_test.go b/internal/service/guardduty/filter_test.go index feff284877b1..7eb8dbf8e604 100644 --- a/internal/service/guardduty/filter_test.go +++ b/internal/service/guardduty/filter_test.go @@ -50,7 +50,7 @@ func testAccFilter_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, names.AttrAction, "ARCHIVE"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), resource.TestCheckResourceAttr(resourceName, "rank", "1"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "guardduty", regexache.MustCompile("detector/[0-9a-z]{32}/filter/test-filter$")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "guardduty", regexache.MustCompile("detector/[0-9a-z]{32}/filter/test-filter$")), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttr(resourceName, "finding_criteria.#", "1"), resource.TestCheckResourceAttr(resourceName, "finding_criteria.0.criterion.#", "3"), diff --git a/internal/service/guardduty/ipset.go b/internal/service/guardduty/ipset.go index 8eae9e67568f..36a42562a4f4 100644 --- a/internal/service/guardduty/ipset.go +++ b/internal/service/guardduty/ipset.go @@ -137,9 +137,9 @@ func resourceIPSetRead(ctx context.Context, d *schema.ResourceData, meta interfa arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), Service: "guardduty", - AccountID: meta.(*conns.AWSClient).AccountID, + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("detector/%s/ipset/%s", detectorId, ipSetId), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/guardduty/ipset_test.go b/internal/service/guardduty/ipset_test.go index 1406aa522672..b11a7d8aa16d 100644 --- a/internal/service/guardduty/ipset_test.go +++ b/internal/service/guardduty/ipset_test.go @@ -44,7 +44,7 @@ func testAccIPSet_basic(t *testing.T) { Config: testAccIPSetConfig_basic(bucketName, keyName1, ipsetName1, true), Check: resource.ComposeTestCheckFunc( testAccCheckIPSetExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "guardduty", regexache.MustCompile("detector/.+/ipset/.+$")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "guardduty", regexache.MustCompile("detector/.+/ipset/.+$")), resource.TestCheckResourceAttr(resourceName, names.AttrName, ipsetName1), resource.TestCheckResourceAttr(resourceName, "activate", acctest.CtTrue), resource.TestMatchResourceAttr(resourceName, names.AttrLocation, regexache.MustCompile(fmt.Sprintf("%s/%s$", bucketName, keyName1))), diff --git a/internal/service/guardduty/organization_admin_account_test.go b/internal/service/guardduty/organization_admin_account_test.go index 71205e9f663e..dc4b7460faa2 100644 --- a/internal/service/guardduty/organization_admin_account_test.go +++ b/internal/service/guardduty/organization_admin_account_test.go @@ -36,7 +36,7 @@ func testAccOrganizationAdminAccount_basic(t *testing.T) { Config: testAccOrganizationAdminAccountConfig_self(), Check: resource.ComposeTestCheckFunc( testAccCheckOrganizationAdminAccountExists(ctx, resourceName), - acctest.CheckResourceAttrAccountID(resourceName, "admin_account_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "admin_account_id"), ), }, { diff --git a/internal/service/guardduty/service_endpoints_gen_test.go b/internal/service/guardduty/service_endpoints_gen_test.go index 744c3268cd74..6918c0b91ff2 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/guardduty/threatintelset.go b/internal/service/guardduty/threatintelset.go index 85a96f0dd4fe..b36b3c5d9a6a 100644 --- a/internal/service/guardduty/threatintelset.go +++ b/internal/service/guardduty/threatintelset.go @@ -137,9 +137,9 @@ func resourceThreatIntelSetRead(ctx context.Context, d *schema.ResourceData, met arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), Service: "guardduty", - AccountID: meta.(*conns.AWSClient).AccountID, + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("detector/%s/threatintelset/%s", detectorId, threatIntelSetId), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/guardduty/threatintelset_test.go b/internal/service/guardduty/threatintelset_test.go index da79476e01cd..a4edfccbe153 100644 --- a/internal/service/guardduty/threatintelset_test.go +++ b/internal/service/guardduty/threatintelset_test.go @@ -44,7 +44,7 @@ func testAccThreatIntelSet_basic(t *testing.T) { Config: testAccThreatIntelSetConfig_basic(bucketName, keyName1, threatintelsetName1, true), Check: resource.ComposeTestCheckFunc( testAccCheckThreatIntelSetExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "guardduty", regexache.MustCompile("detector/.+/threatintelset/.+$")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "guardduty", regexache.MustCompile("detector/.+/threatintelset/.+$")), resource.TestCheckResourceAttr(resourceName, names.AttrName, threatintelsetName1), resource.TestCheckResourceAttr(resourceName, "activate", acctest.CtTrue), resource.TestMatchResourceAttr(resourceName, names.AttrLocation, regexache.MustCompile(fmt.Sprintf("%s/%s$", bucketName, keyName1))), diff --git a/internal/service/healthlake/service_endpoints_gen_test.go b/internal/service/healthlake/service_endpoints_gen_test.go index 11200726be00..00be72faa2cf 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/access_key.go b/internal/service/iam/access_key.go index a4bee31c83fd..7e14e554c907 100644 --- a/internal/service/iam/access_key.go +++ b/internal/service/iam/access_key.go @@ -131,7 +131,7 @@ func resourceAccessKeyCreate(ctx context.Context, d *schema.ResourceData, meta i return sdkdiag.AppendErrorf(diags, "CreateAccessKey response did not contain a Secret Access Key as expected") } - sesSMTPPasswordV4, err := sesSMTPPasswordFromSecretKeySigV4(createResp.AccessKey.SecretAccessKey, meta.(*conns.AWSClient).Region) + sesSMTPPasswordV4, err := sesSMTPPasswordFromSecretKeySigV4(createResp.AccessKey.SecretAccessKey, meta.(*conns.AWSClient).Region(ctx)) if err != nil { return sdkdiag.AppendErrorf(diags, "getting SES SigV4 SMTP Password from Secret Access Key: %s", err) } diff --git a/internal/service/iam/access_key_test.go b/internal/service/iam/access_key_test.go index 4eab1c0345bb..c44c5bda98eb 100644 --- a/internal/service/iam/access_key_test.go +++ b/internal/service/iam/access_key_test.go @@ -11,6 +11,7 @@ import ( "testing" awstypes "github.com/aws/aws-sdk-go-v2/service/iam/types" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-plugin-testing/terraform" @@ -301,10 +302,10 @@ func TestSESSMTPPasswordFromSecretKeySigV4(t *testing.T) { Input string Expected string }{ - {names.EUCentral1RegionID, "some+secret+key", "BMXhUYlu5Z3gSXVQORxlVa7XPaz91aGWdfHxvkOZdWZ2"}, - {names.EUCentral1RegionID, "another+secret+key", "BBbphbrQmrKMx42d1N6+C7VINYEBGI5v9VsZeTxwskfh"}, - {names.USWest1RegionID, "some+secret+key", "BH+jbMzper5WwlwUar9E1ySBqHa9whi0GPo+sJ0mVYJj"}, - {names.USWest1RegionID, "another+secret+key", "BKVmjjMDFk/qqw8EROW99bjCS65PF8WKvK5bSr4Y6EqF"}, + {endpoints.EuCentral1RegionID, "some+secret+key", "BMXhUYlu5Z3gSXVQORxlVa7XPaz91aGWdfHxvkOZdWZ2"}, + {endpoints.EuCentral1RegionID, "another+secret+key", "BBbphbrQmrKMx42d1N6+C7VINYEBGI5v9VsZeTxwskfh"}, + {endpoints.UsWest1RegionID, "some+secret+key", "BH+jbMzper5WwlwUar9E1ySBqHa9whi0GPo+sJ0mVYJj"}, + {endpoints.UsWest1RegionID, "another+secret+key", "BKVmjjMDFk/qqw8EROW99bjCS65PF8WKvK5bSr4Y6EqF"}, } for _, tc := range cases { diff --git a/internal/service/iam/exports_test.go b/internal/service/iam/exports_test.go index 41cd72221c9e..d75fb25008c5 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/group_data_source_test.go b/internal/service/iam/group_data_source_test.go index fc90ed812a66..70b4f482caa0 100644 --- a/internal/service/iam/group_data_source_test.go +++ b/internal/service/iam/group_data_source_test.go @@ -29,7 +29,7 @@ func TestAccIAMGroupDataSource_basic(t *testing.T) { resource.TestCheckResourceAttrSet("data.aws_iam_group.test", "group_id"), resource.TestCheckResourceAttr("data.aws_iam_group.test", names.AttrPath, "/"), resource.TestCheckResourceAttr("data.aws_iam_group.test", names.AttrGroupName, groupName), - acctest.CheckResourceAttrGlobalARN("data.aws_iam_group.test", names.AttrARN, "iam", fmt.Sprintf("group/%s", groupName)), + acctest.CheckResourceAttrGlobalARN(ctx, "data.aws_iam_group.test", names.AttrARN, "iam", fmt.Sprintf("group/%s", groupName)), ), }, }, @@ -54,7 +54,7 @@ func TestAccIAMGroupDataSource_users(t *testing.T) { resource.TestCheckResourceAttrSet("data.aws_iam_group.test", "group_id"), resource.TestCheckResourceAttr("data.aws_iam_group.test", names.AttrPath, "/"), resource.TestCheckResourceAttr("data.aws_iam_group.test", names.AttrGroupName, groupName), - acctest.CheckResourceAttrGlobalARN("data.aws_iam_group.test", names.AttrARN, "iam", fmt.Sprintf("group/%s", groupName)), + acctest.CheckResourceAttrGlobalARN(ctx, "data.aws_iam_group.test", names.AttrARN, "iam", fmt.Sprintf("group/%s", groupName)), resource.TestCheckResourceAttr("data.aws_iam_group.test", "users.#", strconv.Itoa(userCount)), resource.TestCheckResourceAttrSet("data.aws_iam_group.test", "users.0.arn"), resource.TestCheckResourceAttrSet("data.aws_iam_group.test", "users.0.user_id"), diff --git a/internal/service/iam/group_test.go b/internal/service/iam/group_test.go index 807ea56732ca..7a7f4dcc5592 100644 --- a/internal/service/iam/group_test.go +++ b/internal/service/iam/group_test.go @@ -36,7 +36,7 @@ func TestAccIAMGroup_basic(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckGroupExists(ctx, resourceName, &conf), // arn:${Partition}:iam::${Account}:group/${GroupNameWithPath} - acctest.CheckResourceAttrGlobalARN(resourceName, names.AttrARN, "iam", fmt.Sprintf("group/%s", rName)), + acctest.CheckResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "iam", fmt.Sprintf("group/%s", rName)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, names.AttrPath, "/"), resource.TestCheckResourceAttrSet(resourceName, "unique_id"), @@ -92,7 +92,7 @@ func TestAccIAMGroup_nameChange(t *testing.T) { Config: testAccGroupConfig_basic(rName1), Check: resource.ComposeTestCheckFunc( testAccCheckGroupExists(ctx, resourceName, &conf), - acctest.CheckResourceAttrGlobalARN(resourceName, names.AttrARN, "iam", fmt.Sprintf("group/%s", rName1)), + acctest.CheckResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "iam", fmt.Sprintf("group/%s", rName1)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName1), ), }, @@ -100,7 +100,7 @@ func TestAccIAMGroup_nameChange(t *testing.T) { Config: testAccGroupConfig_basic(rName2), Check: resource.ComposeTestCheckFunc( testAccCheckGroupExists(ctx, resourceName, &conf), - acctest.CheckResourceAttrGlobalARN(resourceName, names.AttrARN, "iam", fmt.Sprintf("group/%s", rName2)), + acctest.CheckResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "iam", fmt.Sprintf("group/%s", rName2)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName2), ), }, @@ -124,7 +124,7 @@ func TestAccIAMGroup_path(t *testing.T) { Config: testAccGroupConfig_path(rName, "/path1/"), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckGroupExists(ctx, resourceName, &conf), - acctest.CheckResourceAttrGlobalARN(resourceName, names.AttrARN, "iam", fmt.Sprintf("group/path1/%s", rName)), + acctest.CheckResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "iam", fmt.Sprintf("group/path1/%s", rName)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, names.AttrPath, "/path1/"), ), @@ -138,7 +138,7 @@ func TestAccIAMGroup_path(t *testing.T) { Config: testAccGroupConfig_path(rName, "/path2/"), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckGroupExists(ctx, resourceName, &conf), - acctest.CheckResourceAttrGlobalARN(resourceName, names.AttrARN, "iam", fmt.Sprintf("group/path2/%s", rName)), + acctest.CheckResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "iam", fmt.Sprintf("group/path2/%s", rName)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, names.AttrPath, "/path2/"), ), diff --git a/internal/service/iam/instance_profile_test.go b/internal/service/iam/instance_profile_test.go index 1e65b63f2d64..27e0c9ddc579 100644 --- a/internal/service/iam/instance_profile_test.go +++ b/internal/service/iam/instance_profile_test.go @@ -36,7 +36,7 @@ func TestAccIAMInstanceProfile_basic(t *testing.T) { Config: testAccInstanceProfileConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckInstanceProfileExists(ctx, resourceName, &conf), - acctest.CheckResourceAttrGlobalARN(resourceName, names.AttrARN, "iam", fmt.Sprintf("instance-profile/%s", rName)), + acctest.CheckResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "iam", fmt.Sprintf("instance-profile/%s", rName)), resource.TestCheckResourceAttrPair(resourceName, names.AttrRole, "aws_iam_role.test", names.AttrName), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), @@ -201,7 +201,7 @@ func TestAccIAMInstanceProfile_launchConfiguration(t *testing.T) { Config: testAccInstanceProfileConfig_launchConfiguration(rName), Check: resource.ComposeTestCheckFunc( testAccCheckInstanceProfileExists(ctx, resourceName, &conf), - acctest.CheckResourceAttrGlobalARN(resourceName, names.AttrARN, "iam", fmt.Sprintf("instance-profile/%s", rName)), + acctest.CheckResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "iam", fmt.Sprintf("instance-profile/%s", rName)), resource.TestCheckResourceAttrPair(resourceName, names.AttrRole, "aws_iam_role.test", names.AttrName), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), ), @@ -215,7 +215,7 @@ func TestAccIAMInstanceProfile_launchConfiguration(t *testing.T) { Config: testAccInstanceProfileConfig_launchConfiguration(rName), Check: resource.ComposeTestCheckFunc( testAccCheckInstanceProfileExists(ctx, resourceName, &conf), - acctest.CheckResourceAttrGlobalARN(resourceName, names.AttrARN, "iam", fmt.Sprintf("instance-profile/%s", rName)), + acctest.CheckResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "iam", fmt.Sprintf("instance-profile/%s", rName)), resource.TestCheckResourceAttrPair(resourceName, names.AttrRole, "aws_iam_role.test", names.AttrName), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), ), @@ -224,7 +224,7 @@ func TestAccIAMInstanceProfile_launchConfiguration(t *testing.T) { Config: testAccInstanceProfileConfig_launchConfiguration(rName), Check: resource.ComposeTestCheckFunc( testAccCheckInstanceProfileExists(ctx, resourceName, &conf), - acctest.CheckResourceAttrGlobalARN(resourceName, names.AttrARN, "iam", fmt.Sprintf("instance-profile/%s", rName)), + acctest.CheckResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "iam", fmt.Sprintf("instance-profile/%s", rName)), resource.TestCheckResourceAttrPair(resourceName, names.AttrRole, "aws_iam_role.test", names.AttrName), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), ), @@ -233,7 +233,7 @@ func TestAccIAMInstanceProfile_launchConfiguration(t *testing.T) { Config: testAccInstanceProfileConfig_launchConfiguration(rName), Check: resource.ComposeTestCheckFunc( testAccCheckInstanceProfileExists(ctx, resourceName, &conf), - acctest.CheckResourceAttrGlobalARN(resourceName, names.AttrARN, "iam", fmt.Sprintf("instance-profile/%s", rName)), + acctest.CheckResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "iam", fmt.Sprintf("instance-profile/%s", rName)), resource.TestCheckResourceAttrPair(resourceName, names.AttrRole, "aws_iam_role.test", names.AttrName), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), ), @@ -247,7 +247,7 @@ func TestAccIAMInstanceProfile_launchConfiguration(t *testing.T) { Config: testAccInstanceProfileConfig_launchConfiguration(rName), Check: resource.ComposeTestCheckFunc( testAccCheckInstanceProfileExists(ctx, resourceName, &conf), - acctest.CheckResourceAttrGlobalARN(resourceName, names.AttrARN, "iam", fmt.Sprintf("instance-profile/%s", rName)), + acctest.CheckResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "iam", fmt.Sprintf("instance-profile/%s", rName)), resource.TestCheckResourceAttrPair(resourceName, names.AttrRole, "aws_iam_role.test", names.AttrName), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), ), diff --git a/internal/service/iam/openid_connect_provider_test.go b/internal/service/iam/openid_connect_provider_test.go index 226d323cd743..f46acb41964f 100644 --- a/internal/service/iam/openid_connect_provider_test.go +++ b/internal/service/iam/openid_connect_provider_test.go @@ -34,7 +34,7 @@ func TestAccIAMOpenIDConnectProvider_basic(t *testing.T) { Config: testAccOpenIDConnectProviderConfig_basic(rString), Check: resource.ComposeTestCheckFunc( testAccCheckOpenIDConnectProviderExists(ctx, resourceName), - acctest.CheckResourceAttrGlobalARN(resourceName, names.AttrARN, "iam", fmt.Sprintf("oidc-provider/%s", url)), + acctest.CheckResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "iam", fmt.Sprintf("oidc-provider/%s", url)), resource.TestCheckResourceAttr(resourceName, names.AttrURL, url), resource.TestCheckResourceAttr(resourceName, "client_id_list.#", "1"), resource.TestCheckResourceAttr(resourceName, "client_id_list.0", diff --git a/internal/service/iam/organizations_features.go b/internal/service/iam/organizations_features.go new file mode 100644 index 000000000000..43468a6c6e38 --- /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 000000000000..38088d23dc1a --- /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/policy_test.go b/internal/service/iam/policy_test.go index d583676449d9..5367e661eb04 100644 --- a/internal/service/iam/policy_test.go +++ b/internal/service/iam/policy_test.go @@ -37,7 +37,7 @@ func TestAccIAMPolicy_basic(t *testing.T) { Config: testAccPolicyConfig_name(rName), Check: resource.ComposeTestCheckFunc( testAccCheckPolicyExists(ctx, resourceName, &out), - acctest.CheckResourceAttrGlobalARN(resourceName, names.AttrARN, "iam", fmt.Sprintf("policy/%s", rName)), + acctest.CheckResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "iam", fmt.Sprintf("policy/%s", rName)), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), resource.TestCheckResourceAttr(resourceName, "attachment_count", "0"), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), diff --git a/internal/service/iam/roles_data_source.go b/internal/service/iam/roles_data_source.go index 37231e722448..8b230ae78bae 100644 --- a/internal/service/iam/roles_data_source.go +++ b/internal/service/iam/roles_data_source.go @@ -80,7 +80,7 @@ func dataSourceRolesRead(ctx context.Context, d *schema.ResourceData, meta inter } } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) var arns, nms []string diff --git a/internal/service/iam/saml_provider_test.go b/internal/service/iam/saml_provider_test.go index 10b85389f4eb..a4c1e51af2a5 100644 --- a/internal/service/iam/saml_provider_test.go +++ b/internal/service/iam/saml_provider_test.go @@ -35,7 +35,7 @@ func TestAccIAMSAMLProvider_basic(t *testing.T) { Config: testAccSAMLProviderConfig_basic(rName, idpEntityId), Check: resource.ComposeTestCheckFunc( testAccCheckSAMLProviderExists(ctx, resourceName), - acctest.CheckResourceAttrGlobalARN(resourceName, names.AttrARN, "iam", fmt.Sprintf("saml-provider/%s", rName)), + acctest.CheckResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "iam", fmt.Sprintf("saml-provider/%s", rName)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttrSet(resourceName, "saml_metadata_document"), resource.TestCheckResourceAttrSet(resourceName, "valid_until"), diff --git a/internal/service/iam/security_token_service_preferences.go b/internal/service/iam/security_token_service_preferences.go index 77a56ac62c25..8b30d166e563 100644 --- a/internal/service/iam/security_token_service_preferences.go +++ b/internal/service/iam/security_token_service_preferences.go @@ -49,7 +49,7 @@ func resourceSecurityTokenServicePreferencesUpsert(ctx context.Context, d *schem } if d.IsNewResource() { - d.SetId(meta.(*conns.AWSClient).AccountID) + d.SetId(meta.(*conns.AWSClient).AccountID(ctx)) } return append(diags, resourceSecurityTokenServicePreferencesRead(ctx, d, meta)...) diff --git a/internal/service/iam/server_certificate_test.go b/internal/service/iam/server_certificate_test.go index df2ac177119d..ce93fe7b61b6 100644 --- a/internal/service/iam/server_certificate_test.go +++ b/internal/service/iam/server_certificate_test.go @@ -39,7 +39,7 @@ func TestAccIAMServerCertificate_basic(t *testing.T) { Config: testAccServerCertificateConfig_basic(rName, key, certificate), Check: resource.ComposeTestCheckFunc( testAccCheckServerCertificateExists(ctx, resourceName, &cert), - acctest.CheckResourceAttrGlobalARN(resourceName, names.AttrARN, "iam", fmt.Sprintf("server-certificate/%s", rName)), + acctest.CheckResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "iam", fmt.Sprintf("server-certificate/%s", rName)), acctest.CheckResourceAttrRFC3339(resourceName, "expiration"), acctest.CheckResourceAttrRFC3339(resourceName, "upload_date"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), diff --git a/internal/service/iam/service_endpoints_gen_test.go b/internal/service/iam/service_endpoints_gen_test.go index 6f8b3786825c..65b0cca8ed83 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_linked_role_test.go b/internal/service/iam/service_linked_role_test.go index 17564eb5a449..fc491c7436d3 100644 --- a/internal/service/iam/service_linked_role_test.go +++ b/internal/service/iam/service_linked_role_test.go @@ -109,7 +109,7 @@ func TestAccIAMServiceLinkedRole_basic(t *testing.T) { Config: testAccServiceLinkedRoleConfig_basic(awsServiceName), Check: resource.ComposeTestCheckFunc( testAccCheckServiceLinkedRoleExists(ctx, resourceName), - acctest.CheckResourceAttrGlobalARN(resourceName, names.AttrARN, "iam", arnResource), + acctest.CheckResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "iam", arnResource), resource.TestCheckResourceAttr(resourceName, "aws_service_name", awsServiceName), acctest.CheckResourceAttrRFC3339(resourceName, "create_date"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -146,7 +146,7 @@ func TestAccIAMServiceLinkedRole_customSuffix(t *testing.T) { Config: testAccServiceLinkedRoleConfig_customSuffix(awsServiceName, customSuffix), Check: resource.ComposeTestCheckFunc( testAccCheckServiceLinkedRoleExists(ctx, resourceName), - acctest.CheckResourceAttrGlobalARN(resourceName, names.AttrARN, "iam", fmt.Sprintf("role%s%s", path, name)), + acctest.CheckResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "iam", fmt.Sprintf("role%s%s", path, name)), resource.TestCheckResourceAttr(resourceName, names.AttrName, name), ), }, @@ -176,7 +176,7 @@ func TestAccIAMServiceLinkedRole_CustomSuffix_diffSuppressFunc(t *testing.T) { Config: testAccServiceLinkedRoleConfig_basic(awsServiceName), Check: resource.ComposeTestCheckFunc( testAccCheckServiceLinkedRoleExists(ctx, resourceName), - acctest.CheckResourceAttrGlobalARN(resourceName, names.AttrARN, "iam", fmt.Sprintf("role/aws-service-role/%s/%s", awsServiceName, name)), + acctest.CheckResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "iam", fmt.Sprintf("role/aws-service-role/%s/%s", awsServiceName, name)), resource.TestCheckResourceAttr(resourceName, "custom_suffix", "CustomResource"), resource.TestCheckResourceAttr(resourceName, names.AttrName, name), ), diff --git a/internal/service/iam/service_package_gen.go b/internal/service/iam/service_package_gen.go index 8029167973b0..d16f91c483a8 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/iam/session_context_data_source_test.go b/internal/service/iam/session_context_data_source_test.go index fbfe0d911076..d47d5ae78018 100644 --- a/internal/service/iam/session_context_data_source_test.go +++ b/internal/service/iam/session_context_data_source_test.go @@ -205,7 +205,7 @@ func TestAccIAMSessionContextDataSource_notAssumedRoleUser(t *testing.T) { { Config: testAccSessionContextDataSourceConfig_user(rName), Check: resource.ComposeAggregateTestCheckFunc( - acctest.CheckResourceAttrGlobalARN(dataSourceName, names.AttrARN, "iam", fmt.Sprintf("user/division/extra-division/not-assumed-role/%[1]s", rName)), + acctest.CheckResourceAttrGlobalARN(ctx, dataSourceName, names.AttrARN, "iam", fmt.Sprintf("user/division/extra-division/not-assumed-role/%[1]s", rName)), resource.TestCheckResourceAttr(dataSourceName, "issuer_name", ""), resource.TestCheckResourceAttr(dataSourceName, "session_name", ""), ), diff --git a/internal/service/iam/users_data_source.go b/internal/service/iam/users_data_source.go index 2159b42a9fd2..1fe0b19489f8 100644 --- a/internal/service/iam/users_data_source.go +++ b/internal/service/iam/users_data_source.go @@ -56,7 +56,7 @@ func dataSourceUsersRead(ctx context.Context, d *schema.ResourceData, meta inter return sdkdiag.AppendErrorf(diags, "reading IAM users: %s", err) } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) var arns, nms []string diff --git a/internal/service/iam/virtual_mfa_device_test.go b/internal/service/iam/virtual_mfa_device_test.go index 98ac51073627..ee0e3111b578 100644 --- a/internal/service/iam/virtual_mfa_device_test.go +++ b/internal/service/iam/virtual_mfa_device_test.go @@ -37,7 +37,7 @@ func TestAccIAMVirtualMFADevice_basic(t *testing.T) { Config: testAccVirtualMFADeviceConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckVirtualMFADeviceExists(ctx, resourceName, &conf), - acctest.CheckResourceAttrGlobalARN(resourceName, names.AttrARN, "iam", fmt.Sprintf("mfa/%s", rName)), + acctest.CheckResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "iam", fmt.Sprintf("mfa/%s", rName)), resource.TestCheckResourceAttrSet(resourceName, "base_32_string_seed"), resource.TestCheckNoResourceAttr(resourceName, "enable_date"), resource.TestCheckResourceAttr(resourceName, names.AttrPath, "/"), @@ -77,7 +77,7 @@ func TestAccIAMVirtualMFADevice_path(t *testing.T) { Config: testAccVirtualMFADeviceConfig_path(rName, path), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckVirtualMFADeviceExists(ctx, resourceName, &conf), - acctest.CheckResourceAttrGlobalARN(resourceName, names.AttrARN, "iam", fmt.Sprintf("mfa%s%s", path, rName)), + acctest.CheckResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "iam", fmt.Sprintf("mfa%s%s", path, rName)), resource.TestCheckResourceAttr(resourceName, names.AttrPath, path), ), }, diff --git a/internal/service/identitystore/service_endpoints_gen_test.go b/internal/service/identitystore/service_endpoints_gen_test.go index f80aed4ade0e..5223dc6845ca 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/component_test.go b/internal/service/imagebuilder/component_test.go index c2fb8826e4ff..391913f06995 100644 --- a/internal/service/imagebuilder/component_test.go +++ b/internal/service/imagebuilder/component_test.go @@ -35,7 +35,7 @@ func TestAccImageBuilderComponent_basic(t *testing.T) { Config: testAccComponentConfig_name(rName), Check: resource.ComposeTestCheckFunc( testAccCheckComponentExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "imagebuilder", regexache.MustCompile(fmt.Sprintf("component/%s/1.0.0/[1-9][0-9]*", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "imagebuilder", regexache.MustCompile(fmt.Sprintf("component/%s/1.0.0/[1-9][0-9]*", rName))), resource.TestCheckResourceAttr(resourceName, "change_description", ""), resource.TestMatchResourceAttr(resourceName, "data", regexache.MustCompile(`schemaVersion`)), acctest.CheckResourceAttrRFC3339(resourceName, "date_created"), @@ -43,7 +43,7 @@ func TestAccImageBuilderComponent_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, names.AttrEncrypted, acctest.CtTrue), resource.TestCheckResourceAttr(resourceName, names.AttrKMSKeyID, ""), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwner), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwner), resource.TestCheckResourceAttr(resourceName, "platform", string(awstypes.PlatformLinux)), resource.TestCheckResourceAttr(resourceName, "supported_os_versions.#", "0"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), diff --git a/internal/service/imagebuilder/components_data_source.go b/internal/service/imagebuilder/components_data_source.go index 8febf29b95e0..13f9b661b73e 100644 --- a/internal/service/imagebuilder/components_data_source.go +++ b/internal/service/imagebuilder/components_data_source.go @@ -65,7 +65,7 @@ func dataSourceComponentsRead(ctx context.Context, d *schema.ResourceData, meta return sdkdiag.AppendErrorf(diags, "reading Image Builder Components: %s", err) } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) d.Set(names.AttrARNs, tfslices.ApplyToAll(components, func(v awstypes.ComponentVersion) string { return aws.ToString(v.Arn) })) diff --git a/internal/service/imagebuilder/container_recipe_test.go b/internal/service/imagebuilder/container_recipe_test.go index df0b795cf34c..691dca7734dd 100644 --- a/internal/service/imagebuilder/container_recipe_test.go +++ b/internal/service/imagebuilder/container_recipe_test.go @@ -35,7 +35,7 @@ func TestAccImageBuilderContainerRecipe_basic(t *testing.T) { Config: testAccContainerRecipeConfig_name(rName), Check: resource.ComposeTestCheckFunc( testAccCheckContainerRecipeExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "imagebuilder", regexache.MustCompile(fmt.Sprintf("container-recipe/%s/1.0.0", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "imagebuilder", regexache.MustCompile(fmt.Sprintf("container-recipe/%s/1.0.0", rName))), resource.TestCheckResourceAttr(resourceName, "component.#", "1"), acctest.CheckResourceAttrRegionalARNAccountID(resourceName, "component.0.component_arn", "imagebuilder", "aws", "component/update-linux/x.x.x"), resource.TestCheckResourceAttr(resourceName, "component.0.parameter.#", "0"), @@ -47,7 +47,7 @@ func TestAccImageBuilderContainerRecipe_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "instance_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, names.AttrKMSKeyID, ""), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwner), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwner), acctest.CheckResourceAttrRegionalARNAccountID(resourceName, "parent_image", "imagebuilder", "aws", "image/amazon-linux-x86-2/x.x.x"), resource.TestCheckResourceAttr(resourceName, "platform", string(awstypes.PlatformLinux)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), diff --git a/internal/service/imagebuilder/container_recipes_data_source.go b/internal/service/imagebuilder/container_recipes_data_source.go index d4c73deba616..200fa6263cab 100644 --- a/internal/service/imagebuilder/container_recipes_data_source.go +++ b/internal/service/imagebuilder/container_recipes_data_source.go @@ -65,7 +65,7 @@ func dataSourceContainerRecipesRead(ctx context.Context, d *schema.ResourceData, return sdkdiag.AppendErrorf(diags, "reading Image Builder Container Recipes: %s", err) } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) d.Set(names.AttrARNs, tfslices.ApplyToAll(containerRecipes, func(v awstypes.ContainerRecipeSummary) string { return aws.ToString(v.Arn) })) diff --git a/internal/service/imagebuilder/distribution_configuration_test.go b/internal/service/imagebuilder/distribution_configuration_test.go index df00e55e8a23..f52124d708e3 100644 --- a/internal/service/imagebuilder/distribution_configuration_test.go +++ b/internal/service/imagebuilder/distribution_configuration_test.go @@ -45,7 +45,7 @@ func TestAccImageBuilderDistributionConfiguration_basic(t *testing.T) { Config: testAccDistributionConfigurationConfig_name(rName), Check: resource.ComposeTestCheckFunc( testAccCheckDistributionConfigurationExists(ctx, resourceName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "imagebuilder", fmt.Sprintf("distribution-configuration/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "imagebuilder", fmt.Sprintf("distribution-configuration/%s", rName)), acctest.CheckResourceAttrRFC3339(resourceName, "date_created"), resource.TestCheckResourceAttr(resourceName, "date_updated", ""), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), diff --git a/internal/service/imagebuilder/distribution_configurations_data_source.go b/internal/service/imagebuilder/distribution_configurations_data_source.go index fee149ac4282..09423f6ce6de 100644 --- a/internal/service/imagebuilder/distribution_configurations_data_source.go +++ b/internal/service/imagebuilder/distribution_configurations_data_source.go @@ -55,7 +55,7 @@ func dataSourceDistributionConfigurationsRead(ctx context.Context, d *schema.Res return sdkdiag.AppendErrorf(diags, "reading Image Builder Distribution Configurations: %s", err) } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) d.Set(names.AttrARNs, tfslices.ApplyToAll(distributionConfigurations, func(v awstypes.DistributionConfigurationSummary) string { return aws.ToString(v.Arn) })) diff --git a/internal/service/imagebuilder/image_pipeline_test.go b/internal/service/imagebuilder/image_pipeline_test.go index 9e0470617eca..62df8b404190 100644 --- a/internal/service/imagebuilder/image_pipeline_test.go +++ b/internal/service/imagebuilder/image_pipeline_test.go @@ -37,7 +37,7 @@ func TestAccImageBuilderImagePipeline_basic(t *testing.T) { Config: testAccImagePipelineConfig_name(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckImagePipelineExists(ctx, resourceName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "imagebuilder", fmt.Sprintf("image-pipeline/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "imagebuilder", fmt.Sprintf("image-pipeline/%s", rName)), acctest.CheckResourceAttrRFC3339(resourceName, "date_created"), resource.TestCheckResourceAttr(resourceName, "date_last_run", ""), resource.TestCheckResourceAttr(resourceName, "date_next_run", ""), diff --git a/internal/service/imagebuilder/image_pipelines_data_source.go b/internal/service/imagebuilder/image_pipelines_data_source.go index bdc5a2631045..f4916fc6b0bf 100644 --- a/internal/service/imagebuilder/image_pipelines_data_source.go +++ b/internal/service/imagebuilder/image_pipelines_data_source.go @@ -55,7 +55,7 @@ func dataSourceImagePipelinesRead(ctx context.Context, d *schema.ResourceData, m return sdkdiag.AppendErrorf(diags, "reading Image Builder Image Pipelines: %s", err) } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) d.Set(names.AttrARNs, tfslices.ApplyToAll(imagePipelines, func(v awstypes.ImagePipeline) string { return aws.ToString(v.Arn) })) diff --git a/internal/service/imagebuilder/image_recipe_test.go b/internal/service/imagebuilder/image_recipe_test.go index f2bdce8a013e..795b12ec77d8 100644 --- a/internal/service/imagebuilder/image_recipe_test.go +++ b/internal/service/imagebuilder/image_recipe_test.go @@ -36,13 +36,13 @@ func TestAccImageBuilderImageRecipe_basic(t *testing.T) { Config: testAccImageRecipeConfig_name(rName), Check: resource.ComposeTestCheckFunc( testAccCheckImageRecipeExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "imagebuilder", regexache.MustCompile(fmt.Sprintf("image-recipe/%s/1.0.0", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "imagebuilder", regexache.MustCompile(fmt.Sprintf("image-recipe/%s/1.0.0", rName))), resource.TestCheckResourceAttr(resourceName, "block_device_mapping.#", "0"), resource.TestCheckResourceAttr(resourceName, "component.#", "1"), acctest.CheckResourceAttrRFC3339(resourceName, "date_created"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwner), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwner), acctest.CheckResourceAttrRegionalARNAccountID(resourceName, "parent_image", "imagebuilder", "aws", "image/amazon-linux-2-x86/x.x.x"), resource.TestCheckResourceAttr(resourceName, "platform", string(awstypes.PlatformLinux)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), diff --git a/internal/service/imagebuilder/image_recipes_data_source.go b/internal/service/imagebuilder/image_recipes_data_source.go index 7e12d6fa4d53..aa2516d72be8 100644 --- a/internal/service/imagebuilder/image_recipes_data_source.go +++ b/internal/service/imagebuilder/image_recipes_data_source.go @@ -65,7 +65,7 @@ func dataSourceImageRecipesRead(ctx context.Context, d *schema.ResourceData, met return sdkdiag.AppendErrorf(diags, "reading Image Builder Image Recipes: %s", err) } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) d.Set(names.AttrARNs, tfslices.ApplyToAll(imageRecipes, func(v awstypes.ImageRecipeSummary) string { return aws.ToString(v.Arn) })) diff --git a/internal/service/imagebuilder/image_test.go b/internal/service/imagebuilder/image_test.go index 8f2d289ffee4..00a8eeb25927 100644 --- a/internal/service/imagebuilder/image_test.go +++ b/internal/service/imagebuilder/image_test.go @@ -37,7 +37,7 @@ func TestAccImageBuilderImage_basic(t *testing.T) { Config: testAccImageConfig_required(rName), Check: resource.ComposeTestCheckFunc( testAccCheckImageExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "imagebuilder", regexache.MustCompile(fmt.Sprintf("image/%s/1.0.0/[1-9][0-9]*", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "imagebuilder", regexache.MustCompile(fmt.Sprintf("image/%s/1.0.0/[1-9][0-9]*", rName))), resource.TestCheckNoResourceAttr(resourceName, "container_recipe_arn"), acctest.CheckResourceAttrRFC3339(resourceName, "date_created"), resource.TestCheckNoResourceAttr(resourceName, "distribution_configuration_arn"), diff --git a/internal/service/imagebuilder/infrastructure_configuration_test.go b/internal/service/imagebuilder/infrastructure_configuration_test.go index 3f17a0a010eb..acae0aac6dd2 100644 --- a/internal/service/imagebuilder/infrastructure_configuration_test.go +++ b/internal/service/imagebuilder/infrastructure_configuration_test.go @@ -34,7 +34,7 @@ func TestAccImageBuilderInfrastructureConfiguration_basic(t *testing.T) { Config: testAccInfrastructureConfigurationConfig_name(rName), Check: resource.ComposeTestCheckFunc( testAccCheckInfrastructureConfigurationExists(ctx, resourceName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "imagebuilder", fmt.Sprintf("infrastructure-configuration/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "imagebuilder", fmt.Sprintf("infrastructure-configuration/%s", rName)), acctest.CheckResourceAttrRFC3339(resourceName, "date_created"), resource.TestCheckResourceAttr(resourceName, "date_updated", ""), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), diff --git a/internal/service/imagebuilder/infrastructure_configurations_data_source.go b/internal/service/imagebuilder/infrastructure_configurations_data_source.go index fdccc6f6ff46..1767535afe20 100644 --- a/internal/service/imagebuilder/infrastructure_configurations_data_source.go +++ b/internal/service/imagebuilder/infrastructure_configurations_data_source.go @@ -55,7 +55,7 @@ func dataSourceInfrastructureConfigurationsRead(ctx context.Context, d *schema.R return sdkdiag.AppendErrorf(diags, "reading Image Builder Infrastructure Configurations: %s", err) } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) d.Set(names.AttrARNs, tfslices.ApplyToAll(infrastructureConfigurations, func(v awstypes.InfrastructureConfigurationSummary) string { return aws.ToString(v.Arn) })) diff --git a/internal/service/imagebuilder/lifecycle_policy_test.go b/internal/service/imagebuilder/lifecycle_policy_test.go index e7c82ccb0bba..ad2d239c3721 100644 --- a/internal/service/imagebuilder/lifecycle_policy_test.go +++ b/internal/service/imagebuilder/lifecycle_policy_test.go @@ -34,7 +34,7 @@ func TestAccImageBuilderLifecyclePolicy_basic(t *testing.T) { Config: testAccLifecyclePolicyConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckLifecyclePolicyExists(ctx, resourceName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "imagebuilder", fmt.Sprintf("lifecycle-policy/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "imagebuilder", fmt.Sprintf("lifecycle-policy/%s", rName)), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "Used for setting lifecycle policies"), resource.TestCheckResourceAttrSet(resourceName, "execution_role"), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), diff --git a/internal/service/imagebuilder/service_endpoints_gen_test.go b/internal/service/imagebuilder/service_endpoints_gen_test.go index 73686a1041e2..d7e3580e7a8a 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/imagebuilder/sweep.go b/internal/service/imagebuilder/sweep.go index 2c3ac2906db0..dfc0deae5fd9 100644 --- a/internal/service/imagebuilder/sweep.go +++ b/internal/service/imagebuilder/sweep.go @@ -4,6 +4,7 @@ package imagebuilder import ( + "context" "fmt" "log" @@ -11,6 +12,7 @@ import ( "github.com/aws/aws-sdk-go-v2/service/imagebuilder" "github.com/aws/aws-sdk-go-v2/service/imagebuilder/types" "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/sweep" "github.com/hashicorp/terraform-provider-aws/internal/sweep/awsv2" "github.com/hashicorp/terraform-provider-aws/internal/sweep/framework" @@ -18,10 +20,7 @@ import ( ) func RegisterSweepers() { - resource.AddTestSweepers("aws_imagebuilder_component", &resource.Sweeper{ - Name: "aws_imagebuilder_component", - F: sweepComponents, - }) + awsv2.Register("aws_imagebuilder_component", sweepComponents) resource.AddTestSweepers("aws_imagebuilder_distribution_configuration", &resource.Sweeper{ Name: "aws_imagebuilder_distribution_configuration", @@ -59,47 +58,45 @@ func RegisterSweepers() { }) } -func sweepComponents(region string) error { - ctx := sweep.Context(region) - client, err := sweep.SharedRegionalSweepClient(ctx, region) - if err != nil { - return fmt.Errorf("error getting client: %s", err) - } +func sweepComponents(ctx context.Context, client *conns.AWSClient) ([]sweep.Sweepable, error) { conn := client.ImageBuilderClient(ctx) - input := &imagebuilder.ListComponentsInput{ + + var sweepResources []sweep.Sweepable + + r := resourceComponent() + input := imagebuilder.ListComponentsInput{ Owner: types.OwnershipSelf, } - sweepResources := make([]sweep.Sweepable, 0) - - pages := imagebuilder.NewListComponentsPaginator(conn, input) + pages := imagebuilder.NewListComponentsPaginator(conn, &input) for pages.HasMorePages() { page, err := pages.NextPage(ctx) - - if awsv2.SkipSweepError(err) { - log.Printf("[WARN] Skipping Image Builder Component sweep for %s: %s", region, err) - return nil - } - if err != nil { - return fmt.Errorf("error listing Image Builder Components (%s): %w", region, err) + return nil, err } for _, v := range page.ComponentVersionList { - r := resourceComponent() - d := r.Data(nil) - d.SetId(aws.ToString(v.Arn)) - - sweepResources = append(sweepResources, sweep.NewSweepResource(r, d, client)) + // The Delete operation needs the Component Build Version ARN, not just the Component Version ARN + input := imagebuilder.ListComponentBuildVersionsInput{ + ComponentVersionArn: v.Arn, + } + pages := imagebuilder.NewListComponentBuildVersionsPaginator(conn, &input) + for pages.HasMorePages() { + page, err := pages.NextPage(ctx) + if err != nil { + return nil, err + } + + for _, v := range page.ComponentSummaryList { + d := r.Data(nil) + d.SetId(aws.ToString(v.Arn)) + + sweepResources = append(sweepResources, sweep.NewSweepResource(r, d, client)) + } + } } } - err = sweep.SweepOrchestrator(ctx, sweepResources) - - if err != nil { - return fmt.Errorf("error sweeping Image Builder Components (%s): %w", region, err) - } - - return nil + return sweepResources, nil } func sweepDistributionConfigurations(region string) error { diff --git a/internal/service/imagebuilder/workflow_test.go b/internal/service/imagebuilder/workflow_test.go index 9ee0307b35af..de3245e2dd0c 100644 --- a/internal/service/imagebuilder/workflow_test.go +++ b/internal/service/imagebuilder/workflow_test.go @@ -35,14 +35,14 @@ func TestAccImageBuilderWorkflow_basic(t *testing.T) { Config: testAccWorkflowConfig_name(rName), Check: resource.ComposeTestCheckFunc( testAccCheckWorkflowExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "imagebuilder", regexache.MustCompile(fmt.Sprintf("workflow/test/%s/1.0.0/[1-9][0-9]*", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "imagebuilder", regexache.MustCompile(fmt.Sprintf("workflow/test/%s/1.0.0/[1-9][0-9]*", rName))), resource.TestCheckResourceAttr(resourceName, "change_description", ""), resource.TestMatchResourceAttr(resourceName, "data", regexache.MustCompile(`schemaVersion`)), acctest.CheckResourceAttrRFC3339(resourceName, "date_created"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), resource.TestCheckResourceAttr(resourceName, names.AttrKMSKeyID, ""), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwner), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwner), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttr(resourceName, names.AttrType, string(types.WorkflowTypeTest)), resource.TestCheckResourceAttr(resourceName, names.AttrVersion, "1.0.0"), diff --git a/internal/service/inspector/assessment_target_test.go b/internal/service/inspector/assessment_target_test.go index cdc44b847555..f052327efb47 100644 --- a/internal/service/inspector/assessment_target_test.go +++ b/internal/service/inspector/assessment_target_test.go @@ -40,7 +40,7 @@ func TestAccInspectorAssessmentTarget_basic(t *testing.T) { Config: testAccAssessmentTargetConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckTargetExists(ctx, resourceName, &assessmentTarget1), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "inspector", regexache.MustCompile(`target/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "inspector", regexache.MustCompile(`target/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "resource_group_arn", ""), ), diff --git a/internal/service/inspector/assessment_template_test.go b/internal/service/inspector/assessment_template_test.go index e021471a6464..88fcf5923e88 100644 --- a/internal/service/inspector/assessment_template_test.go +++ b/internal/service/inspector/assessment_template_test.go @@ -40,7 +40,7 @@ func TestAccInspectorAssessmentTemplate_basic(t *testing.T) { Config: testAccAssessmentTemplateConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckTemplateExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "inspector", regexache.MustCompile(`target/.+/template/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "inspector", regexache.MustCompile(`target/.+/template/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrDuration, "3600"), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttrPair(resourceName, "rules_package_arns.#", "data.aws_inspector_rules_packages.available", "arns.#"), diff --git a/internal/service/inspector/resource_group_test.go b/internal/service/inspector/resource_group_test.go index 3fa0d5ecf6a1..249a85e7cf19 100644 --- a/internal/service/inspector/resource_group_test.go +++ b/internal/service/inspector/resource_group_test.go @@ -33,7 +33,7 @@ func TestAccInspectorResourceGroup_basic(t *testing.T) { Config: testAccResourceGroupConfig_basic, Check: resource.ComposeTestCheckFunc( testAccCheckResourceGroupExists(ctx, resourceName, &v1), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "inspector", regexache.MustCompile(`resourcegroup/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "inspector", regexache.MustCompile(`resourcegroup/.+`)), resource.TestCheckResourceAttr(resourceName, "tags.Name", "foo"), ), }, @@ -41,7 +41,7 @@ func TestAccInspectorResourceGroup_basic(t *testing.T) { Config: testAccResourceGroupConfig_modified, Check: resource.ComposeTestCheckFunc( testAccCheckResourceGroupExists(ctx, resourceName, &v2), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "inspector", regexache.MustCompile(`resourcegroup/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "inspector", regexache.MustCompile(`resourcegroup/.+`)), resource.TestCheckResourceAttr(resourceName, "tags.Name", "bar"), testAccCheckResourceGroupRecreated(&v1, &v2), ), diff --git a/internal/service/inspector/rules_packages_data_source.go b/internal/service/inspector/rules_packages_data_source.go index 90e6b8bda9d0..36169f529fa8 100644 --- a/internal/service/inspector/rules_packages_data_source.go +++ b/internal/service/inspector/rules_packages_data_source.go @@ -42,7 +42,7 @@ func dataSourceRulesPackagesRead(ctx context.Context, d *schema.ResourceData, me arns := output slices.Sort(arns) - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) d.Set(names.AttrARNs, arns) return diags diff --git a/internal/service/inspector/service_endpoints_gen_test.go b/internal/service/inspector/service_endpoints_gen_test.go index ca305ad39949..d47f8af331b1 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/enabler.go b/internal/service/inspector2/enabler.go index 3a964a870eed..814e26dcc25d 100644 --- a/internal/service/inspector2/enabler.go +++ b/internal/service/inspector2/enabler.go @@ -75,7 +75,7 @@ func ResourceEnabler() *schema.Resource { if l := len(accountIDs); l > 1 { client := meta.(*conns.AWSClient) - if slices.Contains(accountIDs, client.AccountID) { + if slices.Contains(accountIDs, client.AccountID(ctx)) { return fmt.Errorf(`"account_ids" can contain either the administrator account or one or more member accounts. Contains %v`, accountIDs) } } @@ -322,9 +322,9 @@ func resourceEnablerDelete(ctx context.Context, d *schema.ResourceData, meta int conn := client.Inspector2Client(ctx) accountIDs := getAccountIDs(d) - admin := slices.Contains(accountIDs, client.AccountID) + admin := slices.Contains(accountIDs, client.AccountID(ctx)) members := tfslices.Filter(accountIDs, func(s string) bool { - return s != client.AccountID + return s != client.AccountID(ctx) }) if len(members) > 0 { // Catch legacy case mixing admin account and member accounts @@ -340,7 +340,7 @@ func resourceEnablerDelete(ctx context.Context, d *schema.ResourceData, meta int return diags } } else if admin { - diags = append(diags, disableAccounts(ctx, conn, d, []string{client.AccountID})...) + diags = append(diags, disableAccounts(ctx, conn, d, []string{client.AccountID(ctx)})...) } return diags diff --git a/internal/service/inspector2/enabler_test.go b/internal/service/inspector2/enabler_test.go index f1103472e17e..02278f5594d2 100644 --- a/internal/service/inspector2/enabler_test.go +++ b/internal/service/inspector2/enabler_test.go @@ -11,6 +11,7 @@ import ( "testing" "github.com/aws/aws-sdk-go-v2/service/inspector2/types" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-plugin-testing/terraform" @@ -45,7 +46,7 @@ func testAccEnabler_basic(t *testing.T) { Config: testAccEnablerConfig_basic(resourceTypes), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckEnablerExists(ctx, resourceName, resourceTypes), - testAccCheckEnablerID(resourceName, resourceTypes), + testAccCheckEnablerID(ctx, resourceName, resourceTypes), resource.TestCheckResourceAttr(resourceName, "account_ids.#", "1"), resource.TestCheckTypeSetElemAttrPair(resourceName, "account_ids.*", "data.aws_caller_identity.current", names.AttrAccountID), resource.TestCheckResourceAttr(resourceName, "resource_types.#", "1"), @@ -77,7 +78,7 @@ func testAccEnabler_accountID(t *testing.T) { Config: testAccEnablerConfig_basic(resourceTypes), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckEnablerExists(ctx, resourceName, resourceTypes), - testAccCheckEnablerID(resourceName, resourceTypes), + testAccCheckEnablerID(ctx, resourceName, resourceTypes), resource.TestCheckResourceAttr(resourceName, "account_ids.#", "1"), resource.TestCheckTypeSetElemAttrPair(resourceName, "account_ids.0", "data.aws_caller_identity.current", names.AttrAccountID), resource.TestCheckResourceAttr(resourceName, "resource_types.#", "2"), @@ -141,7 +142,7 @@ func testAccEnabler_updateResourceTypes(t *testing.T) { Config: testAccEnablerConfig_basic(originalResourceTypes), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckEnablerExists(ctx, resourceName, originalResourceTypes), - testAccCheckEnablerID(resourceName, originalResourceTypes), + testAccCheckEnablerID(ctx, resourceName, originalResourceTypes), resource.TestCheckResourceAttr(resourceName, "account_ids.#", "1"), resource.TestCheckTypeSetElemAttrPair(resourceName, "account_ids.0", "data.aws_caller_identity.current", names.AttrAccountID), resource.TestCheckResourceAttr(resourceName, "resource_types.#", "1"), @@ -152,7 +153,7 @@ func testAccEnabler_updateResourceTypes(t *testing.T) { Config: testAccEnablerConfig_basic(update1ResourceTypes), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckEnablerExists(ctx, resourceName, update1ResourceTypes), - testAccCheckEnablerID(resourceName, update1ResourceTypes), + testAccCheckEnablerID(ctx, resourceName, update1ResourceTypes), resource.TestCheckResourceAttr(resourceName, "account_ids.#", "1"), resource.TestCheckTypeSetElemAttrPair(resourceName, "account_ids.0", "data.aws_caller_identity.current", names.AttrAccountID), resource.TestCheckResourceAttr(resourceName, "resource_types.#", "2"), @@ -164,7 +165,7 @@ func testAccEnabler_updateResourceTypes(t *testing.T) { Config: testAccEnablerConfig_basic(update2ResourceTypes), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckEnablerExists(ctx, resourceName, update2ResourceTypes), - testAccCheckEnablerID(resourceName, update2ResourceTypes), + testAccCheckEnablerID(ctx, resourceName, update2ResourceTypes), resource.TestCheckResourceAttr(resourceName, "account_ids.#", "1"), resource.TestCheckTypeSetElemAttrPair(resourceName, "account_ids.0", "data.aws_caller_identity.current", names.AttrAccountID), resource.TestCheckResourceAttr(resourceName, "resource_types.#", "1"), @@ -197,7 +198,7 @@ func testAccEnabler_updateResourceTypes_disjoint(t *testing.T) { Config: testAccEnablerConfig_basic(originalResourceTypes), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckEnablerExists(ctx, resourceName, originalResourceTypes), - testAccCheckEnablerID(resourceName, originalResourceTypes), + testAccCheckEnablerID(ctx, resourceName, originalResourceTypes), resource.TestCheckResourceAttr(resourceName, "account_ids.#", "1"), resource.TestCheckTypeSetElemAttrPair(resourceName, "account_ids.0", "data.aws_caller_identity.current", names.AttrAccountID), resource.TestCheckResourceAttr(resourceName, "resource_types.#", "1"), @@ -208,7 +209,7 @@ func testAccEnabler_updateResourceTypes_disjoint(t *testing.T) { Config: testAccEnablerConfig_basic(updatedResourceTypes), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckEnablerExists(ctx, resourceName, updatedResourceTypes), - testAccCheckEnablerID(resourceName, updatedResourceTypes), + testAccCheckEnablerID(ctx, resourceName, updatedResourceTypes), resource.TestCheckResourceAttr(resourceName, "account_ids.#", "1"), resource.TestCheckTypeSetElemAttrPair(resourceName, "account_ids.0", "data.aws_caller_identity.current", names.AttrAccountID), resource.TestCheckResourceAttr(resourceName, "resource_types.#", "1"), @@ -240,7 +241,7 @@ func testAccEnabler_lambda(t *testing.T) { Config: testAccEnablerConfig_basic(resourceTypes), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckEnablerExists(ctx, resourceName, resourceTypes), - testAccCheckEnablerID(resourceName, resourceTypes), + testAccCheckEnablerID(ctx, resourceName, resourceTypes), resource.TestCheckResourceAttr(resourceName, "account_ids.#", "1"), resource.TestCheckTypeSetElemAttrPair(resourceName, "account_ids.*", "data.aws_caller_identity.current", names.AttrAccountID), resource.TestCheckResourceAttr(resourceName, "resource_types.#", "1"), @@ -264,7 +265,7 @@ func testAccEnabler_lambdaCode(t *testing.T) { acctest.PreCheckInspector2(ctx, t) acctest.PreCheckOrganizationManagementAccount(ctx, t) // https://docs.aws.amazon.com/inspector/latest/user/inspector_regions.html#ins-regional-feature-availability. - acctest.PreCheckRegion(t, names.USWest2RegionID) + acctest.PreCheckRegion(t, endpoints.UsWest2RegionID) }, ErrorCheck: acctest.ErrorCheck(t, names.Inspector2ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, @@ -274,7 +275,7 @@ func testAccEnabler_lambdaCode(t *testing.T) { Config: testAccEnablerConfig_basic(resourceTypes), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckEnablerExists(ctx, resourceName, resourceTypes), - testAccCheckEnablerID(resourceName, resourceTypes), + testAccCheckEnablerID(ctx, resourceName, resourceTypes), resource.TestCheckResourceAttr(resourceName, "account_ids.#", "1"), resource.TestCheckTypeSetElemAttrPair(resourceName, "account_ids.*", "data.aws_caller_identity.current", names.AttrAccountID), resource.TestCheckResourceAttr(resourceName, "resource_types.#", "2"), @@ -310,7 +311,7 @@ func testAccEnabler_memberAccount_basic(t *testing.T) { Config: testAccEnablerConfig_MemberAccount(resourceTypes), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckEnablerExists(ctx, resourceName, resourceTypes), - testAccCheckEnablerIDProvider(resourceName, resourceTypes, acctest.NamedProviderFunc(acctest.ProviderNameAlternate, providers)), + testAccCheckEnablerIDProvider(ctx, resourceName, resourceTypes, acctest.NamedProviderFunc(acctest.ProviderNameAlternate, providers)), resource.TestCheckResourceAttr(resourceName, "account_ids.#", "1"), resource.TestCheckTypeSetElemAttrPair(resourceName, "account_ids.*", "data.aws_caller_identity.member", names.AttrAccountID), resource.TestCheckResourceAttr(resourceName, "resource_types.#", "1"), @@ -378,7 +379,7 @@ func testAccEnabler_memberAccount_multiple(t *testing.T) { Config: testAccEnablerConfig_MemberAccount_Multiple(t, resourceTypes), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckEnablerExists(ctx, resourceName, resourceTypes), - testAccCheckEnablerIDProvider(resourceName, resourceTypes, + testAccCheckEnablerIDProvider(ctx, resourceName, resourceTypes, acctest.NamedProviderFunc(acctest.ProviderNameAlternate, providers), acctest.NamedProviderFunc(acctest.ProviderNameThird, providers), ), @@ -418,7 +419,7 @@ func testAccEnabler_memberAccount_updateMemberAccounts(t *testing.T) { Config: testAccEnablerConfig_MemberAccount_UpdateMemberAccountsAlternate(t, resourceTypes), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckEnablerExists(ctx, resourceName, resourceTypes), - testAccCheckEnablerIDProvider(resourceName, resourceTypes, + testAccCheckEnablerIDProvider(ctx, resourceName, resourceTypes, acctest.NamedProviderFunc(acctest.ProviderNameAlternate, providers), ), resource.TestCheckResourceAttr(resourceName, "account_ids.#", "1"), @@ -431,7 +432,7 @@ func testAccEnabler_memberAccount_updateMemberAccounts(t *testing.T) { Config: testAccEnablerConfig_MemberAccount_UpdateMemberAccountsMultiple(t, resourceTypes), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckEnablerExists(ctx, resourceName, resourceTypes), - testAccCheckEnablerIDProvider(resourceName, resourceTypes, + testAccCheckEnablerIDProvider(ctx, resourceName, resourceTypes, acctest.NamedProviderFunc(acctest.ProviderNameAlternate, providers), acctest.NamedProviderFunc(acctest.ProviderNameThird, providers), ), @@ -446,7 +447,7 @@ func testAccEnabler_memberAccount_updateMemberAccounts(t *testing.T) { Config: testAccEnablerConfig_MemberAccount_UpdateMemberAccountsThird(t, resourceTypes), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckEnablerExists(ctx, resourceName, resourceTypes), - testAccCheckEnablerIDProvider(resourceName, resourceTypes, + testAccCheckEnablerIDProvider(ctx, resourceName, resourceTypes, acctest.NamedProviderFunc(acctest.ProviderNameThird, providers), ), resource.TestCheckResourceAttr(resourceName, "account_ids.#", "1"), @@ -486,7 +487,7 @@ func testAccEnabler_memberAccount_updateMemberAccountsAndScanTypes(t *testing.T) Config: testAccEnablerConfig_MemberAccount_UpdateMemberAccountsAlternate(t, originalResourceTypes), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckEnablerExists(ctx, resourceName, originalResourceTypes), - testAccCheckEnablerIDProvider(resourceName, originalResourceTypes, + testAccCheckEnablerIDProvider(ctx, resourceName, originalResourceTypes, acctest.NamedProviderFunc(acctest.ProviderNameAlternate, providers), ), resource.TestCheckResourceAttr(resourceName, "account_ids.#", "1"), @@ -499,7 +500,7 @@ func testAccEnabler_memberAccount_updateMemberAccountsAndScanTypes(t *testing.T) Config: testAccEnablerConfig_MemberAccount_UpdateMemberAccountsMultiple(t, update1ResourceTypes), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckEnablerExists(ctx, resourceName, update1ResourceTypes), - testAccCheckEnablerIDProvider(resourceName, update1ResourceTypes, + testAccCheckEnablerIDProvider(ctx, resourceName, update1ResourceTypes, acctest.NamedProviderFunc(acctest.ProviderNameAlternate, providers), acctest.NamedProviderFunc(acctest.ProviderNameThird, providers), ), @@ -515,7 +516,7 @@ func testAccEnabler_memberAccount_updateMemberAccountsAndScanTypes(t *testing.T) Config: testAccEnablerConfig_MemberAccount_UpdateMemberAccountsThird(t, update2ResourceTypes), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckEnablerExists(ctx, resourceName, update2ResourceTypes), - testAccCheckEnablerIDProvider(resourceName, update2ResourceTypes, + testAccCheckEnablerIDProvider(ctx, resourceName, update2ResourceTypes, acctest.NamedProviderFunc(acctest.ProviderNameThird, providers), ), resource.TestCheckResourceAttr(resourceName, "account_ids.#", "1"), @@ -609,15 +610,15 @@ func testAccCheckEnablerExists(ctx context.Context, name string, t []types.Resou } } -func testAccCheckEnablerID(resourceName string, types []types.ResourceScanType) resource.TestCheckFunc { - return testAccCheckEnablerIDProvider(resourceName, types, func() *schema.Provider { return acctest.Provider }) +func testAccCheckEnablerID(ctx context.Context, resourceName string, types []types.ResourceScanType) resource.TestCheckFunc { + return testAccCheckEnablerIDProvider(ctx, resourceName, types, func() *schema.Provider { return acctest.Provider }) } -func testAccCheckEnablerIDProvider(resourceName string, types []types.ResourceScanType, providerF ...func() *schema.Provider) resource.TestCheckFunc { +func testAccCheckEnablerIDProvider(ctx context.Context, resourceName string, types []types.ResourceScanType, providerF ...func() *schema.Provider) resource.TestCheckFunc { return func(s *terraform.State) error { // accountID := acctest.ProviderAccountID(providerF()) accountIDs := tfslices.ApplyToAll(providerF, func(f func() *schema.Provider) string { - return acctest.ProviderAccountID(f()) + return acctest.ProviderAccountID(ctx, f()) }) id := tfinspector2.EnablerID(accountIDs, types) return resource.TestCheckResourceAttr(resourceName, names.AttrID, id)(s) diff --git a/internal/service/inspector2/organization_configuration.go b/internal/service/inspector2/organization_configuration.go index 1e2125c7ed4c..fe90c3e2ef65 100644 --- a/internal/service/inspector2/organization_configuration.go +++ b/internal/service/inspector2/organization_configuration.go @@ -78,7 +78,7 @@ const ( func resourceOrganizationConfigurationCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics - d.SetId(meta.(*conns.AWSClient).AccountID) + d.SetId(meta.(*conns.AWSClient).AccountID(ctx)) return append(diags, resourceOrganizationConfigurationUpdate(ctx, d, meta)...) } diff --git a/internal/service/inspector2/service_endpoints_gen_test.go b/internal/service/inspector2/service_endpoints_gen_test.go index 2523dc2b352b..5a20d82d6774 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/monitor_test.go b/internal/service/internetmonitor/monitor_test.go index e04857a1fa64..e3c798a4ebeb 100644 --- a/internal/service/internetmonitor/monitor_test.go +++ b/internal/service/internetmonitor/monitor_test.go @@ -34,7 +34,7 @@ func TestAccInternetMonitorMonitor_basic(t *testing.T) { Config: testAccMonitorConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckMonitorExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "internetmonitor", regexache.MustCompile(`monitor/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "internetmonitor", regexache.MustCompile(`monitor/.+$`)), resource.TestCheckResourceAttr(resourceName, "health_events_config.#", "0"), resource.TestCheckResourceAttr(resourceName, "internet_measurements_log_delivery.#", "1"), resource.TestCheckResourceAttr(resourceName, "max_city_networks_to_monitor", "0"), diff --git a/internal/service/internetmonitor/service_endpoints_gen_test.go b/internal/service/internetmonitor/service_endpoints_gen_test.go index f0434020f4c8..85b663d8f8d9 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/authorizer_test.go b/internal/service/iot/authorizer_test.go index d25c5a153c0e..bbc28076a034 100644 --- a/internal/service/iot/authorizer_test.go +++ b/internal/service/iot/authorizer_test.go @@ -35,7 +35,7 @@ func TestAccIoTAuthorizer_basic(t *testing.T) { Config: testAccAuthorizerConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckAuthorizerExists(ctx, resourceName, &conf), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "iot", fmt.Sprintf("authorizer/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "iot", fmt.Sprintf("authorizer/%s", rName)), resource.TestCheckResourceAttr(resourceName, "enable_caching_for_http", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "signing_disabled", acctest.CtFalse), @@ -94,7 +94,7 @@ func TestAccIoTAuthorizer_signingDisabled(t *testing.T) { Config: testAccAuthorizerConfig_signingDisabled(rName), Check: resource.ComposeTestCheckFunc( testAccCheckAuthorizerExists(ctx, resourceName, &conf), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "iot", fmt.Sprintf("authorizer/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "iot", fmt.Sprintf("authorizer/%s", rName)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "signing_disabled", acctest.CtTrue), resource.TestCheckResourceAttr(resourceName, names.AttrStatus, "INACTIVE"), @@ -127,7 +127,7 @@ func TestAccIoTAuthorizer_update(t *testing.T) { Config: testAccAuthorizerConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckAuthorizerExists(ctx, resourceName, &conf), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "iot", fmt.Sprintf("authorizer/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "iot", fmt.Sprintf("authorizer/%s", rName)), resource.TestCheckResourceAttr(resourceName, "enable_caching_for_http", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "signing_disabled", acctest.CtFalse), @@ -141,7 +141,7 @@ func TestAccIoTAuthorizer_update(t *testing.T) { Config: testAccAuthorizerConfig_updated(rName), Check: resource.ComposeTestCheckFunc( testAccCheckAuthorizerExists(ctx, resourceName, &conf), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "iot", fmt.Sprintf("authorizer/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "iot", fmt.Sprintf("authorizer/%s", rName)), resource.TestCheckResourceAttr(resourceName, "enable_caching_for_http", acctest.CtTrue), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "signing_disabled", acctest.CtFalse), diff --git a/internal/service/iot/billing_group_test.go b/internal/service/iot/billing_group_test.go index 46b6a1f9e5f7..6feadcd2df56 100644 --- a/internal/service/iot/billing_group_test.go +++ b/internal/service/iot/billing_group_test.go @@ -34,7 +34,7 @@ func TestAccIoTBillingGroup_basic(t *testing.T) { Config: testAccBillingGroupConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckBillingGroupExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "iot", regexache.MustCompile(fmt.Sprintf("billinggroup/%s$", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "iot", regexache.MustCompile(fmt.Sprintf("billinggroup/%s$", rName))), resource.TestCheckResourceAttr(resourceName, "metadata.#", "1"), resource.TestCheckResourceAttrSet(resourceName, "metadata.0.creation_date"), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), @@ -178,7 +178,7 @@ func TestAccIoTBillingGroup_migrateFromPluginSDK(t *testing.T) { Config: testAccBillingGroupConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckBillingGroupExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "iot", regexache.MustCompile(fmt.Sprintf("billinggroup/%s$", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "iot", regexache.MustCompile(fmt.Sprintf("billinggroup/%s$", rName))), resource.TestCheckResourceAttr(resourceName, "metadata.#", "1"), resource.TestCheckResourceAttrSet(resourceName, "metadata.0.creation_date"), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), diff --git a/internal/service/iot/event_configurations.go b/internal/service/iot/event_configurations.go index 48cb55eebaf3..370ed40c4858 100644 --- a/internal/service/iot/event_configurations.go +++ b/internal/service/iot/event_configurations.go @@ -65,7 +65,7 @@ func resourceEventConfigurationsPut(ctx context.Context, d *schema.ResourceData, } if d.IsNewResource() { - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) } return append(diags, resourceEventConfigurationsRead(ctx, d, meta)...) diff --git a/internal/service/iot/indexing_configuration.go b/internal/service/iot/indexing_configuration.go index 349ae0b3eea6..a68f8c5a6b82 100644 --- a/internal/service/iot/indexing_configuration.go +++ b/internal/service/iot/indexing_configuration.go @@ -201,7 +201,7 @@ func resourceIndexingConfigurationPut(ctx context.Context, d *schema.ResourceDat } if d.IsNewResource() { - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) } return append(diags, resourceIndexingConfigurationRead(ctx, d, meta)...) diff --git a/internal/service/iot/logging_options.go b/internal/service/iot/logging_options.go index 6995e5e0eddd..7592778a0f9c 100644 --- a/internal/service/iot/logging_options.go +++ b/internal/service/iot/logging_options.go @@ -74,7 +74,7 @@ func resourceLoggingOptionsPut(ctx context.Context, d *schema.ResourceData, meta } if d.IsNewResource() { - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) } return append(diags, resourceLoggingOptionsRead(ctx, d, meta)...) diff --git a/internal/service/iot/policy_test.go b/internal/service/iot/policy_test.go index b3907e708491..b8a0651cf8b0 100644 --- a/internal/service/iot/policy_test.go +++ b/internal/service/iot/policy_test.go @@ -40,7 +40,7 @@ func TestAccIoTPolicy_basic(t *testing.T) { Config: testAccPolicyConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckPolicyExists(ctx, resourceName, &v), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "iot", fmt.Sprintf("policy/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "iot", fmt.Sprintf("policy/%s", rName)), resource.TestCheckResourceAttr(resourceName, "default_version_id", "1"), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttrSet(resourceName, names.AttrPolicy), diff --git a/internal/service/iot/registration_code_data_source.go b/internal/service/iot/registration_code_data_source.go index f51beabbd5d2..903b134bf8bf 100644 --- a/internal/service/iot/registration_code_data_source.go +++ b/internal/service/iot/registration_code_data_source.go @@ -39,7 +39,7 @@ func dataSourceRegistrationCodeRead(ctx context.Context, d *schema.ResourceData, return sdkdiag.AppendErrorf(diags, "reading IoT Registration Code: %s", err) } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) d.Set("registration_code", output.RegistrationCode) return diags diff --git a/internal/service/iot/role_alias_test.go b/internal/service/iot/role_alias_test.go index bec17473972b..f31b10c12615 100644 --- a/internal/service/iot/role_alias_test.go +++ b/internal/service/iot/role_alias_test.go @@ -36,7 +36,7 @@ func TestAccIoTRoleAlias_basic(t *testing.T) { Config: testAccRoleAliasConfig_basic(alias), Check: resource.ComposeTestCheckFunc( testAccCheckRoleAliasExists(ctx, resourceName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "iot", fmt.Sprintf("rolealias/%s", alias)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "iot", fmt.Sprintf("rolealias/%s", alias)), resource.TestCheckResourceAttr(resourceName, "credential_duration", "3600"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsAllPercent, "0"), @@ -47,7 +47,7 @@ func TestAccIoTRoleAlias_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckRoleAliasExists(ctx, resourceName), testAccCheckRoleAliasExists(ctx, resourceName2), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "iot", fmt.Sprintf("rolealias/%s", alias)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "iot", fmt.Sprintf("rolealias/%s", alias)), resource.TestCheckResourceAttr(resourceName, "credential_duration", "43200"), ), }, @@ -72,7 +72,7 @@ func TestAccIoTRoleAlias_basic(t *testing.T) { Config: testAccRoleAliasConfig_update5(alias, alias2), Check: resource.ComposeTestCheckFunc( testAccCheckRoleAliasExists(ctx, resourceName2), - acctest.MatchResourceAttrGlobalARN(resourceName2, names.AttrRoleARN, "iam", regexache.MustCompile("role/"+alias+"/bogus")), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName2, names.AttrRoleARN, "iam", regexache.MustCompile("role/"+alias+"/bogus")), ), }, { diff --git a/internal/service/iot/service_endpoints_gen_test.go b/internal/service/iot/service_endpoints_gen_test.go index bf6f67bff33a..a40ed8f51e11 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/iot/thing_group_test.go b/internal/service/iot/thing_group_test.go index cafbad9e2f17..262b3204662c 100644 --- a/internal/service/iot/thing_group_test.go +++ b/internal/service/iot/thing_group_test.go @@ -34,7 +34,7 @@ func TestAccIoTThingGroup_basic(t *testing.T) { Config: testAccThingGroupConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckThingGroupExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "iot", regexache.MustCompile(fmt.Sprintf("thinggroup/%s$", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "iot", regexache.MustCompile(fmt.Sprintf("thinggroup/%s$", rName))), resource.TestCheckResourceAttr(resourceName, "metadata.#", "1"), resource.TestCheckResourceAttrSet(resourceName, "metadata.0.creation_date"), resource.TestCheckResourceAttr(resourceName, "metadata.0.parent_group_name", ""), diff --git a/internal/service/iot/topic_rule_destination_test.go b/internal/service/iot/topic_rule_destination_test.go index 2bb0abcdc8cf..3fc80d13c9f2 100644 --- a/internal/service/iot/topic_rule_destination_test.go +++ b/internal/service/iot/topic_rule_destination_test.go @@ -34,7 +34,7 @@ func TestAccIoTTopicRuleDestination_basic(t *testing.T) { Config: testAccTopicRuleDestinationConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckTopicRuleDestinationExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "iot", regexache.MustCompile(`ruledestination/vpc/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "iot", regexache.MustCompile(`ruledestination/vpc/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrEnabled, acctest.CtTrue), resource.TestCheckResourceAttr(resourceName, "vpc_configuration.#", "1"), resource.TestCheckResourceAttrSet(resourceName, "vpc_configuration.0.role_arn"), diff --git a/internal/service/iot/topic_rule_test.go b/internal/service/iot/topic_rule_test.go index f64dacbd656b..8a546bc3eb18 100644 --- a/internal/service/iot/topic_rule_test.go +++ b/internal/service/iot/topic_rule_test.go @@ -43,7 +43,7 @@ func TestAccIoTTopicRule_basic(t *testing.T) { Config: testAccTopicRuleConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckTopicRuleExists(ctx, resourceName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "iot", fmt.Sprintf("rule/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "iot", fmt.Sprintf("rule/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_alarm.#", "0"), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logs.#", "0"), resource.TestCheckResourceAttr(resourceName, "cloudwatch_metric.#", "0"), diff --git a/internal/service/iotanalytics/service_endpoints_gen_test.go b/internal/service/iotanalytics/service_endpoints_gen_test.go index 5b5f4a5f9651..63c0f7de2293 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 a79d9486820e..0aacc8fdf31b 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/channel_test.go b/internal/service/ivs/channel_test.go index 2b1b00076786..66ac2c5754f9 100644 --- a/internal/service/ivs/channel_test.go +++ b/internal/service/ivs/channel_test.go @@ -48,7 +48,7 @@ func TestAccIVSChannel_basic(t *testing.T) { resource.TestCheckResourceAttrSet(resourceName, "playback_url"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsAllPercent, "0"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ivs", regexache.MustCompile(`channel/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ivs", regexache.MustCompile(`channel/.+`)), ), }, { diff --git a/internal/service/ivs/playback_key_pair_test.go b/internal/service/ivs/playback_key_pair_test.go index ceec0e77d52d..26e15c188d6b 100644 --- a/internal/service/ivs/playback_key_pair_test.go +++ b/internal/service/ivs/playback_key_pair_test.go @@ -54,7 +54,7 @@ func testAccPlaybackKeyPair_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "fingerprint", fingerprint), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsAllPercent, "0"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ivs", regexache.MustCompile(`playback-key/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ivs", regexache.MustCompile(`playback-key/.+`)), ), }, { diff --git a/internal/service/ivs/recording_configuration_test.go b/internal/service/ivs/recording_configuration_test.go index 7d2e09b2d944..fbfdede9e010 100644 --- a/internal/service/ivs/recording_configuration_test.go +++ b/internal/service/ivs/recording_configuration_test.go @@ -49,7 +49,7 @@ func TestAccIVSRecordingConfiguration_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "destination_configuration.0.s3.0.bucket_name", bucketName), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsAllPercent, "0"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ivs", regexache.MustCompile(`recording-configuration/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ivs", regexache.MustCompile(`recording-configuration/.+`)), ), }, { diff --git a/internal/service/ivs/service_endpoints_gen_test.go b/internal/service/ivs/service_endpoints_gen_test.go index f5f62e5e5712..a28d374f6cd2 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/ivs/stream_key_data_source_test.go b/internal/service/ivs/stream_key_data_source_test.go index c3093c0b6a3f..e0d927a76f61 100644 --- a/internal/service/ivs/stream_key_data_source_test.go +++ b/internal/service/ivs/stream_key_data_source_test.go @@ -30,7 +30,7 @@ func TestAccIVSStreamKeyDataSource_basic(t *testing.T) { testAccCheckStreamKeyDataSource(dataSourceName), resource.TestCheckResourceAttrPair(dataSourceName, "channel_arn", channelResourceName, names.AttrID), resource.TestCheckResourceAttrSet(dataSourceName, names.AttrValue), - acctest.MatchResourceAttrRegionalARN(dataSourceName, names.AttrARN, "ivs", regexache.MustCompile(`stream-key/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, dataSourceName, names.AttrARN, "ivs", regexache.MustCompile(`stream-key/.+`)), ), }, }, diff --git a/internal/service/ivschat/logging_configuration_test.go b/internal/service/ivschat/logging_configuration_test.go index 389da3de281f..72fefd30abab 100644 --- a/internal/service/ivschat/logging_configuration_test.go +++ b/internal/service/ivschat/logging_configuration_test.go @@ -45,7 +45,7 @@ func TestAccIVSChatLoggingConfiguration_basic_cloudwatch(t *testing.T) { resource.TestCheckResourceAttrPair(resourceName, "destination_configuration.0.cloudwatch_logs.0.log_group_name", "aws_cloudwatch_log_group.test", names.AttrName), resource.TestCheckResourceAttr(resourceName, names.AttrState, "ACTIVE"), resource.TestCheckResourceAttrSet(resourceName, names.AttrID), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ivschat", regexache.MustCompile(`logging-configuration/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ivschat", regexache.MustCompile(`logging-configuration/.+`)), ), }, { @@ -84,7 +84,7 @@ func TestAccIVSChatLoggingConfiguration_basic_firehose(t *testing.T) { resource.TestCheckResourceAttrPair(resourceName, "destination_configuration.0.firehose.0.delivery_stream_name", "aws_kinesis_firehose_delivery_stream.test", names.AttrName), resource.TestCheckResourceAttr(resourceName, names.AttrState, "ACTIVE"), resource.TestCheckResourceAttrSet(resourceName, names.AttrID), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ivschat", regexache.MustCompile(`logging-configuration/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ivschat", regexache.MustCompile(`logging-configuration/.+`)), ), }, { @@ -119,7 +119,7 @@ func TestAccIVSChatLoggingConfiguration_basic_s3(t *testing.T) { resource.TestCheckResourceAttrPair(resourceName, "destination_configuration.0.s3.0.bucket_name", "aws_s3_bucket.test", names.AttrID), resource.TestCheckResourceAttr(resourceName, names.AttrState, "ACTIVE"), resource.TestCheckResourceAttrSet(resourceName, names.AttrID), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ivschat", regexache.MustCompile(`logging-configuration/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ivschat", regexache.MustCompile(`logging-configuration/.+`)), ), }, { diff --git a/internal/service/ivschat/room_test.go b/internal/service/ivschat/room_test.go index a5c8d3ef0a72..b0f22009e330 100644 --- a/internal/service/ivschat/room_test.go +++ b/internal/service/ivschat/room_test.go @@ -45,7 +45,7 @@ func TestAccIVSChatRoom_basic(t *testing.T) { resource.TestCheckResourceAttrSet(resourceName, names.AttrID), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsAllPercent, "0"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ivschat", regexache.MustCompile(`room/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ivschat", regexache.MustCompile(`room/.+`)), ), }, { @@ -171,7 +171,7 @@ func TestAccIVSChatRoom_update(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "maximum_message_length", maximumMessageLength), resource.TestCheckResourceAttr(resourceName, "maximum_message_rate_per_second", maximumMessageRatePerSecond), resource.TestCheckResourceAttr(resourceName, "message_review_handler.0.fallback_result", fallbackResult), - acctest.CheckResourceAttrRegionalARN(resourceName, "message_review_handler.0.uri", "lambda", fmt.Sprintf("function:%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, "message_review_handler.0.uri", "lambda", fmt.Sprintf("function:%s", rName)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), ), }, diff --git a/internal/service/ivschat/service_endpoints_gen_test.go b/internal/service/ivschat/service_endpoints_gen_test.go index fd395364de10..cc80a69cd267 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/cluster_test.go b/internal/service/kafka/cluster_test.go index 6570a6625d6d..2fe4bd7fd814 100644 --- a/internal/service/kafka/cluster_test.go +++ b/internal/service/kafka/cluster_test.go @@ -66,7 +66,7 @@ func TestAccKafkaCluster_basic(t *testing.T) { Config: testAccClusterConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckClusterExists(ctx, resourceName, &cluster), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "kafka", regexache.MustCompile(`cluster/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kafka", regexache.MustCompile(`cluster/.+$`)), resource.TestCheckResourceAttr(resourceName, "bootstrap_brokers", ""), resource.TestCheckResourceAttr(resourceName, "bootstrap_brokers_public_sasl_iam", ""), resource.TestCheckResourceAttr(resourceName, "bootstrap_brokers_public_sasl_scram", ""), @@ -105,7 +105,7 @@ func TestAccKafkaCluster_basic(t *testing.T) { resource.TestCheckResourceAttrSet(resourceName, "cluster_uuid"), resource.TestCheckResourceAttr(resourceName, "configuration_info.#", "1"), resource.TestCheckResourceAttr(resourceName, "encryption_info.#", "1"), - acctest.MatchResourceAttrRegionalARN(resourceName, "encryption_info.0.encryption_at_rest_kms_key_arn", "kms", regexache.MustCompile(`key/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, "encryption_info.0.encryption_at_rest_kms_key_arn", "kms", regexache.MustCompile(`key/.+`)), resource.TestCheckResourceAttr(resourceName, "encryption_info.0.encryption_in_transit.#", "1"), resource.TestCheckResourceAttr(resourceName, "encryption_info.0.encryption_in_transit.0.client_broker", "TLS"), resource.TestCheckResourceAttr(resourceName, "encryption_info.0.encryption_in_transit.0.in_cluster", acctest.CtTrue), @@ -994,7 +994,7 @@ func TestAccKafkaCluster_storageMode(t *testing.T) { Config: testAccClusterConfig_storageMode(rName, "TIERED", "2.8.2.tiered"), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckClusterExists(ctx, resourceName, &cluster), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "kafka", regexache.MustCompile(`cluster/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kafka", regexache.MustCompile(`cluster/.+$`)), resource.TestCheckResourceAttr(resourceName, "storage_mode", "TIERED"), ), }, diff --git a/internal/service/kafka/configuration_test.go b/internal/service/kafka/configuration_test.go index 3b61ad2db9d6..3f3d5acc4b0c 100644 --- a/internal/service/kafka/configuration_test.go +++ b/internal/service/kafka/configuration_test.go @@ -36,7 +36,7 @@ func TestAccKafkaConfiguration_basic(t *testing.T) { Config: testAccConfigurationConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckConfigurationExists(ctx, resourceName, &configuration1), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "kafka", regexache.MustCompile(`configuration/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kafka", regexache.MustCompile(`configuration/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), resource.TestCheckResourceAttr(resourceName, "kafka_versions.#", "0"), resource.TestCheckResourceAttr(resourceName, "latest_revision", "1"), diff --git a/internal/service/kafka/serverless_cluster_test.go b/internal/service/kafka/serverless_cluster_test.go index bd28717a30c7..32a74e5f4c9d 100644 --- a/internal/service/kafka/serverless_cluster_test.go +++ b/internal/service/kafka/serverless_cluster_test.go @@ -36,7 +36,7 @@ func TestAccKafkaServerlessCluster_basic(t *testing.T) { Config: testAccServerlessClusterConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckServerlessClusterExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "kafka", regexache.MustCompile(`cluster/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kafka", regexache.MustCompile(`cluster/.+$`)), resource.TestCheckResourceAttr(resourceName, "client_authentication.#", "1"), resource.TestCheckResourceAttr(resourceName, "client_authentication.0.sasl.#", "1"), resource.TestCheckResourceAttr(resourceName, "client_authentication.0.sasl.0.iam.#", "1"), diff --git a/internal/service/kafka/service_endpoints_gen_test.go b/internal/service/kafka/service_endpoints_gen_test.go index 0e1cad4dc8fc..47f10332b4a4 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 1944d3665515..78936adfcabd 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/data_source.go b/internal/service/kendra/data_source.go index a7070d90bf23..530ec6367acd 100644 --- a/internal/service/kendra/data_source.go +++ b/internal/service/kendra/data_source.go @@ -691,8 +691,8 @@ func resourceDataSourceRead(ctx context.Context, d *schema.ResourceData, meta in arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "kendra", - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("index/%s/data-source/%s", indexId, id), }.String() diff --git a/internal/service/kendra/data_source_test.go b/internal/service/kendra/data_source_test.go index 006b5eee7f48..a74dbf9b5bd3 100644 --- a/internal/service/kendra/data_source_test.go +++ b/internal/service/kendra/data_source_test.go @@ -43,7 +43,7 @@ func TestAccKendraDataSource_basic(t *testing.T) { Config: testAccDataSourceConfig_basic(rName, rName2, rName3, rName4), Check: resource.ComposeTestCheckFunc( testAccCheckDataSourceExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "kendra", regexache.MustCompile(`index/.+/data-source/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kendra", regexache.MustCompile(`index/.+/data-source/.+$`)), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedAt), resource.TestCheckResourceAttrPair(resourceName, "index_id", "aws_kendra_index.test", names.AttrID), resource.TestCheckResourceAttr(resourceName, names.AttrLanguageCode, "en"), @@ -158,7 +158,7 @@ func TestAccKendraDataSource_description(t *testing.T) { Config: testAccDataSourceConfig_description(rName, rName2, rName3, rName4, originalDescription), Check: resource.ComposeTestCheckFunc( testAccCheckDataSourceExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "kendra", regexache.MustCompile(`index/.+/data-source/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kendra", regexache.MustCompile(`index/.+/data-source/.+$`)), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedAt), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, originalDescription), resource.TestCheckResourceAttrPair(resourceName, "index_id", "aws_kendra_index.test", names.AttrID), @@ -178,7 +178,7 @@ func TestAccKendraDataSource_description(t *testing.T) { Config: testAccDataSourceConfig_description(rName, rName2, rName3, rName4, updatedDescription), Check: resource.ComposeTestCheckFunc( testAccCheckDataSourceExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "kendra", regexache.MustCompile(`index/.+/data-source/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kendra", regexache.MustCompile(`index/.+/data-source/.+$`)), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedAt), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, updatedDescription), resource.TestCheckResourceAttrPair(resourceName, "index_id", "aws_kendra_index.test", names.AttrID), diff --git a/internal/service/kendra/experience.go b/internal/service/kendra/experience.go index cb696745b8ec..8d226226789a 100644 --- a/internal/service/kendra/experience.go +++ b/internal/service/kendra/experience.go @@ -243,9 +243,9 @@ func resourceExperienceRead(ctx context.Context, d *schema.ResourceData, meta in arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), Service: "kendra", - AccountID: meta.(*conns.AWSClient).AccountID, + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("index/%s/experience/%s", indexId, id), }.String() diff --git a/internal/service/kendra/experience_data_source.go b/internal/service/kendra/experience_data_source.go index f0c464a8906e..2084ac4a2091 100644 --- a/internal/service/kendra/experience_data_source.go +++ b/internal/service/kendra/experience_data_source.go @@ -158,8 +158,8 @@ func dataSourceExperienceRead(ctx context.Context, d *schema.ResourceData, meta arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "kendra", - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("index/%s/experience/%s", indexID, experienceID), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/kendra/experience_test.go b/internal/service/kendra/experience_test.go index 3aecabfdebea..2e12d66a29d3 100644 --- a/internal/service/kendra/experience_test.go +++ b/internal/service/kendra/experience_test.go @@ -43,7 +43,7 @@ func TestAccKendraExperience_basic(t *testing.T) { Config: testAccExperienceConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckExperienceExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "kendra", regexache.MustCompile(`index/.+/experience/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kendra", regexache.MustCompile(`index/.+/experience/.+$`)), resource.TestCheckResourceAttr(resourceName, "configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "endpoints.#", "1"), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), diff --git a/internal/service/kendra/faq.go b/internal/service/kendra/faq.go index 0a82d227fc5f..6c47332df582 100644 --- a/internal/service/kendra/faq.go +++ b/internal/service/kendra/faq.go @@ -238,8 +238,8 @@ func resourceFaqRead(ctx context.Context, d *schema.ResourceData, meta interface arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "kendra", - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("index/%s/faq/%s", indexId, id), }.String() diff --git a/internal/service/kendra/faq_data_source.go b/internal/service/kendra/faq_data_source.go index bc3bdf2fb40a..5a0d520aadb3 100644 --- a/internal/service/kendra/faq_data_source.go +++ b/internal/service/kendra/faq_data_source.go @@ -127,8 +127,8 @@ func dataSourceFaqRead(ctx context.Context, d *schema.ResourceData, meta interfa arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "kendra", - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("index/%s/faq/%s", indexId, id), }.String() diff --git a/internal/service/kendra/faq_test.go b/internal/service/kendra/faq_test.go index a3c2a5ea18eb..a08db8078d8b 100644 --- a/internal/service/kendra/faq_test.go +++ b/internal/service/kendra/faq_test.go @@ -43,7 +43,7 @@ func TestAccKendraFaq_basic(t *testing.T) { Config: testAccFaqConfig_basic(rName, rName2, rName3, rName4, rName5), Check: resource.ComposeTestCheckFunc( testAccCheckFaqExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "kendra", regexache.MustCompile(`index/.+/faq/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kendra", regexache.MustCompile(`index/.+/faq/.+$`)), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedAt), resource.TestCheckResourceAttrSet(resourceName, "faq_id"), resource.TestCheckResourceAttrPair(resourceName, "index_id", "aws_kendra_index.test", names.AttrID), diff --git a/internal/service/kendra/index.go b/internal/service/kendra/index.go index fe36e9440d44..7d1f4d5ca261 100644 --- a/internal/service/kendra/index.go +++ b/internal/service/kendra/index.go @@ -487,8 +487,8 @@ func resourceIndexRead(ctx context.Context, d *schema.ResourceData, meta interfa arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "kendra", - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("index/%s", d.Id()), }.String() diff --git a/internal/service/kendra/index_data_source.go b/internal/service/kendra/index_data_source.go index 8f97063b8306..32e0f0964b23 100644 --- a/internal/service/kendra/index_data_source.go +++ b/internal/service/kendra/index_data_source.go @@ -304,8 +304,8 @@ func dataSourceIndexRead(ctx context.Context, d *schema.ResourceData, meta inter arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "kendra", - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("index/%s", id), }.String() diff --git a/internal/service/kendra/query_suggestions_block_list.go b/internal/service/kendra/query_suggestions_block_list.go index 6d8014c3463c..17b68ff9655b 100644 --- a/internal/service/kendra/query_suggestions_block_list.go +++ b/internal/service/kendra/query_suggestions_block_list.go @@ -181,9 +181,9 @@ func resourceQuerySuggestionsBlockListRead(ctx context.Context, d *schema.Resour arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), Service: "kendra", - AccountID: meta.(*conns.AWSClient).AccountID, + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("index/%s/query-suggestions-block-list/%s", indexId, id), }.String() diff --git a/internal/service/kendra/query_suggestions_block_list_data_source.go b/internal/service/kendra/query_suggestions_block_list_data_source.go index 43d4dab8c044..3584c92ac2a9 100644 --- a/internal/service/kendra/query_suggestions_block_list_data_source.go +++ b/internal/service/kendra/query_suggestions_block_list_data_source.go @@ -120,8 +120,8 @@ func dataSourceQuerySuggestionsBlockListRead(ctx context.Context, d *schema.Reso arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "kendra", - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("index/%s/query-suggestions-block-list/%s", indexID, querySuggestionsBlockListID), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/kendra/query_suggestions_block_list_test.go b/internal/service/kendra/query_suggestions_block_list_test.go index eb321ec61cda..12481ea23e21 100644 --- a/internal/service/kendra/query_suggestions_block_list_test.go +++ b/internal/service/kendra/query_suggestions_block_list_test.go @@ -49,7 +49,7 @@ func TestAccKendraQuerySuggestionsBlockList_basic(t *testing.T) { resource.TestCheckResourceAttrPair(resourceName, "source_s3_path.0.bucket", "aws_s3_bucket.test", names.AttrID), resource.TestCheckResourceAttrPair(resourceName, "source_s3_path.0.key", "aws_s3_object.test", names.AttrKey), resource.TestCheckResourceAttrSet(resourceName, names.AttrStatus), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "kendra", regexache.MustCompile(`index/.+/query-suggestions-block-list/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kendra", regexache.MustCompile(`index/.+/query-suggestions-block-list/.+$`)), ), }, { diff --git a/internal/service/kendra/service_endpoints_gen_test.go b/internal/service/kendra/service_endpoints_gen_test.go index afe8ae2b1d2d..79d57dfe870e 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/kendra/thesaurus.go b/internal/service/kendra/thesaurus.go index ba72b2a37d61..2bfb99d078b0 100644 --- a/internal/service/kendra/thesaurus.go +++ b/internal/service/kendra/thesaurus.go @@ -182,9 +182,9 @@ func resourceThesaurusRead(ctx context.Context, d *schema.ResourceData, meta int arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), Service: "kendra", - AccountID: meta.(*conns.AWSClient).AccountID, + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("index/%s/thesaurus/%s", indexId, id), }.String() diff --git a/internal/service/kendra/thesaurus_data_source.go b/internal/service/kendra/thesaurus_data_source.go index 766fe16f79e3..f20cfbd7e8f8 100644 --- a/internal/service/kendra/thesaurus_data_source.go +++ b/internal/service/kendra/thesaurus_data_source.go @@ -127,8 +127,8 @@ func dataSourceThesaurusRead(ctx context.Context, d *schema.ResourceData, meta i arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "kendra", - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("index/%s/thesaurus/%s", indexID, thesaurusID), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/kendra/thesaurus_test.go b/internal/service/kendra/thesaurus_test.go index 8f1a74e9505d..9ef7c1559f83 100644 --- a/internal/service/kendra/thesaurus_test.go +++ b/internal/service/kendra/thesaurus_test.go @@ -50,7 +50,7 @@ func TestAccKendraThesaurus_basic(t *testing.T) { resource.TestCheckResourceAttrPair(resourceName, "source_s3_path.0.key", "aws_s3_object.test", names.AttrKey), resource.TestCheckResourceAttrSet(resourceName, names.AttrStatus), resource.TestCheckResourceAttrSet(resourceName, "thesaurus_id"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "kendra", regexache.MustCompile(`index/.+/thesaurus/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kendra", regexache.MustCompile(`index/.+/thesaurus/.+$`)), ), }, { diff --git a/internal/service/keyspaces/keyspace_test.go b/internal/service/keyspaces/keyspace_test.go index 33c439f2a486..2248334f2032 100644 --- a/internal/service/keyspaces/keyspace_test.go +++ b/internal/service/keyspaces/keyspace_test.go @@ -39,7 +39,7 @@ func TestAccKeyspacesKeyspace_basic(t *testing.T) { Config: testAccKeyspaceConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckKeyspaceExists(ctx, resourceName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "cassandra", "/keyspace/"+rName+"/"), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "cassandra", "/keyspace/"+rName+"/"), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), @@ -70,7 +70,7 @@ func TestAccKeyspacesKeyspace_replicationSpecificationMulti(t *testing.T) { Config: testAccKeyspaceConfig_replicationSpecification(rName, string(types.RsSingleRegion)), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckKeyspaceExists(ctx, resourceName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "cassandra", "/keyspace/"+rName+"/"), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "cassandra", "/keyspace/"+rName+"/"), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttr(resourceName, "replication_specification.0.replication_strategy", string(types.RsSingleRegion)), @@ -80,7 +80,7 @@ func TestAccKeyspacesKeyspace_replicationSpecificationMulti(t *testing.T) { Config: testAccKeyspaceConfig_multiReplicationSpecification(rName, string(types.RsMultiRegion), region1, region2), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckKeyspaceExists(ctx, resourceName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "cassandra", "/keyspace/"+rName+"/"), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "cassandra", "/keyspace/"+rName+"/"), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttr(resourceName, "replication_specification.0.replication_strategy", string(types.RsMultiRegion)), diff --git a/internal/service/keyspaces/service_endpoints_gen_test.go b/internal/service/keyspaces/service_endpoints_gen_test.go index 1981f82c75b9..104751e42a49 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/keyspaces/table_test.go b/internal/service/keyspaces/table_test.go index eca947547030..191750fccc77 100644 --- a/internal/service/keyspaces/table_test.go +++ b/internal/service/keyspaces/table_test.go @@ -38,7 +38,7 @@ func TestAccKeyspacesTable_basic(t *testing.T) { Config: testAccTableConfig_basic(rName1, rName2), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckTableExists(ctx, resourceName, &v), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "cassandra", fmt.Sprintf("/keyspace/%s/table/%s", rName1, rName2)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "cassandra", fmt.Sprintf("/keyspace/%s/table/%s", rName1, rName2)), resource.TestCheckResourceAttr(resourceName, "capacity_specification.#", "1"), resource.TestCheckResourceAttr(resourceName, "capacity_specification.0.throughput_mode", "PAY_PER_REQUEST"), resource.TestCheckResourceAttr(resourceName, "client_side_timestamps.#", "0"), @@ -290,7 +290,7 @@ func TestAccKeyspacesTable_update(t *testing.T) { Config: testAccTableConfig_allAttributes(rName1, rName2), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckTableExists(ctx, resourceName, &v1), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "cassandra", fmt.Sprintf("/keyspace/%s/table/%s", rName1, rName2)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "cassandra", fmt.Sprintf("/keyspace/%s/table/%s", rName1, rName2)), resource.TestCheckResourceAttr(resourceName, "capacity_specification.#", "1"), resource.TestCheckResourceAttr(resourceName, "capacity_specification.0.read_capacity_units", "200"), resource.TestCheckResourceAttr(resourceName, "capacity_specification.0.throughput_mode", "PROVISIONED"), @@ -321,7 +321,7 @@ func TestAccKeyspacesTable_update(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckTableExists(ctx, resourceName, &v2), testAccCheckTableNotRecreated(&v1, &v2), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "cassandra", fmt.Sprintf("/keyspace/%s/table/%s", rName1, rName2)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "cassandra", fmt.Sprintf("/keyspace/%s/table/%s", rName1, rName2)), resource.TestCheckResourceAttr(resourceName, "capacity_specification.#", "1"), resource.TestCheckResourceAttr(resourceName, "capacity_specification.0.read_capacity_units", "0"), resource.TestCheckResourceAttr(resourceName, "capacity_specification.0.throughput_mode", "PAY_PER_REQUEST"), diff --git a/internal/service/kinesis/service_endpoints_gen_test.go b/internal/service/kinesis/service_endpoints_gen_test.go index b26f7c8e7251..18570e2d3335 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/kinesis/stream_consumer_test.go b/internal/service/kinesis/stream_consumer_test.go index ac62236aa464..13e8ca8cb59e 100644 --- a/internal/service/kinesis/stream_consumer_test.go +++ b/internal/service/kinesis/stream_consumer_test.go @@ -35,7 +35,7 @@ func TestAccKinesisStreamConsumer_basic(t *testing.T) { Config: testAccStreamConsumerConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccStreamConsumerExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesis", regexache.MustCompile(fmt.Sprintf("stream/%[1]s/consumer/%[1]s", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesis", regexache.MustCompile(fmt.Sprintf("stream/%[1]s/consumer/%[1]s", rName))), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttrPair(resourceName, names.AttrStreamARN, streamName, names.AttrARN), resource.TestCheckResourceAttrSet(resourceName, "creation_timestamp"), diff --git a/internal/service/kinesis/stream_test.go b/internal/service/kinesis/stream_test.go index 7629baecc79c..6ecb64b576fc 100644 --- a/internal/service/kinesis/stream_test.go +++ b/internal/service/kinesis/stream_test.go @@ -38,7 +38,7 @@ func TestAccKinesisStream_basic(t *testing.T) { Config: testAccStreamConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckStreamExists(ctx, resourceName, &stream), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesis", fmt.Sprintf("stream/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesis", fmt.Sprintf("stream/%s", rName)), resource.TestCheckResourceAttr(resourceName, "encryption_type", "NONE"), resource.TestCheckResourceAttr(resourceName, "enforce_consumer_deletion", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, names.AttrKMSKeyID, ""), diff --git a/internal/service/kinesisanalytics/application_test.go b/internal/service/kinesisanalytics/application_test.go index 00558291056f..80d91a5cb85e 100644 --- a/internal/service/kinesisanalytics/application_test.go +++ b/internal/service/kinesisanalytics/application_test.go @@ -37,7 +37,7 @@ func TestAccKinesisAnalyticsApplication_basic(t *testing.T) { Config: testAccApplicationConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckApplicationExists(ctx, resourceName, &v), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttr(resourceName, "code", ""), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), @@ -151,7 +151,7 @@ func TestAccKinesisAnalyticsApplication_Code_update(t *testing.T) { Config: testAccApplicationConfig_code(rName, "SELECT 1;\n"), Check: resource.ComposeTestCheckFunc( testAccCheckApplicationExists(ctx, resourceName, &v), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttr(resourceName, "code", "SELECT 1;\n"), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), @@ -171,7 +171,7 @@ func TestAccKinesisAnalyticsApplication_Code_update(t *testing.T) { Config: testAccApplicationConfig_code(rName, "SELECT 2;\n"), Check: resource.ComposeTestCheckFunc( testAccCheckApplicationExists(ctx, resourceName, &v), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttr(resourceName, "code", "SELECT 2;\n"), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), @@ -214,7 +214,7 @@ func TestAccKinesisAnalyticsApplication_CloudWatchLoggingOptions_add(t *testing. Config: testAccApplicationConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckApplicationExists(ctx, resourceName, &v), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttr(resourceName, "code", ""), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), @@ -234,7 +234,7 @@ func TestAccKinesisAnalyticsApplication_CloudWatchLoggingOptions_add(t *testing. Config: testAccApplicationConfig_cloudWatchLoggingOptions(rName, 0), Check: resource.ComposeTestCheckFunc( testAccCheckApplicationExists(ctx, resourceName, &v), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "1"), resource.TestCheckResourceAttrPair(resourceName, "cloudwatch_logging_options.0.log_stream_arn", cloudWatchLogStreamResourceName, names.AttrARN), resource.TestCheckResourceAttrPair(resourceName, "cloudwatch_logging_options.0.role_arn", iamRoleResourceName, names.AttrARN), @@ -279,7 +279,7 @@ func TestAccKinesisAnalyticsApplication_CloudWatchLoggingOptions_delete(t *testi Config: testAccApplicationConfig_cloudWatchLoggingOptions(rName, 0), Check: resource.ComposeTestCheckFunc( testAccCheckApplicationExists(ctx, resourceName, &v), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "1"), resource.TestCheckResourceAttrPair(resourceName, "cloudwatch_logging_options.0.log_stream_arn", cloudWatchLogStreamResourceName, names.AttrARN), resource.TestCheckResourceAttrPair(resourceName, "cloudwatch_logging_options.0.role_arn", iamRoleResourceName, names.AttrARN), @@ -301,7 +301,7 @@ func TestAccKinesisAnalyticsApplication_CloudWatchLoggingOptions_delete(t *testi Config: testAccApplicationConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckApplicationExists(ctx, resourceName, &v), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttr(resourceName, "code", ""), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), @@ -346,7 +346,7 @@ func TestAccKinesisAnalyticsApplication_CloudWatchLoggingOptions_update(t *testi Config: testAccApplicationConfig_cloudWatchLoggingOptions(rName, 0), Check: resource.ComposeTestCheckFunc( testAccCheckApplicationExists(ctx, resourceName, &v), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "1"), resource.TestCheckResourceAttrPair(resourceName, "cloudwatch_logging_options.0.log_stream_arn", cloudWatchLogStream1ResourceName, names.AttrARN), resource.TestCheckResourceAttrPair(resourceName, "cloudwatch_logging_options.0.role_arn", iamRole1ResourceName, names.AttrARN), @@ -368,7 +368,7 @@ func TestAccKinesisAnalyticsApplication_CloudWatchLoggingOptions_update(t *testi Config: testAccApplicationConfig_cloudWatchLoggingOptions(rName, 1), Check: resource.ComposeTestCheckFunc( testAccCheckApplicationExists(ctx, resourceName, &v), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "1"), resource.TestCheckResourceAttrPair(resourceName, "cloudwatch_logging_options.0.log_stream_arn", cloudWatchLogStream2ResourceName, names.AttrARN), resource.TestCheckResourceAttrPair(resourceName, "cloudwatch_logging_options.0.role_arn", iamRole2ResourceName, names.AttrARN), @@ -413,7 +413,7 @@ func TestAccKinesisAnalyticsApplication_Input_add(t *testing.T) { Config: testAccApplicationConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckApplicationExists(ctx, resourceName, &v), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttr(resourceName, "code", ""), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), @@ -433,7 +433,7 @@ func TestAccKinesisAnalyticsApplication_Input_add(t *testing.T) { Config: testAccApplicationConfig_input(rName), Check: resource.ComposeTestCheckFunc( testAccCheckApplicationExists(ctx, resourceName, &v), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttr(resourceName, "code", ""), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), @@ -502,7 +502,7 @@ func TestAccKinesisAnalyticsApplication_Input_update(t *testing.T) { Config: testAccApplicationConfig_input(rName), Check: resource.ComposeTestCheckFunc( testAccCheckApplicationExists(ctx, resourceName, &v), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttr(resourceName, "code", ""), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), @@ -546,7 +546,7 @@ func TestAccKinesisAnalyticsApplication_Input_update(t *testing.T) { Config: testAccApplicationConfig_inputUpdated(rName), Check: resource.ComposeTestCheckFunc( testAccCheckApplicationExists(ctx, resourceName, &v), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttr(resourceName, "code", ""), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), @@ -617,7 +617,7 @@ func TestAccKinesisAnalyticsApplication_InputProcessing_add(t *testing.T) { Config: testAccApplicationConfig_input(rName), Check: resource.ComposeTestCheckFunc( testAccCheckApplicationExists(ctx, resourceName, &v), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttr(resourceName, "code", ""), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), @@ -661,7 +661,7 @@ func TestAccKinesisAnalyticsApplication_InputProcessing_add(t *testing.T) { Config: testAccApplicationConfig_inputProcessing(rName, 0), Check: resource.ComposeTestCheckFunc( testAccCheckApplicationExists(ctx, resourceName, &v), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttr(resourceName, "code", ""), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), @@ -732,7 +732,7 @@ func TestAccKinesisAnalyticsApplication_InputProcessing_delete(t *testing.T) { Config: testAccApplicationConfig_inputProcessing(rName, 0), Check: resource.ComposeTestCheckFunc( testAccCheckApplicationExists(ctx, resourceName, &v), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttr(resourceName, "code", ""), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), @@ -779,7 +779,7 @@ func TestAccKinesisAnalyticsApplication_InputProcessing_delete(t *testing.T) { Config: testAccApplicationConfig_input(rName), Check: resource.ComposeTestCheckFunc( testAccCheckApplicationExists(ctx, resourceName, &v), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttr(resourceName, "code", ""), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), @@ -849,7 +849,7 @@ func TestAccKinesisAnalyticsApplication_InputProcessing_update(t *testing.T) { Config: testAccApplicationConfig_inputProcessing(rName, 0), Check: resource.ComposeTestCheckFunc( testAccCheckApplicationExists(ctx, resourceName, &v), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttr(resourceName, "code", ""), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), @@ -896,7 +896,7 @@ func TestAccKinesisAnalyticsApplication_InputProcessing_update(t *testing.T) { Config: testAccApplicationConfig_inputProcessing(rName, 1), Check: resource.ComposeTestCheckFunc( testAccCheckApplicationExists(ctx, resourceName, &v), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttr(resourceName, "code", ""), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), @@ -971,7 +971,7 @@ func TestAccKinesisAnalyticsApplication_Multiple_update(t *testing.T) { Config: testAccApplicationConfig_multiple(rName, "", ""), Check: resource.ComposeTestCheckFunc( testAccCheckApplicationExists(ctx, resourceName, &v), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "1"), resource.TestCheckResourceAttrPair(resourceName, "cloudwatch_logging_options.0.log_stream_arn", cloudWatchLogStreamResourceName, names.AttrARN), resource.TestCheckResourceAttrPair(resourceName, "cloudwatch_logging_options.0.role_arn", iamRole2ResourceName, names.AttrARN), @@ -1030,7 +1030,7 @@ func TestAccKinesisAnalyticsApplication_Multiple_update(t *testing.T) { Config: testAccApplicationConfig_multipleUpdated(rName, "", ""), Check: resource.ComposeTestCheckFunc( testAccCheckApplicationExists(ctx, resourceName, &v), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttr(resourceName, "code", ""), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), @@ -1142,7 +1142,7 @@ func TestAccKinesisAnalyticsApplication_Output_update(t *testing.T) { Config: testAccApplicationConfig_output(rName), Check: resource.ComposeTestCheckFunc( testAccCheckApplicationExists(ctx, resourceName, &v), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttr(resourceName, "code", ""), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), @@ -1172,7 +1172,7 @@ func TestAccKinesisAnalyticsApplication_Output_update(t *testing.T) { Config: testAccApplicationConfig_outputUpdated(rName), Check: resource.ComposeTestCheckFunc( testAccCheckApplicationExists(ctx, resourceName, &v), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttr(resourceName, "code", ""), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), @@ -1217,7 +1217,7 @@ func TestAccKinesisAnalyticsApplication_Output_update(t *testing.T) { Config: testAccApplicationConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckApplicationExists(ctx, resourceName, &v), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttr(resourceName, "code", ""), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), @@ -1255,7 +1255,7 @@ func TestAccKinesisAnalyticsApplication_ReferenceDataSource_add(t *testing.T) { Config: testAccApplicationConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckApplicationExists(ctx, resourceName, &v), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttr(resourceName, "code", ""), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), @@ -1275,7 +1275,7 @@ func TestAccKinesisAnalyticsApplication_ReferenceDataSource_add(t *testing.T) { Config: testAccApplicationConfig_referenceDataSource(rName), Check: resource.ComposeTestCheckFunc( testAccCheckApplicationExists(ctx, resourceName, &v), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttr(resourceName, "code", ""), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), @@ -1336,7 +1336,7 @@ func TestAccKinesisAnalyticsApplication_ReferenceDataSource_delete(t *testing.T) Config: testAccApplicationConfig_referenceDataSource(rName), Check: resource.ComposeTestCheckFunc( testAccCheckApplicationExists(ctx, resourceName, &v), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttr(resourceName, "code", ""), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), @@ -1374,7 +1374,7 @@ func TestAccKinesisAnalyticsApplication_ReferenceDataSource_delete(t *testing.T) Config: testAccApplicationConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckApplicationExists(ctx, resourceName, &v), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttr(resourceName, "code", ""), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), @@ -1418,7 +1418,7 @@ func TestAccKinesisAnalyticsApplication_ReferenceDataSource_update(t *testing.T) Config: testAccApplicationConfig_referenceDataSource(rName), Check: resource.ComposeTestCheckFunc( testAccCheckApplicationExists(ctx, resourceName, &v), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttr(resourceName, "code", ""), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), @@ -1456,7 +1456,7 @@ func TestAccKinesisAnalyticsApplication_ReferenceDataSource_update(t *testing.T) Config: testAccApplicationConfig_referenceDataSourceUpdated(rName), Check: resource.ComposeTestCheckFunc( testAccCheckApplicationExists(ctx, resourceName, &v), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttr(resourceName, "code", ""), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), @@ -1520,7 +1520,7 @@ func TestAccKinesisAnalyticsApplication_StartApplication_onCreate(t *testing.T) Config: testAccApplicationConfig_start(rName, true), Check: resource.ComposeTestCheckFunc( testAccCheckApplicationExists(ctx, resourceName, &v), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttr(resourceName, "code", ""), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), @@ -1588,7 +1588,7 @@ func TestAccKinesisAnalyticsApplication_StartApplication_onUpdate(t *testing.T) Config: testAccApplicationConfig_start(rName, false), Check: resource.ComposeTestCheckFunc( testAccCheckApplicationExists(ctx, resourceName, &v), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttr(resourceName, "code", ""), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), @@ -1638,7 +1638,7 @@ func TestAccKinesisAnalyticsApplication_StartApplication_onUpdate(t *testing.T) Config: testAccApplicationConfig_start(rName, true), Check: resource.ComposeTestCheckFunc( testAccCheckApplicationExists(ctx, resourceName, &v), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttr(resourceName, "code", ""), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), @@ -1682,7 +1682,7 @@ func TestAccKinesisAnalyticsApplication_StartApplication_onUpdate(t *testing.T) Config: testAccApplicationConfig_start(rName, false), Check: resource.ComposeTestCheckFunc( testAccCheckApplicationExists(ctx, resourceName, &v), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttr(resourceName, "code", ""), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), @@ -1749,7 +1749,7 @@ func TestAccKinesisAnalyticsApplication_StartApplication_update(t *testing.T) { Config: testAccApplicationConfig_multiple(rName, acctest.CtTrue, "LAST_STOPPED_POINT"), Check: resource.ComposeTestCheckFunc( testAccCheckApplicationExists(ctx, resourceName, &v), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "1"), resource.TestCheckResourceAttrPair(resourceName, "cloudwatch_logging_options.0.log_stream_arn", cloudWatchLogStreamResourceName, names.AttrARN), resource.TestCheckResourceAttrPair(resourceName, "cloudwatch_logging_options.0.role_arn", iamRole2ResourceName, names.AttrARN), @@ -1809,7 +1809,7 @@ func TestAccKinesisAnalyticsApplication_StartApplication_update(t *testing.T) { Config: testAccApplicationConfig_multipleUpdated(rName, acctest.CtTrue, "LAST_STOPPED_POINT"), Check: resource.ComposeTestCheckFunc( testAccCheckApplicationExists(ctx, resourceName, &v), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttr(resourceName, "code", ""), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), diff --git a/internal/service/kinesisanalytics/service_endpoints_gen_test.go b/internal/service/kinesisanalytics/service_endpoints_gen_test.go index d12211193c6d..50f1209dfaef 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/application_test.go b/internal/service/kinesisanalyticsv2/application_test.go index 84c76be7b6c8..4ccd53ff08b3 100644 --- a/internal/service/kinesisanalyticsv2/application_test.go +++ b/internal/service/kinesisanalyticsv2/application_test.go @@ -61,7 +61,7 @@ func TestAccKinesisAnalyticsV2Application_basicFlinkApplication(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "application_configuration.0.run_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.vpc_configuration.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -103,7 +103,7 @@ func TestAccKinesisAnalyticsV2Application_basicFlinkApplication(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "application_configuration.0.run_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.vpc_configuration.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -145,7 +145,7 @@ func TestAccKinesisAnalyticsV2Application_basicFlinkApplication(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "application_configuration.0.run_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.vpc_configuration.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -187,7 +187,7 @@ func TestAccKinesisAnalyticsV2Application_basicFlinkApplication(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "application_configuration.0.run_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.vpc_configuration.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -229,7 +229,7 @@ func TestAccKinesisAnalyticsV2Application_basicFlinkApplication(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "application_configuration.0.run_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.vpc_configuration.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -271,7 +271,7 @@ func TestAccKinesisAnalyticsV2Application_basicFlinkApplication(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "application_configuration.0.run_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.vpc_configuration.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -313,7 +313,7 @@ func TestAccKinesisAnalyticsV2Application_basicSQLApplication(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckApplicationExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "application_configuration.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -467,7 +467,7 @@ func TestAccKinesisAnalyticsV2Application_ApplicationCode_update(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "application_configuration.0.run_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.vpc_configuration.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -498,7 +498,7 @@ func TestAccKinesisAnalyticsV2Application_ApplicationCode_update(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "application_configuration.0.run_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.vpc_configuration.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -541,7 +541,7 @@ func TestAccKinesisAnalyticsV2Application_CloudWatchLoggingOptions_add(t *testin Check: resource.ComposeTestCheckFunc( testAccCheckApplicationExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "application_configuration.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -561,7 +561,7 @@ func TestAccKinesisAnalyticsV2Application_CloudWatchLoggingOptions_add(t *testin Check: resource.ComposeTestCheckFunc( testAccCheckApplicationExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "application_configuration.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "1"), resource.TestCheckResourceAttrPair(resourceName, "cloudwatch_logging_options.0.log_stream_arn", cloudWatchLogStreamResourceName, names.AttrARN), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), @@ -605,7 +605,7 @@ func TestAccKinesisAnalyticsV2Application_CloudWatchLoggingOptions_delete(t *tes Check: resource.ComposeTestCheckFunc( testAccCheckApplicationExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "application_configuration.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "1"), resource.TestCheckResourceAttrPair(resourceName, "cloudwatch_logging_options.0.log_stream_arn", cloudWatchLogStreamResourceName, names.AttrARN), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), @@ -626,7 +626,7 @@ func TestAccKinesisAnalyticsV2Application_CloudWatchLoggingOptions_delete(t *tes Check: resource.ComposeTestCheckFunc( testAccCheckApplicationExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "application_configuration.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -670,7 +670,7 @@ func TestAccKinesisAnalyticsV2Application_CloudWatchLoggingOptions_update(t *tes Check: resource.ComposeTestCheckFunc( testAccCheckApplicationExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "application_configuration.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "1"), resource.TestCheckResourceAttrPair(resourceName, "cloudwatch_logging_options.0.log_stream_arn", cloudWatchLogStream1ResourceName, names.AttrARN), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), @@ -691,7 +691,7 @@ func TestAccKinesisAnalyticsV2Application_CloudWatchLoggingOptions_update(t *tes Check: resource.ComposeTestCheckFunc( testAccCheckApplicationExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "application_configuration.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "1"), resource.TestCheckResourceAttrPair(resourceName, "cloudwatch_logging_options.0.log_stream_arn", cloudWatchLogStream2ResourceName, names.AttrARN), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), @@ -777,7 +777,7 @@ func TestAccKinesisAnalyticsV2Application_EnvironmentProperties_update(t *testin resource.TestCheckResourceAttr(resourceName, "application_configuration.0.run_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.vpc_configuration.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -841,7 +841,7 @@ func TestAccKinesisAnalyticsV2Application_EnvironmentProperties_update(t *testin resource.TestCheckResourceAttr(resourceName, "application_configuration.0.run_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.vpc_configuration.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -894,7 +894,7 @@ func TestAccKinesisAnalyticsV2Application_EnvironmentProperties_update(t *testin resource.TestCheckResourceAttr(resourceName, "application_configuration.0.run_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.vpc_configuration.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -962,7 +962,7 @@ func TestAccKinesisAnalyticsV2Application_FlinkApplication_update(t *testing.T) resource.TestCheckResourceAttr(resourceName, "application_configuration.0.run_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.vpc_configuration.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -1010,7 +1010,7 @@ func TestAccKinesisAnalyticsV2Application_FlinkApplication_update(t *testing.T) resource.TestCheckResourceAttr(resourceName, "application_configuration.0.run_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.vpc_configuration.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -1097,7 +1097,7 @@ func TestAccKinesisAnalyticsV2Application_FlinkApplicationEnvironmentProperties_ resource.TestCheckResourceAttr(resourceName, "application_configuration.0.run_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.vpc_configuration.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -1162,7 +1162,7 @@ func TestAccKinesisAnalyticsV2Application_FlinkApplicationEnvironmentProperties_ resource.TestCheckResourceAttr(resourceName, "application_configuration.0.run_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.vpc_configuration.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -1253,7 +1253,7 @@ func TestAccKinesisAnalyticsV2Application_FlinkApplication_restoreFromSnapshot(t resource.TestCheckResourceAttr(resourceName, "application_configuration.0.run_configuration.0.flink_run_configuration.0.allow_non_restored_state", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.vpc_configuration.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -1312,7 +1312,7 @@ func TestAccKinesisAnalyticsV2Application_FlinkApplication_restoreFromSnapshot(t resource.TestCheckResourceAttr(resourceName, "application_configuration.0.run_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.vpc_configuration.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -1382,7 +1382,7 @@ func TestAccKinesisAnalyticsV2Application_FlinkApplication_restoreFromSnapshot(t resource.TestCheckResourceAttr(resourceName, "application_configuration.0.run_configuration.0.flink_run_configuration.0.allow_non_restored_state", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.vpc_configuration.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -1441,7 +1441,7 @@ func TestAccKinesisAnalyticsV2Application_FlinkApplication_restoreFromSnapshot(t resource.TestCheckResourceAttr(resourceName, "application_configuration.0.run_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.vpc_configuration.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -1512,7 +1512,7 @@ func TestAccKinesisAnalyticsV2Application_FlinkApplicationStartApplication_onCre resource.TestCheckResourceAttr(resourceName, "application_configuration.0.run_configuration.0.flink_run_configuration.0.allow_non_restored_state", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.vpc_configuration.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -1585,7 +1585,7 @@ func TestAccKinesisAnalyticsV2Application_FlinkApplicationStartApplication_onUpd resource.TestCheckResourceAttr(resourceName, "application_configuration.0.run_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.vpc_configuration.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -1643,7 +1643,7 @@ func TestAccKinesisAnalyticsV2Application_FlinkApplicationStartApplication_onUpd resource.TestCheckResourceAttr(resourceName, "application_configuration.0.run_configuration.0.flink_run_configuration.0.allow_non_restored_state", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.vpc_configuration.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -1691,7 +1691,7 @@ func TestAccKinesisAnalyticsV2Application_FlinkApplicationStartApplication_onUpd resource.TestCheckResourceAttr(resourceName, "application_configuration.0.run_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.vpc_configuration.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -1763,7 +1763,7 @@ func TestAccKinesisAnalyticsV2Application_FlinkApplication_updateRunning(t *test resource.TestCheckResourceAttr(resourceName, "application_configuration.0.run_configuration.0.flink_run_configuration.0.allow_non_restored_state", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.vpc_configuration.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -1821,7 +1821,7 @@ func TestAccKinesisAnalyticsV2Application_FlinkApplication_updateRunning(t *test resource.TestCheckResourceAttr(resourceName, "application_configuration.0.run_configuration.0.flink_run_configuration.0.allow_non_restored_state", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.vpc_configuration.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -1859,7 +1859,7 @@ func TestAccKinesisAnalyticsV2Application_ServiceExecutionRole_update(t *testing Check: resource.ComposeTestCheckFunc( testAccCheckApplicationExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "application_configuration.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "Testing"), @@ -1879,7 +1879,7 @@ func TestAccKinesisAnalyticsV2Application_ServiceExecutionRole_update(t *testing Check: resource.ComposeTestCheckFunc( testAccCheckApplicationExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "application_configuration.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "Testing"), @@ -1933,7 +1933,7 @@ func TestAccKinesisAnalyticsV2Application_SQLApplicationInput_add(t *testing.T) resource.TestCheckResourceAttr(resourceName, "application_configuration.0.run_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.vpc_configuration.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -1990,7 +1990,7 @@ func TestAccKinesisAnalyticsV2Application_SQLApplicationInput_add(t *testing.T) resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.0.output.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.0.reference_data_source.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.vpc_configuration.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -2071,7 +2071,7 @@ func TestAccKinesisAnalyticsV2Application_SQLApplicationInput_update(t *testing. resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.0.output.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.0.reference_data_source.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.vpc_configuration.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -2131,7 +2131,7 @@ func TestAccKinesisAnalyticsV2Application_SQLApplicationInput_update(t *testing. resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.0.output.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.0.reference_data_source.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.vpc_configuration.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -2212,7 +2212,7 @@ func TestAccKinesisAnalyticsV2Application_SQLApplicationInputProcessing_add(t *t resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.0.output.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.0.reference_data_source.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.vpc_configuration.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -2271,7 +2271,7 @@ func TestAccKinesisAnalyticsV2Application_SQLApplicationInputProcessing_add(t *t resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.0.output.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.0.reference_data_source.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.vpc_configuration.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -2354,7 +2354,7 @@ func TestAccKinesisAnalyticsV2Application_SQLApplicationInputProcessing_delete(t resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.0.output.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.0.reference_data_source.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.vpc_configuration.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -2411,7 +2411,7 @@ func TestAccKinesisAnalyticsV2Application_SQLApplicationInputProcessing_delete(t resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.0.output.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.0.reference_data_source.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.vpc_configuration.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -2495,7 +2495,7 @@ func TestAccKinesisAnalyticsV2Application_SQLApplicationInputProcessing_update(t resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.0.output.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.0.reference_data_source.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.vpc_configuration.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -2554,7 +2554,7 @@ func TestAccKinesisAnalyticsV2Application_SQLApplicationInputProcessing_update(t resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.0.output.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.0.reference_data_source.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.vpc_configuration.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -2650,7 +2650,7 @@ func TestAccKinesisAnalyticsV2Application_SQLApplicationMultiple_update(t *testi resource.TestCheckTypeSetElemAttrPair(resourceName, "application_configuration.0.sql_application_configuration.0.output.*.kinesis_firehose_output.0.resource_arn", firehoseResourceName, names.AttrARN), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.0.reference_data_source.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.vpc_configuration.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "1"), resource.TestCheckResourceAttrPair(resourceName, "cloudwatch_logging_options.0.log_stream_arn", cloudWatchLogStreamResourceName, names.AttrARN), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), @@ -2747,7 +2747,7 @@ func TestAccKinesisAnalyticsV2Application_SQLApplicationMultiple_update(t *testi resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.0.reference_data_source.0.table_name", "TABLE-1"), resource.TestCheckResourceAttrSet(resourceName, "application_configuration.0.sql_application_configuration.0.reference_data_source.0.reference_id"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.vpc_configuration.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -2817,7 +2817,7 @@ func TestAccKinesisAnalyticsV2Application_SQLApplicationOutput_update(t *testing resource.TestCheckTypeSetElemAttrPair(resourceName, "application_configuration.0.sql_application_configuration.0.output.*.kinesis_firehose_output.0.resource_arn", firehoseResourceName, names.AttrARN), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.0.reference_data_source.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.vpc_configuration.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -2869,7 +2869,7 @@ func TestAccKinesisAnalyticsV2Application_SQLApplicationOutput_update(t *testing resource.TestCheckTypeSetElemAttrPair(resourceName, "application_configuration.0.sql_application_configuration.0.output.*.lambda_output.0.resource_arn", lambdaResourceName, names.AttrARN), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.0.reference_data_source.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.vpc_configuration.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -2905,7 +2905,7 @@ func TestAccKinesisAnalyticsV2Application_SQLApplicationOutput_update(t *testing resource.TestCheckResourceAttr(resourceName, "application_configuration.0.run_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.vpc_configuration.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -2954,7 +2954,7 @@ func TestAccKinesisAnalyticsV2Application_SQLApplicationReferenceDataSource_add( resource.TestCheckResourceAttr(resourceName, "application_configuration.0.run_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.vpc_configuration.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -3005,7 +3005,7 @@ func TestAccKinesisAnalyticsV2Application_SQLApplicationReferenceDataSource_add( resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.0.reference_data_source.0.table_name", "TABLE-1"), resource.TestCheckResourceAttrSet(resourceName, "application_configuration.0.sql_application_configuration.0.reference_data_source.0.reference_id"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.vpc_configuration.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -3079,7 +3079,7 @@ func TestAccKinesisAnalyticsV2Application_SQLApplicationReferenceDataSource_dele resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.0.reference_data_source.0.table_name", "TABLE-1"), resource.TestCheckResourceAttrSet(resourceName, "application_configuration.0.sql_application_configuration.0.reference_data_source.0.reference_id"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.vpc_configuration.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -3110,7 +3110,7 @@ func TestAccKinesisAnalyticsV2Application_SQLApplicationReferenceDataSource_dele resource.TestCheckResourceAttr(resourceName, "application_configuration.0.run_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.vpc_configuration.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -3184,7 +3184,7 @@ func TestAccKinesisAnalyticsV2Application_SQLApplicationReferenceDataSource_upda resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.0.reference_data_source.0.table_name", "TABLE-1"), resource.TestCheckResourceAttrSet(resourceName, "application_configuration.0.sql_application_configuration.0.reference_data_source.0.reference_id"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.vpc_configuration.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -3238,7 +3238,7 @@ func TestAccKinesisAnalyticsV2Application_SQLApplicationReferenceDataSource_upda resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.0.reference_data_source.0.table_name", "TABLE-2"), resource.TestCheckResourceAttrSet(resourceName, "application_configuration.0.sql_application_configuration.0.reference_data_source.0.reference_id"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.vpc_configuration.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -3318,7 +3318,7 @@ func TestAccKinesisAnalyticsV2Application_SQLApplicationStartApplication_onCreat resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.0.output.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.0.reference_data_source.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.vpc_configuration.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -3399,7 +3399,7 @@ func TestAccKinesisAnalyticsV2Application_SQLApplicationStartApplication_onUpdat resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.0.output.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.0.reference_data_source.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.vpc_configuration.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -3462,7 +3462,7 @@ func TestAccKinesisAnalyticsV2Application_SQLApplicationStartApplication_onUpdat resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.0.output.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.0.reference_data_source.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.vpc_configuration.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -3519,7 +3519,7 @@ func TestAccKinesisAnalyticsV2Application_SQLApplicationStartApplication_onUpdat resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.0.output.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.0.reference_data_source.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.vpc_configuration.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -3610,7 +3610,7 @@ func TestAccKinesisAnalyticsV2Application_SQLApplication_updateRunning(t *testin resource.TestCheckTypeSetElemAttrPair(resourceName, "application_configuration.0.sql_application_configuration.0.output.*.kinesis_firehose_output.0.resource_arn", firehoseResourceName, names.AttrARN), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.0.reference_data_source.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.vpc_configuration.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "1"), resource.TestCheckResourceAttrPair(resourceName, "cloudwatch_logging_options.0.log_stream_arn", cloudWatchLogStreamResourceName, names.AttrARN), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), @@ -3707,7 +3707,7 @@ func TestAccKinesisAnalyticsV2Application_SQLApplication_updateRunning(t *testin resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.0.reference_data_source.0.table_name", "TABLE-1"), resource.TestCheckResourceAttrSet(resourceName, "application_configuration.0.sql_application_configuration.0.reference_data_source.0.reference_id"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.vpc_configuration.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -3783,7 +3783,7 @@ func TestAccKinesisAnalyticsV2Application_SQLApplicationVPC_add(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "application_configuration.0.run_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.vpc_configuration.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -3835,7 +3835,7 @@ func TestAccKinesisAnalyticsV2Application_SQLApplicationVPC_add(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "application_configuration.0.vpc_configuration.0.subnet_ids.#", "2"), resource.TestCheckResourceAttrSet(resourceName, "application_configuration.0.vpc_configuration.0.vpc_configuration_id"), resource.TestCheckResourceAttrPair(resourceName, "application_configuration.0.vpc_configuration.0.vpc_id", vpcResourceName, names.AttrID), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -3912,7 +3912,7 @@ func TestAccKinesisAnalyticsV2Application_SQLApplicationVPC_delete(t *testing.T) resource.TestCheckResourceAttr(resourceName, "application_configuration.0.vpc_configuration.0.subnet_ids.#", "2"), resource.TestCheckResourceAttrSet(resourceName, "application_configuration.0.vpc_configuration.0.vpc_configuration_id"), resource.TestCheckResourceAttrPair(resourceName, "application_configuration.0.vpc_configuration.0.vpc_id", vpcResourceName, names.AttrID), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -3960,7 +3960,7 @@ func TestAccKinesisAnalyticsV2Application_SQLApplicationVPC_delete(t *testing.T) resource.TestCheckResourceAttr(resourceName, "application_configuration.0.run_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.vpc_configuration.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -4037,7 +4037,7 @@ func TestAccKinesisAnalyticsV2Application_SQLApplicationVPC_update(t *testing.T) resource.TestCheckResourceAttr(resourceName, "application_configuration.0.vpc_configuration.0.subnet_ids.#", "2"), resource.TestCheckResourceAttrSet(resourceName, "application_configuration.0.vpc_configuration.0.vpc_configuration_id"), resource.TestCheckResourceAttrPair(resourceName, "application_configuration.0.vpc_configuration.0.vpc_id", vpcResourceName, names.AttrID), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -4089,7 +4089,7 @@ func TestAccKinesisAnalyticsV2Application_SQLApplicationVPC_update(t *testing.T) resource.TestCheckResourceAttr(resourceName, "application_configuration.0.vpc_configuration.0.subnet_ids.#", "1"), resource.TestCheckResourceAttrSet(resourceName, "application_configuration.0.vpc_configuration.0.vpc_configuration_id"), resource.TestCheckResourceAttrPair(resourceName, "application_configuration.0.vpc_configuration.0.vpc_id", vpcResourceName, names.AttrID), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -4177,7 +4177,7 @@ func TestAccKinesisAnalyticsV2Application_RunConfiguration_Update(t *testing.T) resource.TestCheckResourceAttr(resourceName, "application_configuration.0.run_configuration.0.flink_run_configuration.0.allow_non_restored_state", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.vpc_configuration.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -4241,7 +4241,7 @@ func TestAccKinesisAnalyticsV2Application_RunConfiguration_Update(t *testing.T) resource.TestCheckResourceAttr(resourceName, "application_configuration.0.run_configuration.0.flink_run_configuration.0.allow_non_restored_state", acctest.CtTrue), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.sql_application_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "application_configuration.0.vpc_configuration.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesisanalytics", fmt.Sprintf("application/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cloudwatch_logging_options.#", "0"), resource.TestCheckResourceAttrSet(resourceName, "create_timestamp"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), diff --git a/internal/service/kinesisanalyticsv2/service_endpoints_gen_test.go b/internal/service/kinesisanalyticsv2/service_endpoints_gen_test.go index 87a85205cf62..746fa577c6a2 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 01cfc6e0e2a5..8ee886368746 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/alias_data_source_test.go b/internal/service/kms/alias_data_source_test.go index cb9edfd164a0..a27011cd2549 100644 --- a/internal/service/kms/alias_data_source_test.go +++ b/internal/service/kms/alias_data_source_test.go @@ -27,9 +27,9 @@ func TestAccKMSAliasDataSource_service(t *testing.T) { { Config: testAccAliasDataSourceConfig_basic(rName), Check: resource.ComposeTestCheckFunc( - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "kms", rName), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kms", rName), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), - acctest.MatchResourceAttrRegionalARN(resourceName, "target_key_arn", "kms", regexache.MustCompile(`key/[0-9a-z]{8}-([0-9a-z]{4}-){3}[0-9a-z]{12}`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, "target_key_arn", "kms", regexache.MustCompile(`key/[0-9a-z]{8}-([0-9a-z]{4}-){3}[0-9a-z]{12}`)), resource.TestMatchResourceAttr(resourceName, "target_key_id", regexache.MustCompile("^[0-9a-z]{8}-([0-9a-z]{4}-){3}[0-9a-z]{12}$")), ), }, diff --git a/internal/service/kms/alias_test.go b/internal/service/kms/alias_test.go index 28cc59c6bebd..50bf070fa147 100644 --- a/internal/service/kms/alias_test.go +++ b/internal/service/kms/alias_test.go @@ -38,7 +38,7 @@ func TestAccKMSAlias_basic(t *testing.T) { Config: testAccAliasConfig_name(rName), Check: resource.ComposeTestCheckFunc( testAccCheckAliasExists(ctx, resourceName, &alias), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "kms", regexache.MustCompile(`alias/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kms", regexache.MustCompile(`alias/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, tfkms.AliasNamePrefix+rName), resource.TestCheckResourceAttrPair(resourceName, "target_key_arn", keyResourceName, names.AttrARN), resource.TestCheckResourceAttrPair(resourceName, "target_key_id", keyResourceName, names.AttrID), diff --git a/internal/service/kms/external_key_test.go b/internal/service/kms/external_key_test.go index ad146121203c..99ad3f88ec70 100644 --- a/internal/service/kms/external_key_test.go +++ b/internal/service/kms/external_key_test.go @@ -41,7 +41,7 @@ func TestAccKMSExternalKey_basic(t *testing.T) { Config: testAccExternalKeyConfig_basic(), Check: resource.ComposeTestCheckFunc( testAccCheckExternalKeyExists(ctx, resourceName, &key), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "kms", regexache.MustCompile(`key/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kms", regexache.MustCompile(`key/.+`)), resource.TestCheckResourceAttr(resourceName, "bypass_policy_lockout_safety_check", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "deletion_window_in_days", "30"), resource.TestCheckResourceAttr(resourceName, names.AttrEnabled, acctest.CtFalse), diff --git a/internal/service/kms/key_data_source_test.go b/internal/service/kms/key_data_source_test.go index d02dd2544123..fb012ed138ee 100644 --- a/internal/service/kms/key_data_source_test.go +++ b/internal/service/kms/key_data_source_test.go @@ -28,7 +28,7 @@ func TestAccKMSKeyDataSource_byKeyARN(t *testing.T) { Config: testAccKeyDataSourceConfig_byKeyARN(rName), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrPair(dataSourceName, names.AttrARN, resourceName, names.AttrARN), - acctest.CheckResourceAttrAccountID(dataSourceName, names.AttrAWSAccountID), + acctest.CheckResourceAttrAccountID(ctx, dataSourceName, names.AttrAWSAccountID), resource.TestCheckResourceAttrSet(dataSourceName, names.AttrCreationDate), resource.TestCheckResourceAttrPair(dataSourceName, "customer_master_key_spec", resourceName, "customer_master_key_spec"), resource.TestCheckNoResourceAttr(dataSourceName, "deletion_date"), @@ -63,7 +63,7 @@ func TestAccKMSKeyDataSource_byKeyID(t *testing.T) { Config: testAccKeyDataSourceConfig_byKeyID(rName), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrPair(dataSourceName, names.AttrARN, resourceName, names.AttrARN), - acctest.CheckResourceAttrAccountID(dataSourceName, names.AttrAWSAccountID), + acctest.CheckResourceAttrAccountID(ctx, dataSourceName, names.AttrAWSAccountID), resource.TestCheckResourceAttrSet(dataSourceName, names.AttrCreationDate), resource.TestCheckResourceAttrPair(dataSourceName, "customer_master_key_spec", resourceName, "customer_master_key_spec"), resource.TestCheckNoResourceAttr(dataSourceName, "deletion_date"), @@ -98,7 +98,7 @@ func TestAccKMSKeyDataSource_byAliasARN(t *testing.T) { Config: testAccKeyDataSourceConfig_byAliasARN(rName), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrPair(dataSourceName, names.AttrARN, resourceName, names.AttrARN), - acctest.CheckResourceAttrAccountID(dataSourceName, names.AttrAWSAccountID), + acctest.CheckResourceAttrAccountID(ctx, dataSourceName, names.AttrAWSAccountID), resource.TestCheckResourceAttrSet(dataSourceName, names.AttrCreationDate), resource.TestCheckResourceAttrPair(dataSourceName, "customer_master_key_spec", resourceName, "customer_master_key_spec"), resource.TestCheckNoResourceAttr(dataSourceName, "deletion_date"), @@ -133,7 +133,7 @@ func TestAccKMSKeyDataSource_byAliasID(t *testing.T) { Config: testAccKeyDataSourceConfig_byAliasID(rName), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrPair(dataSourceName, names.AttrARN, resourceName, names.AttrARN), - acctest.CheckResourceAttrAccountID(dataSourceName, names.AttrAWSAccountID), + acctest.CheckResourceAttrAccountID(ctx, dataSourceName, names.AttrAWSAccountID), resource.TestCheckResourceAttr(dataSourceName, "cloud_hsm_cluster_id", ""), resource.TestCheckResourceAttrSet(dataSourceName, names.AttrCreationDate), resource.TestCheckResourceAttrPair(dataSourceName, "customer_master_key_spec", resourceName, "customer_master_key_spec"), @@ -173,7 +173,7 @@ func TestAccKMSKeyDataSource_grantToken(t *testing.T) { Config: testAccKeyDataSourceConfig_grantToken(rName), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrPair(dataSourceName, names.AttrARN, resourceName, names.AttrARN), - acctest.CheckResourceAttrAccountID(dataSourceName, names.AttrAWSAccountID), + acctest.CheckResourceAttrAccountID(ctx, dataSourceName, names.AttrAWSAccountID), resource.TestCheckResourceAttrSet(dataSourceName, names.AttrCreationDate), resource.TestCheckResourceAttrPair(dataSourceName, "customer_master_key_spec", resourceName, "customer_master_key_spec"), resource.TestCheckNoResourceAttr(dataSourceName, "deletion_date"), @@ -208,7 +208,7 @@ func TestAccKMSKeyDataSource_multiRegionConfigurationByARN(t *testing.T) { Config: testAccKeyDataSourceConfig_multiRegionByARN(rName), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrPair(dataSourceName, names.AttrARN, resourceName, names.AttrARN), - acctest.CheckResourceAttrAccountID(dataSourceName, names.AttrAWSAccountID), + acctest.CheckResourceAttrAccountID(ctx, dataSourceName, names.AttrAWSAccountID), resource.TestCheckResourceAttrSet(dataSourceName, names.AttrCreationDate), resource.TestCheckResourceAttrPair(dataSourceName, "customer_master_key_spec", resourceName, "customer_master_key_spec"), resource.TestCheckNoResourceAttr(dataSourceName, "deletion_date"), @@ -248,7 +248,7 @@ func TestAccKMSKeyDataSource_multiRegionConfigurationByID(t *testing.T) { Config: testAccKeyDataSourceConfig_multiRegionByID(rName), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrPair(dataSourceName, names.AttrARN, resourceName, names.AttrARN), - acctest.CheckResourceAttrAccountID(dataSourceName, names.AttrAWSAccountID), + acctest.CheckResourceAttrAccountID(ctx, dataSourceName, names.AttrAWSAccountID), resource.TestCheckResourceAttrSet(dataSourceName, names.AttrCreationDate), resource.TestCheckResourceAttrPair(dataSourceName, "customer_master_key_spec", resourceName, "customer_master_key_spec"), resource.TestCheckNoResourceAttr(dataSourceName, "deletion_date"), diff --git a/internal/service/kms/replica_external_key.go b/internal/service/kms/replica_external_key.go index 19f2228ebac4..eab2bb1ad22f 100644 --- a/internal/service/kms/replica_external_key.go +++ b/internal/service/kms/replica_external_key.go @@ -132,7 +132,7 @@ func resourceReplicaExternalKeyCreate(ctx context.Context, d *schema.ResourceDat input := &kms.ReplicateKeyInput{ KeyId: aws.String(strings.TrimPrefix(primaryKeyARN.Resource, "key/")), - ReplicaRegion: aws.String(meta.(*conns.AWSClient).Region), + ReplicaRegion: aws.String(meta.(*conns.AWSClient).Region(ctx)), Tags: getTagsIn(ctx), } diff --git a/internal/service/kms/replica_external_key_test.go b/internal/service/kms/replica_external_key_test.go index 9be75c05ccca..33a66c98b537 100644 --- a/internal/service/kms/replica_external_key_test.go +++ b/internal/service/kms/replica_external_key_test.go @@ -39,7 +39,7 @@ func TestAccKMSReplicaExternalKey_basic(t *testing.T) { Config: testAccReplicaExternalKeyConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckKeyExists(ctx, resourceName, &key), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "kms", regexache.MustCompile(`key/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kms", regexache.MustCompile(`key/.+`)), resource.TestCheckResourceAttr(resourceName, "bypass_policy_lockout_safety_check", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "deletion_window_in_days", "30"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), diff --git a/internal/service/kms/replica_key.go b/internal/service/kms/replica_key.go index 6b9f7d5f9e6c..03c056de30ea 100644 --- a/internal/service/kms/replica_key.go +++ b/internal/service/kms/replica_key.go @@ -121,7 +121,7 @@ func resourceReplicaKeyCreate(ctx context.Context, d *schema.ResourceData, meta input := &kms.ReplicateKeyInput{ KeyId: aws.String(strings.TrimPrefix(primaryKeyARN.Resource, "key/")), - ReplicaRegion: aws.String(meta.(*conns.AWSClient).Region), + ReplicaRegion: aws.String(meta.(*conns.AWSClient).Region(ctx)), Tags: getTagsIn(ctx), } diff --git a/internal/service/kms/replica_key_test.go b/internal/service/kms/replica_key_test.go index 1be9ea530720..22ecf2d77e72 100644 --- a/internal/service/kms/replica_key_test.go +++ b/internal/service/kms/replica_key_test.go @@ -40,7 +40,7 @@ func TestAccKMSReplicaKey_basic(t *testing.T) { Config: testAccReplicaKeyConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckKeyExists(ctx, resourceName, &key), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "kms", regexache.MustCompile(`key/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kms", regexache.MustCompile(`key/.+`)), resource.TestCheckResourceAttr(resourceName, "bypass_policy_lockout_safety_check", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "deletion_window_in_days", "30"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), diff --git a/internal/service/kms/secrets_data_source.go b/internal/service/kms/secrets_data_source.go index 3bca71732b13..e9fa5d83089e 100644 --- a/internal/service/kms/secrets_data_source.go +++ b/internal/service/kms/secrets_data_source.go @@ -117,7 +117,7 @@ func dataSourceSecretsRead(ctx context.Context, d *schema.ResourceData, meta int plaintext[name] = string(output.Plaintext) } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) d.Set("plaintext", plaintext) return diags diff --git a/internal/service/kms/service_endpoints_gen_test.go b/internal/service/kms/service_endpoints_gen_test.go index 7b548b12fb28..5cfb45fb6e37 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/lf_tag.go b/internal/service/lakeformation/lf_tag.go index 507d271e1bd0..1a1e4b09d614 100644 --- a/internal/service/lakeformation/lf_tag.go +++ b/internal/service/lakeformation/lf_tag.go @@ -78,7 +78,7 @@ func resourceLFTagCreate(ctx context.Context, d *schema.ResourceData, meta inter if v, ok := d.GetOk(names.AttrCatalogID); ok { catalogID = v.(string) } else { - catalogID = meta.(*conns.AWSClient).AccountID + catalogID = meta.(*conns.AWSClient).AccountID(ctx) } id := lfTagCreateResourceID(catalogID, tagKey) diff --git a/internal/service/lakeformation/lf_tag_test.go b/internal/service/lakeformation/lf_tag_test.go index 176fef331d5e..d59ef1492a53 100644 --- a/internal/service/lakeformation/lf_tag_test.go +++ b/internal/service/lakeformation/lf_tag_test.go @@ -93,7 +93,7 @@ func testAccLFTag_basic(t *testing.T) { testAccCheckLFTagExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, names.AttrKey, rName), resource.TestCheckResourceAttr(resourceName, "values.0", names.AttrValue), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrCatalogID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrCatalogID), ), }, { @@ -122,7 +122,7 @@ func testAccLFTag_TagKey_complex(t *testing.T) { testAccCheckLFTagExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, names.AttrKey, rName), resource.TestCheckResourceAttr(resourceName, "values.0", names.AttrValue), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrCatalogID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrCatalogID), ), }, }, @@ -170,7 +170,7 @@ func testAccLFTag_Values(t *testing.T) { testAccCheckLFTagExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, names.AttrKey, rName), resource.TestCheckResourceAttr(resourceName, "values.0", acctest.CtValue1), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrCatalogID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrCatalogID), ), }, { @@ -187,7 +187,7 @@ func testAccLFTag_Values(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "values.0", acctest.CtValue1), resource.TestCheckTypeSetElemAttr(resourceName, "values.*", "value3"), testAccCheckLFTagValuesLen(ctx, resourceName, 2), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrCatalogID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrCatalogID), ), }, }, @@ -216,7 +216,7 @@ func testAccLFTag_Values_overFifty(t *testing.T) { resource.TestCheckResourceAttr(resourceName, names.AttrKey, rName), resource.TestCheckResourceAttr(resourceName, "values.0", acctest.CtValue1), testAccCheckLFTagValuesLen(ctx, resourceName, len(generatedValues)), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrCatalogID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrCatalogID), ), }, { @@ -227,7 +227,7 @@ func testAccLFTag_Values_overFifty(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "values.0", acctest.CtValue1), testAccCheckLFTagValuesLen(ctx, resourceName, len(generatedValues2)), resource.TestCheckTypeSetElemAttr(resourceName, "values.*", "value59"), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrCatalogID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrCatalogID), ), }, { @@ -237,7 +237,7 @@ func testAccLFTag_Values_overFifty(t *testing.T) { resource.TestCheckResourceAttr(resourceName, names.AttrKey, rName), resource.TestCheckResourceAttr(resourceName, "values.0", acctest.CtValue1), testAccCheckLFTagValuesLen(ctx, resourceName, len(generatedValues)-1), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrCatalogID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrCatalogID), ), }, }, diff --git a/internal/service/lakeformation/resource_lf_tag_test.go b/internal/service/lakeformation/resource_lf_tag_test.go index afcbed679976..056520980952 100644 --- a/internal/service/lakeformation/resource_lf_tag_test.go +++ b/internal/service/lakeformation/resource_lf_tag_test.go @@ -54,7 +54,7 @@ func testAccResourceLFTag_basic(t *testing.T) { Config: testAccResourceLFTagConfig_basic(rName, []string{names.AttrValue}, names.AttrValue), Check: resource.ComposeTestCheckFunc( testAccCheckResourceLFTagExists(ctx, resourceName, &resourcelftag), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrCatalogID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrCatalogID), resource.TestCheckResourceAttr(resourceName, "lf_tag.0.key", rName), resource.TestCheckResourceAttr(resourceName, "lf_tag.0.value", names.AttrValue), ), diff --git a/internal/service/lakeformation/resource_lf_tags_test.go b/internal/service/lakeformation/resource_lf_tags_test.go index c13eaf66807f..072b3dd704c3 100644 --- a/internal/service/lakeformation/resource_lf_tags_test.go +++ b/internal/service/lakeformation/resource_lf_tags_test.go @@ -43,7 +43,7 @@ func testAccResourceLFTags_basic(t *testing.T) { names.AttrKey: rName, names.AttrValue: "copse", }), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrCatalogID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrCatalogID), ), }, }, diff --git a/internal/service/lakeformation/resource_test.go b/internal/service/lakeformation/resource_test.go index eb1a1f80ddfc..0a902551eea9 100644 --- a/internal/service/lakeformation/resource_test.go +++ b/internal/service/lakeformation/resource_test.go @@ -90,7 +90,7 @@ func TestAccLakeFormationResource_serviceLinkedRole(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckResourceExists(ctx, resourceName), resource.TestCheckResourceAttrPair(resourceName, names.AttrARN, bucketResourceName, names.AttrARN), - acctest.CheckResourceAttrGlobalARN(resourceName, names.AttrRoleARN, "iam", "role/aws-service-role/lakeformation.amazonaws.com/AWSServiceRoleForLakeFormationDataAccess"), + acctest.CheckResourceAttrGlobalARN(ctx, resourceName, names.AttrRoleARN, "iam", "role/aws-service-role/lakeformation.amazonaws.com/AWSServiceRoleForLakeFormationDataAccess"), ), }, }, @@ -155,7 +155,7 @@ func TestAccLakeFormationResource_updateSLRToRole(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckResourceExists(ctx, resourceName), resource.TestCheckResourceAttrPair(resourceName, names.AttrARN, bucketResourceName, names.AttrARN), - acctest.CheckResourceAttrGlobalARN(resourceName, names.AttrRoleARN, "iam", "role/aws-service-role/lakeformation.amazonaws.com/AWSServiceRoleForLakeFormationDataAccess"), + acctest.CheckResourceAttrGlobalARN(ctx, resourceName, names.AttrRoleARN, "iam", "role/aws-service-role/lakeformation.amazonaws.com/AWSServiceRoleForLakeFormationDataAccess"), ), }, { diff --git a/internal/service/lakeformation/service_endpoints_gen_test.go b/internal/service/lakeformation/service_endpoints_gen_test.go index 0f89fbd9d1fa..26303e21a0e1 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/alias_test.go b/internal/service/lambda/alias_test.go index 67b837dd7aad..eab85adb36d7 100644 --- a/internal/service/lambda/alias_test.go +++ b/internal/service/lambda/alias_test.go @@ -44,7 +44,7 @@ func TestAccLambdaAlias_basic(t *testing.T) { testAccCheckAliasExists(ctx, resourceName, &conf), testAccCheckAliasAttributes(&conf), testAccCheckAliasRoutingDoesNotExistConfig(&conf), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "lambda", functionArnResourcePart), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "lambda", functionArnResourcePart), testAccCheckAliasInvokeARN(resourceName, &conf), ), }, @@ -109,7 +109,7 @@ func TestAccLambdaAlias_FunctionName_name(t *testing.T) { testAccCheckAliasExists(ctx, resourceName, &conf), testAccCheckAliasAttributes(&conf), testAccCheckAliasRoutingDoesNotExistConfig(&conf), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "lambda", fmt.Sprintf("function:%s:%s", rName, rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "lambda", fmt.Sprintf("function:%s:%s", rName, rName)), testAccCheckAliasInvokeARN(resourceName, &conf), ), }, @@ -148,7 +148,7 @@ func TestAccLambdaAlias_nameUpdate(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckAliasExists(ctx, resourceName, &conf), testAccCheckAliasAttributes(&conf), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "lambda", functionArnResourcePart), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "lambda", functionArnResourcePart), ), }, { @@ -162,7 +162,7 @@ func TestAccLambdaAlias_nameUpdate(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckAliasExists(ctx, resourceName, &conf), testAccCheckAliasAttributes(&conf), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "lambda", functionArnResourcePartUpdate), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "lambda", functionArnResourcePartUpdate), ), }, }, @@ -192,7 +192,7 @@ func TestAccLambdaAlias_routing(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckAliasExists(ctx, resourceName, &conf), testAccCheckAliasAttributes(&conf), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "lambda", functionArnResourcePart), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "lambda", functionArnResourcePart), ), }, { @@ -207,7 +207,7 @@ func TestAccLambdaAlias_routing(t *testing.T) { testAccCheckAliasExists(ctx, resourceName, &conf), testAccCheckAliasAttributes(&conf), testAccCheckAliasRoutingExistsConfig(&conf), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "lambda", functionArnResourcePart), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "lambda", functionArnResourcePart), ), }, { @@ -216,7 +216,7 @@ func TestAccLambdaAlias_routing(t *testing.T) { testAccCheckAliasExists(ctx, resourceName, &conf), testAccCheckAliasAttributes(&conf), testAccCheckAliasRoutingDoesNotExistConfig(&conf), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "lambda", functionArnResourcePart), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "lambda", functionArnResourcePart), ), }, }, diff --git a/internal/service/lambda/event_source_mapping.go b/internal/service/lambda/event_source_mapping.go index bcbb79a40c5b..83590022317f 100644 --- a/internal/service/lambda/event_source_mapping.go +++ b/internal/service/lambda/event_source_mapping.go @@ -238,12 +238,51 @@ func resourceEventSourceMapping() *schema.Resource { Computed: true, ValidateFunc: validation.IntBetween(-1, 10_000), }, + "metrics_config": { + Type: schema.TypeList, + Optional: true, + MaxItems: 1, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "metrics": { + Type: schema.TypeSet, + Required: true, + MinItems: 1, + Elem: &schema.Schema{ + Type: schema.TypeString, + ValidateDiagFunc: enum.Validate[awstypes.EventSourceMappingMetric](), + }, + }, + }, + }, + }, "parallelization_factor": { Type: schema.TypeInt, Optional: true, Computed: true, ValidateFunc: validation.IntBetween(1, 10), }, + "provisioned_poller_config": { + Type: schema.TypeList, + Optional: true, + MaxItems: 1, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "maximum_pollers": { + Type: schema.TypeInt, + Optional: true, + Computed: true, + ValidateFunc: validation.IntBetween(1, 2000), + }, + "minimum_pollers": { + Type: schema.TypeInt, + Optional: true, + Computed: true, + ValidateFunc: validation.IntBetween(1, 200), + }, + }, + }, + }, "queues": { Type: schema.TypeList, Optional: true, @@ -447,10 +486,18 @@ func resourceEventSourceMappingCreate(ctx context.Context, d *schema.ResourceDat input.MaximumRetryAttempts = aws.Int32(int32(v.(int))) } + if v, ok := d.GetOk("metrics_config"); ok && len(v.([]interface{})) > 0 && v.([]interface{})[0] != nil { + input.MetricsConfig = expandEventSourceMappingMetricsConfig(v.([]interface{})[0].(map[string]interface{})) + } + if v, ok := d.GetOk("parallelization_factor"); ok { input.ParallelizationFactor = aws.Int32(int32(v.(int))) } + if v, ok := d.GetOk("provisioned_poller_config"); ok && len(v.([]interface{})) > 0 && v.([]interface{})[0] != nil { + input.ProvisionedPollerConfig = expandProvisionedPollerConfig(v.([]interface{})[0].(map[string]interface{})) + } + if v, ok := d.GetOk("queues"); ok && len(v.([]interface{})) > 0 { input.Queues = flex.ExpandStringValueList(v.([]interface{})) } @@ -584,7 +631,21 @@ func resourceEventSourceMappingRead(ctx context.Context, d *schema.ResourceData, d.Set("maximum_batching_window_in_seconds", output.MaximumBatchingWindowInSeconds) d.Set("maximum_record_age_in_seconds", output.MaximumRecordAgeInSeconds) d.Set("maximum_retry_attempts", output.MaximumRetryAttempts) + if v := output.MetricsConfig; v != nil { + if err := d.Set("metrics_config", []interface{}{flattenEventSourceMappingMetricsConfig(v)}); err != nil { + return sdkdiag.AppendErrorf(diags, "setting metrics_config: %s", err) + } + } else { + d.Set("metrics_config", nil) + } d.Set("parallelization_factor", output.ParallelizationFactor) + if v := output.ProvisionedPollerConfig; v != nil { + if err := d.Set("provisioned_poller_config", []interface{}{flattenProvisionedPollerConfig(v)}); err != nil { + return sdkdiag.AppendErrorf(diags, "setting provisioned_poller_config: %s", err) + } + } else { + d.Set("provisioned_poller_config", nil) + } d.Set("queues", output.Queues) if v := output.ScalingConfig; v != nil { if err := d.Set("scaling_config", []interface{}{flattenScalingConfig(v)}); err != nil { @@ -701,10 +762,27 @@ func resourceEventSourceMappingUpdate(ctx context.Context, d *schema.ResourceDat input.MaximumRetryAttempts = aws.Int32(int32(d.Get("maximum_retry_attempts").(int))) } + if d.HasChange("metrics_config") { + if v, ok := d.GetOk("metrics_config"); ok && len(v.([]interface{})) > 0 && v.([]interface{})[0] != nil { + input.MetricsConfig = expandEventSourceMappingMetricsConfig((v.([]interface{})[0].(map[string]interface{}))) + } else { + input.MetricsConfig = &awstypes.EventSourceMappingMetricsConfig{} + } + } + if d.HasChange("parallelization_factor") { input.ParallelizationFactor = aws.Int32(int32(d.Get("parallelization_factor").(int))) } + if d.HasChange("provisioned_poller_config") { + if v, ok := d.GetOk("provisioned_poller_config"); ok && len(v.([]interface{})) > 0 && v.([]interface{})[0] != nil { + input.ProvisionedPollerConfig = expandProvisionedPollerConfig(v.([]interface{})[0].(map[string]interface{})) + } else { + // AWS ignores the removal if this is left as nil. + input.ProvisionedPollerConfig = &awstypes.ProvisionedPollerConfig{} + } + } + if d.HasChange("scaling_config") { if v, ok := d.GetOk("scaling_config"); ok && len(v.([]interface{})) > 0 && v.([]interface{})[0] != nil { input.ScalingConfig = expandScalingConfig(v.([]interface{})[0].(map[string]interface{})) @@ -1107,6 +1185,42 @@ func flattenSelfManagedKafkaEventSourceConfig(apiObject *awstypes.SelfManagedKaf return tfMap } +func expandProvisionedPollerConfig(tfMap map[string]interface{}) *awstypes.ProvisionedPollerConfig { + if tfMap == nil { + return nil + } + + apiObject := &awstypes.ProvisionedPollerConfig{} + + if v, ok := tfMap["maximum_pollers"].(int); ok && v != 0 { + apiObject.MaximumPollers = aws.Int32(int32(v)) + } + + if v, ok := tfMap["minimum_pollers"].(int); ok && v != 0 { + apiObject.MinimumPollers = aws.Int32(int32(v)) + } + + return apiObject +} + +func flattenProvisionedPollerConfig(apiObject *awstypes.ProvisionedPollerConfig) map[string]interface{} { + if apiObject == nil { + return nil + } + + tfMap := map[string]interface{}{} + + if v := apiObject.MaximumPollers; v != nil { + tfMap["maximum_pollers"] = aws.ToInt32(v) + } + + if v := apiObject.MinimumPollers; v != nil { + tfMap["minimum_pollers"] = aws.ToInt32(v) + } + + return tfMap +} + func expandSourceAccessConfiguration(tfMap map[string]interface{}) *awstypes.SourceAccessConfiguration { if tfMap == nil { return nil @@ -1305,3 +1419,31 @@ func flattenScalingConfig(apiObject *awstypes.ScalingConfig) map[string]interfac return tfMap } + +func expandEventSourceMappingMetricsConfig(tfMap map[string]interface{}) *awstypes.EventSourceMappingMetricsConfig { + if tfMap == nil { + return nil + } + + apiObject := &awstypes.EventSourceMappingMetricsConfig{} + + if v, ok := tfMap["metrics"].(*schema.Set); ok && v.Len() > 0 { + apiObject.Metrics = flex.ExpandStringyValueSet[awstypes.EventSourceMappingMetric](v) + } + + return apiObject +} + +func flattenEventSourceMappingMetricsConfig(apiObject *awstypes.EventSourceMappingMetricsConfig) map[string]interface{} { + if apiObject == nil { + return nil + } + + tfMap := map[string]interface{}{} + + if v := apiObject.Metrics; v != nil { + tfMap["metrics"] = flex.FlattenStringyValueSet(v) + } + + return tfMap +} diff --git a/internal/service/lambda/event_source_mapping_test.go b/internal/service/lambda/event_source_mapping_test.go index 3829b2c2d086..28db7da75a77 100644 --- a/internal/service/lambda/event_source_mapping_test.go +++ b/internal/service/lambda/event_source_mapping_test.go @@ -58,6 +58,8 @@ func TestAccLambdaEventSourceMapping_Kinesis_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "function_response_types.#", "0"), resource.TestCheckResourceAttr(resourceName, names.AttrKMSKeyARN, ""), acctest.CheckResourceAttrRFC3339(resourceName, "last_modified"), + resource.TestCheckResourceAttr(resourceName, "metrics_config.#", "0"), + resource.TestCheckResourceAttr(resourceName, "provisioned_poller_config.#", "0"), resource.TestCheckResourceAttr(resourceName, "tumbling_window_in_seconds", "0"), ), }, @@ -877,10 +879,11 @@ func TestAccLambdaEventSourceMapping_msk(t *testing.T) { Config: testAccEventSourceMappingConfig_msk(rName, "100"), Check: resource.ComposeTestCheckFunc( testAccCheckEventSourceMappingExists(ctx, resourceName, &v), + resource.TestCheckResourceAttr(resourceName, "amazon_managed_kafka_event_source_config.#", "1"), resource.TestCheckResourceAttr(resourceName, "batch_size", "100"), resource.TestCheckResourceAttrPair(resourceName, "event_source_arn", eventSourceResourceName, names.AttrARN), acctest.CheckResourceAttrRFC3339(resourceName, "last_modified"), - resource.TestCheckResourceAttr(resourceName, "amazon_managed_kafka_event_source_config.#", "1"), + resource.TestCheckResourceAttr(resourceName, "provisioned_poller_config.#", "0"), resource.TestCheckResourceAttr(resourceName, "topics.#", "1"), resource.TestCheckTypeSetElemAttr(resourceName, "topics.*", "test"), ), @@ -902,10 +905,10 @@ func TestAccLambdaEventSourceMapping_msk(t *testing.T) { Config: testAccEventSourceMappingConfig_msk(rName, "9999"), Check: resource.ComposeTestCheckFunc( testAccCheckEventSourceMappingExists(ctx, resourceName, &v), + resource.TestCheckResourceAttr(resourceName, "amazon_managed_kafka_event_source_config.#", "1"), resource.TestCheckResourceAttr(resourceName, "batch_size", "9999"), resource.TestCheckResourceAttrPair(resourceName, "event_source_arn", eventSourceResourceName, names.AttrARN), acctest.CheckResourceAttrRFC3339(resourceName, "last_modified"), - resource.TestCheckResourceAttr(resourceName, "amazon_managed_kafka_event_source_config.#", "1"), resource.TestCheckResourceAttr(resourceName, "topics.#", "1"), resource.TestCheckTypeSetElemAttr(resourceName, "topics.*", "test"), ), @@ -935,11 +938,12 @@ func TestAccLambdaEventSourceMapping_mskWithEventSourceConfig(t *testing.T) { Config: testAccEventSourceMappingConfig_mskWithEventSourceConfig(rName, "100"), Check: resource.ComposeTestCheckFunc( testAccCheckEventSourceMappingExists(ctx, resourceName, &v), + resource.TestCheckResourceAttr(resourceName, "amazon_managed_kafka_event_source_config.#", "1"), + resource.TestCheckResourceAttr(resourceName, "amazon_managed_kafka_event_source_config.0.consumer_group_id", "amazon-managed-test-group-id"), resource.TestCheckResourceAttr(resourceName, "batch_size", "100"), resource.TestCheckResourceAttrPair(resourceName, "event_source_arn", eventSourceResourceName, names.AttrARN), acctest.CheckResourceAttrRFC3339(resourceName, "last_modified"), - resource.TestCheckResourceAttr(resourceName, "amazon_managed_kafka_event_source_config.#", "1"), - resource.TestCheckResourceAttr(resourceName, "amazon_managed_kafka_event_source_config.0.consumer_group_id", "amazon-managed-test-group-id"), + resource.TestCheckResourceAttr(resourceName, "provisioned_poller_config.#", "0"), resource.TestCheckResourceAttr(resourceName, "topics.#", "1"), resource.TestCheckTypeSetElemAttr(resourceName, "topics.*", "test"), ), @@ -972,11 +976,12 @@ func TestAccLambdaEventSourceMapping_selfManagedKafka(t *testing.T) { testAccCheckEventSourceMappingExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "batch_size", "100"), resource.TestCheckResourceAttr(resourceName, names.AttrEnabled, acctest.CtFalse), + acctest.CheckResourceAttrRFC3339(resourceName, "last_modified"), + resource.TestCheckResourceAttr(resourceName, "provisioned_poller_config.#", "0"), resource.TestCheckResourceAttr(resourceName, "self_managed_event_source.#", "1"), resource.TestCheckResourceAttr(resourceName, "self_managed_event_source.0.endpoints.KAFKA_BOOTSTRAP_SERVERS", "test1:9092,test2:9092"), resource.TestCheckResourceAttr(resourceName, "self_managed_kafka_event_source_config.#", "1"), resource.TestCheckResourceAttr(resourceName, "source_access_configuration.#", "3"), - acctest.CheckResourceAttrRFC3339(resourceName, "last_modified"), resource.TestCheckResourceAttr(resourceName, "topics.#", "1"), resource.TestCheckTypeSetElemAttr(resourceName, "topics.*", "test"), ), @@ -1017,12 +1022,13 @@ func TestAccLambdaEventSourceMapping_selfManagedKafkaWithEventSourceConfig(t *te testAccCheckEventSourceMappingExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "batch_size", "100"), resource.TestCheckResourceAttr(resourceName, names.AttrEnabled, acctest.CtFalse), + acctest.CheckResourceAttrRFC3339(resourceName, "last_modified"), + resource.TestCheckResourceAttr(resourceName, "provisioned_poller_config.#", "0"), resource.TestCheckResourceAttr(resourceName, "self_managed_event_source.#", "1"), resource.TestCheckResourceAttr(resourceName, "self_managed_event_source.0.endpoints.KAFKA_BOOTSTRAP_SERVERS", "test1:9092,test2:9092"), resource.TestCheckResourceAttr(resourceName, "self_managed_kafka_event_source_config.#", "1"), resource.TestCheckResourceAttr(resourceName, "self_managed_kafka_event_source_config.0.consumer_group_id", "self-managed-test-group-id"), resource.TestCheckResourceAttr(resourceName, "source_access_configuration.#", "3"), - acctest.CheckResourceAttrRFC3339(resourceName, "last_modified"), resource.TestCheckResourceAttr(resourceName, "topics.#", "1"), resource.TestCheckTypeSetElemAttr(resourceName, "topics.*", "test"), ), @@ -1037,6 +1043,53 @@ func TestAccLambdaEventSourceMapping_selfManagedKafkaWithEventSourceConfig(t *te }) } +func TestAccLambdaEventSourceMapping_selfManagedKafkaWithProvisionedPollerConfig(t *testing.T) { + ctx := acctest.Context(t) + var v lambda.GetEventSourceMappingOutput + resourceName := "aws_lambda_event_source_mapping.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.LambdaServiceID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckEventSourceMappingDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccEventSourceMappingConfig_selfManagedKafkaWithProvisionedPollerConfig(rName, "100", "test1:9092,test2:9092", "123", "null"), + Check: resource.ComposeTestCheckFunc( + testAccCheckEventSourceMappingExists(ctx, resourceName, &v), + resource.TestCheckResourceAttr(resourceName, "provisioned_poller_config.#", "1"), + resource.TestCheckResourceAttr(resourceName, "provisioned_poller_config.0.maximum_pollers", "123"), + resource.TestCheckResourceAttrSet(resourceName, "provisioned_poller_config.0.minimum_pollers"), + ), + }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + ImportStateVerifyIgnore: []string{"last_modified"}, + }, + { + Config: testAccEventSourceMappingConfig_selfManagedKafkaWithProvisionedPollerConfig(rName, "100", "test1:9092,test2:9092", "150", "15"), + Check: resource.ComposeTestCheckFunc( + testAccCheckEventSourceMappingExists(ctx, resourceName, &v), + resource.TestCheckResourceAttr(resourceName, "provisioned_poller_config.#", "1"), + resource.TestCheckResourceAttr(resourceName, "provisioned_poller_config.0.maximum_pollers", "150"), + resource.TestCheckResourceAttr(resourceName, "provisioned_poller_config.0.minimum_pollers", "15"), + ), + }, + { + Config: testAccEventSourceMappingConfig_selfManagedKafka(rName, "100", "test1:9092,test2:9092"), + Check: resource.ComposeTestCheckFunc( + testAccCheckEventSourceMappingExists(ctx, resourceName, &v), + resource.TestCheckResourceAttr(resourceName, "provisioned_poller_config.#", "0"), + ), + }, + }, + }) +} + func TestAccLambdaEventSourceMapping_activeMQ(t *testing.T) { ctx := acctest.Context(t) if testing.Short() { @@ -1292,6 +1345,48 @@ func TestAccLambdaEventSourceMapping_documentDB(t *testing.T) { }) } +func TestAccLambdaEventSourceMapping_SQS_metricsConfig(t *testing.T) { + ctx := acctest.Context(t) + var v lambda.GetEventSourceMappingOutput + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + resourceName := "aws_lambda_event_source_mapping.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.LambdaServiceID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckEventSourceMappingDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccEventSourceMappingConfig_sqsMetricsConfig1(rName), + Check: resource.ComposeTestCheckFunc( + testAccCheckEventSourceMappingExists(ctx, resourceName, &v), + resource.TestCheckResourceAttr(resourceName, "metrics_config.0.metrics.0", "EventCount"), + ), + }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + ImportStateVerifyIgnore: []string{"last_modified"}, + }, + { + Config: testAccEventSourceMappingConfig_sqsMetricsConfig2(rName), + Check: resource.ComposeTestCheckFunc( + testAccCheckEventSourceMappingExists(ctx, resourceName, &v), + resource.TestCheckResourceAttr(resourceName, "metrics_config.#", "0"), + ), + }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + ImportStateVerifyIgnore: []string{"last_modified"}, + }, + }, + }) +} + func testAccPreCheckMQ(ctx context.Context, t *testing.T) { conn := acctest.Provider.Meta().(*conns.AWSClient).MQClient(ctx) @@ -2487,6 +2582,52 @@ resource "aws_lambda_event_source_mapping" "test" { `, rName, batchSize, kafkaBootstrapServers)) } +func testAccEventSourceMappingConfig_selfManagedKafkaWithProvisionedPollerConfig(rName, batchSize, kafkaBootstrapServers, maxPollers, minPollers string) string { + if batchSize == "" { + batchSize = "null" + } + if maxPollers == "" { + maxPollers = "null" + } + if minPollers == "" { + minPollers = "null" + } + + return acctest.ConfigCompose(testAccEventSourceMappingConfig_kafkaBase(rName), fmt.Sprintf(` +resource "aws_lambda_event_source_mapping" "test" { + batch_size = %[2]s + enabled = false + function_name = aws_lambda_function.test.arn + topics = ["test"] + starting_position = "TRIM_HORIZON" + + self_managed_event_source { + endpoints = { + KAFKA_BOOTSTRAP_SERVERS = %[3]q + } + } + + dynamic "source_access_configuration" { + for_each = aws_subnet.test[*].id + content { + type = "VPC_SUBNET" + uri = "subnet:${source_access_configuration.value}" + } + } + + source_access_configuration { + type = "VPC_SECURITY_GROUP" + uri = aws_security_group.test.id + } + + provisioned_poller_config { + maximum_pollers = %[4]s + minimum_pollers = %[5]s + } +} +`, rName, batchSize, kafkaBootstrapServers, maxPollers, minPollers)) +} + func testAccEventSourceMappingConfig_dynamoDBBatchSize(rName, batchSize string) string { if batchSize == "" { batchSize = "null" @@ -2673,3 +2814,25 @@ resource "aws_lambda_event_source_mapping" "test" { } `) } + +func testAccEventSourceMappingConfig_sqsMetricsConfig1(rName string) string { + return acctest.ConfigCompose(testAccEventSourceMappingConfig_sqsBase(rName), ` +resource "aws_lambda_event_source_mapping" "test" { + event_source_arn = aws_sqs_queue.test.arn + function_name = aws_lambda_function.test.arn + + metrics_config { + metrics = ["EventCount"] + } +} +`) +} + +func testAccEventSourceMappingConfig_sqsMetricsConfig2(rName string) string { + return acctest.ConfigCompose(testAccEventSourceMappingConfig_sqsBase(rName), ` +resource "aws_lambda_event_source_mapping" "test" { + event_source_arn = aws_sqs_queue.test.arn + function_name = aws_lambda_function.test.arn +} +`) +} diff --git a/internal/service/lambda/function.go b/internal/service/lambda/function.go index cf1b3489aebe..5126ae9dd51f 100644 --- a/internal/service/lambda/function.go +++ b/internal/service/lambda/function.go @@ -744,7 +744,7 @@ func resourceFunctionRead(ctx context.Context, d *schema.ResourceData, meta inte // in AWS GovCloud (US)) so we cannot just ignore the error as would typically. // Currently this functionality is not enabled in all Regions and returns ambiguous error codes // (e.g. AccessDeniedException), so we cannot just ignore the error as we would typically. - if partition, region := meta.(*conns.AWSClient).Partition(ctx), meta.(*conns.AWSClient).Region; partition == endpoints.AwsPartitionID && signerServiceIsAvailable(region) { + if partition, region := meta.(*conns.AWSClient).Partition(ctx), meta.(*conns.AWSClient).Region(ctx); partition == endpoints.AwsPartitionID && signerServiceIsAvailable(region) { var codeSigningConfigARN string // Code Signing is only supported on zip packaged lambda functions. @@ -1388,7 +1388,7 @@ func invokeARN(ctx context.Context, c *conns.AWSClient, functionOrAliasARN strin return arn.ARN{ Partition: c.Partition(ctx), Service: "apigateway", - Region: c.Region, + Region: c.Region(ctx), AccountID: "lambda", Resource: fmt.Sprintf("path/2015-03-31/functions/%s/invocations", functionOrAliasARN), }.String() @@ -1399,26 +1399,26 @@ func invokeARN(ctx context.Context, c *conns.AWSClient, functionOrAliasARN strin // See https://docs.aws.amazon.com/general/latest/gr/signer.html#signer_lambda_region. func signerServiceIsAvailable(region string) bool { availableRegions := map[string]struct{}{ - names.USEast1RegionID: {}, - names.USEast2RegionID: {}, - names.USWest1RegionID: {}, - names.USWest2RegionID: {}, - names.AFSouth1RegionID: {}, - names.APEast1RegionID: {}, - names.APSouth1RegionID: {}, - names.APNortheast2RegionID: {}, - names.APSoutheast1RegionID: {}, - names.APSoutheast2RegionID: {}, - names.APNortheast1RegionID: {}, - names.CACentral1RegionID: {}, - names.EUCentral1RegionID: {}, - names.EUWest1RegionID: {}, - names.EUWest2RegionID: {}, - names.EUSouth1RegionID: {}, - names.EUWest3RegionID: {}, - names.EUNorth1RegionID: {}, - names.MESouth1RegionID: {}, - names.SAEast1RegionID: {}, + endpoints.UsEast1RegionID: {}, + endpoints.UsEast2RegionID: {}, + endpoints.UsWest1RegionID: {}, + endpoints.UsWest2RegionID: {}, + endpoints.AfSouth1RegionID: {}, + endpoints.ApEast1RegionID: {}, + endpoints.ApSouth1RegionID: {}, + endpoints.ApNortheast2RegionID: {}, + endpoints.ApSoutheast1RegionID: {}, + endpoints.ApSoutheast2RegionID: {}, + endpoints.ApNortheast1RegionID: {}, + endpoints.CaCentral1RegionID: {}, + endpoints.EuCentral1RegionID: {}, + endpoints.EuWest1RegionID: {}, + endpoints.EuWest2RegionID: {}, + endpoints.EuSouth1RegionID: {}, + endpoints.EuWest3RegionID: {}, + endpoints.EuNorth1RegionID: {}, + endpoints.MeSouth1RegionID: {}, + endpoints.SaEast1RegionID: {}, } _, ok := availableRegions[region] diff --git a/internal/service/lambda/function_data_source.go b/internal/service/lambda/function_data_source.go index 5347ebf2f737..166e16b8e250 100644 --- a/internal/service/lambda/function_data_source.go +++ b/internal/service/lambda/function_data_source.go @@ -364,7 +364,7 @@ func dataSourceFunctionRead(ctx context.Context, d *schema.ResourceData, meta in setTagsOut(ctx, output.Tags) // See r/aws_lambda_function. - if partition, region := meta.(*conns.AWSClient).Partition(ctx), meta.(*conns.AWSClient).Region; partition == endpoints.AwsPartitionID && signerServiceIsAvailable(region) { + if partition, region := meta.(*conns.AWSClient).Partition(ctx), meta.(*conns.AWSClient).Region(ctx); partition == endpoints.AwsPartitionID && signerServiceIsAvailable(region) { var codeSigningConfigARN string if function.PackageType == awstypes.PackageTypeZip { diff --git a/internal/service/lambda/function_test.go b/internal/service/lambda/function_test.go index 5a17323051e7..2150420af95e 100644 --- a/internal/service/lambda/function_test.go +++ b/internal/service/lambda/function_test.go @@ -66,7 +66,7 @@ func TestAccLambdaFunction_basic(t *testing.T) { testAccCheckFunctionName(&conf, funcName), resource.TestCheckResourceAttr(resourceName, "architectures.#", "1"), resource.TestCheckResourceAttr(resourceName, "architectures.0", string(awstypes.ArchitectureX8664)), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "lambda", fmt.Sprintf("function:%s", funcName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "lambda", fmt.Sprintf("function:%s", funcName)), resource.TestCheckResourceAttrSet(resourceName, "code_sha256"), resource.TestCheckResourceAttr(resourceName, "ephemeral_storage.#", "1"), resource.TestCheckResourceAttr(resourceName, "ephemeral_storage.0.size", "512"), @@ -76,7 +76,7 @@ func TestAccLambdaFunction_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "logging_config.0.log_group", fmt.Sprintf("/aws/lambda/%s", funcName)), resource.TestCheckResourceAttr(resourceName, "logging_config.0.system_log_level", ""), resource.TestCheckResourceAttr(resourceName, "package_type", string(awstypes.PackageTypeZip)), - acctest.CheckResourceAttrRegionalARN(resourceName, "qualified_arn", "lambda", fmt.Sprintf("function:%s:%s", funcName, tflambda.FunctionVersionLatest)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, "qualified_arn", "lambda", fmt.Sprintf("function:%s:%s", funcName, tflambda.FunctionVersionLatest)), resource.TestCheckResourceAttr(resourceName, "reserved_concurrent_executions", "-1"), resource.TestCheckResourceAttr(resourceName, names.AttrSkipDestroy, acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, names.AttrVersion, tflambda.FunctionVersionLatest), @@ -146,7 +146,7 @@ func TestAccLambdaFunction_unpublishedCodeUpdate(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckFunctionExists(ctx, resourceName, &conf1), resource.TestCheckResourceAttr(resourceName, names.AttrVersion, tflambda.FunctionVersionLatest), - acctest.CheckResourceAttrRegionalARN(resourceName, "qualified_arn", "lambda", fmt.Sprintf("function:%s:%s", rName, tflambda.FunctionVersionLatest)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, "qualified_arn", "lambda", fmt.Sprintf("function:%s:%s", rName, tflambda.FunctionVersionLatest)), ), }, { @@ -160,7 +160,7 @@ func TestAccLambdaFunction_unpublishedCodeUpdate(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckFunctionExists(ctx, resourceName, &conf2), resource.TestCheckResourceAttr(resourceName, names.AttrVersion, tflambda.FunctionVersionLatest), - acctest.CheckResourceAttrRegionalARN(resourceName, "qualified_arn", "lambda", fmt.Sprintf("function:%s:%s", rName, tflambda.FunctionVersionLatest)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, "qualified_arn", "lambda", fmt.Sprintf("function:%s:%s", rName, tflambda.FunctionVersionLatest)), func(s *terraform.State) error { return testAccCheckAttributeIsDateAfter(s, resourceName, "last_modified", timeBeforeUpdate) }, @@ -565,7 +565,7 @@ func TestAccLambdaFunction_versioned(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckFunctionExists(ctx, resourceName, &conf), resource.TestCheckResourceAttr(resourceName, names.AttrVersion, "1"), - acctest.CheckResourceAttrRegionalARN(resourceName, "qualified_arn", "lambda", fmt.Sprintf("function:%s:%s", rName, "1")), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, "qualified_arn", "lambda", fmt.Sprintf("function:%s:%s", rName, "1")), ), }, { @@ -609,7 +609,7 @@ func TestAccLambdaFunction_versionedUpdate(t *testing.T) { Config: testAccFunctionConfig_publishable("test-fixtures/lambdatest.zip", rName, true), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttr(resourceName, names.AttrVersion, "1"), - acctest.CheckResourceAttrRegionalARN(resourceName, "qualified_arn", "lambda", fmt.Sprintf("function:%s:%s", rName, "1")), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, "qualified_arn", "lambda", fmt.Sprintf("function:%s:%s", rName, "1")), ), }, { @@ -624,7 +624,7 @@ func TestAccLambdaFunction_versionedUpdate(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckFunctionExists(ctx, resourceName, &conf), resource.TestCheckResourceAttr(resourceName, names.AttrVersion, version), - acctest.CheckResourceAttrRegionalARN(resourceName, "qualified_arn", "lambda", fmt.Sprintf("function:%s:%s", rName, version)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, "qualified_arn", "lambda", fmt.Sprintf("function:%s:%s", rName, version)), func(s *terraform.State) error { return testAccCheckAttributeIsDateAfter(s, resourceName, "last_modified", timeBeforeUpdate) }, @@ -639,7 +639,7 @@ func TestAccLambdaFunction_versionedUpdate(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckFunctionExists(ctx, resourceName, &conf), resource.TestCheckResourceAttr(resourceName, names.AttrVersion, versionUpdated), - acctest.CheckResourceAttrRegionalARN(resourceName, "qualified_arn", "lambda", fmt.Sprintf("function:%s:%s", rName, versionUpdated)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, "qualified_arn", "lambda", fmt.Sprintf("function:%s:%s", rName, versionUpdated)), resource.TestCheckResourceAttr(resourceName, "runtime", string(awstypes.RuntimeNodejs20x)), func(s *terraform.State) error { return testAccCheckAttributeIsDateAfter(s, resourceName, "last_modified", timeBeforeUpdate) @@ -681,7 +681,7 @@ func TestAccLambdaFunction_enablePublish(t *testing.T) { testAccCheckFunctionExists(ctx, resourceName, &conf1), resource.TestCheckResourceAttr(resourceName, "publish", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, names.AttrVersion, unpublishedVersion), - acctest.CheckResourceAttrRegionalARN(resourceName, "qualified_arn", "lambda", fmt.Sprintf("function:%s:%s", rName, unpublishedVersion)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, "qualified_arn", "lambda", fmt.Sprintf("function:%s:%s", rName, unpublishedVersion)), ), }, { @@ -691,7 +691,7 @@ func TestAccLambdaFunction_enablePublish(t *testing.T) { testAccCheckFunctionExists(ctx, resourceName, &conf2), resource.TestCheckResourceAttr(resourceName, "publish", acctest.CtTrue), resource.TestCheckResourceAttr(resourceName, names.AttrVersion, "1"), - acctest.CheckResourceAttrRegionalARN(resourceName, "qualified_arn", "lambda", fmt.Sprintf("function:%s:%s", rName, "1")), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, "qualified_arn", "lambda", fmt.Sprintf("function:%s:%s", rName, "1")), ), }, { @@ -706,7 +706,7 @@ func TestAccLambdaFunction_enablePublish(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckFunctionExists(ctx, resourceName, &conf3), resource.TestCheckResourceAttr(resourceName, names.AttrVersion, "1"), - acctest.CheckResourceAttrRegionalARN(resourceName, "qualified_arn", "lambda", fmt.Sprintf("function:%s:%s", rName, "1")), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, "qualified_arn", "lambda", fmt.Sprintf("function:%s:%s", rName, "1")), ), }, }, @@ -736,7 +736,7 @@ func TestAccLambdaFunction_disablePublish(t *testing.T) { testAccCheckFunctionExists(ctx, resourceName, &conf1), resource.TestCheckResourceAttr(resourceName, "publish", acctest.CtTrue), resource.TestCheckResourceAttr(resourceName, names.AttrVersion, "1"), - acctest.CheckResourceAttrRegionalARN(resourceName, "qualified_arn", "lambda", fmt.Sprintf("function:%s:%s", rName, "1")), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, "qualified_arn", "lambda", fmt.Sprintf("function:%s:%s", rName, "1")), ), }, { @@ -746,7 +746,7 @@ func TestAccLambdaFunction_disablePublish(t *testing.T) { testAccCheckFunctionExists(ctx, resourceName, &conf2), resource.TestCheckResourceAttr(resourceName, "publish", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, names.AttrVersion, "1"), - acctest.CheckResourceAttrRegionalARN(resourceName, "qualified_arn", "lambda", fmt.Sprintf("function:%s:%s", rName, "1")), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, "qualified_arn", "lambda", fmt.Sprintf("function:%s:%s", rName, "1")), ), }, { diff --git a/internal/service/lambda/functions_data_source.go b/internal/service/lambda/functions_data_source.go index 19b27c073dec..6b21dd23d1b0 100644 --- a/internal/service/lambda/functions_data_source.go +++ b/internal/service/lambda/functions_data_source.go @@ -56,7 +56,7 @@ func dataSourceFunctionsRead(ctx context.Context, d *schema.ResourceData, meta i } } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) d.Set("function_arns", functionARNs) d.Set("function_names", functionNames) diff --git a/internal/service/lambda/layer_version_test.go b/internal/service/lambda/layer_version_test.go index f779796d72af..0046d911b19c 100644 --- a/internal/service/lambda/layer_version_test.go +++ b/internal/service/lambda/layer_version_test.go @@ -34,12 +34,12 @@ func TestAccLambdaLayerVersion_basic(t *testing.T) { Config: testAccLayerVersionConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckLayerVersionExists(ctx, resourceName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "lambda", fmt.Sprintf("layer:%s:1", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "lambda", fmt.Sprintf("layer:%s:1", rName)), resource.TestCheckResourceAttr(resourceName, "compatible_runtimes.#", "0"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), resource.TestCheckResourceAttr(resourceName, "layer_name", rName), resource.TestCheckResourceAttr(resourceName, "license_info", ""), - acctest.CheckResourceAttrRegionalARN(resourceName, "layer_arn", "lambda", fmt.Sprintf("layer:%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, "layer_arn", "lambda", fmt.Sprintf("layer:%s", rName)), resource.TestCheckResourceAttr(resourceName, names.AttrVersion, "1"), resource.TestCheckResourceAttr(resourceName, "signing_profile_version_arn", ""), resource.TestCheckResourceAttr(resourceName, "signing_job_arn", ""), @@ -94,7 +94,7 @@ func TestAccLambdaLayerVersion_update(t *testing.T) { Config: testAccLayerVersionConfig_createBeforeDestroy(rName, "test-fixtures/lambdatest.zip"), Check: resource.ComposeTestCheckFunc( testAccCheckLayerVersionExists(ctx, resourceName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "lambda", fmt.Sprintf("layer:%s:1", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "lambda", fmt.Sprintf("layer:%s:1", rName)), ), }, { @@ -107,7 +107,7 @@ func TestAccLambdaLayerVersion_update(t *testing.T) { Config: testAccLayerVersionConfig_createBeforeDestroy(rName, "test-fixtures/lambdatest_modified.zip"), Check: resource.ComposeTestCheckFunc( testAccCheckLayerVersionExists(ctx, resourceName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "lambda", fmt.Sprintf("layer:%s:2", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "lambda", fmt.Sprintf("layer:%s:2", rName)), ), }, }, @@ -129,21 +129,21 @@ func TestAccLambdaLayerVersion_sourceCodeHash(t *testing.T) { Config: testAccLayerVersionConfig_sourceCodeHash(rName, "test-fixtures/lambdatest.zip"), Check: resource.ComposeTestCheckFunc( testAccCheckLayerVersionExists(ctx, resourceName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "lambda", fmt.Sprintf("layer:%s:1", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "lambda", fmt.Sprintf("layer:%s:1", rName)), ), }, { Config: testAccLayerVersionConfig_sourceCodeHash(rName, "test-fixtures/lambdatest.zip"), Check: resource.ComposeTestCheckFunc( testAccCheckLayerVersionExists(ctx, resourceName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "lambda", fmt.Sprintf("layer:%s:1", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "lambda", fmt.Sprintf("layer:%s:1", rName)), ), }, { Config: testAccLayerVersionConfig_sourceCodeHash(rName, "test-fixtures/lambdatest_modified.zip"), Check: resource.ComposeTestCheckFunc( testAccCheckLayerVersionExists(ctx, resourceName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "lambda", fmt.Sprintf("layer:%s:2", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "lambda", fmt.Sprintf("layer:%s:2", rName)), ), }, }, @@ -331,7 +331,7 @@ func TestAccLambdaLayerVersion_skipDestroy(t *testing.T) { Config: testAccLayerVersionConfig_skipDestroy(rName, "nodejs18.x"), Check: resource.ComposeTestCheckFunc( testAccCheckLayerVersionExists(ctx, resourceName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "lambda", fmt.Sprintf("layer:%s:1", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "lambda", fmt.Sprintf("layer:%s:1", rName)), resource.TestCheckResourceAttr(resourceName, "compatible_runtimes.#", "1"), resource.TestCheckResourceAttr(resourceName, names.AttrSkipDestroy, acctest.CtTrue), ), @@ -340,7 +340,7 @@ func TestAccLambdaLayerVersion_skipDestroy(t *testing.T) { Config: testAccLayerVersionConfig_skipDestroy(rName, "nodejs20.x"), Check: resource.ComposeTestCheckFunc( testAccCheckLayerVersionExists(ctx, resourceName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "lambda", fmt.Sprintf("layer:%s:2", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "lambda", fmt.Sprintf("layer:%s:2", rName)), resource.TestCheckResourceAttr(resourceName, "compatible_runtimes.#", "1"), resource.TestCheckResourceAttr(resourceName, names.AttrSkipDestroy, acctest.CtTrue), ), diff --git a/internal/service/lambda/runtime_management_config_test.go b/internal/service/lambda/runtime_management_config_test.go index 816ce8b1ade1..9f15c7ae761e 100644 --- a/internal/service/lambda/runtime_management_config_test.go +++ b/internal/service/lambda/runtime_management_config_test.go @@ -47,7 +47,7 @@ func TestAccLambdaRuntimeManagementConfig_basic(t *testing.T) { testAccCheckRuntimeManagementConfigExists(ctx, resourceName, &cfg), resource.TestCheckResourceAttrPair(resourceName, "function_name", functionResourceName, "function_name"), resource.TestCheckResourceAttr(resourceName, "update_runtime_on", string(types.UpdateRuntimeOnFunctionUpdate)), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrFunctionARN, "lambda", regexache.MustCompile(`function:+.`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrFunctionARN, "lambda", regexache.MustCompile(`function:+.`)), ), }, { @@ -111,7 +111,7 @@ func TestAccLambdaRuntimeManagementConfig_runtimeVersionARN(t *testing.T) { // the value and restrict this test to us-west-2 in the standard commercial // partition. acctest.PreCheckPartition(t, endpoints.AwsPartitionID) - acctest.PreCheckRegion(t, names.USWest2RegionID) + acctest.PreCheckRegion(t, endpoints.UsWest2RegionID) acctest.PreCheckPartitionHasService(t, names.LambdaEndpointID) }, ErrorCheck: acctest.ErrorCheck(t, names.LambdaServiceID), @@ -125,7 +125,7 @@ func TestAccLambdaRuntimeManagementConfig_runtimeVersionARN(t *testing.T) { resource.TestCheckResourceAttrPair(resourceName, "function_name", functionResourceName, "function_name"), resource.TestCheckResourceAttr(resourceName, "update_runtime_on", string(types.UpdateRuntimeOnManual)), resource.TestMatchResourceAttr(resourceName, "runtime_version_arn", regexache.MustCompile(runtimeVersion)), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrFunctionARN, "lambda", regexache.MustCompile(`function:+.`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrFunctionARN, "lambda", regexache.MustCompile(`function:+.`)), ), }, }, diff --git a/internal/service/lambda/service_endpoints_gen_test.go b/internal/service/lambda/service_endpoints_gen_test.go index c3b9b4033910..b521cf3d7f6a 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 7ba10b35434d..3c8fce5992da 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/bot.go b/internal/service/lexmodels/bot.go index 7a5dd446e85a..ce142dbc7be6 100644 --- a/internal/service/lexmodels/bot.go +++ b/internal/service/lexmodels/bot.go @@ -300,9 +300,9 @@ func resourceBotRead(ctx context.Context, d *schema.ResourceData, meta interface arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), Service: "lex", - AccountID: meta.(*conns.AWSClient).AccountID, + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("bot:%s", d.Id()), } d.Set(names.AttrARN, arn.String()) diff --git a/internal/service/lexmodels/bot_alias.go b/internal/service/lexmodels/bot_alias.go index bc27cfad6e7f..d7e53c237ecd 100644 --- a/internal/service/lexmodels/bot_alias.go +++ b/internal/service/lexmodels/bot_alias.go @@ -200,9 +200,9 @@ func resourceBotAliasRead(ctx context.Context, d *schema.ResourceData, meta inte arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), Service: "lex", - AccountID: meta.(*conns.AWSClient).AccountID, + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("bot:%s", d.Id()), } d.Set(names.AttrARN, arn.String()) diff --git a/internal/service/lexmodels/bot_alias_data_source.go b/internal/service/lexmodels/bot_alias_data_source.go index 10539537afa0..fbe5f44bb543 100644 --- a/internal/service/lexmodels/bot_alias_data_source.go +++ b/internal/service/lexmodels/bot_alias_data_source.go @@ -80,9 +80,9 @@ func dataSourceBotAliasRead(ctx context.Context, d *schema.ResourceData, meta in arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), Service: "lex", - AccountID: meta.(*conns.AWSClient).AccountID, + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("bot:%s", d.Id()), } d.Set(names.AttrARN, arn.String()) diff --git a/internal/service/lexmodels/bot_data_source.go b/internal/service/lexmodels/bot_data_source.go index b6d18609fedc..4c4fc8f19ce6 100644 --- a/internal/service/lexmodels/bot_data_source.go +++ b/internal/service/lexmodels/bot_data_source.go @@ -107,9 +107,9 @@ func dataSourceBotRead(ctx context.Context, d *schema.ResourceData, meta interfa arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), Service: "lex", - AccountID: meta.(*conns.AWSClient).AccountID, + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("bot:%s", name), } d.Set(names.AttrARN, arn.String()) diff --git a/internal/service/lexmodels/intent.go b/internal/service/lexmodels/intent.go index 1f6bddf09be8..d8eb38aa266c 100644 --- a/internal/service/lexmodels/intent.go +++ b/internal/service/lexmodels/intent.go @@ -370,9 +370,9 @@ func resourceIntentRead(ctx context.Context, d *schema.ResourceData, meta interf arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), Service: "lex", - AccountID: meta.(*conns.AWSClient).AccountID, + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("intent:%s", d.Id()), } d.Set(names.AttrARN, arn.String()) diff --git a/internal/service/lexmodels/intent_data_source.go b/internal/service/lexmodels/intent_data_source.go index eba04356ce40..02e4b8abf16d 100644 --- a/internal/service/lexmodels/intent_data_source.go +++ b/internal/service/lexmodels/intent_data_source.go @@ -86,9 +86,9 @@ func dataSourceIntentRead(ctx context.Context, d *schema.ResourceData, meta inte arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), Service: "lex", - AccountID: meta.(*conns.AWSClient).AccountID, + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("intent:%s", d.Get(names.AttrName).(string)), } d.Set(names.AttrARN, arn.String()) diff --git a/internal/service/lexmodels/service_endpoints_gen_test.go b/internal/service/lexmodels/service_endpoints_gen_test.go index 30d172749f14..d35fa6585696 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 04e4c8a4d654..dab711a0075f 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/grant.go b/internal/service/licensemanager/grant.go index 6b1165065730..82bdc6d56410 100644 --- a/internal/service/licensemanager/grant.go +++ b/internal/service/licensemanager/grant.go @@ -105,7 +105,7 @@ func resourceGrantCreate(ctx context.Context, d *schema.ResourceData, meta inter AllowedOperations: flex.ExpandStringyValueSet[awstypes.AllowedOperation](d.Get("allowed_operations").(*schema.Set)), ClientToken: aws.String(id.UniqueId()), GrantName: aws.String(name), - HomeRegion: aws.String(meta.(*conns.AWSClient).Region), + HomeRegion: aws.String(meta.(*conns.AWSClient).Region(ctx)), LicenseArn: aws.String(d.Get("license_arn").(string)), Principals: []string{d.Get(names.AttrPrincipal).(string)}, } diff --git a/internal/service/licensemanager/grant_test.go b/internal/service/licensemanager/grant_test.go index fdf957a89b86..e2284410c8a9 100644 --- a/internal/service/licensemanager/grant_test.go +++ b/internal/service/licensemanager/grant_test.go @@ -72,7 +72,7 @@ func testAccGrant_basic(t *testing.T) { Config: testAccGrantConfig_basic(licenseARN, rName, principal, homeRegion), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckGrantExists(ctx, resourceName), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "license-manager", regexache.MustCompile(`grant:g-.+`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "license-manager", regexache.MustCompile(`grant:g-.+`)), resource.TestCheckTypeSetElemAttr(resourceName, "allowed_operations.*", "ListPurchasedLicenses"), resource.TestCheckTypeSetElemAttr(resourceName, "allowed_operations.*", "CheckoutLicense"), resource.TestCheckTypeSetElemAttr(resourceName, "allowed_operations.*", "CheckInLicense"), diff --git a/internal/service/licensemanager/grants_data_source.go b/internal/service/licensemanager/grants_data_source.go index a11d5f2441e3..2fc7a75ee611 100644 --- a/internal/service/licensemanager/grants_data_source.go +++ b/internal/service/licensemanager/grants_data_source.go @@ -52,7 +52,7 @@ func dataSourceDistributedGrantsRead(ctx context.Context, d *schema.ResourceData return sdkdiag.AppendErrorf(diags, "reading License Manager Distributed Grants: %s", err) } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) d.Set(names.AttrARNs, tfslices.ApplyToAll(grants, func(v awstypes.Grant) string { return aws.ToString(v.GrantArn) })) diff --git a/internal/service/licensemanager/license_configuration_test.go b/internal/service/licensemanager/license_configuration_test.go index 827802dea07f..d14cc7f4f427 100644 --- a/internal/service/licensemanager/license_configuration_test.go +++ b/internal/service/licensemanager/license_configuration_test.go @@ -46,14 +46,14 @@ func TestAccLicenseManagerLicenseConfiguration_basic(t *testing.T) { Config: testAccLicenseConfigurationConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckLicenseConfigurationExists(ctx, resourceName, &licenseConfiguration), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "license-manager", regexache.MustCompile(`license-configuration:lic-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "license-manager", regexache.MustCompile(`license-configuration:lic-.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), resource.TestCheckResourceAttr(resourceName, "license_count", "0"), resource.TestCheckResourceAttr(resourceName, "license_count_hard_limit", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "license_counting_type", "Instance"), resource.TestCheckResourceAttr(resourceName, "license_rules.#", "0"), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerAccountID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerAccountID), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -153,7 +153,7 @@ func TestAccLicenseManagerLicenseConfiguration_update(t *testing.T) { Config: testAccLicenseConfigurationConfig_allAttributes(rName1), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckLicenseConfigurationExists(ctx, resourceName, &licenseConfiguration), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "license-manager", regexache.MustCompile(`license-configuration:lic-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "license-manager", regexache.MustCompile(`license-configuration:lic-.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "test1"), resource.TestCheckResourceAttr(resourceName, "license_count", "10"), resource.TestCheckResourceAttr(resourceName, "license_count_hard_limit", acctest.CtTrue), @@ -161,7 +161,7 @@ func TestAccLicenseManagerLicenseConfiguration_update(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "license_rules.#", "1"), resource.TestCheckResourceAttr(resourceName, "license_rules.0", "#minimumSockets=3"), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName1), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerAccountID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerAccountID), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -174,7 +174,7 @@ func TestAccLicenseManagerLicenseConfiguration_update(t *testing.T) { Config: testAccLicenseConfigurationConfig_allAttributesUpdated(rName2), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckLicenseConfigurationExists(ctx, resourceName, &licenseConfiguration), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "license-manager", regexache.MustCompile(`license-configuration:lic-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "license-manager", regexache.MustCompile(`license-configuration:lic-.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "test2"), resource.TestCheckResourceAttr(resourceName, "license_count", "99"), resource.TestCheckResourceAttr(resourceName, "license_count_hard_limit", acctest.CtFalse), @@ -182,7 +182,7 @@ func TestAccLicenseManagerLicenseConfiguration_update(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "license_rules.#", "1"), resource.TestCheckResourceAttr(resourceName, "license_rules.0", "#minimumSockets=3"), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName2), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerAccountID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerAccountID), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, diff --git a/internal/service/licensemanager/received_license_data_source_test.go b/internal/service/licensemanager/received_license_data_source_test.go index b65db693d766..9584790d9209 100644 --- a/internal/service/licensemanager/received_license_data_source_test.go +++ b/internal/service/licensemanager/received_license_data_source_test.go @@ -27,7 +27,7 @@ func TestAccLicenseManagerReceivedLicenseDataSource_basic(t *testing.T) { { Config: testAccReceivedLicenseDataSourceConfig_arn(licenseARN), Check: resource.ComposeAggregateTestCheckFunc( - acctest.CheckResourceAttrGlobalARN(datasourceName, "beneficiary", "iam", "root"), + acctest.CheckResourceAttrGlobalARN(ctx, datasourceName, "beneficiary", "iam", "root"), resource.TestCheckResourceAttr(datasourceName, "consumption_configuration.#", "1"), acctest.CheckResourceAttrRFC3339(datasourceName, names.AttrCreateTime), resource.TestCheckResourceAttr(datasourceName, "entitlements.#", "1"), diff --git a/internal/service/licensemanager/received_licenses_data_source.go b/internal/service/licensemanager/received_licenses_data_source.go index 5f55aa6abf98..b8b0101711e6 100644 --- a/internal/service/licensemanager/received_licenses_data_source.go +++ b/internal/service/licensemanager/received_licenses_data_source.go @@ -52,7 +52,7 @@ func dataSourceReceivedLicensesRead(ctx context.Context, d *schema.ResourceData, return sdkdiag.AppendErrorf(diags, "reading License Manager Received Licenses: %s", err) } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) d.Set(names.AttrARNs, tfslices.ApplyToAll(licenses, func(v awstypes.GrantedLicense) string { return aws.ToString(v.LicenseArn) })) diff --git a/internal/service/licensemanager/service_endpoints_gen_test.go b/internal/service/licensemanager/service_endpoints_gen_test.go index 07e126a210a6..4977d11f7a4d 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/bucket_test.go b/internal/service/lightsail/bucket_test.go index 3d6dc87c3992..cca6f0f76c34 100644 --- a/internal/service/lightsail/bucket_test.go +++ b/internal/service/lightsail/bucket_test.go @@ -42,7 +42,7 @@ func TestAccLightsailBucket_basic(t *testing.T) { Config: testAccBucketConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckBucketExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "lightsail", regexache.MustCompile(`Bucket/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "lightsail", regexache.MustCompile(`Bucket/.+`)), resource.TestCheckResourceAttrSet(resourceName, names.AttrAvailabilityZone), resource.TestCheckResourceAttr(resourceName, "bundle_id", "small_1_0"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedAt), diff --git a/internal/service/lightsail/certificate_test.go b/internal/service/lightsail/certificate_test.go index 1f5e575871d9..dda3e564ef6e 100644 --- a/internal/service/lightsail/certificate_test.go +++ b/internal/service/lightsail/certificate_test.go @@ -45,7 +45,7 @@ func TestAccLightsailCertificate_basic(t *testing.T) { Config: testAccCertificateConfig_basic(rName, domainName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckCertificateExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "lightsail", regexache.MustCompile(`Certificate/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "lightsail", regexache.MustCompile(`Certificate/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, names.AttrDomainName, domainName), resource.TestCheckResourceAttr(resourceName, "subject_alternative_names.#", "1"), diff --git a/internal/service/lightsail/disk_test.go b/internal/service/lightsail/disk_test.go index 59293e12d143..759c4e68f399 100644 --- a/internal/service/lightsail/disk_test.go +++ b/internal/service/lightsail/disk_test.go @@ -42,7 +42,7 @@ func TestAccLightsailDisk_basic(t *testing.T) { Config: testAccDiskConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckDiskExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "lightsail", regexache.MustCompile(`Disk/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "lightsail", regexache.MustCompile(`Disk/.+`)), resource.TestCheckResourceAttrSet(resourceName, names.AttrAvailabilityZone), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedAt), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), diff --git a/internal/service/lightsail/distribution_test.go b/internal/service/lightsail/distribution_test.go index d46243ece6d6..229b3c851e7d 100644 --- a/internal/service/lightsail/distribution_test.go +++ b/internal/service/lightsail/distribution_test.go @@ -72,7 +72,7 @@ func testAccDistribution_basic(t *testing.T) { testAccCheckDistributionExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "alternative_domain_names.#", "0"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "lightsail", regexache.MustCompile(`Distribution/*`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "lightsail", regexache.MustCompile(`Distribution/*`)), resource.TestCheckResourceAttr(resourceName, "bundle_id", "small_1_0"), resource.TestCheckResourceAttr(resourceName, "cache_behavior_settings.#", "1"), resource.TestCheckResourceAttr(resourceName, "cache_behavior_settings.0.allowed_http_methods", "GET,HEAD,OPTIONS,PUT,PATCH,POST,DELETE"), diff --git a/internal/service/lightsail/instance.go b/internal/service/lightsail/instance.go index 461fed6228e9..9c5c084062a9 100644 --- a/internal/service/lightsail/instance.go +++ b/internal/service/lightsail/instance.go @@ -161,8 +161,8 @@ func ResourceInstance() *schema.Resource { CustomizeDiff: customdiff.All( customdiff.ValidateChange(names.AttrAvailabilityZone, func(ctx context.Context, old, new, meta any) error { // The availability_zone must be in the same region as the provider region - if !strings.HasPrefix(new.(string), meta.(*conns.AWSClient).Region) { - return fmt.Errorf("availability_zone must be within the same region as provider region: %s", meta.(*conns.AWSClient).Region) + if !strings.HasPrefix(new.(string), meta.(*conns.AWSClient).Region(ctx)) { + return fmt.Errorf("availability_zone must be within the same region as provider region: %s", meta.(*conns.AWSClient).Region(ctx)) } return nil }), diff --git a/internal/service/lightsail/lb_certificate_test.go b/internal/service/lightsail/lb_certificate_test.go index 81b80e7ebd23..eeaf88e56982 100644 --- a/internal/service/lightsail/lb_certificate_test.go +++ b/internal/service/lightsail/lb_certificate_test.go @@ -44,7 +44,7 @@ func testAccLoadBalancerCertificate_basic(t *testing.T) { Config: testAccLoadBalancerCertificateConfig_basic(rName, lbName, domainName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckLoadBalancerCertificateExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "lightsail", regexache.MustCompile(`LoadBalancerTlsCertificate/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "lightsail", regexache.MustCompile(`LoadBalancerTlsCertificate/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, names.AttrDomainName, domainName), resource.TestCheckResourceAttr(resourceName, "subject_alternative_names.#", "1"), diff --git a/internal/service/lightsail/service_endpoints_gen_test.go b/internal/service/lightsail/service_endpoints_gen_test.go index 4b66fdcb547a..07595d1915b7 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/location/geofence_collection_test.go b/internal/service/location/geofence_collection_test.go index b252ee575ed0..72d1017ba9fa 100644 --- a/internal/service/location/geofence_collection_test.go +++ b/internal/service/location/geofence_collection_test.go @@ -38,7 +38,7 @@ func TestAccLocationGeofenceCollection_basic(t *testing.T) { Config: testAccGeofenceCollectionConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckGeofenceCollectionExists(ctx, resourceName), - acctest.CheckResourceAttrRegionalARN(resourceName, "collection_arn", "geo", fmt.Sprintf("geofence-collection/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, "collection_arn", "geo", fmt.Sprintf("geofence-collection/%s", rName)), resource.TestCheckResourceAttr(resourceName, "collection_name", rName), acctest.CheckResourceAttrRFC3339(resourceName, names.AttrCreateTime), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), diff --git a/internal/service/location/map_test.go b/internal/service/location/map_test.go index 17bab495ed22..5059de9f6fb0 100644 --- a/internal/service/location/map_test.go +++ b/internal/service/location/map_test.go @@ -40,7 +40,7 @@ func TestAccLocationMap_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "configuration.0.style", "VectorHereBerlin"), acctest.CheckResourceAttrRFC3339(resourceName, names.AttrCreateTime), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), - acctest.CheckResourceAttrRegionalARN(resourceName, "map_arn", "geo", fmt.Sprintf("map/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, "map_arn", "geo", fmt.Sprintf("map/%s", rName)), resource.TestCheckResourceAttr(resourceName, "map_name", rName), acctest.CheckResourceAttrRFC3339(resourceName, "update_time"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), diff --git a/internal/service/location/place_index_test.go b/internal/service/location/place_index_test.go index e942b72fd976..4a4a7e7d17bd 100644 --- a/internal/service/location/place_index_test.go +++ b/internal/service/location/place_index_test.go @@ -41,7 +41,7 @@ func TestAccLocationPlaceIndex_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "data_source_configuration.#", "1"), resource.TestCheckResourceAttr(resourceName, "data_source_configuration.0.intended_use", "SingleUse"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), - acctest.CheckResourceAttrRegionalARN(resourceName, "index_arn", "geo", fmt.Sprintf("place-index/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, "index_arn", "geo", fmt.Sprintf("place-index/%s", rName)), resource.TestCheckResourceAttr(resourceName, "index_name", rName), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), acctest.CheckResourceAttrRFC3339(resourceName, "update_time"), diff --git a/internal/service/location/route_calculator_test.go b/internal/service/location/route_calculator_test.go index 297120d2910e..131907d2e0a7 100644 --- a/internal/service/location/route_calculator_test.go +++ b/internal/service/location/route_calculator_test.go @@ -36,7 +36,7 @@ func TestAccLocationRouteCalculator_basic(t *testing.T) { Config: testAccRouteCalculatorConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckRouteCalculatorExists(ctx, resourceName), - acctest.CheckResourceAttrRegionalARN(resourceName, "calculator_arn", "geo", fmt.Sprintf("route-calculator/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, "calculator_arn", "geo", fmt.Sprintf("route-calculator/%s", rName)), resource.TestCheckResourceAttr(resourceName, "calculator_name", rName), acctest.CheckResourceAttrRFC3339(resourceName, names.AttrCreateTime), resource.TestCheckResourceAttr(resourceName, "data_source", "Here"), diff --git a/internal/service/location/tracker_associations_data_source.go b/internal/service/location/tracker_associations_data_source.go index d1a0ccc8d861..31aafe9bdf6e 100644 --- a/internal/service/location/tracker_associations_data_source.go +++ b/internal/service/location/tracker_associations_data_source.go @@ -65,7 +65,7 @@ func dataSourceTrackerAssociationsRead(ctx context.Context, d *schema.ResourceDa arns = append(arns, page.ConsumerArns...) } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) d.Set("consumer_arns", arns) return diags diff --git a/internal/service/location/tracker_test.go b/internal/service/location/tracker_test.go index 9648239fd537..992a790f449e 100644 --- a/internal/service/location/tracker_test.go +++ b/internal/service/location/tracker_test.go @@ -41,7 +41,7 @@ func TestAccLocationTracker_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, names.AttrKMSKeyID, ""), resource.TestCheckResourceAttr(resourceName, "position_filtering", "TimeBased"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, "tracker_arn", "geo", fmt.Sprintf("tracker/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, "tracker_arn", "geo", fmt.Sprintf("tracker/%s", rName)), resource.TestCheckResourceAttr(resourceName, "tracker_name", rName), acctest.CheckResourceAttrRFC3339(resourceName, "update_time"), ), diff --git a/internal/service/logs/account_policy_test.go b/internal/service/logs/account_policy_test.go index e207ba6cae7f..db41081bb1ef 100644 --- a/internal/service/logs/account_policy_test.go +++ b/internal/service/logs/account_policy_test.go @@ -36,7 +36,7 @@ func TestAccLogsAccountPolicy_basicSubscriptionFilter(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckAccountPolicyExists(ctx, resourceName, &accountPolicy), resource.TestCheckResourceAttr(resourceName, "policy_name", rName), - testAccCheckAccountHasSubscriptionFilterPolicy(resourceName, rName), + testAccCheckAccountHasSubscriptionFilterPolicy(ctx, resourceName, rName), ), }, { @@ -226,14 +226,14 @@ func testAccCheckAccountPolicyDestroy(ctx context.Context) resource.TestCheckFun } } -func testAccCheckAccountHasSubscriptionFilterPolicy(resourceName string, rName string) resource.TestCheckFunc { +func testAccCheckAccountHasSubscriptionFilterPolicy(ctx context.Context, resourceName string, rName string) resource.TestCheckFunc { return func(s *terraform.State) error { expectedJSONTemplate := `{ "DestinationArn": "arn:%s:lambda:%s:%s:function:%s", "FilterPattern" : " ", "Distribution" : "Random" }` - expectedJSON := fmt.Sprintf(expectedJSONTemplate, acctest.Partition(), acctest.Region(), acctest.AccountID(), rName) + expectedJSON := fmt.Sprintf(expectedJSONTemplate, acctest.Partition(), acctest.Region(), acctest.AccountID(ctx), rName) return acctest.CheckResourceAttrEquivalentJSON(resourceName, "policy_document", expectedJSON)(s) } } diff --git a/internal/service/logs/destination_test.go b/internal/service/logs/destination_test.go index b1c70d34126d..c0f57e94f010 100644 --- a/internal/service/logs/destination_test.go +++ b/internal/service/logs/destination_test.go @@ -38,7 +38,7 @@ func TestAccLogsDestination_basic(t *testing.T) { Config: testAccDestinationConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckDestinationExists(ctx, resourceName, &destination), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "logs", regexache.MustCompile(`destination:.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "logs", regexache.MustCompile(`destination:.+`)), resource.TestCheckResourceAttrPair(resourceName, names.AttrRoleARN, roleResourceName, names.AttrARN), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttrPair(resourceName, names.AttrTargetARN, streamResourceName, names.AttrARN), diff --git a/internal/service/logs/group_test.go b/internal/service/logs/group_test.go index 01ea571cf661..807f4590c84c 100644 --- a/internal/service/logs/group_test.go +++ b/internal/service/logs/group_test.go @@ -40,7 +40,7 @@ func TestAccLogsGroup_basic(t *testing.T) { Config: testAccGroupConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckLogGroupExists(ctx, t, resourceName, &v), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "logs", fmt.Sprintf("log-group:%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "logs", fmt.Sprintf("log-group:%s", rName)), resource.TestCheckResourceAttr(resourceName, names.AttrKMSKeyID, ""), resource.TestCheckResourceAttr(resourceName, "log_group_class", expectedLogGroupClass), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), diff --git a/internal/service/logs/groups_data_source.go b/internal/service/logs/groups_data_source.go index 0519d67a72f9..93863336ce4e 100644 --- a/internal/service/logs/groups_data_source.go +++ b/internal/service/logs/groups_data_source.go @@ -64,7 +64,7 @@ func dataSourceGroupsRead(ctx context.Context, d *schema.ResourceData, meta inte output = append(output, page.LogGroups...) } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) var arns, logGroupNames []string diff --git a/internal/service/logs/query_definition_test.go b/internal/service/logs/query_definition_test.go index 1fd8dba02c71..99583fdc6332 100644 --- a/internal/service/logs/query_definition_test.go +++ b/internal/service/logs/query_definition_test.go @@ -54,16 +54,16 @@ func TestAccLogsQueryDefinition_basic(t *testing.T) { ResourceName: resourceName, ImportState: true, ImportStateVerify: true, - ImportStateIdFunc: testAccQueryDefinitionImportStateID(&v), + ImportStateIdFunc: testAccQueryDefinitionImportStateID(ctx, &v), }, }, }) } -func testAccQueryDefinitionImportStateID(v *types.QueryDefinition) resource.ImportStateIdFunc { +func testAccQueryDefinitionImportStateID(ctx context.Context, v *types.QueryDefinition) resource.ImportStateIdFunc { return func(*terraform.State) (string, error) { id := arn.ARN{ - AccountID: acctest.AccountID(), + AccountID: acctest.AccountID(ctx), Partition: acctest.Partition(), Region: acctest.Region(), Service: "logs", @@ -129,7 +129,7 @@ func TestAccLogsQueryDefinition_rename(t *testing.T) { ResourceName: resourceName, ImportState: true, ImportStateVerify: true, - ImportStateIdFunc: testAccQueryDefinitionImportStateID(&v2), + ImportStateIdFunc: testAccQueryDefinitionImportStateID(ctx, &v2), }, }, }) @@ -170,7 +170,7 @@ func TestAccLogsQueryDefinition_logGroups(t *testing.T) { ResourceName: resourceName, ImportState: true, ImportStateVerify: true, - ImportStateIdFunc: testAccQueryDefinitionImportStateID(&v2), + ImportStateIdFunc: testAccQueryDefinitionImportStateID(ctx, &v2), }, }, }) diff --git a/internal/service/logs/service_endpoints_gen_test.go b/internal/service/logs/service_endpoints_gen_test.go index 2a43a35018c0..fc6f599af139 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 05fc8364fc66..bb4975163c5b 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/application_test.go b/internal/service/m2/application_test.go index 76d385ff2551..4bd0e1fc0109 100644 --- a/internal/service/m2/application_test.go +++ b/internal/service/m2/application_test.go @@ -48,7 +48,7 @@ func TestAccM2Application_basic_Content(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckApplicationExists(ctx, resourceName, &application), resource.TestCheckResourceAttrSet(resourceName, names.AttrApplicationID), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "m2", regexache.MustCompile(`app/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "m2", regexache.MustCompile(`app/.+`)), resource.TestCheckResourceAttr(resourceName, "current_version", "1"), resource.TestCheckResourceAttr(resourceName, "definition.#", "1"), resource.TestCheckResourceAttrSet(resourceName, "definition.0.content"), @@ -95,7 +95,7 @@ func TestAccM2Application_basic_S3Location(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckApplicationExists(ctx, resourceName, &application), resource.TestCheckResourceAttrSet(resourceName, names.AttrApplicationID), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "m2", regexache.MustCompile(`app/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "m2", regexache.MustCompile(`app/.+`)), resource.TestCheckResourceAttr(resourceName, "current_version", "1"), resource.TestCheckResourceAttr(resourceName, "definition.#", "1"), resource.TestCheckNoResourceAttr(resourceName, "definition.0.content"), @@ -187,7 +187,7 @@ func TestAccM2Application_full(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckApplicationExists(ctx, resourceName, &application), resource.TestCheckResourceAttrSet(resourceName, names.AttrApplicationID), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "m2", regexache.MustCompile(`app/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "m2", regexache.MustCompile(`app/.+`)), resource.TestCheckResourceAttr(resourceName, "current_version", "1"), resource.TestCheckResourceAttr(resourceName, "definition.#", "1"), resource.TestCheckResourceAttrSet(resourceName, "definition.0.content"), diff --git a/internal/service/m2/environment_test.go b/internal/service/m2/environment_test.go index 4e02d969790f..4ddc6db5daec 100644 --- a/internal/service/m2/environment_test.go +++ b/internal/service/m2/environment_test.go @@ -47,7 +47,7 @@ func TestAccM2Environment_basic(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckEnvironmentExists(ctx, resourceName, &environment), resource.TestCheckNoResourceAttr(resourceName, "apply_changes_during_maintenance_window"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "m2", regexache.MustCompile(`env/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "m2", regexache.MustCompile(`env/.+$`)), resource.TestCheckNoResourceAttr(resourceName, names.AttrDescription), resource.TestCheckResourceAttr(resourceName, "engine_type", "bluage"), resource.TestCheckResourceAttrSet(resourceName, names.AttrEngineVersion), @@ -128,7 +128,7 @@ func TestAccM2Environment_full(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckEnvironmentExists(ctx, resourceName, &environment), resource.TestCheckNoResourceAttr(resourceName, "apply_changes_during_maintenance_window"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "m2", regexache.MustCompile(`env/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "m2", regexache.MustCompile(`env/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "Test-1"), resource.TestCheckResourceAttr(resourceName, "engine_type", "microfocus"), resource.TestCheckResourceAttr(resourceName, names.AttrEngineVersion, "8.0.10"), diff --git a/internal/service/m2/service_endpoints_gen_test.go b/internal/service/m2/service_endpoints_gen_test.go index de5debb2c93d..5550ecd6fb73 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/account.go b/internal/service/macie2/account.go index fa249d955d25..d99961f2ee41 100644 --- a/internal/service/macie2/account.go +++ b/internal/service/macie2/account.go @@ -102,7 +102,7 @@ func resourceAccountCreate(ctx context.Context, d *schema.ResourceData, meta int return sdkdiag.AppendErrorf(diags, "enabling Macie Account: %s", err) } - d.SetId(meta.(*conns.AWSClient).AccountID) + d.SetId(meta.(*conns.AWSClient).AccountID(ctx)) return append(diags, resourceAccountRead(ctx, d, meta)...) } diff --git a/internal/service/macie2/account_test.go b/internal/service/macie2/account_test.go index 556e0edaf065..ef86f276601c 100644 --- a/internal/service/macie2/account_test.go +++ b/internal/service/macie2/account_test.go @@ -36,7 +36,7 @@ func testAccAccount_basic(t *testing.T) { testAccCheckAccountExists(ctx, resourceName, &macie2Output), resource.TestCheckResourceAttr(resourceName, "finding_publishing_frequency", string(awstypes.FindingPublishingFrequencyFifteenMinutes)), resource.TestCheckResourceAttr(resourceName, names.AttrStatus, string(awstypes.MacieStatusEnabled)), - acctest.CheckResourceAttrGlobalARN(resourceName, names.AttrServiceRole, "iam", "role/aws-service-role/macie.amazonaws.com/AWSServiceRoleForAmazonMacie"), + acctest.CheckResourceAttrGlobalARN(ctx, resourceName, names.AttrServiceRole, "iam", "role/aws-service-role/macie.amazonaws.com/AWSServiceRoleForAmazonMacie"), acctest.CheckResourceAttrRFC3339(resourceName, names.AttrCreatedAt), acctest.CheckResourceAttrRFC3339(resourceName, "updated_at"), ), @@ -67,7 +67,7 @@ func testAccAccount_FindingPublishingFrequency(t *testing.T) { testAccCheckAccountExists(ctx, resourceName, &macie2Output), resource.TestCheckResourceAttr(resourceName, "finding_publishing_frequency", string(awstypes.FindingPublishingFrequencyFifteenMinutes)), resource.TestCheckResourceAttr(resourceName, names.AttrStatus, string(awstypes.MacieStatusEnabled)), - acctest.CheckResourceAttrGlobalARN(resourceName, names.AttrServiceRole, "iam", "role/aws-service-role/macie.amazonaws.com/AWSServiceRoleForAmazonMacie"), + acctest.CheckResourceAttrGlobalARN(ctx, resourceName, names.AttrServiceRole, "iam", "role/aws-service-role/macie.amazonaws.com/AWSServiceRoleForAmazonMacie"), acctest.CheckResourceAttrRFC3339(resourceName, names.AttrCreatedAt), acctest.CheckResourceAttrRFC3339(resourceName, "updated_at"), ), @@ -78,7 +78,7 @@ func testAccAccount_FindingPublishingFrequency(t *testing.T) { testAccCheckAccountExists(ctx, resourceName, &macie2Output), resource.TestCheckResourceAttr(resourceName, "finding_publishing_frequency", string(awstypes.FindingPublishingFrequencyOneHour)), resource.TestCheckResourceAttr(resourceName, names.AttrStatus, string(awstypes.MacieStatusEnabled)), - acctest.CheckResourceAttrGlobalARN(resourceName, names.AttrServiceRole, "iam", "role/aws-service-role/macie.amazonaws.com/AWSServiceRoleForAmazonMacie"), + acctest.CheckResourceAttrGlobalARN(ctx, resourceName, names.AttrServiceRole, "iam", "role/aws-service-role/macie.amazonaws.com/AWSServiceRoleForAmazonMacie"), acctest.CheckResourceAttrRFC3339(resourceName, names.AttrCreatedAt), acctest.CheckResourceAttrRFC3339(resourceName, "updated_at"), ), @@ -109,7 +109,7 @@ func testAccAccount_WithStatus(t *testing.T) { testAccCheckAccountExists(ctx, resourceName, &macie2Output), resource.TestCheckResourceAttr(resourceName, "finding_publishing_frequency", string(awstypes.FindingPublishingFrequencyFifteenMinutes)), resource.TestCheckResourceAttr(resourceName, names.AttrStatus, string(awstypes.MacieStatusEnabled)), - acctest.CheckResourceAttrGlobalARN(resourceName, names.AttrServiceRole, "iam", "role/aws-service-role/macie.amazonaws.com/AWSServiceRoleForAmazonMacie"), + acctest.CheckResourceAttrGlobalARN(ctx, resourceName, names.AttrServiceRole, "iam", "role/aws-service-role/macie.amazonaws.com/AWSServiceRoleForAmazonMacie"), acctest.CheckResourceAttrRFC3339(resourceName, names.AttrCreatedAt), acctest.CheckResourceAttrRFC3339(resourceName, "updated_at"), ), @@ -120,7 +120,7 @@ func testAccAccount_WithStatus(t *testing.T) { testAccCheckAccountExists(ctx, resourceName, &macie2Output), resource.TestCheckResourceAttr(resourceName, "finding_publishing_frequency", string(awstypes.FindingPublishingFrequencyFifteenMinutes)), resource.TestCheckResourceAttr(resourceName, names.AttrStatus, string(awstypes.MacieStatusPaused)), - acctest.CheckResourceAttrGlobalARN(resourceName, names.AttrServiceRole, "iam", "role/aws-service-role/macie.amazonaws.com/AWSServiceRoleForAmazonMacie"), + acctest.CheckResourceAttrGlobalARN(ctx, resourceName, names.AttrServiceRole, "iam", "role/aws-service-role/macie.amazonaws.com/AWSServiceRoleForAmazonMacie"), acctest.CheckResourceAttrRFC3339(resourceName, names.AttrCreatedAt), acctest.CheckResourceAttrRFC3339(resourceName, "updated_at"), ), @@ -151,7 +151,7 @@ func testAccAccount_WithFindingAndStatus(t *testing.T) { testAccCheckAccountExists(ctx, resourceName, &macie2Output), resource.TestCheckResourceAttr(resourceName, "finding_publishing_frequency", string(awstypes.FindingPublishingFrequencyFifteenMinutes)), resource.TestCheckResourceAttr(resourceName, names.AttrStatus, string(awstypes.MacieStatusEnabled)), - acctest.CheckResourceAttrGlobalARN(resourceName, names.AttrServiceRole, "iam", "role/aws-service-role/macie.amazonaws.com/AWSServiceRoleForAmazonMacie"), + acctest.CheckResourceAttrGlobalARN(ctx, resourceName, names.AttrServiceRole, "iam", "role/aws-service-role/macie.amazonaws.com/AWSServiceRoleForAmazonMacie"), acctest.CheckResourceAttrRFC3339(resourceName, names.AttrCreatedAt), acctest.CheckResourceAttrRFC3339(resourceName, "updated_at"), ), @@ -162,7 +162,7 @@ func testAccAccount_WithFindingAndStatus(t *testing.T) { testAccCheckAccountExists(ctx, resourceName, &macie2Output), resource.TestCheckResourceAttr(resourceName, "finding_publishing_frequency", string(awstypes.FindingPublishingFrequencyOneHour)), resource.TestCheckResourceAttr(resourceName, names.AttrStatus, string(awstypes.MacieStatusPaused)), - acctest.CheckResourceAttrGlobalARN(resourceName, names.AttrServiceRole, "iam", "role/aws-service-role/macie.amazonaws.com/AWSServiceRoleForAmazonMacie"), + acctest.CheckResourceAttrGlobalARN(ctx, resourceName, names.AttrServiceRole, "iam", "role/aws-service-role/macie.amazonaws.com/AWSServiceRoleForAmazonMacie"), acctest.CheckResourceAttrRFC3339(resourceName, names.AttrCreatedAt), acctest.CheckResourceAttrRFC3339(resourceName, "updated_at"), ), diff --git a/internal/service/macie2/classification_export_configuration.go b/internal/service/macie2/classification_export_configuration.go index e39857c1e4f4..1cbec8ca9691 100644 --- a/internal/service/macie2/classification_export_configuration.go +++ b/internal/service/macie2/classification_export_configuration.go @@ -139,7 +139,7 @@ func resourceClassificationExportConfigurationRead(ctx context.Context, d *schem return sdkdiag.AppendErrorf(diags, "setting Macie classification export configuration s3_destination: %s", err) } } - d.SetId(fmt.Sprintf("%s:%s:%s", "macie:classification_export_configuration", meta.(*conns.AWSClient).AccountID, meta.(*conns.AWSClient).Region)) + d.SetId(fmt.Sprintf("%s:%s:%s", "macie:classification_export_configuration", meta.(*conns.AWSClient).AccountID(ctx), meta.(*conns.AWSClient).Region(ctx))) } return diags diff --git a/internal/service/macie2/custom_data_identifier_test.go b/internal/service/macie2/custom_data_identifier_test.go index b70e79eaed4d..beb626a2edb0 100644 --- a/internal/service/macie2/custom_data_identifier_test.go +++ b/internal/service/macie2/custom_data_identifier_test.go @@ -42,7 +42,7 @@ func testAccCustomDataIdentifier_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, names.AttrNamePrefix, "terraform-"), acctest.CheckResourceAttrRFC3339(resourceName, names.AttrCreatedAt), resource.TestCheckResourceAttr(resourceName, "regex", regex), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "macie2", regexache.MustCompile(`custom-data-identifier/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "macie2", regexache.MustCompile(`custom-data-identifier/.+`)), ), }, { @@ -127,7 +127,7 @@ func testAccCustomDataIdentifier_NamePrefix(t *testing.T) { testAccCheckCustomDataIdentifierExists(ctx, resourceName, &macie2Output), acctest.CheckResourceAttrNameFromPrefix(resourceName, names.AttrName, namePrefix), resource.TestCheckResourceAttr(resourceName, names.AttrNamePrefix, namePrefix), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "macie2", regexache.MustCompile(`custom-data-identifier/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "macie2", regexache.MustCompile(`custom-data-identifier/.+`)), ), }, { @@ -161,7 +161,7 @@ func testAccCustomDataIdentifier_WithClassificationJob(t *testing.T) { acctest.CheckResourceAttrNameGenerated(resourceName, names.AttrName), resource.TestCheckResourceAttr(resourceName, names.AttrNamePrefix, "terraform-"), acctest.CheckResourceAttrRFC3339(resourceName, names.AttrCreatedAt), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "macie2", regexache.MustCompile(`custom-data-identifier/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "macie2", regexache.MustCompile(`custom-data-identifier/.+`)), ), }, { @@ -171,7 +171,7 @@ func testAccCustomDataIdentifier_WithClassificationJob(t *testing.T) { acctest.CheckResourceAttrNameGenerated(resourceName, names.AttrName), resource.TestCheckResourceAttr(resourceName, names.AttrNamePrefix, "terraform-"), acctest.CheckResourceAttrRFC3339(resourceName, names.AttrCreatedAt), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "macie2", regexache.MustCompile(`custom-data-identifier/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "macie2", regexache.MustCompile(`custom-data-identifier/.+`)), ), }, { @@ -211,7 +211,7 @@ func testAccCustomDataIdentifier_WithTags(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "tags_all.Key2", acctest.CtValue2), resource.TestCheckResourceAttr(resourceName, "tags_all.Key3", "value3"), acctest.CheckResourceAttrRFC3339(resourceName, names.AttrCreatedAt), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "macie2", regexache.MustCompile(`custom-data-identifier/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "macie2", regexache.MustCompile(`custom-data-identifier/.+`)), ), }, { diff --git a/internal/service/macie2/findings_filter_test.go b/internal/service/macie2/findings_filter_test.go index c8b1d06d5068..a8926762e191 100644 --- a/internal/service/macie2/findings_filter_test.go +++ b/internal/service/macie2/findings_filter_test.go @@ -40,7 +40,7 @@ func testAccFindingsFilter_basic(t *testing.T) { acctest.CheckResourceAttrNameGenerated(resourceName, names.AttrName), resource.TestCheckResourceAttr(resourceName, names.AttrNamePrefix, "terraform-"), resource.TestCheckResourceAttr(resourceName, names.AttrAction, string(awstypes.FindingsFilterActionArchive)), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "macie2", regexache.MustCompile(`findings-filter/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "macie2", regexache.MustCompile(`findings-filter/.+`)), ), }, { @@ -162,7 +162,7 @@ func testAccFindingsFilter_complete(t *testing.T) { "eq.#": "1", "eq.0": acctest.Region(), }), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "macie2", regexache.MustCompile(`findings-filter/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "macie2", regexache.MustCompile(`findings-filter/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, description), resource.TestCheckResourceAttr(resourceName, "position", "1"), ), @@ -174,7 +174,7 @@ func testAccFindingsFilter_complete(t *testing.T) { acctest.CheckResourceAttrNameGenerated(resourceName, names.AttrName), resource.TestCheckResourceAttr(resourceName, names.AttrNamePrefix, "terraform-"), resource.TestCheckResourceAttr(resourceName, names.AttrAction, string(awstypes.FindingsFilterActionNoop)), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "macie2", regexache.MustCompile(`findings-filter/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "macie2", regexache.MustCompile(`findings-filter/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, descriptionUpdated), resource.TestCheckResourceAttr(resourceName, "position", "1"), resource.TestCheckResourceAttr(resourceName, "finding_criteria.0.criterion.0.field", names.AttrRegion), @@ -193,7 +193,7 @@ func testAccFindingsFilter_complete(t *testing.T) { acctest.CheckResourceAttrNameGenerated(resourceName, names.AttrName), resource.TestCheckResourceAttr(resourceName, names.AttrNamePrefix, "terraform-"), resource.TestCheckResourceAttr(resourceName, names.AttrAction, string(awstypes.FindingsFilterActionNoop)), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "macie2", regexache.MustCompile(`findings-filter/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "macie2", regexache.MustCompile(`findings-filter/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, descriptionUpdated), resource.TestCheckResourceAttr(resourceName, "position", "1"), resource.TestCheckResourceAttr(resourceName, "finding_criteria.0.criterion.0.field", names.AttrRegion), @@ -243,7 +243,7 @@ func testAccFindingsFilter_WithDate(t *testing.T) { "eq.#": "1", "eq.0": acctest.Region(), }), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "macie2", regexache.MustCompile(`findings-filter/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "macie2", regexache.MustCompile(`findings-filter/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, description), resource.TestCheckResourceAttr(resourceName, "position", "1"), ), @@ -255,7 +255,7 @@ func testAccFindingsFilter_WithDate(t *testing.T) { acctest.CheckResourceAttrNameGenerated(resourceName, names.AttrName), resource.TestCheckResourceAttr(resourceName, names.AttrNamePrefix, "terraform-"), resource.TestCheckResourceAttr(resourceName, names.AttrAction, string(awstypes.FindingsFilterActionNoop)), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "macie2", regexache.MustCompile(`findings-filter/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "macie2", regexache.MustCompile(`findings-filter/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, descriptionUpdated), resource.TestCheckResourceAttr(resourceName, "position", "1"), resource.TestCheckTypeSetElemAttrPair(resourceName, "finding_criteria.0.criterion.*.eq.*", dataSourceRegion, names.AttrName), @@ -316,7 +316,7 @@ func testAccFindingsFilter_WithNumber(t *testing.T) { resource.TestCheckResourceAttr(resourceName, names.AttrNamePrefix, "terraform-"), resource.TestCheckResourceAttr(resourceName, names.AttrAction, string(awstypes.FindingsFilterActionArchive)), resource.TestCheckTypeSetElemAttrPair(resourceName, "finding_criteria.0.criterion.*.eq.*", dataSourceRegion, names.AttrName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "macie2", regexache.MustCompile(`findings-filter/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "macie2", regexache.MustCompile(`findings-filter/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, description), resource.TestCheckResourceAttr(resourceName, "position", "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "finding_criteria.0.criterion.*", map[string]string{ @@ -333,7 +333,7 @@ func testAccFindingsFilter_WithNumber(t *testing.T) { acctest.CheckResourceAttrNameGenerated(resourceName, names.AttrName), resource.TestCheckResourceAttr(resourceName, names.AttrNamePrefix, "terraform-"), resource.TestCheckResourceAttr(resourceName, names.AttrAction, string(awstypes.FindingsFilterActionNoop)), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "macie2", regexache.MustCompile(`findings-filter/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "macie2", regexache.MustCompile(`findings-filter/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, descriptionUpdated), resource.TestCheckResourceAttr(resourceName, "position", "1"), resource.TestCheckResourceAttr(resourceName, "finding_criteria.#", "1"), @@ -388,7 +388,7 @@ func testAccFindingsFilter_withTags(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "tags.Key", names.AttrValue), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsAllPercent, "1"), resource.TestCheckResourceAttr(resourceName, "tags_all.Key", names.AttrValue), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "macie2", regexache.MustCompile(`findings-filter/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "macie2", regexache.MustCompile(`findings-filter/.+`)), resource.TestCheckResourceAttr(resourceName, "position", "1"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, description), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "finding_criteria.0.criterion.*", map[string]string{ diff --git a/internal/service/macie2/member_test.go b/internal/service/macie2/member_test.go index 32ec736b3e8d..bfe96a4feeb8 100644 --- a/internal/service/macie2/member_test.go +++ b/internal/service/macie2/member_test.go @@ -49,8 +49,8 @@ func testAccMember_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckMemberExists(ctx, resourceName, &macie2Output), resource.TestCheckResourceAttr(resourceName, "relationship_status", string(awstypes.RelationshipStatusCreated)), - acctest.CheckResourceAttrAccountID(resourceName, "administrator_account_id"), - acctest.CheckResourceAttrAccountID(resourceName, "master_account_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "administrator_account_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "master_account_id"), resource.TestCheckResourceAttrPair(resourceName, names.AttrAccountID, dataSourceAlternate, names.AttrAccountID), acctest.CheckResourceAttrRFC3339(resourceName, "invited_at"), acctest.CheckResourceAttrRFC3339(resourceName, "updated_at"), @@ -156,8 +156,8 @@ func testAccMember_invite(t *testing.T) { testAccCheckMemberExists(ctx, resourceName, &macie2Output), resource.TestCheckResourceAttr(resourceName, "relationship_status", string(awstypes.RelationshipStatusCreated)), resource.TestCheckResourceAttr(resourceName, "invite", acctest.CtFalse), - acctest.CheckResourceAttrAccountID(resourceName, "administrator_account_id"), - acctest.CheckResourceAttrAccountID(resourceName, "master_account_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "administrator_account_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "master_account_id"), resource.TestCheckResourceAttrPair(resourceName, names.AttrAccountID, dataSourceAlternate, names.AttrAccountID), acctest.CheckResourceAttrRFC3339(resourceName, "invited_at"), acctest.CheckResourceAttrRFC3339(resourceName, "updated_at"), @@ -170,8 +170,8 @@ func testAccMember_invite(t *testing.T) { testAccCheckMemberExists(ctx, resourceName, &macie2Output), resource.TestCheckResourceAttr(resourceName, "relationship_status", string(awstypes.RelationshipStatusInvited)), resource.TestCheckResourceAttr(resourceName, "invite", acctest.CtTrue), - acctest.CheckResourceAttrAccountID(resourceName, "administrator_account_id"), - acctest.CheckResourceAttrAccountID(resourceName, "master_account_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "administrator_account_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "master_account_id"), resource.TestCheckResourceAttrPair(resourceName, names.AttrAccountID, dataSourceAlternate, names.AttrAccountID), acctest.CheckResourceAttrRFC3339(resourceName, "invited_at"), acctest.CheckResourceAttrRFC3339(resourceName, "updated_at"), @@ -211,8 +211,8 @@ func testAccMember_inviteRemoved(t *testing.T) { testAccCheckMemberExists(ctx, resourceName, &macie2Output), resource.TestCheckResourceAttr(resourceName, "relationship_status", string(awstypes.RelationshipStatusInvited)), resource.TestCheckResourceAttr(resourceName, "invite", acctest.CtTrue), - acctest.CheckResourceAttrAccountID(resourceName, "administrator_account_id"), - acctest.CheckResourceAttrAccountID(resourceName, "master_account_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "administrator_account_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "master_account_id"), resource.TestCheckResourceAttrPair(resourceName, names.AttrAccountID, dataSourceAlternate, names.AttrAccountID), acctest.CheckResourceAttrRFC3339(resourceName, "invited_at"), acctest.CheckResourceAttrRFC3339(resourceName, "updated_at"), @@ -225,8 +225,8 @@ func testAccMember_inviteRemoved(t *testing.T) { testAccCheckMemberExists(ctx, resourceName, &macie2Output), resource.TestCheckResourceAttr(resourceName, "relationship_status", string(awstypes.RelationshipStatusRemoved)), resource.TestCheckResourceAttr(resourceName, "invite", acctest.CtFalse), - acctest.CheckResourceAttrAccountID(resourceName, "administrator_account_id"), - acctest.CheckResourceAttrAccountID(resourceName, "master_account_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "administrator_account_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "master_account_id"), resource.TestCheckResourceAttrPair(resourceName, names.AttrAccountID, dataSourceAlternate, names.AttrAccountID), acctest.CheckResourceAttrRFC3339(resourceName, "invited_at"), acctest.CheckResourceAttrRFC3339(resourceName, "updated_at"), @@ -266,8 +266,8 @@ func testAccMember_status(t *testing.T) { testAccCheckMemberExists(ctx, resourceName, &macie2Output), resource.TestCheckResourceAttr(resourceName, "relationship_status", string(awstypes.RelationshipStatusInvited)), resource.TestCheckResourceAttr(resourceName, "invite", acctest.CtTrue), - acctest.CheckResourceAttrAccountID(resourceName, "administrator_account_id"), - acctest.CheckResourceAttrAccountID(resourceName, "master_account_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "administrator_account_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "master_account_id"), resource.TestCheckResourceAttrPair(resourceName, names.AttrAccountID, dataSourceAlternate, names.AttrAccountID), acctest.CheckResourceAttrRFC3339(resourceName, "invited_at"), acctest.CheckResourceAttrRFC3339(resourceName, "updated_at"), @@ -280,8 +280,8 @@ func testAccMember_status(t *testing.T) { testAccCheckMemberExists(ctx, resourceName, &macie2Output), resource.TestCheckResourceAttr(resourceName, "relationship_status", string(awstypes.RelationshipStatusPaused)), resource.TestCheckResourceAttr(resourceName, "invite", acctest.CtTrue), - acctest.CheckResourceAttrAccountID(resourceName, "administrator_account_id"), - acctest.CheckResourceAttrAccountID(resourceName, "master_account_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "administrator_account_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "master_account_id"), resource.TestCheckResourceAttrPair(resourceName, names.AttrAccountID, dataSourceAlternate, names.AttrAccountID), acctest.CheckResourceAttrRFC3339(resourceName, "invited_at"), acctest.CheckResourceAttrRFC3339(resourceName, "updated_at"), @@ -324,8 +324,8 @@ func testAccMember_withTags(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "tags.Key", names.AttrValue), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsAllPercent, "1"), resource.TestCheckResourceAttr(resourceName, "tags_all.Key", names.AttrValue), - acctest.CheckResourceAttrAccountID(resourceName, "administrator_account_id"), - acctest.CheckResourceAttrAccountID(resourceName, "master_account_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "administrator_account_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "master_account_id"), resource.TestCheckResourceAttrPair(resourceName, names.AttrAccountID, dataSourceAlternate, names.AttrAccountID), ), }, diff --git a/internal/service/macie2/organization_admin_account_test.go b/internal/service/macie2/organization_admin_account_test.go index 6d0ed406a4d4..4029474ce4e3 100644 --- a/internal/service/macie2/organization_admin_account_test.go +++ b/internal/service/macie2/organization_admin_account_test.go @@ -34,7 +34,7 @@ func testAccOrganizationAdminAccount_basic(t *testing.T) { Config: testAccOrganizationAdminAccountConfig_basic(), Check: resource.ComposeTestCheckFunc( testAccCheckOrganizationAdminAccountExists(ctx, resourceName), - acctest.CheckResourceAttrAccountID(resourceName, "admin_account_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "admin_account_id"), ), }, { diff --git a/internal/service/macie2/service_endpoints_gen_test.go b/internal/service/macie2/service_endpoints_gen_test.go index 80a094eabaf1..f8a8e4692808 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 3f3e1213e9f5..8a4351ffad04 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/queue_test.go b/internal/service/mediaconvert/queue_test.go index 4fbdcd801bc5..2c102c336201 100644 --- a/internal/service/mediaconvert/queue_test.go +++ b/internal/service/mediaconvert/queue_test.go @@ -36,7 +36,7 @@ func TestAccMediaConvertQueue_basic(t *testing.T) { Config: testAccQueueConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckQueueExists(ctx, resourceName, &queue), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "mediaconvert", regexache.MustCompile(`queues/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "mediaconvert", regexache.MustCompile(`queues/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "pricing_plan", string(types.PricingPlanOnDemand)), resource.TestCheckResourceAttr(resourceName, "reservation_plan_settings.#", "0"), diff --git a/internal/service/mediaconvert/service_endpoints_gen_test.go b/internal/service/mediaconvert/service_endpoints_gen_test.go index 51deed3013f2..2f802b1f7fb9 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 d2ff84c4b6d9..4d849e63551d 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/channel_test.go b/internal/service/mediapackage/channel_test.go index 15a720bfb4a0..3064d90eb517 100644 --- a/internal/service/mediapackage/channel_test.go +++ b/internal/service/mediapackage/channel_test.go @@ -41,7 +41,7 @@ func TestAccMediaPackageChannel_basic(t *testing.T) { Config: testAccChannelConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckChannelExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "mediapackage", regexache.MustCompile(`channels/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "mediapackage", regexache.MustCompile(`channels/.+`)), resource.TestMatchResourceAttr(resourceName, "hls_ingest.0.ingest_endpoints.0.password", regexache.MustCompile("^[0-9a-f]*$")), resource.TestMatchResourceAttr(resourceName, "hls_ingest.0.ingest_endpoints.0.url", regexache.MustCompile("^https://")), resource.TestMatchResourceAttr(resourceName, "hls_ingest.0.ingest_endpoints.0.username", regexache.MustCompile("^[0-9a-f]*$")), diff --git a/internal/service/mediapackage/service_endpoints_gen_test.go b/internal/service/mediapackage/service_endpoints_gen_test.go index 2a4f6cdd7883..1543ca65ecd2 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 fab2b6f1b32b..3355ec9939e9 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 15ae8686486b..d09a6e5e8e55 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 18e883b3ca94..ffd4b69606cf 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 5166b31bde5e..6ecfded6eb1c 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 8c7b28209ded..5afe655f55ef 100644 --- a/internal/service/memorydb/acl_test.go +++ b/internal/service/memorydb/acl_test.go @@ -34,7 +34,7 @@ func TestAccMemoryDBACL_basic(t *testing.T) { Config: testAccACLConfig_basic(rName, []string{user1}, []string{user1}), Check: resource.ComposeTestCheckFunc( testAccCheckACLExists(ctx, resourceName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "memorydb", "acl/"+rName), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "memorydb", "acl/"+rName), resource.TestCheckResourceAttrSet(resourceName, "minimum_engine_version"), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "1"), @@ -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 57542e6c8638..ec8b06cf70bb 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 2c8d926670b1..3a4876af9bfd 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 8c07f74552de..13a8ca6b199d 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 c5ce455a85b4..577c9c644d6f 100644 --- a/internal/service/memorydb/cluster_test.go +++ b/internal/service/memorydb/cluster_test.go @@ -35,13 +35,14 @@ func TestAccMemoryDBCluster_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckClusterExists(ctx, resourceName), resource.TestCheckTypeSetElemAttrPair(resourceName, "acl_name", "aws_memorydb_acl.test", names.AttrID), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "memorydb", "cluster/"+rName), + acctest.CheckResourceAttrRegionalARN(ctx, 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, "redis"), resource.TestCheckResourceAttrSet(resourceName, names.AttrEngineVersion), resource.TestCheckResourceAttr(resourceName, names.AttrKMSKeyARN, ""), resource.TestCheckResourceAttrSet(resourceName, "maintenance_window"), @@ -97,7 +98,7 @@ func TestAccMemoryDBCluster_defaults(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckClusterExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, "acl_name", "open-access"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "memorydb", "cluster/"+rName), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "memorydb", "cluster/"+rName), resource.TestCheckResourceAttr(resourceName, names.AttrAutoMinorVersionUpgrade, acctest.CtTrue), resource.TestCheckResourceAttrSet(resourceName, "cluster_endpoint.0.address"), resource.TestCheckResourceAttr(resourceName, "cluster_endpoint.0.port", "6379"), @@ -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(ctx, 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 9c5b1eaa2874..7503519982bc 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 390d77dc827d..dd13a4b546d8 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 d99be4281ec2..000000000000 --- 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 0444678df5be..625357ac1b22 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 92a10dd628f8..f9f532a3e6bb 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 b0f3d1f21114..0b9c4cb879f3 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) @@ -37,7 +158,7 @@ func TestAccMemoryDBParameterGroup_basic(t *testing.T) { Config: testAccParameterGroupConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckParameterGroupExists(ctx, resourceName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "memorydb", "parametergroup/"+rName), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "memorydb", "parametergroup/"+rName), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "Managed by Terraform"), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, names.AttrFamily, "memorydb_redis6"), @@ -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 e1a0f90f4200..b0bc3a835124 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 6792524af95d..eb718223ac5c 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 66598878d874..5c64b1f2b8bf 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 caed4c96d894..fa7304f64a55 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 d281bddd0e8c..3c3f3ade2388 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 7ec40bc5aca6..2f0f58aff917 100644 --- a/internal/service/memorydb/snapshot_test.go +++ b/internal/service/memorydb/snapshot_test.go @@ -33,8 +33,9 @@ func TestAccMemoryDBSnapshot_basic(t *testing.T) { Config: testAccSnapshotConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckSnapshotExists(ctx, resourceName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "memorydb", "snapshot/"+rName), + acctest.CheckResourceAttrRegionalARN(ctx, 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 30ded7af7695..000000000000 --- 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 c4c6f7c64b1a..b01015569faf 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 52bc8d3183d0..09251eed90f4 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/subnet_group_test.go b/internal/service/memorydb/subnet_group_test.go index 3d9c31a19c26..d0f9bb64b17b 100644 --- a/internal/service/memorydb/subnet_group_test.go +++ b/internal/service/memorydb/subnet_group_test.go @@ -38,7 +38,7 @@ func TestAccMemoryDBSubnetGroup_basic(t *testing.T) { Config: testAccSubnetGroupConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckSubnetGroupExists(ctx, resourceName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "memorydb", "subnetgroup/"+rName), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "memorydb", "subnetgroup/"+rName), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "Managed by Terraform"), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "subnet_ids.#", "2"), diff --git a/internal/service/memorydb/user.go b/internal/service/memorydb/user.go index 7a6ac9d4e39f..ac29c1ead65e 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 4a04f3e1cead..b33174d1d2c8 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/user_test.go b/internal/service/memorydb/user_test.go index b7525f763b34..2b9da17a4357 100644 --- a/internal/service/memorydb/user_test.go +++ b/internal/service/memorydb/user_test.go @@ -34,7 +34,7 @@ func TestAccMemoryDBUser_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckUserExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, "access_string", "on ~* &* +@all"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "memorydb", "user/"+rName), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "memorydb", "user/"+rName), resource.TestCheckResourceAttr(resourceName, "authentication_mode.0.password_count", "1"), resource.TestCheckResourceAttr(resourceName, "authentication_mode.0.passwords.#", "1"), resource.TestCheckTypeSetElemAttr(resourceName, "authentication_mode.0.passwords.*", "aaaaaaaaaaaaaaaa"), @@ -71,7 +71,7 @@ func TestAccMemoryDBUser_authenticationModeIAM(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckUserExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, "access_string", "on ~* &* +@all"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "memorydb", "user/"+rName), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "memorydb", "user/"+rName), resource.TestCheckResourceAttr(resourceName, "authentication_mode.0.type", "iam"), resource.TestCheckResourceAttr(resourceName, "authentication_mode.0.password_count", "0"), resource.TestCheckResourceAttrSet(resourceName, "minimum_engine_version"), diff --git a/internal/service/memorydb/wait.go b/internal/service/memorydb/wait.go deleted file mode 100644 index b546a885833d..000000000000 --- 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/meta/region_data_source.go b/internal/service/meta/region_data_source.go index 8c37e882fcaf..edb7ac543b35 100644 --- a/internal/service/meta/region_data_source.go +++ b/internal/service/meta/region_data_source.go @@ -100,7 +100,7 @@ func (d *regionDataSource) Read(ctx context.Context, request datasource.ReadRequ // Default to provider current Region if no other filters matched. if region == nil { - name := d.Meta().Region + name := d.Meta().Region(ctx) matchingRegion, err := findRegionByName(ctx, name) if err != nil { diff --git a/internal/service/meta/service_data_source.go b/internal/service/meta/service_data_source.go index 0e9157cec2e2..3d9ad7561151 100644 --- a/internal/service/meta/service_data_source.go +++ b/internal/service/meta/service_data_source.go @@ -110,7 +110,7 @@ func (d *serviceDataSource) Read(ctx context.Context, request datasource.ReadReq } if data.Region.IsNull() { - data.Region = fwflex.StringValueToFrameworkLegacy(ctx, d.Meta().Region) + data.Region = fwflex.StringValueToFrameworkLegacy(ctx, d.Meta().Region(ctx)) } if data.ServiceID.IsNull() { diff --git a/internal/service/meta/service_data_source_test.go b/internal/service/meta/service_data_source_test.go index 20fbd4a93ef5..17db090190fd 100644 --- a/internal/service/meta/service_data_source_test.go +++ b/internal/service/meta/service_data_source_test.go @@ -103,8 +103,8 @@ func TestAccMetaServiceDataSource_byReverseDNSName(t *testing.T) { { Config: testAccServiceDataSourceConfig_byReverseDNSName(), Check: resource.ComposeTestCheckFunc( - resource.TestCheckResourceAttr(dataSourceName, names.AttrRegion, names.CNNorth1RegionID), - resource.TestCheckResourceAttr(dataSourceName, "reverse_dns_name", fmt.Sprintf("%s.%s.%s", "cn.com.amazonaws", names.CNNorth1RegionID, names.S3)), + resource.TestCheckResourceAttr(dataSourceName, names.AttrRegion, endpoints.CnNorth1RegionID), + resource.TestCheckResourceAttr(dataSourceName, "reverse_dns_name", fmt.Sprintf("%s.%s.%s", "cn.com.amazonaws", endpoints.CnNorth1RegionID, names.S3)), resource.TestCheckResourceAttr(dataSourceName, "reverse_dns_prefix", "cn.com.amazonaws"), resource.TestCheckResourceAttr(dataSourceName, "service_id", names.S3), resource.TestCheckResourceAttr(dataSourceName, "supported", acctest.CtTrue), @@ -126,8 +126,8 @@ func TestAccMetaServiceDataSource_byDNSName(t *testing.T) { { Config: testAccServiceDataSourceConfig_byDNSName(), Check: resource.ComposeTestCheckFunc( - resource.TestCheckResourceAttr(dataSourceName, names.AttrRegion, names.USEast1RegionID), - resource.TestCheckResourceAttr(dataSourceName, "reverse_dns_name", fmt.Sprintf("%s.%s.%s", "com.amazonaws", names.USEast1RegionID, names.RDS)), + resource.TestCheckResourceAttr(dataSourceName, names.AttrRegion, endpoints.UsEast1RegionID), + resource.TestCheckResourceAttr(dataSourceName, "reverse_dns_name", fmt.Sprintf("%s.%s.%s", "com.amazonaws", endpoints.UsEast1RegionID, names.RDS)), resource.TestCheckResourceAttr(dataSourceName, "reverse_dns_prefix", "com.amazonaws"), resource.TestCheckResourceAttr(dataSourceName, "service_id", names.RDS), resource.TestCheckResourceAttr(dataSourceName, "supported", acctest.CtTrue), @@ -170,11 +170,11 @@ func TestAccMetaServiceDataSource_unsupported(t *testing.T) { { Config: testAccServiceDataSourceConfig_unsupported(), Check: resource.ComposeTestCheckFunc( - resource.TestCheckResourceAttr(dataSourceName, names.AttrDNSName, fmt.Sprintf("%s.%s.%s", names.WAFEndpointID, names.USGovWest1RegionID, "amazonaws.com")), + resource.TestCheckResourceAttr(dataSourceName, names.AttrDNSName, fmt.Sprintf("%s.%s.%s", names.WAFEndpointID, endpoints.UsGovWest1RegionID, "amazonaws.com")), resource.TestCheckResourceAttr(dataSourceName, "partition", endpoints.AwsUsGovPartitionID), resource.TestCheckResourceAttr(dataSourceName, "reverse_dns_prefix", "com.amazonaws"), - resource.TestCheckResourceAttr(dataSourceName, names.AttrRegion, names.USGovWest1RegionID), - resource.TestCheckResourceAttr(dataSourceName, "reverse_dns_name", fmt.Sprintf("%s.%s.%s", "com.amazonaws", names.USGovWest1RegionID, names.WAFEndpointID)), + resource.TestCheckResourceAttr(dataSourceName, names.AttrRegion, endpoints.UsGovWest1RegionID), + resource.TestCheckResourceAttr(dataSourceName, "reverse_dns_name", fmt.Sprintf("%s.%s.%s", "com.amazonaws", endpoints.UsGovWest1RegionID, names.WAFEndpointID)), resource.TestCheckResourceAttr(dataSourceName, "service_id", names.WAFEndpointID), resource.TestCheckResourceAttr(dataSourceName, "supported", acctest.CtFalse), ), diff --git a/internal/service/meta/service_principal_data_source.go b/internal/service/meta/service_principal_data_source.go index 21a22bccd824..206d7b56b9e6 100644 --- a/internal/service/meta/service_principal_data_source.go +++ b/internal/service/meta/service_principal_data_source.go @@ -79,7 +79,7 @@ func (d *servicePrincipalDataSource) Read(ctx context.Context, request datasourc // Default to provider current Region if no other filters matched. if region == nil { - name := d.Meta().Region + name := d.Meta().Region(ctx) matchingRegion, err := findRegionByName(ctx, name) if err != nil { diff --git a/internal/service/mq/broker_instance_type_offerings_data_source.go b/internal/service/mq/broker_instance_type_offerings_data_source.go index b4c6e291e0ad..b8c548432ad2 100644 --- a/internal/service/mq/broker_instance_type_offerings_data_source.go +++ b/internal/service/mq/broker_instance_type_offerings_data_source.go @@ -118,7 +118,7 @@ func dataSourceBrokerInstanceTypeOfferingsRead(ctx context.Context, d *schema.Re return sdkdiag.AppendErrorf(diags, "reading MQ Broker Instance Options: %s", err) } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) if err := d.Set("broker_instance_options", flattenBrokerInstanceOptions(output)); err != nil { return sdkdiag.AppendErrorf(diags, "setting broker_instance_options: %s", err) diff --git a/internal/service/mq/broker_test.go b/internal/service/mq/broker_test.go index 45c955d49953..8dac161150fd 100644 --- a/internal/service/mq/broker_test.go +++ b/internal/service/mq/broker_test.go @@ -350,7 +350,7 @@ func TestAccMQBroker_basic(t *testing.T) { Config: testAccBrokerConfig_basic(rName, testAccBrokerVersionNewer), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckBrokerExists(ctx, resourceName, &broker), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "mq", regexache.MustCompile(`broker:+.`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "mq", regexache.MustCompile(`broker:+.`)), resource.TestCheckResourceAttr(resourceName, names.AttrAutoMinorVersionUpgrade, acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "authentication_strategy", "simple"), resource.TestCheckResourceAttr(resourceName, "broker_name", rName), @@ -587,7 +587,7 @@ func TestAccMQBroker_throughputOptimized(t *testing.T) { names.AttrUsername: "Test", names.AttrPassword: "TestTest1234", }), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "mq", regexache.MustCompile(`broker:+.`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "mq", regexache.MustCompile(`broker:+.`)), resource.TestCheckResourceAttr(resourceName, "instances.#", "1"), resource.TestMatchResourceAttr(resourceName, "instances.0.console_url", regexache.MustCompile(`^https://[0-9a-f-]+\.mq.[0-9a-z-]+.amazonaws.com:8162$`)), @@ -678,7 +678,7 @@ func TestAccMQBroker_AllFields_defaultVPC(t *testing.T) { names.AttrUsername: "Test", names.AttrPassword: "TestTest1234", }), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "mq", regexache.MustCompile(`broker:+.`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "mq", regexache.MustCompile(`broker:+.`)), resource.TestCheckResourceAttr(resourceName, "instances.#", "2"), resource.TestMatchResourceAttr(resourceName, "instances.0.console_url", regexache.MustCompile(`^https://[0-9a-f-]+\.mq.[0-9a-z-]+.amazonaws.com:8162$`)), @@ -807,7 +807,7 @@ func TestAccMQBroker_AllFields_customVPC(t *testing.T) { names.AttrUsername: "Test", names.AttrPassword: "TestTest1234", }), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "mq", regexache.MustCompile(`broker:+.`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "mq", regexache.MustCompile(`broker:+.`)), resource.TestCheckResourceAttr(resourceName, "instances.#", "2"), resource.TestMatchResourceAttr(resourceName, "instances.0.console_url", regexache.MustCompile(`^https://[0-9a-f-]+\.mq.[0-9a-z-]+.amazonaws.com:8162$`)), @@ -1519,7 +1519,7 @@ func TestAccMQBroker_RabbitMQ_cluster(t *testing.T) { names.AttrUsername: "Test", names.AttrPassword: "TestTest1234", }), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "mq", regexache.MustCompile(`broker:+.`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "mq", regexache.MustCompile(`broker:+.`)), resource.TestCheckResourceAttr(resourceName, "instances.#", "1"), resource.TestMatchResourceAttr(resourceName, "instances.0.console_url", regexache.MustCompile(`^https://[0-9a-f-]+\.mq.[0-9a-z-]+.amazonaws.com$`)), @@ -1610,7 +1610,7 @@ func TestAccMQBroker_dataReplicationMode(t *testing.T) { Config: testAccBrokerConfig_dataReplicationMode(rName, testAccBrokerVersionNewer, string(types.DataReplicationModeCrdr)), Check: resource.ComposeTestCheckFunc( testAccCheckBrokerExists(ctx, resourceName, &broker), - testAccCheckBrokerExistsWithProvider(ctx, primaryBrokerResourceName, &brokerAlternate, acctest.RegionProviderFunc(acctest.AlternateRegion(), &providers)), + testAccCheckBrokerExistsWithProvider(ctx, primaryBrokerResourceName, &brokerAlternate, acctest.RegionProviderFunc(ctx, acctest.AlternateRegion(), &providers)), resource.TestCheckResourceAttr(resourceName, "broker_name", rName), resource.TestCheckResourceAttr(resourceName, "deployment_mode", string(types.DeploymentModeActiveStandbyMultiAz)), // data_replication_mode is not returned until after reboot @@ -1634,11 +1634,11 @@ func TestAccMQBroker_dataReplicationMode(t *testing.T) { PreConfig: func() { // In order to delete, replicated brokers must first be unpaired by setting // data replication mode on the primary broker to "NONE". - testAccUnpairBrokerWithProvider(ctx, t, &brokerAlternate, acctest.RegionProviderFunc(acctest.AlternateRegion(), &providers)) + testAccUnpairBrokerWithProvider(ctx, t, &brokerAlternate, acctest.RegionProviderFunc(ctx, acctest.AlternateRegion(), &providers)) // The primary broker must be deleted before replica broker. The direct // dependency in the Terraform configuration would cause this to happen // in the opposite order, so delete the primary out of band instead. - testAccDeleteBrokerWithProvider(ctx, t, &brokerAlternate, acctest.RegionProviderFunc(acctest.AlternateRegion(), &providers)) + testAccDeleteBrokerWithProvider(ctx, t, &brokerAlternate, acctest.RegionProviderFunc(ctx, acctest.AlternateRegion(), &providers)) }, Config: testAccBrokerConfig_dataReplicationMode(rName, testAccBrokerVersionNewer, string(types.DataReplicationModeNone)), PlanOnly: true, diff --git a/internal/service/mq/configuration_test.go b/internal/service/mq/configuration_test.go index 92512c854aa4..2461ef3d7d0c 100644 --- a/internal/service/mq/configuration_test.go +++ b/internal/service/mq/configuration_test.go @@ -37,7 +37,7 @@ func TestAccMQConfiguration_basic(t *testing.T) { Config: testAccConfigurationConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckConfigurationExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "mq", regexache.MustCompile(`configuration:+.`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "mq", regexache.MustCompile(`configuration:+.`)), resource.TestCheckResourceAttr(resourceName, "authentication_strategy", "simple"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "TfAccTest MQ Configuration"), resource.TestCheckResourceAttr(resourceName, "engine_type", "ActiveMQ"), @@ -55,7 +55,7 @@ func TestAccMQConfiguration_basic(t *testing.T) { Config: testAccConfigurationConfig_descriptionUpdated(rName), Check: resource.ComposeTestCheckFunc( testAccCheckConfigurationExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "mq", regexache.MustCompile(`configuration:+.`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "mq", regexache.MustCompile(`configuration:+.`)), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "TfAccTest MQ Configuration Updated"), resource.TestCheckResourceAttr(resourceName, "engine_type", "ActiveMQ"), resource.TestCheckResourceAttr(resourceName, names.AttrEngineVersion, "5.17.6"), @@ -86,7 +86,7 @@ func TestAccMQConfiguration_withActiveMQData(t *testing.T) { Config: testAccConfigurationConfig_activeData(rName), Check: resource.ComposeTestCheckFunc( testAccCheckConfigurationExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "mq", regexache.MustCompile(`configuration:+.`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "mq", regexache.MustCompile(`configuration:+.`)), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "TfAccTest MQ Configuration"), resource.TestCheckResourceAttr(resourceName, "engine_type", "ActiveMQ"), resource.TestCheckResourceAttr(resourceName, names.AttrEngineVersion, "5.17.6"), @@ -122,7 +122,7 @@ func TestAccMQConfiguration_withActiveMQLdapData(t *testing.T) { Config: testAccConfigurationConfig_activeLdapData(rName), Check: resource.ComposeTestCheckFunc( testAccCheckConfigurationExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "mq", regexache.MustCompile(`configuration:+.`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "mq", regexache.MustCompile(`configuration:+.`)), resource.TestCheckResourceAttr(resourceName, "authentication_strategy", "ldap"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "TfAccTest MQ Configuration"), resource.TestCheckResourceAttr(resourceName, "engine_type", "ActiveMQ"), @@ -159,7 +159,7 @@ func TestAccMQConfiguration_withRabbitMQData(t *testing.T) { Config: testAccConfigurationConfig_rabbitData(rName), Check: resource.ComposeTestCheckFunc( testAccCheckConfigurationExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "mq", regexache.MustCompile(`configuration:+.`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "mq", regexache.MustCompile(`configuration:+.`)), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "TfAccTest MQ Configuration"), resource.TestCheckResourceAttr(resourceName, "engine_type", "RabbitMQ"), resource.TestCheckResourceAttr(resourceName, names.AttrEngineVersion, "3.11.16"), diff --git a/internal/service/mq/service_endpoints_gen_test.go b/internal/service/mq/service_endpoints_gen_test.go index a018a0c7826e..455f0318d3dd 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/mwaa/environment_test.go b/internal/service/mwaa/environment_test.go index 9b36666374e3..e729598c9bfb 100644 --- a/internal/service/mwaa/environment_test.go +++ b/internal/service/mwaa/environment_test.go @@ -38,13 +38,13 @@ func TestAccMWAAEnvironment_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckEnvironmentExists(ctx, resourceName, &environment), resource.TestCheckResourceAttrSet(resourceName, "airflow_version"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "airflow", "environment/"+rName), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "airflow", "environment/"+rName), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedAt), resource.TestCheckResourceAttrSet(resourceName, "database_vpc_endpoint_service"), resource.TestCheckResourceAttrSet(resourceName, "webserver_vpc_endpoint_service"), resource.TestCheckResourceAttr(resourceName, "dag_s3_path", "dags/"), resource.TestCheckResourceAttr(resourceName, "environment_class", "mw1.small"), - acctest.CheckResourceAttrGlobalARN(resourceName, names.AttrExecutionRoleARN, "iam", "role/service-role/"+rName), + acctest.CheckResourceAttrGlobalARN(ctx, resourceName, names.AttrExecutionRoleARN, "iam", "role/service-role/"+rName), resource.TestCheckResourceAttr(resourceName, "logging_configuration.#", "1"), resource.TestCheckResourceAttr(resourceName, "logging_configuration.0.dag_processing_logs.#", "1"), resource.TestCheckResourceAttr(resourceName, "logging_configuration.0.dag_processing_logs.0.enabled", acctest.CtFalse), @@ -264,11 +264,11 @@ func TestAccMWAAEnvironment_full(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "airflow_configuration_options.core.default_task_retries", "1"), resource.TestCheckResourceAttr(resourceName, "airflow_configuration_options.core.parallelism", "16"), resource.TestCheckResourceAttr(resourceName, "airflow_version", "2.4.3"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "airflow", "environment/"+rName), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "airflow", "environment/"+rName), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedAt), resource.TestCheckResourceAttr(resourceName, "dag_s3_path", "dags/"), resource.TestCheckResourceAttr(resourceName, "environment_class", "mw1.medium"), - acctest.CheckResourceAttrGlobalARN(resourceName, names.AttrExecutionRoleARN, "iam", "role/service-role/"+rName), + acctest.CheckResourceAttrGlobalARN(ctx, resourceName, names.AttrExecutionRoleARN, "iam", "role/service-role/"+rName), resource.TestCheckResourceAttrSet(resourceName, names.AttrKMSKey), resource.TestCheckResourceAttr(resourceName, "logging_configuration.#", "1"), resource.TestCheckResourceAttr(resourceName, "logging_configuration.0.dag_processing_logs.#", "1"), @@ -381,13 +381,13 @@ func TestAccMWAAEnvironment_customerVPCE(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckEnvironmentExists(ctx, resourceName, &environment), resource.TestCheckResourceAttrSet(resourceName, "airflow_version"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "airflow", "environment/"+rName), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "airflow", "environment/"+rName), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedAt), resource.TestCheckResourceAttrSet(resourceName, "database_vpc_endpoint_service"), resource.TestCheckResourceAttrSet(resourceName, "webserver_vpc_endpoint_service"), resource.TestCheckResourceAttr(resourceName, "dag_s3_path", "dags/"), resource.TestCheckResourceAttr(resourceName, "environment_class", "mw1.small"), - acctest.CheckResourceAttrGlobalARN(resourceName, names.AttrExecutionRoleARN, "iam", "role/service-role/"+rName), + acctest.CheckResourceAttrGlobalARN(ctx, resourceName, names.AttrExecutionRoleARN, "iam", "role/service-role/"+rName), resource.TestCheckResourceAttr(resourceName, "logging_configuration.#", "1"), resource.TestCheckResourceAttr(resourceName, "logging_configuration.0.dag_processing_logs.#", "1"), resource.TestCheckResourceAttr(resourceName, "logging_configuration.0.dag_processing_logs.0.enabled", acctest.CtFalse), diff --git a/internal/service/neptune/cluster_endpoint_test.go b/internal/service/neptune/cluster_endpoint_test.go index 2d539cbb04c4..f2be6ed108bc 100644 --- a/internal/service/neptune/cluster_endpoint_test.go +++ b/internal/service/neptune/cluster_endpoint_test.go @@ -37,7 +37,7 @@ func TestAccNeptuneClusterEndpoint_basic(t *testing.T) { Config: testAccClusterEndpointConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckClusterEndpointExists(ctx, resourceName, &dbCluster), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "rds", regexache.MustCompile(`cluster-endpoint:.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "rds", regexache.MustCompile(`cluster-endpoint:.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrEndpointType, "READER"), resource.TestCheckResourceAttr(resourceName, "cluster_endpoint_identifier", rName), resource.TestCheckResourceAttrPair(resourceName, names.AttrClusterIdentifier, "aws_neptune_cluster.test", names.AttrClusterIdentifier), diff --git a/internal/service/neptune/cluster_instance_test.go b/internal/service/neptune/cluster_instance_test.go index e71632a7876e..0a54b9f91c59 100644 --- a/internal/service/neptune/cluster_instance_test.go +++ b/internal/service/neptune/cluster_instance_test.go @@ -40,7 +40,7 @@ func TestAccNeptuneClusterInstance_basic(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckClusterInstanceExists(ctx, resourceName, &v), resource.TestCheckResourceAttrSet(resourceName, names.AttrAddress), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "rds", fmt.Sprintf("db:%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "rds", fmt.Sprintf("db:%s", rName)), resource.TestCheckResourceAttr(resourceName, names.AttrAutoMinorVersionUpgrade, acctest.CtTrue), resource.TestMatchResourceAttr(resourceName, names.AttrAvailabilityZone, regexache.MustCompile(fmt.Sprintf("^%s[a-z]{1}$", acctest.Region()))), resource.TestCheckResourceAttrPair(resourceName, names.AttrClusterIdentifier, clusterResourceName, names.AttrID), diff --git a/internal/service/neptune/cluster_parameter_group_test.go b/internal/service/neptune/cluster_parameter_group_test.go index e045071a928e..f304506fc909 100644 --- a/internal/service/neptune/cluster_parameter_group_test.go +++ b/internal/service/neptune/cluster_parameter_group_test.go @@ -36,7 +36,7 @@ func TestAccNeptuneClusterParameterGroup_basic(t *testing.T) { Config: testAccClusterParameterGroupConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckClusterParameterGroupExists(ctx, resourceName, &v), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "rds", fmt.Sprintf("cluster-pg:%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "rds", fmt.Sprintf("cluster-pg:%s", rName)), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "Managed by Terraform"), resource.TestCheckResourceAttr(resourceName, names.AttrFamily, "neptune1"), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), diff --git a/internal/service/neptune/cluster_snapshot_test.go b/internal/service/neptune/cluster_snapshot_test.go index 8ae42ddf04a7..e313040c6e5e 100644 --- a/internal/service/neptune/cluster_snapshot_test.go +++ b/internal/service/neptune/cluster_snapshot_test.go @@ -38,7 +38,7 @@ func TestAccNeptuneClusterSnapshot_basic(t *testing.T) { testAccCheckClusterSnapshotExists(ctx, resourceName, &dbClusterSnapshot), resource.TestCheckResourceAttrSet(resourceName, names.AttrAllocatedStorage), resource.TestCheckResourceAttrSet(resourceName, "availability_zones.#"), - acctest.CheckResourceAttrRegionalARN(resourceName, "db_cluster_snapshot_arn", "rds", fmt.Sprintf("cluster-snapshot:%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, "db_cluster_snapshot_arn", "rds", fmt.Sprintf("cluster-snapshot:%s", rName)), resource.TestCheckResourceAttrSet(resourceName, names.AttrEngine), resource.TestCheckResourceAttrSet(resourceName, names.AttrEngineVersion), resource.TestCheckResourceAttr(resourceName, names.AttrKMSKeyID, ""), diff --git a/internal/service/neptune/cluster_test.go b/internal/service/neptune/cluster_test.go index a841df67b669..6226738c6961 100644 --- a/internal/service/neptune/cluster_test.go +++ b/internal/service/neptune/cluster_test.go @@ -59,7 +59,7 @@ func TestAccNeptuneCluster_basic(t *testing.T) { testAccCheckClusterExists(ctx, resourceName, &dbCluster), resource.TestCheckNoResourceAttr(resourceName, names.AttrAllowMajorVersionUpgrade), resource.TestCheckNoResourceAttr(resourceName, names.AttrApplyImmediately), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "rds", regexache.MustCompile(`cluster:.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "rds", regexache.MustCompile(`cluster:.+`)), acctest.CheckResourceAttrGreaterThanValue(resourceName, "availability_zones.#", 0), resource.TestCheckResourceAttr(resourceName, "backup_retention_period", "1"), resource.TestCheckResourceAttr(resourceName, names.AttrClusterIdentifier, rName), @@ -575,8 +575,8 @@ func TestAccNeptuneCluster_GlobalClusterIdentifier_PrimarySecondaryClusters(t *t { Config: testAccClusterConfig_globalIdentifierPrimarySecondary(rNameGlobal, rNamePrimary, rNameSecondary), Check: resource.ComposeTestCheckFunc( - testAccCheckClusterExistsWithProvider(ctx, resourceNamePrimary, &primaryDbCluster, acctest.RegionProviderFunc(acctest.Region(), &providers)), - testAccCheckClusterExistsWithProvider(ctx, resourceNameSecondary, &secondaryDbCluster, acctest.RegionProviderFunc(acctest.AlternateRegion(), &providers)), + testAccCheckClusterExistsWithProvider(ctx, resourceNamePrimary, &primaryDbCluster, acctest.RegionProviderFunc(ctx, acctest.Region(), &providers)), + testAccCheckClusterExistsWithProvider(ctx, resourceNameSecondary, &secondaryDbCluster, acctest.RegionProviderFunc(ctx, acctest.AlternateRegion(), &providers)), ), }, }, diff --git a/internal/service/neptune/event_subscription_test.go b/internal/service/neptune/event_subscription_test.go index 34eaa427355a..24116946f677 100644 --- a/internal/service/neptune/event_subscription_test.go +++ b/internal/service/neptune/event_subscription_test.go @@ -35,7 +35,7 @@ func TestAccNeptuneEventSubscription_basic(t *testing.T) { Config: testAccEventSubscriptionConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckEventSubscriptionExists(ctx, resourceName, &v), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "rds", fmt.Sprintf("es:%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "rds", fmt.Sprintf("es:%s", rName)), resource.TestCheckResourceAttr(resourceName, names.AttrEnabled, acctest.CtTrue), resource.TestCheckResourceAttr(resourceName, names.AttrSourceType, "db-instance"), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), diff --git a/internal/service/neptune/global_cluster_test.go b/internal/service/neptune/global_cluster_test.go index d2973dc5057b..1ccbcc4732ca 100644 --- a/internal/service/neptune/global_cluster_test.go +++ b/internal/service/neptune/global_cluster_test.go @@ -40,7 +40,7 @@ func TestAccNeptuneGlobalCluster_basic(t *testing.T) { Config: testAccGlobalClusterConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckGlobalClusterExists(ctx, resourceName, &v), - acctest.CheckResourceAttrGlobalARN(resourceName, names.AttrARN, "rds", fmt.Sprintf("global-cluster:%s", rName)), + acctest.CheckResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "rds", fmt.Sprintf("global-cluster:%s", rName)), resource.TestCheckResourceAttr(resourceName, names.AttrDeletionProtection, acctest.CtFalse), resource.TestCheckResourceAttrSet(resourceName, names.AttrEngine), resource.TestCheckResourceAttrSet(resourceName, names.AttrEngineVersion), @@ -74,7 +74,7 @@ func TestAccNeptuneGlobalCluster_completeBasic(t *testing.T) { Config: testAccGlobalClusterConfig_completeBasic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckGlobalClusterExists(ctx, resourceName, &v), - acctest.CheckResourceAttrGlobalARN(resourceName, names.AttrARN, "rds", fmt.Sprintf("global-cluster:%s", rName)), + acctest.CheckResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "rds", fmt.Sprintf("global-cluster:%s", rName)), resource.TestCheckResourceAttr(resourceName, names.AttrDeletionProtection, acctest.CtFalse), resource.TestCheckResourceAttrSet(resourceName, names.AttrEngine), resource.TestCheckResourceAttrSet(resourceName, names.AttrEngineVersion), diff --git a/internal/service/neptune/parameter_group_test.go b/internal/service/neptune/parameter_group_test.go index 783322ad0406..2e1e56409128 100644 --- a/internal/service/neptune/parameter_group_test.go +++ b/internal/service/neptune/parameter_group_test.go @@ -38,7 +38,7 @@ func TestAccNeptuneParameterGroup_basic(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckParameterGroupExists(ctx, resourceName, &v), testAccCheckParameterGroupAttributes(&v, rName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "rds", fmt.Sprintf("pg:%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "rds", fmt.Sprintf("pg:%s", rName)), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "Managed by Terraform"), resource.TestCheckResourceAttr(resourceName, names.AttrFamily, "neptune1"), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), diff --git a/internal/service/neptune/service_endpoints_gen_test.go b/internal/service/neptune/service_endpoints_gen_test.go index ae1a79862a26..9d62ffd63f78 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/neptune/subnet_group_test.go b/internal/service/neptune/subnet_group_test.go index 0630481a85a5..638feb815495 100644 --- a/internal/service/neptune/subnet_group_test.go +++ b/internal/service/neptune/subnet_group_test.go @@ -37,7 +37,7 @@ func TestAccNeptuneSubnetGroup_basic(t *testing.T) { Config: testAccSubnetGroupConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckSubnetGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "rds", regexache.MustCompile(fmt.Sprintf("subgrp:%s$", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "rds", regexache.MustCompile(fmt.Sprintf("subgrp:%s$", rName))), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "Managed by Terraform"), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, names.AttrNamePrefix, ""), diff --git a/internal/service/networkfirewall/firewall_data_source_test.go b/internal/service/networkfirewall/firewall_data_source_test.go index 4be0c929cb47..86182b782951 100644 --- a/internal/service/networkfirewall/firewall_data_source_test.go +++ b/internal/service/networkfirewall/firewall_data_source_test.go @@ -33,7 +33,7 @@ func TestAccNetworkFirewallFirewallDataSource_arn(t *testing.T) { Config: testAccFirewallDataSourceConfig_arn(rName), Check: resource.ComposeTestCheckFunc( testAccCheckFirewallExists(ctx, resourceName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "network-firewall", fmt.Sprintf("firewall/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "network-firewall", fmt.Sprintf("firewall/%s", rName)), resource.TestCheckResourceAttr(dataSourceName, "delete_protection", acctest.CtFalse), resource.TestCheckResourceAttr(dataSourceName, names.AttrDescription, ""), resource.TestCheckResourceAttr(dataSourceName, "encryption_configuration.#", "1"), @@ -81,7 +81,7 @@ func TestAccNetworkFirewallFirewallDataSource_name(t *testing.T) { Config: testAccFirewallDataSourceConfig_name(rName), Check: resource.ComposeTestCheckFunc( testAccCheckFirewallExists(ctx, resourceName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "network-firewall", fmt.Sprintf("firewall/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "network-firewall", fmt.Sprintf("firewall/%s", rName)), resource.TestCheckResourceAttr(dataSourceName, "delete_protection", acctest.CtFalse), resource.TestCheckResourceAttr(dataSourceName, names.AttrDescription, ""), resource.TestCheckResourceAttr(dataSourceName, "encryption_configuration.#", "1"), @@ -129,7 +129,7 @@ func TestAccNetworkFirewallFirewallDataSource_arnandname(t *testing.T) { Config: testAccFirewallDataSourceConfig_arnandname(rName), Check: resource.ComposeTestCheckFunc( testAccCheckFirewallExists(ctx, resourceName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "network-firewall", fmt.Sprintf("firewall/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "network-firewall", fmt.Sprintf("firewall/%s", rName)), resource.TestCheckResourceAttr(dataSourceName, "delete_protection", acctest.CtFalse), resource.TestCheckResourceAttr(dataSourceName, names.AttrDescription, ""), resource.TestCheckResourceAttr(dataSourceName, "encryption_configuration.#", "1"), diff --git a/internal/service/networkfirewall/firewall_policy_test.go b/internal/service/networkfirewall/firewall_policy_test.go index 3613f1172618..f65e1a75d0c6 100644 --- a/internal/service/networkfirewall/firewall_policy_test.go +++ b/internal/service/networkfirewall/firewall_policy_test.go @@ -37,7 +37,7 @@ func TestAccNetworkFirewallFirewallPolicy_basic(t *testing.T) { Config: testAccFirewallPolicyConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckFirewallPolicyExists(ctx, resourceName, &firewallPolicy), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "network-firewall", fmt.Sprintf("firewall-policy/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "network-firewall", fmt.Sprintf("firewall-policy/%s", rName)), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), resource.TestCheckResourceAttr(resourceName, "firewall_policy.#", "1"), resource.TestCheckResourceAttr(resourceName, "firewall_policy.0.policy_variables.#", "0"), diff --git a/internal/service/networkfirewall/firewall_test.go b/internal/service/networkfirewall/firewall_test.go index 01ddda0d0dcb..827a94c924bd 100644 --- a/internal/service/networkfirewall/firewall_test.go +++ b/internal/service/networkfirewall/firewall_test.go @@ -40,7 +40,7 @@ func TestAccNetworkFirewallFirewall_basic(t *testing.T) { Config: testAccFirewallConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckFirewallExists(ctx, resourceName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "network-firewall", fmt.Sprintf("firewall/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "network-firewall", fmt.Sprintf("firewall/%s", rName)), resource.TestCheckResourceAttr(resourceName, "delete_protection", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), resource.TestCheckResourceAttrPair(resourceName, "firewall_policy_arn", policyResourceName, names.AttrARN), @@ -89,7 +89,7 @@ func TestAccNetworkFirewallFirewall_dualstackSubnet(t *testing.T) { Config: testAccFirewallConfig_dualstackSubnet(rName), Check: resource.ComposeTestCheckFunc( testAccCheckFirewallExists(ctx, resourceName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "network-firewall", fmt.Sprintf("firewall/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "network-firewall", fmt.Sprintf("firewall/%s", rName)), resource.TestCheckResourceAttr(resourceName, "delete_protection", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), resource.TestCheckResourceAttrPair(resourceName, "firewall_policy_arn", policyResourceName, names.AttrARN), diff --git a/internal/service/networkfirewall/rule_group_test.go b/internal/service/networkfirewall/rule_group_test.go index a3dca9e3476b..84cd0c69f66d 100644 --- a/internal/service/networkfirewall/rule_group_test.go +++ b/internal/service/networkfirewall/rule_group_test.go @@ -37,7 +37,7 @@ func TestAccNetworkFirewallRuleGroup_Basic_rulesSourceList(t *testing.T) { Config: testAccRuleGroupConfig_basicSourceList(rName), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &ruleGroup), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "network-firewall", fmt.Sprintf("stateful-rulegroup/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "network-firewall", fmt.Sprintf("stateful-rulegroup/%s", rName)), resource.TestCheckResourceAttr(resourceName, "capacity", "100"), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, names.AttrType, string(awstypes.RuleGroupTypeStateful)), @@ -80,7 +80,7 @@ func TestAccNetworkFirewallRuleGroup_Basic_referenceSets(t *testing.T) { Config: testAccRuleGroupConfig_referenceSets(rName), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &ruleGroup), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "network-firewall", fmt.Sprintf("stateful-rulegroup/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "network-firewall", fmt.Sprintf("stateful-rulegroup/%s", rName)), resource.TestCheckResourceAttr(resourceName, "capacity", "100"), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, names.AttrType, string(awstypes.RuleGroupTypeStateful)), @@ -117,7 +117,7 @@ func TestAccNetworkFirewallRuleGroup_Basic_updateReferenceSets(t *testing.T) { Config: testAccRuleGroupConfig_referenceSets(rName), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &ruleGroup), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "network-firewall", fmt.Sprintf("stateful-rulegroup/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "network-firewall", fmt.Sprintf("stateful-rulegroup/%s", rName)), resource.TestCheckResourceAttr(resourceName, "capacity", "100"), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, names.AttrType, string(awstypes.RuleGroupTypeStateful)), @@ -138,7 +138,7 @@ func TestAccNetworkFirewallRuleGroup_Basic_updateReferenceSets(t *testing.T) { Config: testAccRuleGroupConfig_referenceSets1(rName), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &ruleGroup), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "network-firewall", fmt.Sprintf("stateful-rulegroup/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "network-firewall", fmt.Sprintf("stateful-rulegroup/%s", rName)), resource.TestCheckResourceAttr(resourceName, "capacity", "100"), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, names.AttrType, string(awstypes.RuleGroupTypeStateful)), @@ -170,7 +170,7 @@ func TestAccNetworkFirewallRuleGroup_Basic_statefulRule(t *testing.T) { Config: testAccRuleGroupConfig_basicStateful(rName), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &ruleGroup), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "network-firewall", fmt.Sprintf("stateful-rulegroup/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "network-firewall", fmt.Sprintf("stateful-rulegroup/%s", rName)), resource.TestCheckResourceAttr(resourceName, "capacity", "100"), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, names.AttrType, string(awstypes.RuleGroupTypeStateful)), @@ -220,7 +220,7 @@ func TestAccNetworkFirewallRuleGroup_Basic_statelessRule(t *testing.T) { Config: testAccRuleGroupConfig_basicStateless(rName), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &ruleGroup), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "network-firewall", fmt.Sprintf("stateless-rulegroup/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "network-firewall", fmt.Sprintf("stateless-rulegroup/%s", rName)), resource.TestCheckResourceAttr(resourceName, "capacity", "100"), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, names.AttrType, string(awstypes.RuleGroupTypeStateless)), @@ -266,7 +266,7 @@ alert http any any -> any any (http_response_line; content:"403 Forbidden"; sid: Config: testAccRuleGroupConfig_basic(rName, rules), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &ruleGroup), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "network-firewall", fmt.Sprintf("stateful-rulegroup/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "network-firewall", fmt.Sprintf("stateful-rulegroup/%s", rName)), resource.TestCheckResourceAttr(resourceName, "capacity", "100"), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, names.AttrType, string(awstypes.RuleGroupTypeStateful)), @@ -381,7 +381,7 @@ func TestAccNetworkFirewallRuleGroup_statelessRuleWithCustomAction(t *testing.T) Config: testAccRuleGroupConfig_statelessCustomAction(rName), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &ruleGroup), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "network-firewall", fmt.Sprintf("stateless-rulegroup/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "network-firewall", fmt.Sprintf("stateless-rulegroup/%s", rName)), resource.TestCheckResourceAttr(resourceName, "capacity", "100"), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, names.AttrType, string(awstypes.RuleGroupTypeStateless)), @@ -480,7 +480,7 @@ func TestAccNetworkFirewallRuleGroup_updateRulesSourceList(t *testing.T) { Config: testAccRuleGroupConfig_updateSourceList(rName), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &ruleGroup), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "network-firewall", fmt.Sprintf("stateful-rulegroup/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "network-firewall", fmt.Sprintf("stateful-rulegroup/%s", rName)), resource.TestCheckResourceAttr(resourceName, "capacity", "100"), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, names.AttrType, string(awstypes.RuleGroupTypeStateful)), diff --git a/internal/service/networkfirewall/service_endpoints_gen_test.go b/internal/service/networkfirewall/service_endpoints_gen_test.go index 09ef8d435164..a7abb1afc940 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/networkfirewall/tls_inspection_configuration_test.go b/internal/service/networkfirewall/tls_inspection_configuration_test.go index 2deab66b64c8..cff00c8c4961 100644 --- a/internal/service/networkfirewall/tls_inspection_configuration_test.go +++ b/internal/service/networkfirewall/tls_inspection_configuration_test.go @@ -38,7 +38,7 @@ func TestAccNetworkFirewallTLSInspectionConfiguration_basic(t *testing.T) { Config: testAccTLSInspectionConfigurationConfig_basic(rName, commonName.String(), certificateDomainName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckTLSInspectionConfigurationExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "network-firewall", regexache.MustCompile(`tls-configuration/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "network-firewall", regexache.MustCompile(`tls-configuration/.+$`)), resource.TestCheckNoResourceAttr(resourceName, "certificate_authority"), resource.TestCheckResourceAttr(resourceName, "certificates.#", "1"), resource.TestCheckNoResourceAttr(resourceName, names.AttrDescription), @@ -170,7 +170,7 @@ func TestAccNetworkFirewallTLSInspectionConfiguration_encryptionConfiguration(t Config: testAccTLSInspectionConfigurationConfig_encryptionConfiguration(rName, commonName.String(), certificateDomainName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckTLSInspectionConfigurationExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "network-firewall", regexache.MustCompile(`tls-configuration/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "network-firewall", regexache.MustCompile(`tls-configuration/.+$`)), resource.TestCheckNoResourceAttr(resourceName, "certificate_authority"), resource.TestCheckResourceAttr(resourceName, "certificates.#", "1"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "test"), @@ -238,7 +238,7 @@ func TestAccNetworkFirewallTLSInspectionConfiguration_checkCertificateRevocation Config: testAccTLSInspectionConfigurationConfig_checkCertificateRevocationStatus(rName, commonName.String(), certificateDomainName, "REJECT", "PASS"), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckTLSInspectionConfigurationExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "network-firewall", regexache.MustCompile(`tls-configuration/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "network-firewall", regexache.MustCompile(`tls-configuration/.+$`)), resource.TestCheckNoResourceAttr(resourceName, "certificates"), resource.TestCheckResourceAttr(resourceName, "certificate_authority.#", "1"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "test"), @@ -282,7 +282,7 @@ func TestAccNetworkFirewallTLSInspectionConfiguration_checkCertificateRevocation Config: testAccTLSInspectionConfigurationConfig_checkCertificateRevocationStatus(rName, commonName.String(), certificateDomainName, "DROP", "PASS"), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckTLSInspectionConfigurationExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "network-firewall", regexache.MustCompile(`tls-configuration/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "network-firewall", regexache.MustCompile(`tls-configuration/.+$`)), resource.TestCheckNoResourceAttr(resourceName, "certificates"), resource.TestCheckResourceAttr(resourceName, "certificate_authority.#", "1"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "test"), diff --git a/internal/service/networkmanager/connect_attachment.go b/internal/service/networkmanager/connect_attachment.go index 6897ae3d255f..0eb64813a3c3 100644 --- a/internal/service/networkmanager/connect_attachment.go +++ b/internal/service/networkmanager/connect_attachment.go @@ -216,7 +216,7 @@ func resourceConnectAttachmentRead(ctx context.Context, d *schema.ResourceData, arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "networkmanager", - AccountID: meta.(*conns.AWSClient).AccountID, + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("attachment/%s", d.Id()), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/networkmanager/connect_attachment_test.go b/internal/service/networkmanager/connect_attachment_test.go index 37f7a4600699..1142d56211be 100644 --- a/internal/service/networkmanager/connect_attachment_test.go +++ b/internal/service/networkmanager/connect_attachment_test.go @@ -36,12 +36,12 @@ func TestAccNetworkManagerConnectAttachment_basic(t *testing.T) { Config: testAccConnectAttachmentConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckConnectAttachmentExists(ctx, resourceName, &v), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "networkmanager", regexache.MustCompile(`attachment/.+`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "networkmanager", regexache.MustCompile(`attachment/.+`)), resource.TestCheckResourceAttr(resourceName, "attachment_type", "CONNECT"), resource.TestCheckResourceAttrSet(resourceName, "core_network_id"), resource.TestCheckResourceAttr(resourceName, "edge_location", acctest.Region()), resource.TestCheckResourceAttr(resourceName, "options.0.protocol", "GRE"), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerAccountID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerAccountID), resource.TestCheckResourceAttr(resourceName, "segment_name", "shared"), resource.TestCheckResourceAttrSet(resourceName, names.AttrState), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "1"), @@ -73,12 +73,12 @@ func TestAccNetworkManagerConnectAttachment_basic_NoDependsOn(t *testing.T) { Config: testAccConnectAttachmentConfig_basic_NoDependsOn(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckConnectAttachmentExists(ctx, resourceName, &v), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "networkmanager", regexache.MustCompile(`attachment/.+`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "networkmanager", regexache.MustCompile(`attachment/.+`)), resource.TestCheckResourceAttr(resourceName, "attachment_type", "CONNECT"), resource.TestCheckResourceAttrSet(resourceName, "core_network_id"), resource.TestCheckResourceAttr(resourceName, "edge_location", acctest.Region()), resource.TestCheckResourceAttr(resourceName, "options.0.protocol", "GRE"), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerAccountID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerAccountID), resource.TestCheckResourceAttr(resourceName, "segment_name", "shared"), resource.TestCheckResourceAttrSet(resourceName, names.AttrState), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "1"), @@ -134,12 +134,12 @@ func TestAccNetworkManagerConnectAttachment_protocolNoEncap(t *testing.T) { Config: testAccConnectAttachmentConfig_protocolNoEncap(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckConnectAttachmentExists(ctx, resourceName, &v), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "networkmanager", regexache.MustCompile(`attachment/.+`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "networkmanager", regexache.MustCompile(`attachment/.+`)), resource.TestCheckResourceAttr(resourceName, "attachment_type", "CONNECT"), resource.TestCheckResourceAttrSet(resourceName, "core_network_id"), resource.TestCheckResourceAttr(resourceName, "edge_location", acctest.Region()), resource.TestCheckResourceAttr(resourceName, "options.0.protocol", "NO_ENCAP"), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerAccountID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerAccountID), resource.TestCheckResourceAttr(resourceName, "segment_name", "shared"), resource.TestCheckResourceAttrSet(resourceName, names.AttrState), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "1"), diff --git a/internal/service/networkmanager/connect_peer.go b/internal/service/networkmanager/connect_peer.go index b8bba578f6a2..834b064b67b8 100644 --- a/internal/service/networkmanager/connect_peer.go +++ b/internal/service/networkmanager/connect_peer.go @@ -280,7 +280,7 @@ func resourceConnectPeerRead(ctx context.Context, d *schema.ResourceData, meta i arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "networkmanager", - AccountID: meta.(*conns.AWSClient).AccountID, + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("connect-peer/%s", d.Id()), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/networkmanager/connect_peer_test.go b/internal/service/networkmanager/connect_peer_test.go index 5c3ac12de398..921a9fab0339 100644 --- a/internal/service/networkmanager/connect_peer_test.go +++ b/internal/service/networkmanager/connect_peer_test.go @@ -40,7 +40,7 @@ func TestAccNetworkManagerConnectPeer_basic(t *testing.T) { Config: testAccConnectPeerConfig_basic(rName, insideCidrBlocksv4, peerAddress, asn, protocol), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckConnectPeerExists(ctx, resourceName, &v), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "networkmanager", regexache.MustCompile(`connect-peer/.+`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "networkmanager", regexache.MustCompile(`connect-peer/.+`)), resource.TestCheckResourceAttr(resourceName, "configuration.#", "1"), resource.TestCheckResourceAttrSet(resourceName, "configuration.0.core_network_address"), resource.TestCheckResourceAttr(resourceName, "configuration.0.inside_cidr_blocks.0", insideCidrBlocksv4), @@ -85,7 +85,7 @@ func TestAccNetworkManagerConnectPeer_noDependsOn(t *testing.T) { Config: testAccConnectPeerConfig_noDependsOn(rName, insideCidrBlocksv4, peerAddress, asn, protocol), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckConnectPeerExists(ctx, resourceName, &v), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "networkmanager", regexache.MustCompile(`connect-peer/.+`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "networkmanager", regexache.MustCompile(`connect-peer/.+`)), resource.TestCheckResourceAttr(resourceName, "configuration.#", "1"), resource.TestCheckResourceAttrSet(resourceName, "configuration.0.core_network_address"), resource.TestCheckResourceAttr(resourceName, "configuration.0.inside_cidr_blocks.0", insideCidrBlocksv4), @@ -130,7 +130,7 @@ func TestAccNetworkManagerConnectPeer_subnetARN(t *testing.T) { Config: testAccConnectPeerConfig_subnetARN(rName, peerAddress, asn, protocol), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckConnectPeerExists(ctx, resourceName, &v), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "networkmanager", regexache.MustCompile(`connect-peer/.+`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "networkmanager", regexache.MustCompile(`connect-peer/.+`)), resource.TestCheckResourceAttr(resourceName, "configuration.#", "1"), resource.TestCheckResourceAttr(resourceName, "configuration.0.peer_address", peerAddress), resource.TestCheckResourceAttr(resourceName, "configuration.0.protocol", "NO_ENCAP"), diff --git a/internal/service/networkmanager/connections_data_source.go b/internal/service/networkmanager/connections_data_source.go index a5c738d7ebec..e1c9621c5eb5 100644 --- a/internal/service/networkmanager/connections_data_source.go +++ b/internal/service/networkmanager/connections_data_source.go @@ -73,7 +73,7 @@ func dataSourceConnectionsRead(ctx context.Context, d *schema.ResourceData, meta connectionIDs = append(connectionIDs, aws.ToString(v.ConnectionId)) } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) d.Set(names.AttrIDs, connectionIDs) return diags diff --git a/internal/service/networkmanager/core_network.go b/internal/service/networkmanager/core_network.go index 9bca521dde1b..7ad02b25c041 100644 --- a/internal/service/networkmanager/core_network.go +++ b/internal/service/networkmanager/core_network.go @@ -197,7 +197,7 @@ func resourceCoreNetworkCreate(ctx context.Context, d *schema.ResourceData, meta input.PolicyDocument = aws.String(v.(string)) } else { // if user supplies a region or multiple regions use it in the base policy, otherwise use current region - regions := []interface{}{meta.(*conns.AWSClient).Region} + regions := []interface{}{meta.(*conns.AWSClient).Region(ctx)} if v, ok := d.GetOk("base_policy_region"); ok { regions = []interface{}{v.(string)} } else if v, ok := d.GetOk("base_policy_regions"); ok && v.(*schema.Set).Len() > 0 { @@ -288,7 +288,7 @@ func resourceCoreNetworkUpdate(ctx context.Context, d *schema.ResourceData, meta if d.HasChange("create_base_policy") { if _, ok := d.GetOk("create_base_policy"); ok { // if user supplies a region or multiple regions use it in the base policy, otherwise use current region - regions := []interface{}{meta.(*conns.AWSClient).Region} + regions := []interface{}{meta.(*conns.AWSClient).Region(ctx)} if v, ok := d.GetOk("base_policy_region"); ok { regions = []interface{}{v.(string)} } else if v, ok := d.GetOk("base_policy_regions"); ok && v.(*schema.Set).Len() > 0 { diff --git a/internal/service/networkmanager/core_network_test.go b/internal/service/networkmanager/core_network_test.go index bad69ac416fe..aef381466a0b 100644 --- a/internal/service/networkmanager/core_network_test.go +++ b/internal/service/networkmanager/core_network_test.go @@ -33,7 +33,7 @@ func TestAccNetworkManagerCoreNetwork_basic(t *testing.T) { Config: testAccCoreNetworkConfig_basic(), Check: resource.ComposeTestCheckFunc( testAccCheckCoreNetworkExists(ctx, resourceName), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "networkmanager", regexache.MustCompile(`core-network/core-network-.+`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "networkmanager", regexache.MustCompile(`core-network/core-network-.+`)), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedAt), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), resource.TestMatchResourceAttr(resourceName, names.AttrID, regexache.MustCompile(`core-network-.+`)), diff --git a/internal/service/networkmanager/devices_data_source.go b/internal/service/networkmanager/devices_data_source.go index 601ee4613717..419e00471754 100644 --- a/internal/service/networkmanager/devices_data_source.go +++ b/internal/service/networkmanager/devices_data_source.go @@ -73,7 +73,7 @@ func dataSourceDevicesRead(ctx context.Context, d *schema.ResourceData, meta int deviceIDs = append(deviceIDs, aws.ToString(v.DeviceId)) } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) d.Set(names.AttrIDs, deviceIDs) return diags diff --git a/internal/service/networkmanager/global_network_test.go b/internal/service/networkmanager/global_network_test.go index 95434cf75ef0..6959f0c41d34 100644 --- a/internal/service/networkmanager/global_network_test.go +++ b/internal/service/networkmanager/global_network_test.go @@ -32,7 +32,7 @@ func TestAccNetworkManagerGlobalNetwork_basic(t *testing.T) { Config: testAccGlobalNetworkConfig_basic(), Check: resource.ComposeTestCheckFunc( testAccCheckGlobalNetworkExists(ctx, resourceName), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "networkmanager", regexache.MustCompile(`global-network/global-network-.+`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "networkmanager", regexache.MustCompile(`global-network/global-network-.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), diff --git a/internal/service/networkmanager/global_networks_data_source.go b/internal/service/networkmanager/global_networks_data_source.go index 20849ccfb420..6707b7e976e9 100644 --- a/internal/service/networkmanager/global_networks_data_source.go +++ b/internal/service/networkmanager/global_networks_data_source.go @@ -57,7 +57,7 @@ func dataSourceGlobalNetworksRead(ctx context.Context, d *schema.ResourceData, m globalNetworkIDs = append(globalNetworkIDs, aws.ToString(v.GlobalNetworkId)) } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) d.Set(names.AttrIDs, globalNetworkIDs) return diags diff --git a/internal/service/networkmanager/links_data_source.go b/internal/service/networkmanager/links_data_source.go index 8415a1d822eb..4db65b2f9602 100644 --- a/internal/service/networkmanager/links_data_source.go +++ b/internal/service/networkmanager/links_data_source.go @@ -89,7 +89,7 @@ func dataSourceLinksRead(ctx context.Context, d *schema.ResourceData, meta inter linkIDs = append(linkIDs, aws.ToString(v.LinkId)) } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) d.Set(names.AttrIDs, linkIDs) return diags diff --git a/internal/service/networkmanager/service_endpoints_gen_test.go b/internal/service/networkmanager/service_endpoints_gen_test.go index d0e196defd7a..da112b836e9d 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/networkmanager/site_to_site_vpn_attachment.go b/internal/service/networkmanager/site_to_site_vpn_attachment.go index ebe2225a8b88..53efa4145e3c 100644 --- a/internal/service/networkmanager/site_to_site_vpn_attachment.go +++ b/internal/service/networkmanager/site_to_site_vpn_attachment.go @@ -152,7 +152,7 @@ func resourceSiteToSiteVPNAttachmentRead(ctx context.Context, d *schema.Resource arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "networkmanager", - AccountID: meta.(*conns.AWSClient).AccountID, + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("attachment/%s", d.Id()), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/networkmanager/site_to_site_vpn_attachment_test.go b/internal/service/networkmanager/site_to_site_vpn_attachment_test.go index 09b150884469..898ca6cb0c8c 100644 --- a/internal/service/networkmanager/site_to_site_vpn_attachment_test.go +++ b/internal/service/networkmanager/site_to_site_vpn_attachment_test.go @@ -43,13 +43,13 @@ func TestAccNetworkManagerSiteToSiteVPNAttachment_basic(t *testing.T) { Config: testAccSiteToSiteVPNAttachmentConfig_basic(rName, bgpASN, vpnIP), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckSiteToSiteVPNAttachmentExists(ctx, resourceName, &v), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "networkmanager", regexache.MustCompile(`attachment/.+`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "networkmanager", regexache.MustCompile(`attachment/.+`)), resource.TestCheckResourceAttr(resourceName, "attachment_policy_rule_number", "1"), resource.TestCheckResourceAttr(resourceName, "attachment_type", "SITE_TO_SITE_VPN"), resource.TestCheckResourceAttrPair(resourceName, "core_network_arn", coreNetworkResourceName, names.AttrARN), resource.TestCheckResourceAttrSet(resourceName, "core_network_id"), resource.TestCheckResourceAttr(resourceName, "edge_location", acctest.Region()), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerAccountID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerAccountID), resource.TestCheckResourceAttrPair(resourceName, names.AttrResourceARN, vpnResourceName, names.AttrARN), resource.TestCheckResourceAttr(resourceName, "segment_name", "shared"), resource.TestCheckResourceAttrSet(resourceName, names.AttrState), diff --git a/internal/service/networkmanager/sites_data_source.go b/internal/service/networkmanager/sites_data_source.go index 80f365b16ec0..82f0f62cc29f 100644 --- a/internal/service/networkmanager/sites_data_source.go +++ b/internal/service/networkmanager/sites_data_source.go @@ -63,7 +63,7 @@ func dataSourceSitesRead(ctx context.Context, d *schema.ResourceData, meta inter siteIDs = append(siteIDs, aws.ToString(v.SiteId)) } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) d.Set(names.AttrIDs, siteIDs) return diags diff --git a/internal/service/networkmanager/transit_gateway_peering.go b/internal/service/networkmanager/transit_gateway_peering.go index ee11704df210..c37199826bc5 100644 --- a/internal/service/networkmanager/transit_gateway_peering.go +++ b/internal/service/networkmanager/transit_gateway_peering.go @@ -142,7 +142,7 @@ func resourceTransitGatewayPeeringRead(ctx context.Context, d *schema.ResourceDa arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "networkmanager", - AccountID: meta.(*conns.AWSClient).AccountID, + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("peering/%s", d.Id()), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/networkmanager/transit_gateway_peering_test.go b/internal/service/networkmanager/transit_gateway_peering_test.go index ad712b23a152..055f48cd1fe6 100644 --- a/internal/service/networkmanager/transit_gateway_peering_test.go +++ b/internal/service/networkmanager/transit_gateway_peering_test.go @@ -47,11 +47,11 @@ func TestAccNetworkManagerTransitGatewayPeering_basic(t *testing.T) { Config: testAccTransitGatewayPeeringConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckTransitGatewayPeeringExists(ctx, resourceName, &v), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "networkmanager", regexache.MustCompile(`peering/.+`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "networkmanager", regexache.MustCompile(`peering/.+`)), resource.TestCheckResourceAttrSet(resourceName, "core_network_arn"), resource.TestCheckResourceAttrSet(resourceName, "core_network_id"), resource.TestCheckResourceAttr(resourceName, "edge_location", acctest.Region()), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerAccountID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerAccountID), resource.TestCheckResourceAttrPair(resourceName, names.AttrResourceARN, tgwResourceName, names.AttrARN), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttrPair(resourceName, "transit_gateway_arn", tgwResourceName, names.AttrARN), diff --git a/internal/service/networkmanager/transit_gateway_route_table_attachment.go b/internal/service/networkmanager/transit_gateway_route_table_attachment.go index a21ca03525a0..fbc79a273f4b 100644 --- a/internal/service/networkmanager/transit_gateway_route_table_attachment.go +++ b/internal/service/networkmanager/transit_gateway_route_table_attachment.go @@ -154,7 +154,7 @@ func resourceTransitGatewayRouteTableAttachmentRead(ctx context.Context, d *sche arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "networkmanager", - AccountID: meta.(*conns.AWSClient).AccountID, + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("attachment/%s", d.Id()), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/networkmanager/transit_gateway_route_table_attachment_test.go b/internal/service/networkmanager/transit_gateway_route_table_attachment_test.go index cfe6744316de..1de058ecf460 100644 --- a/internal/service/networkmanager/transit_gateway_route_table_attachment_test.go +++ b/internal/service/networkmanager/transit_gateway_route_table_attachment_test.go @@ -36,11 +36,11 @@ func TestAccNetworkManagerTransitGatewayRouteTableAttachment_basic(t *testing.T) Config: testAccTransitGatewayRouteTableAttachmentConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckTransitGatewayRouteTableAttachmentExists(ctx, resourceName, &v), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "networkmanager", regexache.MustCompile(`attachment/.+`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "networkmanager", regexache.MustCompile(`attachment/.+`)), resource.TestCheckResourceAttr(resourceName, "attachment_policy_rule_number", "0"), resource.TestCheckResourceAttr(resourceName, "attachment_type", "TRANSIT_GATEWAY_ROUTE_TABLE"), resource.TestCheckResourceAttr(resourceName, "edge_location", acctest.Region()), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerAccountID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerAccountID), resource.TestCheckResourceAttrSet(resourceName, names.AttrResourceARN), resource.TestCheckResourceAttr(resourceName, "segment_name", ""), resource.TestCheckResourceAttrSet(resourceName, names.AttrState), diff --git a/internal/service/networkmanager/vpc_attachment.go b/internal/service/networkmanager/vpc_attachment.go index 69851b84eb63..6b72d463ac77 100644 --- a/internal/service/networkmanager/vpc_attachment.go +++ b/internal/service/networkmanager/vpc_attachment.go @@ -214,7 +214,7 @@ func resourceVPCAttachmentRead(ctx context.Context, d *schema.ResourceData, meta arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "networkmanager", - AccountID: meta.(*conns.AWSClient).AccountID, + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("attachment/%s", d.Id()), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/networkmanager/vpc_attachment_test.go b/internal/service/networkmanager/vpc_attachment_test.go index 53ada83d54e7..31919c964ceb 100644 --- a/internal/service/networkmanager/vpc_attachment_test.go +++ b/internal/service/networkmanager/vpc_attachment_test.go @@ -62,7 +62,7 @@ func TestAccNetworkManagerVPCAttachment_basic(t *testing.T) { Config: testAccVPCAttachmentConfig_basic(rName, testcase.acceptanceRequired), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckVPCAttachmentExists(ctx, resourceName, &v), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "networkmanager", regexache.MustCompile(`attachment/.+`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "networkmanager", regexache.MustCompile(`attachment/.+`)), resource.TestCheckResourceAttr(resourceName, "attachment_policy_rule_number", "1"), resource.TestCheckResourceAttr(resourceName, "attachment_type", "VPC"), resource.TestCheckResourceAttrPair(resourceName, "core_network_arn", coreNetworkResourceName, names.AttrARN), @@ -71,7 +71,7 @@ func TestAccNetworkManagerVPCAttachment_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "options.#", "1"), resource.TestCheckResourceAttr(resourceName, "options.0.appliance_mode_support", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "options.0.ipv6_support", acctest.CtFalse), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerAccountID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerAccountID), resource.TestCheckResourceAttrPair(resourceName, names.AttrResourceARN, vpcResourceName, names.AttrARN), resource.TestCheckResourceAttr(resourceName, "segment_name", "shared"), resource.TestCheckResourceAttr(resourceName, names.AttrState, string(testcase.expectedState)), @@ -128,7 +128,7 @@ func TestAccNetworkManagerVPCAttachment_Attached_basic(t *testing.T) { Config: testAccVPCAttachmentConfig_Attached_basic(rName, testcase.acceptanceRequired), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckVPCAttachmentExists(ctx, resourceName, &v), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "networkmanager", regexache.MustCompile(`attachment/.+`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "networkmanager", regexache.MustCompile(`attachment/.+`)), resource.TestCheckResourceAttr(resourceName, "attachment_policy_rule_number", "1"), resource.TestCheckResourceAttr(resourceName, "attachment_type", "VPC"), resource.TestCheckResourceAttrPair(resourceName, "core_network_arn", coreNetworkResourceName, names.AttrARN), @@ -137,7 +137,7 @@ func TestAccNetworkManagerVPCAttachment_Attached_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "options.#", "1"), resource.TestCheckResourceAttr(resourceName, "options.0.appliance_mode_support", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "options.0.ipv6_support", acctest.CtFalse), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerAccountID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerAccountID), resource.TestCheckResourceAttrPair(resourceName, names.AttrResourceARN, vpcResourceName, names.AttrARN), resource.TestCheckResourceAttr(resourceName, "segment_name", "shared"), resource.TestCheckResourceAttrSet(resourceName, names.AttrState), diff --git a/internal/service/networkmonitor/monitor_test.go b/internal/service/networkmonitor/monitor_test.go index 5629fea8a9c5..cd6cb2e58b35 100644 --- a/internal/service/networkmonitor/monitor_test.go +++ b/internal/service/networkmonitor/monitor_test.go @@ -37,7 +37,7 @@ func TestAccNetworkMonitorMonitor_basic(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckMonitorExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, "aggregation_period", "60"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "networkmonitor", fmt.Sprintf("monitor/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "networkmonitor", fmt.Sprintf("monitor/%s", rName)), resource.TestCheckResourceAttrPair(resourceName, names.AttrID, resourceName, "monitor_name"), resource.TestCheckResourceAttr(resourceName, "monitor_name", rName), ), diff --git a/internal/service/networkmonitor/service_endpoints_gen_test.go b/internal/service/networkmonitor/service_endpoints_gen_test.go index 7182f23b502f..96a0cfd89aed 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/link_data_source_test.go b/internal/service/oam/link_data_source_test.go index 1a84cd201aca..4346de38d911 100644 --- a/internal/service/oam/link_data_source_test.go +++ b/internal/service/oam/link_data_source_test.go @@ -36,7 +36,7 @@ func testAccObservabilityAccessManagerLinkDataSource_basic(t *testing.T) { { Config: testAccLinkDataSourceConfig_basic(rName), Check: resource.ComposeTestCheckFunc( - acctest.MatchResourceAttrRegionalARN(dataSourceName, names.AttrARN, "oam", regexache.MustCompile(`link/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, dataSourceName, names.AttrARN, "oam", regexache.MustCompile(`link/.+$`)), resource.TestCheckResourceAttrSet(dataSourceName, "label"), resource.TestCheckResourceAttr(dataSourceName, "label_template", "$AccountName"), resource.TestCheckResourceAttrSet(dataSourceName, "link_id"), @@ -74,7 +74,7 @@ func testAccObservabilityAccessManagerLinkDataSource_logGroupConfiguration(t *te { Config: testAccLinkDataSourceConfig_logGroupConfiguration(rName, filter), Check: resource.ComposeTestCheckFunc( - acctest.MatchResourceAttrRegionalARN(dataSourceName, names.AttrARN, "oam", regexache.MustCompile(`link/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, dataSourceName, names.AttrARN, "oam", regexache.MustCompile(`link/.+$`)), resource.TestCheckResourceAttrSet(dataSourceName, "label"), resource.TestCheckResourceAttr(dataSourceName, "label_template", "$AccountName"), resource.TestCheckResourceAttr(dataSourceName, "link_configuration.#", "1"), @@ -116,7 +116,7 @@ func testAccObservabilityAccessManagerLinkDataSource_metricConfiguration(t *test { Config: testAccLinkDataSourceConfig_metricConfiguration(rName, filter), Check: resource.ComposeTestCheckFunc( - acctest.MatchResourceAttrRegionalARN(dataSourceName, names.AttrARN, "oam", regexache.MustCompile(`link/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, dataSourceName, names.AttrARN, "oam", regexache.MustCompile(`link/.+$`)), resource.TestCheckResourceAttrSet(dataSourceName, "label"), resource.TestCheckResourceAttr(dataSourceName, "label_template", "$AccountName"), resource.TestCheckResourceAttr(dataSourceName, "link_configuration.#", "1"), diff --git a/internal/service/oam/link_test.go b/internal/service/oam/link_test.go index e342bacaa29c..22dbd304e97b 100644 --- a/internal/service/oam/link_test.go +++ b/internal/service/oam/link_test.go @@ -48,7 +48,7 @@ func testAccObservabilityAccessManagerLink_basic(t *testing.T) { Config: testAccLinkConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckLinkExists(ctx, resourceName, &link), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "oam", regexache.MustCompile(`link/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "oam", regexache.MustCompile(`link/.+$`)), resource.TestCheckResourceAttrSet(resourceName, "label"), resource.TestCheckResourceAttr(resourceName, "label_template", "$AccountName"), resource.TestCheckResourceAttrSet(resourceName, "link_id"), @@ -125,7 +125,7 @@ func testAccObservabilityAccessManagerLink_update(t *testing.T) { Config: testAccLinkConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckLinkExists(ctx, resourceName, &link), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "oam", regexache.MustCompile(`link/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "oam", regexache.MustCompile(`link/.+$`)), resource.TestCheckResourceAttrSet(resourceName, "label"), resource.TestCheckResourceAttr(resourceName, "label_template", "$AccountName"), resource.TestCheckResourceAttrSet(resourceName, "link_id"), @@ -139,7 +139,7 @@ func testAccObservabilityAccessManagerLink_update(t *testing.T) { Config: testAccLinkConfig_update(rName), Check: resource.ComposeTestCheckFunc( testAccCheckLinkExists(ctx, resourceName, &link), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "oam", regexache.MustCompile(`link/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "oam", regexache.MustCompile(`link/.+$`)), resource.TestCheckResourceAttrSet(resourceName, "label"), resource.TestCheckResourceAttr(resourceName, "label_template", "$AccountName"), resource.TestCheckResourceAttrSet(resourceName, "link_id"), diff --git a/internal/service/oam/links_data_source.go b/internal/service/oam/links_data_source.go index babfb27cee88..1732fbb4a923 100644 --- a/internal/service/oam/links_data_source.go +++ b/internal/service/oam/links_data_source.go @@ -54,7 +54,7 @@ func dataSourceLinksRead(ctx context.Context, d *schema.ResourceData, meta inter } } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) d.Set(names.AttrARNs, arns) return nil diff --git a/internal/service/oam/links_data_source_test.go b/internal/service/oam/links_data_source_test.go index 6ecc9a70dda8..8743c65b4416 100644 --- a/internal/service/oam/links_data_source_test.go +++ b/internal/service/oam/links_data_source_test.go @@ -37,7 +37,7 @@ func testAccObservabilityAccessManagerLinksDataSource_basic(t *testing.T) { Config: testAccLinksDataSourceConfig_basic(rName), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttr(dataSourceName, "arns.#", "1"), - acctest.MatchResourceAttrRegionalARN(dataSourceName, "arns.0", "oam", regexache.MustCompile(`link/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, dataSourceName, "arns.0", "oam", regexache.MustCompile(`link/.+$`)), ), }, }, diff --git a/internal/service/oam/service_endpoints_gen_test.go b/internal/service/oam/service_endpoints_gen_test.go index 6b10039fdfb3..830082c2d8f4 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/oam/sink_data_source_test.go b/internal/service/oam/sink_data_source_test.go index b70ca8fce4d2..6d0e96a24c4b 100644 --- a/internal/service/oam/sink_data_source_test.go +++ b/internal/service/oam/sink_data_source_test.go @@ -44,7 +44,7 @@ func testAccObservabilityAccessManagerSinkDataSource_basic(t *testing.T) { resource.TestCheckResourceAttrSet(dataSourceName, "sink_identifier"), resource.TestCheckResourceAttr(dataSourceName, acctest.CtTagsPercent, "1"), resource.TestCheckResourceAttr(dataSourceName, acctest.CtTagsKey1, acctest.CtValue1), - acctest.MatchResourceAttrRegionalARN(dataSourceName, names.AttrARN, "oam", regexache.MustCompile(`sink/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, dataSourceName, names.AttrARN, "oam", regexache.MustCompile(`sink/.+$`)), ), }, }, diff --git a/internal/service/oam/sink_policy_test.go b/internal/service/oam/sink_policy_test.go index 791359f14529..912f6ec26cd1 100644 --- a/internal/service/oam/sink_policy_test.go +++ b/internal/service/oam/sink_policy_test.go @@ -47,7 +47,7 @@ func testAccObservabilityAccessManagerSinkPolicy_basic(t *testing.T) { Config: testAccSinkPolicyConfigBasic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckSinkPolicyExists(ctx, resourceName, &sinkPolicy), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "oam", regexache.MustCompile(`sink/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "oam", regexache.MustCompile(`sink/.+$`)), resource.TestCheckResourceAttrWith(resourceName, names.AttrPolicy, func(value string) error { _, err := awspolicy.PoliciesAreEquivalent(value, fmt.Sprintf(` { @@ -67,7 +67,7 @@ func testAccObservabilityAccessManagerSinkPolicy_basic(t *testing.T) { } }] } - `, acctest.Partition(), acctest.AccountID())) + `, acctest.Partition(), acctest.AccountID(ctx))) return err }), resource.TestCheckResourceAttrSet(resourceName, "sink_id"), @@ -106,7 +106,7 @@ func testAccObservabilityAccessManagerSinkPolicy_update(t *testing.T) { Config: testAccSinkPolicyConfigBasic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckSinkPolicyExists(ctx, resourceName, &sinkPolicy), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "oam", regexache.MustCompile(`sink/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "oam", regexache.MustCompile(`sink/.+$`)), resource.TestCheckResourceAttrWith(resourceName, names.AttrPolicy, func(value string) error { _, err := awspolicy.PoliciesAreEquivalent(value, fmt.Sprintf(` { @@ -126,7 +126,7 @@ func testAccObservabilityAccessManagerSinkPolicy_update(t *testing.T) { } }] } - `, acctest.Partition(), acctest.AccountID())) + `, acctest.Partition(), acctest.AccountID(ctx))) return err }), resource.TestCheckResourceAttrSet(resourceName, "sink_id"), @@ -154,7 +154,7 @@ func testAccObservabilityAccessManagerSinkPolicy_update(t *testing.T) { } }] } - `, acctest.Partition(), acctest.AccountID())) + `, acctest.Partition(), acctest.AccountID(ctx))) return err }), ), diff --git a/internal/service/oam/sink_test.go b/internal/service/oam/sink_test.go index 0dac1aa8271e..bda5ee25e687 100644 --- a/internal/service/oam/sink_test.go +++ b/internal/service/oam/sink_test.go @@ -47,7 +47,7 @@ func testAccObservabilityAccessManagerSink_basic(t *testing.T) { Config: testAccSinkConfigBasic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckSinkExists(ctx, resourceName, &sink), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "oam", regexache.MustCompile(`sink/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "oam", regexache.MustCompile(`sink/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttrSet(resourceName, "sink_id"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), diff --git a/internal/service/oam/sinks_data_source.go b/internal/service/oam/sinks_data_source.go index 58366b989d1e..bf3eb8114a62 100644 --- a/internal/service/oam/sinks_data_source.go +++ b/internal/service/oam/sinks_data_source.go @@ -54,7 +54,7 @@ func dataSourceSinksRead(ctx context.Context, d *schema.ResourceData, meta inter } } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) d.Set(names.AttrARNs, arns) return nil diff --git a/internal/service/oam/sinks_data_source_test.go b/internal/service/oam/sinks_data_source_test.go index 2cd4e3e6d235..a12ad3d9fb1d 100644 --- a/internal/service/oam/sinks_data_source_test.go +++ b/internal/service/oam/sinks_data_source_test.go @@ -36,7 +36,7 @@ func testAccObservabilityAccessManagerSinksDataSource_basic(t *testing.T) { Config: testAccSinksDataSourceConfig_basic(rName), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttr(dataSourceName, "arns.#", "1"), - acctest.MatchResourceAttrRegionalARN(dataSourceName, "arns.0", "oam", regexache.MustCompile(`sink/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, dataSourceName, "arns.0", "oam", regexache.MustCompile(`sink/.+$`)), ), }, }, diff --git a/internal/service/opensearch/domain_policy_test.go b/internal/service/opensearch/domain_policy_test.go index 010822b71029..beb72c1b193f 100644 --- a/internal/service/opensearch/domain_policy_test.go +++ b/internal/service/opensearch/domain_policy_test.go @@ -63,7 +63,7 @@ func TestAccOpenSearchDomainPolicy_basic(t *testing.T) { testAccCheckDomainExists(ctx, "aws_opensearch_domain.test", &domain), func(s *terraform.State) error { awsClient := acctest.Provider.Meta().(*conns.AWSClient) - expectedArn, err := buildDomainARN(name, awsClient.Partition(ctx), awsClient.AccountID, awsClient.Region) + expectedArn, err := buildDomainARN(name, awsClient.Partition(ctx), awsClient.AccountID(ctx), awsClient.Region(ctx)) if err != nil { return err } diff --git a/internal/service/opensearch/service_endpoints_gen_test.go b/internal/service/opensearch/service_endpoints_gen_test.go index 44171c3b91a5..643e95346433 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 044dac2bdba2..89a7301f56d1 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/opensearchserverless/sweep.go b/internal/service/opensearchserverless/sweep.go index b611fd7f412b..2ecf027e2272 100644 --- a/internal/service/opensearchserverless/sweep.go +++ b/internal/service/opensearchserverless/sweep.go @@ -10,6 +10,7 @@ import ( "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/service/opensearchserverless" "github.com/aws/aws-sdk-go-v2/service/opensearchserverless/types" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" "github.com/hashicorp/aws-sdk-go-base/v2/tfawserr" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-provider-aws/internal/sweep" @@ -43,7 +44,7 @@ func RegisterSweepers() { func sweepAccessPolicies(region string) error { ctx := sweep.Context(region) - if region == names.USWest1RegionID || region == names.USGovEast1RegionID { + if region == endpoints.UsWest1RegionID || region == endpoints.UsGovEast1RegionID { log.Printf("[WARN] Skipping OpenSearch Serverless Access Policy sweep for region: %s", region) return nil } @@ -90,7 +91,7 @@ func sweepAccessPolicies(region string) error { func sweepCollections(region string) error { ctx := sweep.Context(region) - if region == names.USWest1RegionID || region == names.USGovEast1RegionID { + if region == endpoints.UsWest1RegionID || region == endpoints.UsGovEast1RegionID { log.Printf("[WARN] Skipping OpenSearch Serverless Collection sweep for region: %s", region) return nil } @@ -133,7 +134,7 @@ func sweepCollections(region string) error { func sweepSecurityConfigs(region string) error { ctx := sweep.Context(region) - if region == names.USWest1RegionID || region == names.USGovEast1RegionID { + if region == endpoints.UsWest1RegionID || region == endpoints.UsGovEast1RegionID { log.Printf("[WARN] Skipping OpenSearch Serverless Security Config sweep for region: %s", region) return nil } @@ -178,7 +179,7 @@ func sweepSecurityConfigs(region string) error { func sweepSecurityPolicies(region string) error { ctx := sweep.Context(region) - if region == names.USWest1RegionID || region == names.USGovEast1RegionID { + if region == endpoints.UsWest1RegionID || region == endpoints.UsGovEast1RegionID { log.Printf("[WARN] Skipping OpenSearch Serverless Security Policy sweep for region: %s", region) return nil } @@ -252,7 +253,7 @@ func sweepSecurityPolicies(region string) error { func sweepVPCEndpoints(region string) error { ctx := sweep.Context(region) - if region == names.USWest1RegionID || region == names.USGovEast1RegionID { + if region == endpoints.UsWest1RegionID || region == endpoints.UsGovEast1RegionID { log.Printf("[WARN] Skipping OpenSearch Serverless Security Policy sweep for region: %s", region) return nil } diff --git a/internal/service/opsworks/custom_layer_test.go b/internal/service/opsworks/custom_layer_test.go index b06fc18da7d0..9208ad9158c5 100644 --- a/internal/service/opsworks/custom_layer_test.go +++ b/internal/service/opsworks/custom_layer_test.go @@ -35,7 +35,7 @@ func TestAccOpsWorksCustomLayer_basic(t *testing.T) { Config: testAccCustomLayerConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckLayerExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "opsworks", regexache.MustCompile(`layer/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "opsworks", regexache.MustCompile(`layer/.+`)), resource.TestCheckResourceAttr(resourceName, "auto_assign_elastic_ips", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "auto_assign_public_ips", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "auto_healing", acctest.CtTrue), @@ -108,7 +108,7 @@ func TestAccOpsWorksCustomLayer_update(t *testing.T) { { Config: testAccCustomLayerConfig_update(rName), Check: resource.ComposeAggregateTestCheckFunc( - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "opsworks", regexache.MustCompile(`layer/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "opsworks", regexache.MustCompile(`layer/.+`)), resource.TestCheckResourceAttr(resourceName, "auto_assign_elastic_ips", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "auto_assign_public_ips", acctest.CtTrue), resource.TestCheckResourceAttr(resourceName, "auto_healing", acctest.CtTrue), diff --git a/internal/service/opsworks/rails_app_layer_test.go b/internal/service/opsworks/rails_app_layer_test.go index e0cca45243be..862403bd5c98 100644 --- a/internal/service/opsworks/rails_app_layer_test.go +++ b/internal/service/opsworks/rails_app_layer_test.go @@ -10,6 +10,7 @@ import ( "github.com/YakDriver/regexache" awstypes "github.com/aws/aws-sdk-go-v2/service/opsworks/types" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-plugin-testing/terraform" @@ -37,7 +38,7 @@ func TestAccOpsWorksRailsAppLayer_basic(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckLayerExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "app_server", "apache_passenger"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "opsworks", regexache.MustCompile(`layer/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "opsworks", regexache.MustCompile(`layer/.+`)), resource.TestCheckResourceAttr(resourceName, "auto_assign_elastic_ips", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "auto_assign_public_ips", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "auto_healing", acctest.CtTrue), @@ -160,8 +161,8 @@ func TestAccOpsWorksRailsAppLayer_tagsAlternateRegion(t *testing.T) { // This test requires a very particular AWS Region configuration // in order to exercise the OpsWorks classic endpoint functionality. acctest.PreCheckMultipleRegion(t, 2) - acctest.PreCheckRegion(t, names.USEast1RegionID) - acctest.PreCheckAlternateRegionIs(t, names.USWest1RegionID) + acctest.PreCheckRegion(t, endpoints.UsEast1RegionID) + acctest.PreCheckAlternateRegion(t, endpoints.UsWest1RegionID) }, ErrorCheck: acctest.ErrorCheck(t, names.OpsWorksServiceID), ProtoV5ProviderFactories: acctest.ProtoV5FactoriesMultipleRegions(ctx, t, 2), diff --git a/internal/service/opsworks/service_endpoints_gen_test.go b/internal/service/opsworks/service_endpoints_gen_test.go index 2873117e0d54..d7e053650a1c 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/opsworks/stack.go b/internal/service/opsworks/stack.go index 3e118f417ddc..eed24ff07ce9 100644 --- a/internal/service/opsworks/stack.go +++ b/internal/service/opsworks/stack.go @@ -13,6 +13,7 @@ import ( "github.com/aws/aws-sdk-go-v2/aws/arn" "github.com/aws/aws-sdk-go-v2/service/opsworks" awstypes "github.com/aws/aws-sdk-go-v2/service/opsworks/types" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" "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" @@ -298,7 +299,7 @@ func resourceStackCreate(ctx context.Context, d *schema.ResourceData, meta inter Partition: meta.(*conns.AWSClient).Partition(ctx), Service: names.OpsWorks, Region: region, - AccountID: meta.(*conns.AWSClient).AccountID, + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("stack/%s/", d.Id()), }.String() @@ -335,7 +336,7 @@ func resourceStackRead(ctx context.Context, d *schema.ResourceData, meta interfa // If it's not found in the default region we're in, we check us-east-1 // in the event this stack was created with Terraform before version 0.9. // See https://github.com/hashicorp/terraform/issues/12842. - region = names.USEast1RegionID + region = endpoints.UsEast1RegionID stack, err = findStackByID(ctx, conn, d.Id(), func(o *opsworks.Options) { o.Region = region diff --git a/internal/service/opsworks/stack_test.go b/internal/service/opsworks/stack_test.go index 35be0d09e26a..990c5eb9370a 100644 --- a/internal/service/opsworks/stack_test.go +++ b/internal/service/opsworks/stack_test.go @@ -12,6 +12,7 @@ import ( "github.com/aws/aws-sdk-go-v2/aws/arn" "github.com/aws/aws-sdk-go-v2/service/opsworks" awstypes "github.com/aws/aws-sdk-go-v2/service/opsworks/types" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-plugin-testing/terraform" @@ -45,7 +46,7 @@ func TestAccOpsWorksStack_basic(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckStackExists(ctx, resourceName, &v), resource.TestCheckResourceAttrSet(resourceName, "agent_version"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "opsworks", regexache.MustCompile(`stack/.+/`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "opsworks", regexache.MustCompile(`stack/.+/`)), resource.TestCheckResourceAttr(resourceName, "berkshelf_version", "3.2.0"), resource.TestCheckResourceAttr(resourceName, "color", ""), resource.TestCheckResourceAttr(resourceName, "configuration_manager_name", "Chef"), @@ -257,8 +258,8 @@ func TestAccOpsWorksStack_tagsAlternateRegion(t *testing.T) { // This test requires a very particular AWS Region configuration // in order to exercise the OpsWorks classic endpoint functionality. acctest.PreCheckMultipleRegion(t, 2) - acctest.PreCheckRegion(t, names.USEast1RegionID) - acctest.PreCheckAlternateRegionIs(t, names.USWest1RegionID) + acctest.PreCheckRegion(t, endpoints.UsEast1RegionID) + acctest.PreCheckAlternateRegion(t, endpoints.UsWest1RegionID) }, ErrorCheck: acctest.ErrorCheck(t, names.OpsWorksServiceID), ProtoV5ProviderFactories: acctest.ProtoV5FactoriesMultipleRegions(ctx, t, 2), @@ -273,7 +274,7 @@ func TestAccOpsWorksStack_tagsAlternateRegion(t *testing.T) { Partition: acctest.Partition(), Service: names.OpsWorks, Region: acctest.AlternateRegion(), - AccountID: acctest.AccountID(), + AccountID: acctest.AccountID(ctx), Resource: `stack/.+/`, }.String()).MatchString(value) { return fmt.Errorf("%s doesn't match ARN pattern", value) @@ -283,7 +284,7 @@ func TestAccOpsWorksStack_tagsAlternateRegion(t *testing.T) { }), resource.TestCheckResourceAttr(resourceName, names.AttrRegion, acctest.AlternateRegion()), // "In this case, the actual API endpoint of the stack is in us-east-1." - resource.TestCheckResourceAttr(resourceName, "stack_endpoint", names.USEast1RegionID), + resource.TestCheckResourceAttr(resourceName, "stack_endpoint", endpoints.UsEast1RegionID), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "1"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsKey1, acctest.CtValue1), ), @@ -337,7 +338,7 @@ func TestAccOpsWorksStack_allAttributes(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckStackExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "agent_version", "4039-20200430042739"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "opsworks", regexache.MustCompile(`stack/.+/`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "opsworks", regexache.MustCompile(`stack/.+/`)), resource.TestCheckResourceAttr(resourceName, "berkshelf_version", "3.2.0"), resource.TestCheckResourceAttr(resourceName, "color", "rgb(186, 65, 50)"), resource.TestCheckResourceAttr(resourceName, "configuration_manager_name", "Chef"), @@ -381,7 +382,7 @@ func TestAccOpsWorksStack_allAttributes(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckStackExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "agent_version", "4038-20200305044341"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "opsworks", regexache.MustCompile(`stack/.+/`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "opsworks", regexache.MustCompile(`stack/.+/`)), resource.TestCheckResourceAttr(resourceName, "berkshelf_version", "3.2.0"), resource.TestCheckResourceAttr(resourceName, "color", "rgb(186, 65, 50)"), resource.TestCheckResourceAttr(resourceName, "configuration_manager_name", "Chef"), @@ -417,7 +418,7 @@ func TestAccOpsWorksStack_allAttributes(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckStackExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "agent_version", "4038-20200305044341"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "opsworks", regexache.MustCompile(`stack/.+/`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "opsworks", regexache.MustCompile(`stack/.+/`)), resource.TestCheckResourceAttr(resourceName, "berkshelf_version", "3.2.0"), resource.TestCheckResourceAttr(resourceName, "color", "rgb(209, 105, 41)"), resource.TestCheckResourceAttr(resourceName, "configuration_manager_name", "Chef"), diff --git a/internal/service/organizations/delegated_administrators_data_source.go b/internal/service/organizations/delegated_administrators_data_source.go index 918a63b14902..70d603376857 100644 --- a/internal/service/organizations/delegated_administrators_data_source.go +++ b/internal/service/organizations/delegated_administrators_data_source.go @@ -90,7 +90,7 @@ func dataSourceDelegatedAdministratorsRead(ctx context.Context, d *schema.Resour return sdkdiag.AppendErrorf(diags, "reading Organizations Delegated Administrators: %s", err) } - d.SetId(meta.(*conns.AWSClient).AccountID) + d.SetId(meta.(*conns.AWSClient).AccountID(ctx)) if err = d.Set("delegated_administrators", flattenDelegatedAdministrators(output)); err != nil { return sdkdiag.AppendErrorf(diags, "setting delegated_administrators: %s", err) } diff --git a/internal/service/organizations/delegated_services_data_source.go b/internal/service/organizations/delegated_services_data_source.go index 5541184cb6d9..0d985b9201c9 100644 --- a/internal/service/organizations/delegated_services_data_source.go +++ b/internal/service/organizations/delegated_services_data_source.go @@ -59,7 +59,7 @@ func dataSourceDelegatedServicesRead(ctx context.Context, d *schema.ResourceData return sdkdiag.AppendErrorf(diags, "reading Organizations Delegated Services (%s): %s", accountID, err) } - d.SetId(meta.(*conns.AWSClient).AccountID) + d.SetId(meta.(*conns.AWSClient).AccountID(ctx)) if err = d.Set("delegated_services", flattenDelegatedServices(output)); err != nil { return sdkdiag.AppendErrorf(diags, "setting delegated_services: %s", err) } diff --git a/internal/service/organizations/organization_data_source.go b/internal/service/organizations/organization_data_source.go index 9f3ab3579d4b..52faee900f41 100644 --- a/internal/service/organizations/organization_data_source.go +++ b/internal/service/organizations/organization_data_source.go @@ -174,7 +174,7 @@ func dataSourceOrganizationRead(ctx context.Context, d *schema.ResourceData, met managementAccountID := aws.ToString(org.MasterAccountId) d.Set("master_account_id", managementAccountID) - isManagementAccount := managementAccountID == meta.(*conns.AWSClient).AccountID + isManagementAccount := managementAccountID == meta.(*conns.AWSClient).AccountID(ctx) isDelegatedAdministrator := true accounts, err := findAccounts(ctx, conn, &organizations.ListAccountsInput{}) diff --git a/internal/service/organizations/organization_test.go b/internal/service/organizations/organization_test.go index 0710ea6f8d69..c2e825bee976 100644 --- a/internal/service/organizations/organization_test.go +++ b/internal/service/organizations/organization_test.go @@ -40,12 +40,12 @@ func testAccOrganization_basic(t *testing.T) { resource.TestCheckResourceAttrPair(resourceName, "accounts.0.arn", resourceName, "master_account_arn"), resource.TestCheckResourceAttrPair(resourceName, "accounts.0.email", resourceName, "master_account_email"), resource.TestCheckResourceAttrPair(resourceName, "accounts.0.id", resourceName, "master_account_id"), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "organizations", regexache.MustCompile(`organization/o-.+`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "organizations", regexache.MustCompile(`organization/o-.+`)), resource.TestCheckResourceAttr(resourceName, "aws_service_access_principals.#", "0"), resource.TestCheckResourceAttr(resourceName, "feature_set", string(awstypes.OrganizationFeatureSetAll)), - acctest.MatchResourceAttrGlobalARN(resourceName, "master_account_arn", "organizations", regexache.MustCompile(`account/o-.+/.+`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, "master_account_arn", "organizations", regexache.MustCompile(`account/o-.+/.+`)), resource.TestMatchResourceAttr(resourceName, "master_account_email", regexache.MustCompile(`.+@.+`)), - acctest.CheckResourceAttrAccountID(resourceName, "master_account_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "master_account_id"), resource.TestCheckResourceAttr(resourceName, "non_master_accounts.#", "0"), resource.TestCheckResourceAttr(resourceName, "roots.#", "1"), resource.TestMatchResourceAttr(resourceName, "roots.0.id", regexache.MustCompile(`r-[0-9a-z]{4,32}`)), diff --git a/internal/service/organizations/policy_test.go b/internal/service/organizations/policy_test.go index 212c852c7e2c..ef89532efbfc 100644 --- a/internal/service/organizations/policy_test.go +++ b/internal/service/organizations/policy_test.go @@ -41,7 +41,7 @@ func testAccPolicy_basic(t *testing.T) { Config: testAccPolicyConfig_required(rName, content1), Check: resource.ComposeTestCheckFunc( testAccCheckPolicyExists(ctx, resourceName, &policy), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "organizations", regexache.MustCompile("policy/o-.+/service_control_policy/p-.+$")), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "organizations", regexache.MustCompile("policy/o-.+/service_control_policy/p-.+$")), resource.TestCheckResourceAttr(resourceName, names.AttrContent, content1), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), @@ -196,7 +196,7 @@ func testAccPolicy_skipDestroy(t *testing.T) { Config: testAccPolicyConfig_skipDestroy(rName, content), Check: resource.ComposeTestCheckFunc( testAccCheckPolicyExists(ctx, resourceName, &policy), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "organizations", regexache.MustCompile("policy/o-.+/service_control_policy/p-.+$")), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "organizations", regexache.MustCompile("policy/o-.+/service_control_policy/p-.+$")), resource.TestCheckResourceAttr(resourceName, names.AttrContent, content), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), diff --git a/internal/service/organizations/resource_policy_test.go b/internal/service/organizations/resource_policy_test.go index 4bb230c0c26c..7cb22a722bb1 100644 --- a/internal/service/organizations/resource_policy_test.go +++ b/internal/service/organizations/resource_policy_test.go @@ -38,7 +38,7 @@ func testAccResourcePolicy_basic(t *testing.T) { Config: testAccResourcePolicyConfig_basic(), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckResourcePolicyExists(ctx, resourceName, &policy), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "organizations", regexache.MustCompile("resourcepolicy/o-.+/rp-.+$")), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "organizations", regexache.MustCompile("resourcepolicy/o-.+/rp-.+$")), resource.TestCheckResourceAttrSet(resourceName, names.AttrContent), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), diff --git a/internal/service/organizations/service_endpoints_gen_test.go b/internal/service/organizations/service_endpoints_gen_test.go index a7f9700896eb..ff4b9b31a5d0 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/pipeline_test.go b/internal/service/osis/pipeline_test.go index 6ac45bb47280..24e8d0061237 100644 --- a/internal/service/osis/pipeline_test.go +++ b/internal/service/osis/pipeline_test.go @@ -47,7 +47,7 @@ func TestAccOpenSearchIngestionPipeline_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "log_publishing_options.#", "0"), resource.TestCheckResourceAttr(resourceName, "max_units", "1"), resource.TestCheckResourceAttr(resourceName, "min_units", "1"), - acctest.MatchResourceAttrRegionalARN(resourceName, "pipeline_arn", "osis", regexache.MustCompile(`pipeline/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, "pipeline_arn", "osis", regexache.MustCompile(`pipeline/.+$`)), resource.TestCheckResourceAttrSet(resourceName, "pipeline_configuration_body"), resource.TestCheckResourceAttr(resourceName, "pipeline_name", rName), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), diff --git a/internal/service/osis/service_endpoints_gen_test.go b/internal/service/osis/service_endpoints_gen_test.go index 88ae205b5013..de95d29fa995 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/outpost_asset_data_source_test.go b/internal/service/outposts/outpost_asset_data_source_test.go index 68ebd45181cb..d1f50453e1c0 100644 --- a/internal/service/outposts/outpost_asset_data_source_test.go +++ b/internal/service/outposts/outpost_asset_data_source_test.go @@ -24,7 +24,7 @@ func TestAccOutpostsAssetDataSource_basic(t *testing.T) { { Config: testAccOutpostAssetDataSourceConfig_basic(), Check: resource.ComposeTestCheckFunc( - acctest.MatchResourceAttrRegionalARN(dataSourceName, names.AttrARN, "outposts", regexache.MustCompile(`outpost/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, dataSourceName, names.AttrARN, "outposts", regexache.MustCompile(`outpost/.+`)), resource.TestMatchResourceAttr(dataSourceName, "asset_id", regexache.MustCompile(`^(\w+)$`)), resource.TestCheckResourceAttrSet(dataSourceName, "asset_type"), resource.TestMatchResourceAttr(dataSourceName, "rack_elevation", regexache.MustCompile(`^[\S \n]+$`)), diff --git a/internal/service/outposts/outpost_assets_data_source_test.go b/internal/service/outposts/outpost_assets_data_source_test.go index 210616ec8cd3..199049d4aa13 100644 --- a/internal/service/outposts/outpost_assets_data_source_test.go +++ b/internal/service/outposts/outpost_assets_data_source_test.go @@ -31,7 +31,7 @@ func TestAccOutpostsAssetsDataSource_id(t *testing.T) { { Config: testAccOutpostAssetsDataSourceConfig_id(), Check: resource.ComposeTestCheckFunc( - acctest.MatchResourceAttrRegionalARN(dataSourceName, names.AttrARN, "outposts", regexache.MustCompile(`outpost/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, dataSourceName, names.AttrARN, "outposts", regexache.MustCompile(`outpost/.+`)), ), }, }, diff --git a/internal/service/outposts/outposts_data_source.go b/internal/service/outposts/outposts_data_source.go index 02e5fbf9ec5e..27e02009600d 100644 --- a/internal/service/outposts/outposts_data_source.go +++ b/internal/service/outposts/outposts_data_source.go @@ -101,7 +101,7 @@ func dataSourceOutpostsRead(ctx context.Context, d *schema.ResourceData, meta in return sdkdiag.AppendErrorf(diags, "setting ids: %s", err) } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) return diags } diff --git a/internal/service/outposts/service_endpoints_gen_test.go b/internal/service/outposts/service_endpoints_gen_test.go index 7eb501943c29..1f5a9e58ca31 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/outposts/site_data_source_test.go b/internal/service/outposts/site_data_source_test.go index fbfcbc66ee49..14d011a0c815 100644 --- a/internal/service/outposts/site_data_source_test.go +++ b/internal/service/outposts/site_data_source_test.go @@ -25,7 +25,7 @@ func TestAccOutpostsSiteDataSource_id(t *testing.T) { { Config: testAccSiteDataSourceConfig_id(), Check: resource.ComposeTestCheckFunc( - acctest.CheckResourceAttrAccountID(dataSourceName, names.AttrAccountID), + acctest.CheckResourceAttrAccountID(ctx, dataSourceName, names.AttrAccountID), resource.TestCheckResourceAttrSet(dataSourceName, names.AttrDescription), resource.TestMatchResourceAttr(dataSourceName, names.AttrID, regexache.MustCompile(`^os-.+$`)), resource.TestMatchResourceAttr(dataSourceName, names.AttrName, regexache.MustCompile(`^.+$`)), diff --git a/internal/service/outposts/sites_data_source.go b/internal/service/outposts/sites_data_source.go index 4896b1a3e635..103e5d308a15 100644 --- a/internal/service/outposts/sites_data_source.go +++ b/internal/service/outposts/sites_data_source.go @@ -55,7 +55,7 @@ func dataSourceSitesRead(ctx context.Context, d *schema.ResourceData, meta inter return sdkdiag.AppendErrorf(diags, "setting ids: %s", err) } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) return diags } diff --git a/internal/service/paymentcryptography/key_test.go b/internal/service/paymentcryptography/key_test.go index 87eb2e3cef97..af0ec531766c 100644 --- a/internal/service/paymentcryptography/key_test.go +++ b/internal/service/paymentcryptography/key_test.go @@ -48,7 +48,7 @@ func TestAccPaymentCryptographyKey_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckKeyExists(ctx, resourceName, &key), resource.TestCheckResourceAttr(resourceName, names.AttrEnabled, acctest.CtTrue), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "payment-cryptography", regexache.MustCompile(`key/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "payment-cryptography", regexache.MustCompile(`key/.+`)), ), }, { @@ -88,7 +88,7 @@ func TestAccPaymentCryptographyKey_tags(t *testing.T) { resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "2"), resource.TestCheckResourceAttr(resourceName, "tags.Name", rName), resource.TestCheckResourceAttr(resourceName, "tags.Other", "Value"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "payment-cryptography", regexache.MustCompile(`key/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "payment-cryptography", regexache.MustCompile(`key/.+`)), ), }, { @@ -106,7 +106,7 @@ func TestAccPaymentCryptographyKey_tags(t *testing.T) { resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "2"), resource.TestCheckResourceAttr(resourceName, "tags.Name2", rName), resource.TestCheckResourceAttr(resourceName, "tags.Other", "Value2"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "payment-cryptography", regexache.MustCompile(`key/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "payment-cryptography", regexache.MustCompile(`key/.+`)), ), }, }, @@ -137,7 +137,7 @@ func TestAccPaymentCryptographyKey_update(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckKeyExists(ctx, resourceName, &key1), resource.TestCheckResourceAttr(resourceName, names.AttrEnabled, acctest.CtTrue), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "payment-cryptography", regexache.MustCompile(`key/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "payment-cryptography", regexache.MustCompile(`key/.+`)), ), }, { @@ -152,7 +152,7 @@ func TestAccPaymentCryptographyKey_update(t *testing.T) { testAccCheckKeyExists(ctx, resourceName, &key2), testAccCheckKeyNotRecreated(&key1, &key2), resource.TestCheckResourceAttr(resourceName, names.AttrEnabled, acctest.CtFalse), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "payment-cryptography", regexache.MustCompile(`key/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "payment-cryptography", regexache.MustCompile(`key/.+`)), ), }, { @@ -161,7 +161,7 @@ func TestAccPaymentCryptographyKey_update(t *testing.T) { testAccCheckKeyExists(ctx, resourceName, &key3), testAccCheckKeyNotRecreated(&key2, &key3), resource.TestCheckResourceAttr(resourceName, names.AttrEnabled, acctest.CtTrue), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "payment-cryptography", regexache.MustCompile(`key/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "payment-cryptography", regexache.MustCompile(`key/.+`)), ), }, }, diff --git a/internal/service/pcaconnectorad/service_endpoints_gen_test.go b/internal/service/pcaconnectorad/service_endpoints_gen_test.go index 902131dd5cf6..4294452fa254 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 81d9ad95d6b3..d3537097fcda 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 b077f7e1fdd7..5a25cbf1312c 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 08f908915ce3..557df08cc897 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/pipe_test.go b/internal/service/pipes/pipe_test.go index c2209d7ae4ce..ed7240b270e8 100644 --- a/internal/service/pipes/pipe_test.go +++ b/internal/service/pipes/pipe_test.go @@ -44,7 +44,7 @@ func TestAccPipesPipe_basicSQS(t *testing.T) { Config: testAccPipeConfig_basicSQS(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckPipeExists(ctx, resourceName, &pipe), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "pipes", regexache.MustCompile(regexp.QuoteMeta(`pipe/`+rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "pipes", regexache.MustCompile(regexp.QuoteMeta(`pipe/`+rName))), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "Managed by Terraform"), resource.TestCheckResourceAttr(resourceName, "desired_state", "RUNNING"), resource.TestCheckResourceAttr(resourceName, "enrichment", ""), @@ -332,7 +332,7 @@ func TestAccPipesPipe_logConfiguration_cloudwatchLogsLogDestination(t *testing.T Config: testAccPipeConfig_logConfiguration_cloudwatchLogsLogDestination(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckPipeExists(ctx, resourceName, &pipe), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "pipes", regexache.MustCompile(regexp.QuoteMeta(`pipe/`+rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "pipes", regexache.MustCompile(regexp.QuoteMeta(`pipe/`+rName))), resource.TestCheckResourceAttr(resourceName, "log_configuration.#", "1"), resource.TestCheckResourceAttr(resourceName, "log_configuration.0.level", "INFO"), resource.TestCheckResourceAttr(resourceName, "log_configuration.0.cloudwatch_logs_log_destination.#", "1"), @@ -368,7 +368,7 @@ func TestAccPipesPipe_update_logConfiguration_cloudwatchLogsLogDestination(t *te Config: testAccPipeConfig_logConfiguration_cloudwatchLogsLogDestination(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckPipeExists(ctx, resourceName, &pipe), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "pipes", regexache.MustCompile(regexp.QuoteMeta(`pipe/`+rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "pipes", regexache.MustCompile(regexp.QuoteMeta(`pipe/`+rName))), resource.TestCheckResourceAttr(resourceName, "log_configuration.#", "1"), resource.TestCheckResourceAttr(resourceName, "log_configuration.0.level", "INFO"), resource.TestCheckResourceAttr(resourceName, "log_configuration.0.cloudwatch_logs_log_destination.#", "1"), @@ -384,7 +384,7 @@ func TestAccPipesPipe_update_logConfiguration_cloudwatchLogsLogDestination(t *te Config: testAccPipeConfig_logConfiguration_update_cloudwatchLogsLogDestination(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckPipeExists(ctx, resourceName, &pipe), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "pipes", regexache.MustCompile(regexp.QuoteMeta(`pipe/`+rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "pipes", regexache.MustCompile(regexp.QuoteMeta(`pipe/`+rName))), resource.TestCheckResourceAttr(resourceName, "log_configuration.#", "1"), resource.TestCheckResourceAttr(resourceName, "log_configuration.0.level", "ERROR"), resource.TestCheckResourceAttr(resourceName, "log_configuration.0.cloudwatch_logs_log_destination.#", "1"), @@ -415,7 +415,7 @@ func TestAccPipesPipe_logConfiguration_includeExecutionData(t *testing.T) { Config: testAccPipeConfig_logConfiguration_includeExecutionData(rName, "null"), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckPipeExists(ctx, resourceName, &pipe), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "pipes", regexache.MustCompile(regexp.QuoteMeta(`pipe/`+rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "pipes", regexache.MustCompile(regexp.QuoteMeta(`pipe/`+rName))), resource.TestCheckResourceAttr(resourceName, "log_configuration.#", "1"), resource.TestCheckResourceAttr(resourceName, "log_configuration.0.include_execution_data.#", "0"), ), @@ -429,7 +429,7 @@ func TestAccPipesPipe_logConfiguration_includeExecutionData(t *testing.T) { Config: testAccPipeConfig_logConfiguration_includeExecutionData(rName, "[\"ALL\"]"), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckPipeExists(ctx, resourceName, &pipe), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "pipes", regexache.MustCompile(regexp.QuoteMeta(`pipe/`+rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "pipes", regexache.MustCompile(regexp.QuoteMeta(`pipe/`+rName))), resource.TestCheckResourceAttr(resourceName, "log_configuration.#", "1"), resource.TestCheckResourceAttr(resourceName, "log_configuration.0.include_execution_data.#", "1"), resource.TestCheckResourceAttr(resourceName, "log_configuration.0.include_execution_data.0", "ALL"), @@ -444,7 +444,7 @@ func TestAccPipesPipe_logConfiguration_includeExecutionData(t *testing.T) { Config: testAccPipeConfig_logConfiguration_includeExecutionData(rName, "[]"), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckPipeExists(ctx, resourceName, &pipe), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "pipes", regexache.MustCompile(regexp.QuoteMeta(`pipe/`+rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "pipes", regexache.MustCompile(regexp.QuoteMeta(`pipe/`+rName))), resource.TestCheckResourceAttr(resourceName, "log_configuration.#", "1"), resource.TestCheckResourceAttr(resourceName, "log_configuration.0.include_execution_data.#", "0"), ), @@ -865,7 +865,7 @@ func TestAccPipesPipe_kinesisSourceAndTarget(t *testing.T) { Config: testAccPipeConfig_basicKinesis(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckPipeExists(ctx, resourceName, &pipe), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "pipes", regexache.MustCompile(regexp.QuoteMeta(`pipe/`+rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "pipes", regexache.MustCompile(regexp.QuoteMeta(`pipe/`+rName))), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "Managed by Terraform"), resource.TestCheckResourceAttr(resourceName, "desired_state", "RUNNING"), resource.TestCheckResourceAttr(resourceName, "enrichment", ""), @@ -918,7 +918,7 @@ func TestAccPipesPipe_kinesisSourceAndTarget(t *testing.T) { Config: testAccPipeConfig_updateKinesis(rName, 10), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckPipeExists(ctx, resourceName, &pipe), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "pipes", regexache.MustCompile(regexp.QuoteMeta(`pipe/`+rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "pipes", regexache.MustCompile(regexp.QuoteMeta(`pipe/`+rName))), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "Managed by Terraform"), resource.TestCheckResourceAttr(resourceName, "desired_state", "RUNNING"), resource.TestCheckResourceAttr(resourceName, "enrichment", ""), @@ -986,7 +986,7 @@ func TestAccPipesPipe_dynamoDBSourceCloudWatchLogsTarget(t *testing.T) { Config: testAccPipeConfig_basicDynamoDBSourceCloudWatchLogsTarget(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckPipeExists(ctx, resourceName, &pipe), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "pipes", regexache.MustCompile(regexp.QuoteMeta(`pipe/`+rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "pipes", regexache.MustCompile(regexp.QuoteMeta(`pipe/`+rName))), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "Managed by Terraform"), resource.TestCheckResourceAttr(resourceName, "desired_state", "RUNNING"), resource.TestCheckResourceAttr(resourceName, "enrichment", ""), @@ -1058,7 +1058,7 @@ func TestAccPipesPipe_activeMQSourceStepFunctionTarget(t *testing.T) { Config: testAccPipeConfig_basicActiveMQSourceStepFunctionTarget(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckPipeExists(ctx, resourceName, &pipe), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "pipes", regexache.MustCompile(regexp.QuoteMeta(`pipe/`+rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "pipes", regexache.MustCompile(regexp.QuoteMeta(`pipe/`+rName))), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "Managed by Terraform"), resource.TestCheckResourceAttr(resourceName, "desired_state", "RUNNING"), resource.TestCheckResourceAttr(resourceName, "enrichment", ""), @@ -1126,7 +1126,7 @@ func TestAccPipesPipe_rabbitMQSourceEventBusTarget(t *testing.T) { Config: testAccPipeConfig_basicRabbitMQSourceEventBusTarget(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckPipeExists(ctx, resourceName, &pipe), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "pipes", regexache.MustCompile(regexp.QuoteMeta(`pipe/`+rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "pipes", regexache.MustCompile(regexp.QuoteMeta(`pipe/`+rName))), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "Managed by Terraform"), resource.TestCheckResourceAttr(resourceName, "desired_state", "RUNNING"), resource.TestCheckResourceAttr(resourceName, "enrichment", ""), @@ -1184,7 +1184,7 @@ func TestAccPipesPipe_mskSourceHTTPTarget(t *testing.T) { Config: testAccPipeConfig_basicMSKSourceHTTPTarget(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckPipeExists(ctx, resourceName, &pipe), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "pipes", regexache.MustCompile(regexp.QuoteMeta(`pipe/`+rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "pipes", regexache.MustCompile(regexp.QuoteMeta(`pipe/`+rName))), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "Managed by Terraform"), resource.TestCheckResourceAttr(resourceName, "desired_state", "RUNNING"), resource.TestCheckResourceAttr(resourceName, "enrichment", ""), @@ -1260,7 +1260,7 @@ func TestAccPipesPipe_selfManagedKafkaSourceLambdaFunctionTarget(t *testing.T) { Config: testAccPipeConfig_basicSelfManagedKafkaSourceLambdaFunctionTarget(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckPipeExists(ctx, resourceName, &pipe), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "pipes", regexache.MustCompile(regexp.QuoteMeta(`pipe/`+rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "pipes", regexache.MustCompile(regexp.QuoteMeta(`pipe/`+rName))), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "Managed by Terraform"), resource.TestCheckResourceAttr(resourceName, "desired_state", "RUNNING"), resource.TestCheckResourceAttr(resourceName, "enrichment", ""), @@ -1335,7 +1335,7 @@ func TestAccPipesPipe_sqsSourceRedshiftTarget(t *testing.T) { Config: testAccPipeConfig_basicSQSSourceRedshiftTarget(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckPipeExists(ctx, resourceName, &pipe), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "pipes", regexache.MustCompile(regexp.QuoteMeta(`pipe/`+rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "pipes", regexache.MustCompile(regexp.QuoteMeta(`pipe/`+rName))), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "Managed by Terraform"), resource.TestCheckResourceAttr(resourceName, "desired_state", "RUNNING"), resource.TestCheckResourceAttr(resourceName, "enrichment", ""), @@ -1407,7 +1407,7 @@ func TestAccPipesPipe_SourceSageMakerTarget(t *testing.T) { Config: testAccPipeConfig_basicSQSSourceSageMakerTarget(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckPipeExists(ctx, resourceName, &pipe), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "pipes", regexache.MustCompile(regexp.QuoteMeta(`pipe/`+rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "pipes", regexache.MustCompile(regexp.QuoteMeta(`pipe/`+rName))), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "Managed by Terraform"), resource.TestCheckResourceAttr(resourceName, "desired_state", "RUNNING"), resource.TestCheckResourceAttr(resourceName, "enrichment", ""), @@ -1474,7 +1474,7 @@ func TestAccPipesPipe_sqsSourceBatchJobTarget(t *testing.T) { Config: testAccPipeConfig_basicSQSSourceBatchJobTarget(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckPipeExists(ctx, resourceName, &pipe), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "pipes", regexache.MustCompile(regexp.QuoteMeta(`pipe/`+rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "pipes", regexache.MustCompile(regexp.QuoteMeta(`pipe/`+rName))), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "Managed by Terraform"), resource.TestCheckResourceAttr(resourceName, "desired_state", "RUNNING"), resource.TestCheckResourceAttr(resourceName, "enrichment", ""), @@ -1558,7 +1558,7 @@ func TestAccPipesPipe_sqsSourceECSTaskTarget(t *testing.T) { Config: testAccPipeConfig_basicSQSSourceECSTaskTarget(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckPipeExists(ctx, resourceName, &pipe), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "pipes", regexache.MustCompile(regexp.QuoteMeta(`pipe/`+rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "pipes", regexache.MustCompile(regexp.QuoteMeta(`pipe/`+rName))), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "Managed by Terraform"), resource.TestCheckResourceAttr(resourceName, "desired_state", "RUNNING"), resource.TestCheckResourceAttr(resourceName, "enrichment", ""), diff --git a/internal/service/pipes/service_endpoints_gen_test.go b/internal/service/pipes/service_endpoints_gen_test.go index f86efd854b59..c7a08f24fd8c 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 9530d3f7cec7..0b0315e8f512 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/polly/voices_data_source.go b/internal/service/polly/voices_data_source.go index c7634746c841..ca99c29ed7b9 100644 --- a/internal/service/polly/voices_data_source.go +++ b/internal/service/polly/voices_data_source.go @@ -95,7 +95,7 @@ func (d *dataSourceVoices) Read(ctx context.Context, req datasource.ReadRequest, if resp.Diagnostics.HasError() { return } - data.ID = types.StringValue(d.Meta().AccountID) + data.ID = types.StringValue(d.Meta().AccountID(ctx)) input := &polly.DescribeVoicesInput{} resp.Diagnostics.Append(flex.Expand(ctx, data, input)...) diff --git a/internal/service/pricing/product_data_source_test.go b/internal/service/pricing/product_data_source_test.go index 193cb67686d3..5ae6a314f3cd 100644 --- a/internal/service/pricing/product_data_source_test.go +++ b/internal/service/pricing/product_data_source_test.go @@ -6,6 +6,7 @@ package pricing_test import ( "testing" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-provider-aws/internal/acctest" "github.com/hashicorp/terraform-provider-aws/names" @@ -18,7 +19,7 @@ func TestAccPricingProductDataSource_ec2(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckRegion(t, names.USEast1RegionID, names.APSouth1RegionID) + acctest.PreCheckRegion(t, endpoints.UsEast1RegionID, endpoints.ApSouth1RegionID) }, ErrorCheck: acctest.ErrorCheck(t, names.PricingServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, @@ -40,7 +41,7 @@ func TestAccPricingProductDataSource_redshift(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckRegion(t, names.USEast1RegionID, names.APSouth1RegionID) + acctest.PreCheckRegion(t, endpoints.UsEast1RegionID, endpoints.ApSouth1RegionID) }, ErrorCheck: acctest.ErrorCheck(t, names.PricingServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, diff --git a/internal/service/pricing/service_endpoints_gen_test.go b/internal/service/pricing/service_endpoints_gen_test.go index 961af20d0c57..7b1f6eff6034 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 f676e02d47f5..1d5142f28837 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/ledger_test.go b/internal/service/qldb/ledger_test.go index a215b4c78df2..d35507456369 100644 --- a/internal/service/qldb/ledger_test.go +++ b/internal/service/qldb/ledger_test.go @@ -36,7 +36,7 @@ func TestAccQLDBLedger_basic(t *testing.T) { Config: testAccLedgerConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckLedgerExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "qldb", regexache.MustCompile(`ledger/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "qldb", regexache.MustCompile(`ledger/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrDeletionProtection, acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, names.AttrKMSKey, ""), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), diff --git a/internal/service/qldb/service_endpoints_gen_test.go b/internal/service/qldb/service_endpoints_gen_test.go index 80e72aca36f4..be4bc24d33ec 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/qldb/stream_test.go b/internal/service/qldb/stream_test.go index 6975082b332a..06afaecdd87c 100644 --- a/internal/service/qldb/stream_test.go +++ b/internal/service/qldb/stream_test.go @@ -36,7 +36,7 @@ func TestAccQLDBStream_basic(t *testing.T) { Config: testAccStreamConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckStreamExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "qldb", regexache.MustCompile(`stream/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "qldb", regexache.MustCompile(`stream/.+`)), resource.TestCheckResourceAttr(resourceName, "exclusive_end_time", ""), resource.TestCheckResourceAttrSet(resourceName, "inclusive_start_time"), resource.TestCheckResourceAttr(resourceName, "kinesis_configuration.#", "1"), diff --git a/internal/service/quicksight/account_subscription.go b/internal/service/quicksight/account_subscription.go index d2760ed45f27..6f0407f5fc58 100644 --- a/internal/service/quicksight/account_subscription.go +++ b/internal/service/quicksight/account_subscription.go @@ -142,7 +142,7 @@ func resourceAccountSubscriptionCreate(ctx context.Context, d *schema.ResourceDa var diags diag.Diagnostics conn := meta.(*conns.AWSClient).QuickSightClient(ctx) - awsAccountID := meta.(*conns.AWSClient).AccountID + awsAccountID := meta.(*conns.AWSClient).AccountID(ctx) if v, ok := d.GetOk(names.AttrAWSAccountID); ok { awsAccountID = v.(string) } diff --git a/internal/service/quicksight/analysis.go b/internal/service/quicksight/analysis.go index 95bce91748af..31c5b128ffa4 100644 --- a/internal/service/quicksight/analysis.go +++ b/internal/service/quicksight/analysis.go @@ -123,7 +123,7 @@ func resourceAnalysisCreate(ctx context.Context, d *schema.ResourceData, meta in var diags diag.Diagnostics conn := meta.(*conns.AWSClient).QuickSightClient(ctx) - awsAccountID := meta.(*conns.AWSClient).AccountID + awsAccountID := meta.(*conns.AWSClient).AccountID(ctx) if v, ok := d.GetOk(names.AttrAWSAccountID); ok { awsAccountID = v.(string) } diff --git a/internal/service/quicksight/analysis_data_source.go b/internal/service/quicksight/analysis_data_source.go index 2e98efc291de..bc3c572b2d46 100644 --- a/internal/service/quicksight/analysis_data_source.go +++ b/internal/service/quicksight/analysis_data_source.go @@ -75,7 +75,7 @@ func dataSourceAnalysisRead(ctx context.Context, d *schema.ResourceData, meta in var diags diag.Diagnostics conn := meta.(*conns.AWSClient).QuickSightClient(ctx) - awsAccountID := meta.(*conns.AWSClient).AccountID + awsAccountID := meta.(*conns.AWSClient).AccountID(ctx) if v, ok := d.GetOk(names.AttrAWSAccountID); ok { awsAccountID = v.(string) } diff --git a/internal/service/quicksight/analysis_test.go b/internal/service/quicksight/analysis_test.go index 54dd607a55e9..47112b0783ba 100644 --- a/internal/service/quicksight/analysis_test.go +++ b/internal/service/quicksight/analysis_test.go @@ -103,7 +103,7 @@ func TestAccQuickSightAnalysis_sourceEntity(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "analysis_id", rId), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, names.AttrStatus, string(awstypes.ResourceStatusCreationSuccessful)), - acctest.CheckResourceAttrRegionalARN(resourceName, "source_entity.0.source_template.0.arn", "quicksight", fmt.Sprintf("template/%s", sourceId)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, "source_entity.0.source_template.0.arn", "quicksight", fmt.Sprintf("template/%s", sourceId)), ), }, { diff --git a/internal/service/quicksight/dashboard.go b/internal/service/quicksight/dashboard.go index 5929ac559ce9..8512aa8c908d 100644 --- a/internal/service/quicksight/dashboard.go +++ b/internal/service/quicksight/dashboard.go @@ -130,7 +130,7 @@ func resourceDashboardCreate(ctx context.Context, d *schema.ResourceData, meta i var diags diag.Diagnostics conn := meta.(*conns.AWSClient).QuickSightClient(ctx) - awsAccountID := meta.(*conns.AWSClient).AccountID + awsAccountID := meta.(*conns.AWSClient).AccountID(ctx) if v, ok := d.GetOk(names.AttrAWSAccountID); ok { awsAccountID = v.(string) } diff --git a/internal/service/quicksight/dashboard_test.go b/internal/service/quicksight/dashboard_test.go index 78eb7008c631..e1ca2a60a61e 100644 --- a/internal/service/quicksight/dashboard_test.go +++ b/internal/service/quicksight/dashboard_test.go @@ -103,7 +103,7 @@ func TestAccQuickSightDashboard_sourceEntity(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "dashboard_id", rId), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, names.AttrStatus, string(awstypes.ResourceStatusCreationSuccessful)), - acctest.CheckResourceAttrRegionalARN(resourceName, "source_entity.0.source_template.0.arn", "quicksight", fmt.Sprintf("template/%s", sourceId)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, "source_entity.0.source_template.0.arn", "quicksight", fmt.Sprintf("template/%s", sourceId)), ), }, { diff --git a/internal/service/quicksight/data_set.go b/internal/service/quicksight/data_set.go index dc22f0fccd6e..3ff6b23668ff 100644 --- a/internal/service/quicksight/data_set.go +++ b/internal/service/quicksight/data_set.go @@ -104,7 +104,7 @@ func resourceDataSetCreate(ctx context.Context, d *schema.ResourceData, meta int var diags diag.Diagnostics conn := meta.(*conns.AWSClient).QuickSightClient(ctx) - awsAccountID := meta.(*conns.AWSClient).AccountID + awsAccountID := meta.(*conns.AWSClient).AccountID(ctx) if v, ok := d.GetOk(names.AttrAWSAccountID); ok { awsAccountID = v.(string) } diff --git a/internal/service/quicksight/data_set_data_source.go b/internal/service/quicksight/data_set_data_source.go index e9716d49ffae..603c5ea50cec 100644 --- a/internal/service/quicksight/data_set_data_source.go +++ b/internal/service/quicksight/data_set_data_source.go @@ -73,7 +73,7 @@ func dataSourceDataSetRead(ctx context.Context, d *schema.ResourceData, meta int var diags diag.Diagnostics conn := meta.(*conns.AWSClient).QuickSightClient(ctx) - awsAccountID := meta.(*conns.AWSClient).AccountID + awsAccountID := meta.(*conns.AWSClient).AccountID(ctx) if v, ok := d.GetOk(names.AttrAWSAccountID); ok { awsAccountID = v.(string) } diff --git a/internal/service/quicksight/data_set_test.go b/internal/service/quicksight/data_set_test.go index 011048de8e27..cff1166ef250 100644 --- a/internal/service/quicksight/data_set_test.go +++ b/internal/service/quicksight/data_set_test.go @@ -40,7 +40,7 @@ func TestAccQuickSightDataSet_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckDataSetExists(ctx, resourceName, &dataSet), resource.TestCheckResourceAttr(resourceName, "data_set_id", rId), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "quicksight", fmt.Sprintf("dataset/%s", rId)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "quicksight", fmt.Sprintf("dataset/%s", rId)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "import_mode", "SPICE"), resource.TestCheckResourceAttr(resourceName, "physical_table_map.#", "1"), @@ -465,7 +465,7 @@ func TestAccQuickSightDataSet_noPhysicalTableMap(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckDataSetExists(ctx, resourceName, &dataSet), resource.TestCheckResourceAttr(resourceName, "data_set_id", rId), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "quicksight", fmt.Sprintf("dataset/%s", rId)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "quicksight", fmt.Sprintf("dataset/%s", rId)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "import_mode", "SPICE"), resource.TestCheckResourceAttr(resourceName, "physical_table_map.#", "0"), diff --git a/internal/service/quicksight/data_source.go b/internal/service/quicksight/data_source.go index 30718f93f140..86d63b426a6f 100644 --- a/internal/service/quicksight/data_source.go +++ b/internal/service/quicksight/data_source.go @@ -93,7 +93,7 @@ func resourceDataSourceCreate(ctx context.Context, d *schema.ResourceData, meta var diags diag.Diagnostics conn := meta.(*conns.AWSClient).QuickSightClient(ctx) - awsAccountID := meta.(*conns.AWSClient).AccountID + awsAccountID := meta.(*conns.AWSClient).AccountID(ctx) if v, ok := d.GetOk(names.AttrAWSAccountID); ok { awsAccountID = v.(string) } diff --git a/internal/service/quicksight/data_source_test.go b/internal/service/quicksight/data_source_test.go index 47b7570de962..ee7062b3bc7e 100644 --- a/internal/service/quicksight/data_source_test.go +++ b/internal/service/quicksight/data_source_test.go @@ -39,7 +39,7 @@ func TestAccQuickSightDataSource_basic(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckDataSourceExists(ctx, resourceName, &dataSource), resource.TestCheckResourceAttr(resourceName, "data_source_id", rId), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "quicksight", fmt.Sprintf("datasource/%s", rId)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "quicksight", fmt.Sprintf("datasource/%s", rId)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "parameters.#", "1"), resource.TestCheckResourceAttr(resourceName, "parameters.0.amazon_elasticsearch.#", "0"), diff --git a/internal/service/quicksight/folder.go b/internal/service/quicksight/folder.go index fe224cbdc90a..ee9cd67f4890 100644 --- a/internal/service/quicksight/folder.go +++ b/internal/service/quicksight/folder.go @@ -119,7 +119,7 @@ func resourceFolderCreate(ctx context.Context, d *schema.ResourceData, meta inte var diags diag.Diagnostics conn := meta.(*conns.AWSClient).QuickSightClient(ctx) - awsAccountID := meta.(*conns.AWSClient).AccountID + awsAccountID := meta.(*conns.AWSClient).AccountID(ctx) if v, ok := d.GetOk(names.AttrAWSAccountID); ok { awsAccountID = v.(string) } diff --git a/internal/service/quicksight/folder_membership.go b/internal/service/quicksight/folder_membership.go index 4a2de832d393..a2e3a8fe794c 100644 --- a/internal/service/quicksight/folder_membership.go +++ b/internal/service/quicksight/folder_membership.go @@ -95,7 +95,7 @@ func (r *folderMembershipResource) Create(ctx context.Context, req resource.Crea } if plan.AWSAccountID.IsUnknown() || plan.AWSAccountID.IsNull() { - plan.AWSAccountID = types.StringValue(r.Meta().AccountID) + plan.AWSAccountID = types.StringValue(r.Meta().AccountID(ctx)) } awsAccountID, folderID, memberType, memberID := flex.StringValueFromFramework(ctx, plan.AWSAccountID), flex.StringValueFromFramework(ctx, plan.FolderID), flex.StringValueFromFramework(ctx, plan.MemberType), flex.StringValueFromFramework(ctx, plan.MemberID) in := &quicksight.CreateFolderMembershipInput{ diff --git a/internal/service/quicksight/folder_test.go b/internal/service/quicksight/folder_test.go index d6ddafe0ab2a..f1c25f823438 100644 --- a/internal/service/quicksight/folder_test.go +++ b/internal/service/quicksight/folder_test.go @@ -44,7 +44,7 @@ func TestAccQuickSightFolder_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "folder_id", rId), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "folder_type", string(awstypes.FolderTypeShared)), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "quicksight", fmt.Sprintf("folder/%s", rId)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "quicksight", fmt.Sprintf("folder/%s", rId)), ), }, { @@ -171,7 +171,7 @@ func TestAccQuickSightFolder_parentFolder(t *testing.T) { Config: testAccFolderConfig_parentFolder(rId, rName, parentId1, parentName1), Check: resource.ComposeTestCheckFunc( testAccCheckFolderExists(ctx, resourceName, &folder), - acctest.CheckResourceAttrRegionalARN(resourceName, "parent_folder_arn", "quicksight", fmt.Sprintf("folder/%s", parentId1)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, "parent_folder_arn", "quicksight", fmt.Sprintf("folder/%s", parentId1)), ), }, { @@ -183,7 +183,7 @@ func TestAccQuickSightFolder_parentFolder(t *testing.T) { Config: testAccFolderConfig_parentFolder(rId, rName, parentId2, parentName2), Check: resource.ComposeTestCheckFunc( testAccCheckFolderExists(ctx, resourceName, &folder), - acctest.CheckResourceAttrRegionalARN(resourceName, "parent_folder_arn", "quicksight", fmt.Sprintf("folder/%s", parentId2)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, "parent_folder_arn", "quicksight", fmt.Sprintf("folder/%s", parentId2)), ), }, }, @@ -214,7 +214,7 @@ func TestAccQuickSightFolder_parentFolderNested(t *testing.T) { Config: testAccFolderConfig_parentFolder(rId, rName, parentId1, parentName1), Check: resource.ComposeTestCheckFunc( testAccCheckFolderExists(ctx, resourceName, &folder), - acctest.CheckResourceAttrRegionalARN(resourceName, "parent_folder_arn", "quicksight", fmt.Sprintf("folder/%s", parentId1)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, "parent_folder_arn", "quicksight", fmt.Sprintf("folder/%s", parentId1)), ), }, { @@ -226,7 +226,7 @@ func TestAccQuickSightFolder_parentFolderNested(t *testing.T) { Config: testAccFolderConfig_parentFolder2(rId, rName, parentId1, parentName1, parentId2, parentName2), Check: resource.ComposeTestCheckFunc( testAccCheckFolderExists(ctx, resourceName, &folder), - acctest.CheckResourceAttrRegionalARN(resourceName, "parent_folder_arn", "quicksight", fmt.Sprintf("folder/%s", parentId2)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, "parent_folder_arn", "quicksight", fmt.Sprintf("folder/%s", parentId2)), ), }, }, diff --git a/internal/service/quicksight/group.go b/internal/service/quicksight/group.go index 5e6bc9ef664e..48cc0d7c3c92 100644 --- a/internal/service/quicksight/group.go +++ b/internal/service/quicksight/group.go @@ -80,7 +80,7 @@ func resourceGroupCreate(ctx context.Context, d *schema.ResourceData, meta inter var diags diag.Diagnostics conn := meta.(*conns.AWSClient).QuickSightClient(ctx) - awsAccountID := meta.(*conns.AWSClient).AccountID + awsAccountID := meta.(*conns.AWSClient).AccountID(ctx) if v, ok := d.GetOk(names.AttrAWSAccountID); ok { awsAccountID = v.(string) } diff --git a/internal/service/quicksight/group_data_source.go b/internal/service/quicksight/group_data_source.go index 718963ebd142..6beab4754702 100644 --- a/internal/service/quicksight/group_data_source.go +++ b/internal/service/quicksight/group_data_source.go @@ -61,7 +61,7 @@ func dataSourceGroupRead(ctx context.Context, d *schema.ResourceData, meta inter var diags diag.Diagnostics conn := meta.(*conns.AWSClient).QuickSightClient(ctx) - awsAccountID := meta.(*conns.AWSClient).AccountID + awsAccountID := meta.(*conns.AWSClient).AccountID(ctx) if v, ok := d.GetOk(names.AttrAWSAccountID); ok { awsAccountID = v.(string) } diff --git a/internal/service/quicksight/group_membership.go b/internal/service/quicksight/group_membership.go index 36de55d3c403..8f0932a11a3f 100644 --- a/internal/service/quicksight/group_membership.go +++ b/internal/service/quicksight/group_membership.go @@ -77,7 +77,7 @@ func resourceGroupMembershipCreate(ctx context.Context, d *schema.ResourceData, var diags diag.Diagnostics conn := meta.(*conns.AWSClient).QuickSightClient(ctx) - awsAccountID := meta.(*conns.AWSClient).AccountID + awsAccountID := meta.(*conns.AWSClient).AccountID(ctx) if v, ok := d.GetOk(names.AttrAWSAccountID); ok { awsAccountID = v.(string) } diff --git a/internal/service/quicksight/group_test.go b/internal/service/quicksight/group_test.go index 961aac61ef0d..b8ad3d5c00fd 100644 --- a/internal/service/quicksight/group_test.go +++ b/internal/service/quicksight/group_test.go @@ -37,7 +37,7 @@ func TestAccQuickSightGroup_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckGroupExists(ctx, resourceName, &group), resource.TestCheckResourceAttr(resourceName, names.AttrGroupName, rName1), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "quicksight", fmt.Sprintf("group/default/%s", rName1)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "quicksight", fmt.Sprintf("group/default/%s", rName1)), ), }, { @@ -45,7 +45,7 @@ func TestAccQuickSightGroup_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckGroupExists(ctx, resourceName, &group), resource.TestCheckResourceAttr(resourceName, names.AttrGroupName, rName2), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "quicksight", fmt.Sprintf("group/default/%s", rName2)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "quicksight", fmt.Sprintf("group/default/%s", rName2)), ), }, { diff --git a/internal/service/quicksight/iam_policy_assignment.go b/internal/service/quicksight/iam_policy_assignment.go index db9bc7d3aed8..1150f16f4d59 100644 --- a/internal/service/quicksight/iam_policy_assignment.go +++ b/internal/service/quicksight/iam_policy_assignment.go @@ -125,7 +125,7 @@ func (r *iamPolicyAssignmentResource) Create(ctx context.Context, req resource.C } if plan.AWSAccountID.IsUnknown() || plan.AWSAccountID.IsNull() { - plan.AWSAccountID = types.StringValue(r.Meta().AccountID) + plan.AWSAccountID = types.StringValue(r.Meta().AccountID(ctx)) } awsAccountID, namespace, assignmentName := flex.StringValueFromFramework(ctx, plan.AWSAccountID), flex.StringValueFromFramework(ctx, plan.Namespace), flex.StringValueFromFramework(ctx, plan.AssignmentName) in := quicksight.CreateIAMPolicyAssignmentInput{ diff --git a/internal/service/quicksight/ingestion.go b/internal/service/quicksight/ingestion.go index 9e224fff2d71..9433e451c288 100644 --- a/internal/service/quicksight/ingestion.go +++ b/internal/service/quicksight/ingestion.go @@ -100,7 +100,7 @@ func (r *ingestionResource) Create(ctx context.Context, req resource.CreateReque } if plan.AWSAccountID.IsUnknown() || plan.AWSAccountID.IsNull() { - plan.AWSAccountID = types.StringValue(r.Meta().AccountID) + plan.AWSAccountID = types.StringValue(r.Meta().AccountID(ctx)) } awsAccountID, dataSetID, ingestionID := flex.StringValueFromFramework(ctx, plan.AWSAccountID), flex.StringValueFromFramework(ctx, plan.DataSetID), flex.StringValueFromFramework(ctx, plan.IngestionID) in := quicksight.CreateIngestionInput{ diff --git a/internal/service/quicksight/ingestion_test.go b/internal/service/quicksight/ingestion_test.go index 09fb5a16d8f9..666e4cb35be3 100644 --- a/internal/service/quicksight/ingestion_test.go +++ b/internal/service/quicksight/ingestion_test.go @@ -41,7 +41,7 @@ func TestAccQuickSightIngestion_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "ingestion_id", rId), resource.TestCheckResourceAttr(resourceName, "ingestion_type", string(awstypes.IngestionTypeFullRefresh)), resource.TestCheckResourceAttrPair(resourceName, "data_set_id", dataSetName, "data_set_id"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "quicksight", fmt.Sprintf("dataset/%[1]s/ingestion/%[1]s", rId)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "quicksight", fmt.Sprintf("dataset/%[1]s/ingestion/%[1]s", rId)), ), }, { diff --git a/internal/service/quicksight/namespace.go b/internal/service/quicksight/namespace.go index 4600c7d8bb95..404f657e0108 100644 --- a/internal/service/quicksight/namespace.go +++ b/internal/service/quicksight/namespace.go @@ -119,7 +119,7 @@ func (r *namespaceResource) Create(ctx context.Context, req resource.CreateReque } if plan.AWSAccountID.IsUnknown() || plan.AWSAccountID.IsNull() { - plan.AWSAccountID = types.StringValue(r.Meta().AccountID) + plan.AWSAccountID = types.StringValue(r.Meta().AccountID(ctx)) } awsAccountID, namespace := flex.StringValueFromFramework(ctx, plan.AWSAccountID), flex.StringValueFromFramework(ctx, plan.Namespace) in := quicksight.CreateNamespaceInput{ diff --git a/internal/service/quicksight/namespace_test.go b/internal/service/quicksight/namespace_test.go index dce3f4408084..270a5a8d7fb9 100644 --- a/internal/service/quicksight/namespace_test.go +++ b/internal/service/quicksight/namespace_test.go @@ -37,7 +37,7 @@ func TestAccQuickSightNamespace_basic(t *testing.T) { testAccCheckNamespaceExists(ctx, resourceName, &namespace), resource.TestCheckResourceAttr(resourceName, names.AttrNamespace, rName), resource.TestCheckResourceAttr(resourceName, "identity_store", string(awstypes.IdentityStoreQuicksight)), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "quicksight", fmt.Sprintf("namespace/%[1]s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "quicksight", fmt.Sprintf("namespace/%[1]s", rName)), ), }, { diff --git a/internal/service/quicksight/refresh_schedule.go b/internal/service/quicksight/refresh_schedule.go index 026568b16f89..d66a7ade014a 100644 --- a/internal/service/quicksight/refresh_schedule.go +++ b/internal/service/quicksight/refresh_schedule.go @@ -216,7 +216,7 @@ func (r *refreshScheduleResource) Create(ctx context.Context, req resource.Creat } if plan.AWSAccountID.IsUnknown() || plan.AWSAccountID.IsNull() { - plan.AWSAccountID = types.StringValue(r.Meta().AccountID) + plan.AWSAccountID = types.StringValue(r.Meta().AccountID(ctx)) } awsAccountID, dataSetID, scheduleID := flex.StringValueFromFramework(ctx, plan.AWSAccountID), flex.StringValueFromFramework(ctx, plan.DataSetID), flex.StringValueFromFramework(ctx, plan.ScheduleID) diff --git a/internal/service/quicksight/refresh_schedule_test.go b/internal/service/quicksight/refresh_schedule_test.go index d727fbe2e056..24eb810ab4ef 100644 --- a/internal/service/quicksight/refresh_schedule_test.go +++ b/internal/service/quicksight/refresh_schedule_test.go @@ -43,7 +43,7 @@ func TestAccQuickSightRefreshSchedule_basic(t *testing.T) { Config: testAccRefreshScheduleConfig_basic(rId, rName, sId), Check: resource.ComposeTestCheckFunc( testAccCheckRefreshScheduleExists(ctx, resourceName, &schedule), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "quicksight", + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "quicksight", fmt.Sprintf("dataset/%s/refresh-schedule/%s", rId, sId)), resource.TestCheckResourceAttr(resourceName, "data_set_id", rId), resource.TestCheckResourceAttr(resourceName, "schedule.#", "1"), @@ -111,7 +111,7 @@ func TestAccQuickSightRefreshSchedule_weeklyRefresh(t *testing.T) { Config: testAccRefreshScheduleConfig_WeeklyRefresh(rId, rName, sId, awstypes.DayOfWeekMonday), Check: resource.ComposeTestCheckFunc( testAccCheckRefreshScheduleExists(ctx, resourceName, &schedule), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "quicksight", + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "quicksight", fmt.Sprintf("dataset/%s/refresh-schedule/%s", rId, sId)), resource.TestCheckResourceAttr(resourceName, "data_set_id", rId), resource.TestCheckResourceAttr(resourceName, "schedule.0.refresh_type", "FULL_REFRESH"), @@ -134,7 +134,7 @@ func TestAccQuickSightRefreshSchedule_weeklyRefresh(t *testing.T) { Config: testAccRefreshScheduleConfig_WeeklyRefresh(rId, rName, sId, awstypes.DayOfWeekWednesday), Check: resource.ComposeTestCheckFunc( testAccCheckRefreshScheduleExists(ctx, resourceName, &schedule), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "quicksight", + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "quicksight", fmt.Sprintf("dataset/%s/refresh-schedule/%s", rId, sId)), resource.TestCheckResourceAttr(resourceName, "data_set_id", rId), resource.TestCheckResourceAttr(resourceName, "schedule.0.refresh_type", "FULL_REFRESH"), @@ -209,7 +209,7 @@ func TestAccQuickSightRefreshSchedule_monthlyRefresh(t *testing.T) { Config: testAccRefreshScheduleConfig_MonthlyRefresh(rId, rName, sId, "15"), Check: resource.ComposeTestCheckFunc( testAccCheckRefreshScheduleExists(ctx, resourceName, &schedule), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "quicksight", + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "quicksight", fmt.Sprintf("dataset/%s/refresh-schedule/%s", rId, sId)), resource.TestCheckResourceAttr(resourceName, "data_set_id", rId), resource.TestCheckResourceAttr(resourceName, "schedule.0.refresh_type", "FULL_REFRESH"), @@ -232,7 +232,7 @@ func TestAccQuickSightRefreshSchedule_monthlyRefresh(t *testing.T) { Config: testAccRefreshScheduleConfig_MonthlyRefresh(rId, rName, sId, "21"), Check: resource.ComposeTestCheckFunc( testAccCheckRefreshScheduleExists(ctx, resourceName, &schedule), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "quicksight", + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "quicksight", fmt.Sprintf("dataset/%s/refresh-schedule/%s", rId, sId)), resource.TestCheckResourceAttr(resourceName, "data_set_id", rId), resource.TestCheckResourceAttr(resourceName, "schedule.0.refresh_type", "FULL_REFRESH"), diff --git a/internal/service/quicksight/service_endpoints_gen_test.go b/internal/service/quicksight/service_endpoints_gen_test.go index b4f929fee6c5..163879b1285c 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/quicksight/sweep.go b/internal/service/quicksight/sweep.go index 347b2c14417c..975f7a1c226a 100644 --- a/internal/service/quicksight/sweep.go +++ b/internal/service/quicksight/sweep.go @@ -70,7 +70,7 @@ func sweepDashboards(region string) error { } conn := client.QuickSightClient(ctx) sweepResources := make([]sweep.Sweepable, 0) - awsAccountID := client.AccountID + awsAccountID := client.AccountID(ctx) input := &quicksight.ListDashboardsInput{ AwsAccountId: aws.String(awsAccountID), } @@ -114,7 +114,7 @@ func sweepDataSets(region string) error { } conn := client.QuickSightClient(ctx) sweepResources := make([]sweep.Sweepable, 0) - awsAccountID := client.AccountID + awsAccountID := client.AccountID(ctx) input := &quicksight.ListDataSetsInput{ AwsAccountId: aws.String(awsAccountID), } @@ -158,7 +158,7 @@ func sweepDataSources(region string) error { } conn := client.QuickSightClient(ctx) sweepResources := make([]sweep.Sweepable, 0) - awsAccountID := client.AccountID + awsAccountID := client.AccountID(ctx) input := &quicksight.ListDataSourcesInput{ AwsAccountId: aws.String(awsAccountID), } @@ -202,7 +202,7 @@ func sweepFolders(region string) error { } conn := client.QuickSightClient(ctx) sweepResources := make([]sweep.Sweepable, 0) - accountID := client.AccountID + accountID := client.AccountID(ctx) input := &quicksight.ListFoldersInput{ AwsAccountId: aws.String(accountID), } @@ -246,7 +246,7 @@ func sweepGroups(region string) error { } conn := client.QuickSightClient(ctx) sweepResources := make([]sweep.Sweepable, 0) - awsAccountID := client.AccountID + awsAccountID := client.AccountID(ctx) input := &quicksight.ListGroupsInput{ AwsAccountId: aws.String(awsAccountID), Namespace: aws.String(defaultUserNamespace), @@ -298,7 +298,7 @@ func sweepTemplates(region string) error { } conn := client.QuickSightClient(ctx) sweepResources := make([]sweep.Sweepable, 0) - awsAccountID := client.AccountID + awsAccountID := client.AccountID(ctx) input := &quicksight.ListTemplatesInput{ AwsAccountId: aws.String(awsAccountID), } @@ -342,7 +342,7 @@ func sweepUsers(region string) error { } conn := client.QuickSightClient(ctx) sweepResources := make([]sweep.Sweepable, 0) - awsAccountID := client.AccountID + awsAccountID := client.AccountID(ctx) input := &quicksight.ListUsersInput{ AwsAccountId: aws.String(awsAccountID), Namespace: aws.String(defaultUserNamespace), @@ -394,7 +394,7 @@ func sweepVPCConnections(region string) error { } conn := client.QuickSightClient(ctx) sweepResources := make([]sweep.Sweepable, 0) - awsAccountID := client.AccountID + awsAccountID := client.AccountID(ctx) input := &quicksight.ListVPCConnectionsInput{ AwsAccountId: aws.String(awsAccountID), } diff --git a/internal/service/quicksight/template.go b/internal/service/quicksight/template.go index 0fa2fa0f8540..c0b5919b4edc 100644 --- a/internal/service/quicksight/template.go +++ b/internal/service/quicksight/template.go @@ -115,7 +115,7 @@ func resourceTemplateCreate(ctx context.Context, d *schema.ResourceData, meta in var diags diag.Diagnostics conn := meta.(*conns.AWSClient).QuickSightClient(ctx) - awsAccountID := meta.(*conns.AWSClient).AccountID + awsAccountID := meta.(*conns.AWSClient).AccountID(ctx) if v, ok := d.GetOk(names.AttrAWSAccountID); ok { awsAccountID = v.(string) } diff --git a/internal/service/quicksight/template_alias.go b/internal/service/quicksight/template_alias.go index 60a6a4f9d699..6496cc27572f 100644 --- a/internal/service/quicksight/template_alias.go +++ b/internal/service/quicksight/template_alias.go @@ -86,7 +86,7 @@ func (r *templateAliasResource) Create(ctx context.Context, req resource.CreateR } if plan.AWSAccountID.IsUnknown() || plan.AWSAccountID.IsNull() { - plan.AWSAccountID = types.StringValue(r.Meta().AccountID) + plan.AWSAccountID = types.StringValue(r.Meta().AccountID(ctx)) } awsAccountID, templateID, aliasName := flex.StringValueFromFramework(ctx, plan.AWSAccountID), flex.StringValueFromFramework(ctx, plan.TemplateID), flex.StringValueFromFramework(ctx, plan.AliasName) in := &quicksight.CreateTemplateAliasInput{ diff --git a/internal/service/quicksight/template_alias_test.go b/internal/service/quicksight/template_alias_test.go index ee3e548ac5e0..99a467a75fdd 100644 --- a/internal/service/quicksight/template_alias_test.go +++ b/internal/service/quicksight/template_alias_test.go @@ -44,7 +44,7 @@ func TestAccQuickSightTemplateAlias_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "alias_name", aliasName), resource.TestCheckResourceAttrPair(resourceName, "template_id", resourceTemplateName, "template_id"), resource.TestCheckResourceAttrPair(resourceName, "template_version_number", resourceTemplateName, "version_number"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "quicksight", fmt.Sprintf("template/%[1]s/alias/%[2]s", rId, aliasName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "quicksight", fmt.Sprintf("template/%[1]s/alias/%[2]s", rId, aliasName)), ), }, { diff --git a/internal/service/quicksight/template_test.go b/internal/service/quicksight/template_test.go index 1ec55ac605f4..e48b83edf8c8 100644 --- a/internal/service/quicksight/template_test.go +++ b/internal/service/quicksight/template_test.go @@ -185,7 +185,7 @@ func TestAccQuickSightTemplate_sourceEntity(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "template_id", rId), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, names.AttrStatus, string(awstypes.ResourceStatusCreationSuccessful)), - acctest.CheckResourceAttrRegionalARN(resourceName, "source_entity.0.source_template.0.arn", "quicksight", fmt.Sprintf("template/%s", sourceId)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, "source_entity.0.source_template.0.arn", "quicksight", fmt.Sprintf("template/%s", sourceId)), ), }, { @@ -223,7 +223,7 @@ func TestAccQuickSightTemplate_update(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "template_id", rId), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, names.AttrStatus, string(awstypes.ResourceStatusCreationSuccessful)), - acctest.CheckResourceAttrRegionalARN(resourceName, "source_entity.0.source_template.0.arn", "quicksight", fmt.Sprintf("template/%s", sourceId)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, "source_entity.0.source_template.0.arn", "quicksight", fmt.Sprintf("template/%s", sourceId)), resource.TestCheckResourceAttr(resourceName, "version_number", "1"), ), }, @@ -241,7 +241,7 @@ func TestAccQuickSightTemplate_update(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "template_id", rId), resource.TestCheckResourceAttr(resourceName, names.AttrName, rNameUpdated), resource.TestCheckResourceAttr(resourceName, names.AttrStatus, string(awstypes.ResourceStatusCreationSuccessful)), - acctest.CheckResourceAttrRegionalARN(resourceName, "source_entity.0.source_template.0.arn", "quicksight", fmt.Sprintf("template/%s", sourceId)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, "source_entity.0.source_template.0.arn", "quicksight", fmt.Sprintf("template/%s", sourceId)), resource.TestCheckResourceAttr(resourceName, "version_number", "2"), ), }, diff --git a/internal/service/quicksight/theme.go b/internal/service/quicksight/theme.go index 7b7b4c13fca4..8798e9dcb7ab 100644 --- a/internal/service/quicksight/theme.go +++ b/internal/service/quicksight/theme.go @@ -114,7 +114,7 @@ func resourceThemeCreate(ctx context.Context, d *schema.ResourceData, meta inter var diags diag.Diagnostics conn := meta.(*conns.AWSClient).QuickSightClient(ctx) - awsAccountID := meta.(*conns.AWSClient).AccountID + awsAccountID := meta.(*conns.AWSClient).AccountID(ctx) if v, ok := d.GetOk(names.AttrAWSAccountID); ok { awsAccountID = v.(string) } diff --git a/internal/service/quicksight/theme_data_source.go b/internal/service/quicksight/theme_data_source.go index 7d9d3df8c93c..5e41ba5bbfe3 100644 --- a/internal/service/quicksight/theme_data_source.go +++ b/internal/service/quicksight/theme_data_source.go @@ -78,7 +78,7 @@ func dataSourceThemeRead(ctx context.Context, d *schema.ResourceData, meta inter var diags diag.Diagnostics conn := meta.(*conns.AWSClient).QuickSightClient(ctx) - awsAccountID := meta.(*conns.AWSClient).AccountID + awsAccountID := meta.(*conns.AWSClient).AccountID(ctx) if v, ok := d.GetOk(names.AttrAWSAccountID); ok { awsAccountID = v.(string) } diff --git a/internal/service/quicksight/user.go b/internal/service/quicksight/user.go index ed9f6d22173f..8ab6ff926aa1 100644 --- a/internal/service/quicksight/user.go +++ b/internal/service/quicksight/user.go @@ -112,7 +112,7 @@ func resourceUserCreate(ctx context.Context, d *schema.ResourceData, meta interf var diags diag.Diagnostics conn := meta.(*conns.AWSClient).QuickSightClient(ctx) - awsAccountID := meta.(*conns.AWSClient).AccountID + awsAccountID := meta.(*conns.AWSClient).AccountID(ctx) if v, ok := d.GetOk(names.AttrAWSAccountID); ok { awsAccountID = v.(string) } diff --git a/internal/service/quicksight/user_data_source.go b/internal/service/quicksight/user_data_source.go index 810bf9963c26..78726fdfd814 100644 --- a/internal/service/quicksight/user_data_source.go +++ b/internal/service/quicksight/user_data_source.go @@ -73,7 +73,7 @@ func dataSourceUserRead(ctx context.Context, d *schema.ResourceData, meta interf var diags diag.Diagnostics conn := meta.(*conns.AWSClient).QuickSightClient(ctx) - awsAccountID := meta.(*conns.AWSClient).AccountID + awsAccountID := meta.(*conns.AWSClient).AccountID(ctx) if v, ok := d.GetOk(names.AttrAWSAccountID); ok { awsAccountID = v.(string) } diff --git a/internal/service/quicksight/user_test.go b/internal/service/quicksight/user_test.go index 236483ea5ce8..31251922f0c4 100644 --- a/internal/service/quicksight/user_test.go +++ b/internal/service/quicksight/user_test.go @@ -39,7 +39,7 @@ func TestAccQuickSightUser_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckUserExists(ctx, resourceName1, &user), resource.TestCheckResourceAttr(resourceName1, names.AttrUserName, rName1), - acctest.CheckResourceAttrRegionalARN(resourceName1, names.AttrARN, "quicksight", fmt.Sprintf("user/default/%s", rName1)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName1, names.AttrARN, "quicksight", fmt.Sprintf("user/default/%s", rName1)), ), }, { @@ -47,7 +47,7 @@ func TestAccQuickSightUser_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckUserExists(ctx, resourceName2, &user), resource.TestCheckResourceAttr(resourceName2, names.AttrUserName, rName2), - acctest.CheckResourceAttrRegionalARN(resourceName2, names.AttrARN, "quicksight", fmt.Sprintf("user/default/%s", rName2)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName2, names.AttrARN, "quicksight", fmt.Sprintf("user/default/%s", rName2)), ), }, }, diff --git a/internal/service/quicksight/vpc_connection.go b/internal/service/quicksight/vpc_connection.go index 5db0e656abaa..8607c6dc0ddd 100644 --- a/internal/service/quicksight/vpc_connection.go +++ b/internal/service/quicksight/vpc_connection.go @@ -163,7 +163,7 @@ func (r *vpcConnectionResource) Create(ctx context.Context, req resource.CreateR } if plan.AWSAccountID.IsUnknown() || plan.AWSAccountID.IsNull() { - plan.AWSAccountID = types.StringValue(r.Meta().AccountID) + plan.AWSAccountID = types.StringValue(r.Meta().AccountID(ctx)) } awsAccountID, vpcConnectionID := flex.StringValueFromFramework(ctx, plan.AWSAccountID), flex.StringValueFromFramework(ctx, plan.VPCConnectionID) in := &quicksight.CreateVPCConnectionInput{ diff --git a/internal/service/quicksight/vpc_connection_test.go b/internal/service/quicksight/vpc_connection_test.go index 5196a95a924b..fd37c84371b3 100644 --- a/internal/service/quicksight/vpc_connection_test.go +++ b/internal/service/quicksight/vpc_connection_test.go @@ -36,7 +36,7 @@ func TestAccQuickSightVPCConnection_basic(t *testing.T) { Config: testAccVPCConnectionConfig_basic(rId, rName), Check: resource.ComposeTestCheckFunc( testAccCheckVPCConnectionExists(ctx, resourceName, &vpcConnection), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "quicksight", fmt.Sprintf("vpcConnection/%[1]s", rId)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "quicksight", fmt.Sprintf("vpcConnection/%[1]s", rId)), resource.TestCheckResourceAttr(resourceName, "vpc_connection_id", rId), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "subnet_ids.#", "2"), diff --git a/internal/service/ram/resource_share_accepter.go b/internal/service/ram/resource_share_accepter.go index d632e623b81f..61db4b8693c1 100644 --- a/internal/service/ram/resource_share_accepter.go +++ b/internal/service/ram/resource_share_accepter.go @@ -145,7 +145,7 @@ func resourceResourceShareAccepterCreate(ctx context.Context, d *schema.Resource func resourceResourceShareAccepterRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics - accountID := meta.(*conns.AWSClient).AccountID + accountID := meta.(*conns.AWSClient).AccountID(ctx) conn := meta.(*conns.AWSClient).RAMClient(ctx) maybeInvitation, err := findMaybeResourceShareInvitationByResourceShareARNAndStatus(ctx, conn, d.Id(), string(awstypes.ResourceShareInvitationStatusAccepted)) diff --git a/internal/service/ram/resource_share_accepter_test.go b/internal/service/ram/resource_share_accepter_test.go index a15d4b2b3aa8..05dcedda503e 100644 --- a/internal/service/ram/resource_share_accepter_test.go +++ b/internal/service/ram/resource_share_accepter_test.go @@ -54,7 +54,7 @@ func TestAccRAMResourceShareAccepter_basic(t *testing.T) { acctest.MatchResourceAttrRegionalARNAccountID(resourceName, "invitation_arn", "ram", `\d{12}`, regexache.MustCompile(fmt.Sprintf("resource-share-invitation/%s$", verify.UUIDRegexPattern))), resource.TestMatchResourceAttr(resourceName, "share_id", regexache.MustCompile(fmt.Sprintf(`^rs-%s$`, verify.UUIDRegexPattern))), resource.TestCheckResourceAttr(resourceName, names.AttrStatus, string(awstypes.ResourceShareStatusActive)), - acctest.CheckResourceAttrAccountID(resourceName, "receiver_account_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "receiver_account_id"), resource.TestMatchResourceAttr(resourceName, "sender_account_id", regexache.MustCompile(`\d{12}`)), resource.TestCheckResourceAttr(resourceName, "share_name", rName), resource.TestCheckResourceAttr(resourceName, "resources.%", "0"), @@ -119,7 +119,7 @@ func TestAccRAMResourceShareAccepter_resourceAssociation(t *testing.T) { acctest.MatchResourceAttrRegionalARNAccountID(resourceName, "invitation_arn", "ram", `\d{12}`, regexache.MustCompile(fmt.Sprintf("resource-share-invitation/%s$", verify.UUIDRegexPattern))), resource.TestMatchResourceAttr(resourceName, "share_id", regexache.MustCompile(fmt.Sprintf(`^rs-%s$`, verify.UUIDRegexPattern))), resource.TestCheckResourceAttr(resourceName, names.AttrStatus, string(awstypes.ResourceShareStatusActive)), - acctest.CheckResourceAttrAccountID(resourceName, "receiver_account_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "receiver_account_id"), resource.TestMatchResourceAttr(resourceName, "sender_account_id", regexache.MustCompile(`\d{12}`)), resource.TestCheckResourceAttr(resourceName, "share_name", rName), resource.TestCheckResourceAttr(resourceName, "resources.%", "0"), diff --git a/internal/service/ram/resource_share_data_source_test.go b/internal/service/ram/resource_share_data_source_test.go index c4aa32f84909..ac72889c7e3f 100644 --- a/internal/service/ram/resource_share_data_source_test.go +++ b/internal/service/ram/resource_share_data_source_test.go @@ -30,7 +30,7 @@ func TestAccRAMResourceShareDataSource_basic(t *testing.T) { resource.TestCheckResourceAttrPair(datasourceName, names.AttrARN, resourceName, names.AttrARN), resource.TestCheckResourceAttrPair(datasourceName, names.AttrID, resourceName, names.AttrID), resource.TestCheckResourceAttrPair(datasourceName, names.AttrName, resourceName, names.AttrName), - acctest.CheckResourceAttrAccountID(datasourceName, "owning_account_id"), + acctest.CheckResourceAttrAccountID(ctx, datasourceName, "owning_account_id"), resource.TestCheckResourceAttr(datasourceName, "resource_arns.#", "0"), ), }, diff --git a/internal/service/ram/resource_share_test.go b/internal/service/ram/resource_share_test.go index 43977940eb3e..79e964b20cf4 100644 --- a/internal/service/ram/resource_share_test.go +++ b/internal/service/ram/resource_share_test.go @@ -36,7 +36,7 @@ func TestAccRAMResourceShare_basic(t *testing.T) { Config: testAccResourceShareConfig_name(rName), Check: resource.ComposeTestCheckFunc( testAccCheckResourceShareExists(ctx, resourceName, &resourceShare), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ram", regexache.MustCompile(`resource-share/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ram", regexache.MustCompile(`resource-share/.+`)), resource.TestCheckResourceAttr(resourceName, "allow_external_principals", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "permission_arns.#", "0"), @@ -68,7 +68,7 @@ func TestAccRAMResourceShare_permission(t *testing.T) { Config: testAccResourceShareConfig_namePermission(rName), Check: resource.ComposeTestCheckFunc( testAccCheckResourceShareExists(ctx, resourceName, &resourceShare), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ram", regexache.MustCompile(`resource-share/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ram", regexache.MustCompile(`resource-share/.+`)), resource.TestCheckResourceAttr(resourceName, "allow_external_principals", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "permission_arns.#", "1"), diff --git a/internal/service/ram/service_endpoints_gen_test.go b/internal/service/ram/service_endpoints_gen_test.go index 8aedd0ec185c..41d38bec2c0a 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/ram/sharing_with_organization.go b/internal/service/ram/sharing_with_organization.go index 3931b98879d7..18f60399c06f 100644 --- a/internal/service/ram/sharing_with_organization.go +++ b/internal/service/ram/sharing_with_organization.go @@ -55,7 +55,7 @@ func resourceSharingWithOrganizationCreate(ctx context.Context, d *schema.Resour return sdkdiag.AppendErrorf(diags, "RAM Sharing With Organization failed") } - d.SetId(meta.(*conns.AWSClient).AccountID) + d.SetId(meta.(*conns.AWSClient).AccountID(ctx)) return append(diags, resourceSharingWithOrganizationRead(ctx, d, meta)...) } diff --git a/internal/service/rbin/rule.go b/internal/service/rbin/rule.go index 0ddbe950c328..82497e5819b4 100644 --- a/internal/service/rbin/rule.go +++ b/internal/service/rbin/rule.go @@ -213,8 +213,8 @@ func resourceRuleRead(ctx context.Context, d *schema.ResourceData, meta interfac ruleArn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: rbin.ServiceID, - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("rule/%s", aws.ToString(out.Identifier)), }.String() d.Set(names.AttrARN, ruleArn) diff --git a/internal/service/rbin/service_endpoints_gen_test.go b/internal/service/rbin/service_endpoints_gen_test.go index 1c933ec17b3a..b65e7801dc88 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/certificate.go b/internal/service/rds/certificate.go index 2b44984e256b..db2a57faa745 100644 --- a/internal/service/rds/certificate.go +++ b/internal/service/rds/certificate.go @@ -57,7 +57,7 @@ func resourceCertificatePut(ctx context.Context, d *schema.ResourceData, meta in } if d.IsNewResource() { - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) } return append(diags, resourceCertificateRead(ctx, d, meta)...) diff --git a/internal/service/rds/cluster.go b/internal/service/rds/cluster.go index 65eb69e47c81..050293fdc366 100644 --- a/internal/service/rds/cluster.go +++ b/internal/service/rds/cluster.go @@ -1394,6 +1394,24 @@ func resourceClusterUpdate(ctx context.Context, d *schema.ResourceData, meta int } } + if d.HasChange("replication_source_identifier") { + if d.Get("replication_source_identifier").(string) == "" { + input := rds.PromoteReadReplicaDBClusterInput{ + DBClusterIdentifier: aws.String(d.Id()), + } + _, err := conn.PromoteReadReplicaDBCluster(ctx, &input) + if err != nil { + return sdkdiag.AppendErrorf(diags, "promoting read replica to primary for RDS Cluster (%s): %s", d.Id(), err) + } + + if _, err := waitDBClusterAvailable(ctx, conn, d.Id(), false, d.Timeout(schema.TimeoutUpdate)); err != nil { + return sdkdiag.AppendErrorf(diags, "waiting for RDS Cluster (%s) update: %s", d.Id(), err) + } + } else { + return sdkdiag.AppendErrorf(diags, "promoting to standalone is not supported for RDS Cluster (%s)", d.Id()) + } + } + if d.HasChangesExcept( names.AttrAllowMajorVersionUpgrade, "delete_automated_backups", @@ -1919,7 +1937,7 @@ func statusDBCluster(ctx context.Context, conn *rds.Client, id string, waitNoPen } } -func waitDBClusterAvailable(ctx context.Context, conn *rds.Client, id string, waitNoPendingModifiedValues bool, timeout time.Duration) (*types.DBCluster, error) { +func waitDBClusterAvailable(ctx context.Context, conn *rds.Client, id string, waitNoPendingModifiedValues bool, timeout time.Duration) (*types.DBCluster, error) { //nolint:unparam pendingStatuses := []string{ clusterStatusCreating, clusterStatusMigrating, diff --git a/internal/service/rds/cluster_endpoint_test.go b/internal/service/rds/cluster_endpoint_test.go index 296c4fc677aa..265d2270e7b5 100644 --- a/internal/service/rds/cluster_endpoint_test.go +++ b/internal/service/rds/cluster_endpoint_test.go @@ -43,9 +43,9 @@ func TestAccRDSClusterEndpoint_basic(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckClusterEndpointExists(ctx, readerResourceName, &customReaderEndpoint), testAccCheckClusterEndpointExists(ctx, defaultResourceName, &customEndpoint), - acctest.MatchResourceAttrRegionalARN(readerResourceName, names.AttrARN, "rds", regexache.MustCompile(`cluster-endpoint:.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, readerResourceName, names.AttrARN, "rds", regexache.MustCompile(`cluster-endpoint:.+`)), resource.TestCheckResourceAttrSet(readerResourceName, names.AttrEndpoint), - acctest.MatchResourceAttrRegionalARN(defaultResourceName, names.AttrARN, "rds", regexache.MustCompile(`cluster-endpoint:.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, defaultResourceName, names.AttrARN, "rds", regexache.MustCompile(`cluster-endpoint:.+`)), resource.TestCheckResourceAttrSet(defaultResourceName, names.AttrEndpoint), resource.TestCheckResourceAttr(defaultResourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttr(readerResourceName, acctest.CtTagsPercent, "0"), diff --git a/internal/service/rds/cluster_instance_test.go b/internal/service/rds/cluster_instance_test.go index 8e9caf219c80..db26d3102157 100644 --- a/internal/service/rds/cluster_instance_test.go +++ b/internal/service/rds/cluster_instance_test.go @@ -43,7 +43,7 @@ func TestAccRDSClusterInstance_basic(t *testing.T) { Config: testAccClusterInstanceConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckClusterInstanceExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "rds", regexache.MustCompile(`db:.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "rds", regexache.MustCompile(`db:.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrAutoMinorVersionUpgrade, acctest.CtTrue), resource.TestCheckResourceAttrSet(resourceName, names.AttrAvailabilityZone), resource.TestCheckResourceAttr(resourceName, names.AttrClusterIdentifier, rName), diff --git a/internal/service/rds/cluster_parameter_group_test.go b/internal/service/rds/cluster_parameter_group_test.go index 14a64f68f088..7965b95b3d6a 100644 --- a/internal/service/rds/cluster_parameter_group_test.go +++ b/internal/service/rds/cluster_parameter_group_test.go @@ -39,7 +39,7 @@ func TestAccRDSClusterParameterGroup_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckClusterParameterGroupExists(ctx, resourceName, &v), testAccCheckClusterParameterGroupAttributes(&v, rName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "rds", fmt.Sprintf("cluster-pg:%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "rds", fmt.Sprintf("cluster-pg:%s", rName)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, names.AttrFamily, "aurora5.6"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "Test cluster parameter group for terraform"), @@ -208,7 +208,7 @@ func TestAccRDSClusterParameterGroup_withApplyMethod(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckClusterParameterGroupExists(ctx, resourceName, &v), testAccCheckClusterParameterGroupAttributes(&v, rName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "rds", fmt.Sprintf("cluster-pg:%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "rds", fmt.Sprintf("cluster-pg:%s", rName)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, names.AttrFamily, "aurora5.6"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "Test cluster parameter group for terraform"), diff --git a/internal/service/rds/cluster_snapshot_test.go b/internal/service/rds/cluster_snapshot_test.go index 61e2af341ff9..0393fde4b3e7 100644 --- a/internal/service/rds/cluster_snapshot_test.go +++ b/internal/service/rds/cluster_snapshot_test.go @@ -38,7 +38,7 @@ func TestAccRDSClusterSnapshot_basic(t *testing.T) { testAccCheckClusterSnapshotExists(ctx, resourceName, &dbClusterSnapshot), resource.TestCheckResourceAttrSet(resourceName, names.AttrAllocatedStorage), resource.TestCheckResourceAttrSet(resourceName, "availability_zones.#"), - acctest.MatchResourceAttrRegionalARN(resourceName, "db_cluster_snapshot_arn", "rds", regexache.MustCompile(fmt.Sprintf("cluster-snapshot:%s$", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, "db_cluster_snapshot_arn", "rds", regexache.MustCompile(fmt.Sprintf("cluster-snapshot:%s$", rName))), resource.TestCheckResourceAttrSet(resourceName, names.AttrEngine), resource.TestCheckResourceAttrSet(resourceName, names.AttrEngineVersion), resource.TestCheckResourceAttr(resourceName, names.AttrKMSKeyID, ""), diff --git a/internal/service/rds/cluster_test.go b/internal/service/rds/cluster_test.go index 660a48156398..1c54914fabcf 100644 --- a/internal/service/rds/cluster_test.go +++ b/internal/service/rds/cluster_test.go @@ -77,7 +77,7 @@ func TestAccRDSCluster_basic(t *testing.T) { Config: testAccClusterConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckClusterExists(ctx, resourceName, &dbCluster), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "rds", fmt.Sprintf("cluster:%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "rds", fmt.Sprintf("cluster:%s", rName)), resource.TestCheckResourceAttr(resourceName, "backtrack_window", "0"), resource.TestCheckNoResourceAttr(resourceName, "ca_certificate_identifier"), resource.TestCheckNoResourceAttr(resourceName, "ca_certificate_valid_till"), @@ -221,6 +221,46 @@ func TestAccRDSCluster_tags(t *testing.T) { }) } +// Test case for verifying that the security groups can be destroyed, recreated, +// and number changed whilst Terraform handles it correctly. +// https://github.com/hashicorp/terraform-provider-aws/issues/9692 +func TestAccRDSCluster_securityGroupUpdate(t *testing.T) { + ctx := acctest.Context(t) + var dbCluster1, dbCluster2 types.DBCluster + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + sgName1, sgName2 := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix), sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + resourceName := "aws_rds_cluster.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.RDSServiceID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckClusterDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccClusterConfig_securityGroup(rName, sgName1, 2), + Check: resource.ComposeTestCheckFunc( + testAccCheckClusterExists(ctx, resourceName, &dbCluster1), + ), + }, + { + Config: testAccClusterConfig_securityGroup(rName, sgName2, 2), + Check: resource.ComposeTestCheckFunc( + testAccCheckClusterExists(ctx, resourceName, &dbCluster2), + testAccCheckClusterNotRecreated(&dbCluster1, &dbCluster2), + ), + }, + { + Config: testAccClusterConfig_securityGroup(rName, sgName2, 1), + Check: resource.ComposeTestCheckFunc( + testAccCheckClusterExists(ctx, resourceName, &dbCluster1), + testAccCheckClusterNotRecreated(&dbCluster1, &dbCluster2), + ), + }, + }, + }) +} + func TestAccRDSCluster_allowMajorVersionUpgrade(t *testing.T) { ctx := acctest.Context(t) if testing.Short() { @@ -563,6 +603,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() { @@ -1260,6 +1331,51 @@ func TestAccRDSCluster_copyTagsToSnapshot_restorePointInTime(t *testing.T) { }) } +func TestAccRDSCluster_ReplicationSourceIdentifier_promote(t *testing.T) { + ctx := acctest.Context(t) + if testing.Short() { + t.Skip("skipping long-running test in short mode") + } + + var primaryCluster types.DBCluster + var replicaCluster types.DBCluster + resourceName := "aws_rds_cluster.test" + resourceName2 := "aws_rds_cluster.alternate" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + // record the initialized providers so that we can use them to + // check for the cluster in each region + var providers []*schema.Provider + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { + acctest.PreCheck(ctx, t) + acctest.PreCheckMultipleRegion(t, 2) + }, + ErrorCheck: acctest.ErrorCheck(t, names.RDSServiceID), + ProtoV5ProviderFactories: acctest.ProtoV5FactoriesPlusProvidersAlternate(ctx, t, &providers), + CheckDestroy: acctest.CheckWithProviders(testAccCheckClusterDestroyWithProvider(ctx), &providers), + Steps: []resource.TestStep{ + { + Config: testAccClusterConfig_replicationSource_basic(rName), + Check: resource.ComposeTestCheckFunc( + testAccCheckClusterExistsWithProvider(ctx, resourceName, &primaryCluster, acctest.RegionProviderFunc(ctx, acctest.Region(), &providers)), + testAccCheckClusterExistsWithProvider(ctx, resourceName2, &replicaCluster, acctest.RegionProviderFunc(ctx, acctest.AlternateRegion(), &providers)), + resource.TestCheckResourceAttrSet(resourceName2, "replication_source_identifier"), + ), + }, + { + Config: testAccClusterConfig_replicationSource_promote(rName), + Check: resource.ComposeTestCheckFunc( + testAccCheckClusterExistsWithProvider(ctx, resourceName, &primaryCluster, acctest.RegionProviderFunc(ctx, acctest.Region(), &providers)), + testAccCheckClusterExistsWithProvider(ctx, resourceName2, &replicaCluster, acctest.RegionProviderFunc(ctx, acctest.AlternateRegion(), &providers)), + resource.TestCheckResourceAttr(resourceName2, "replication_source_identifier", ""), + ), + }, + }, + }) +} + func TestAccRDSCluster_ReplicationSourceIdentifier_kmsKeyID(t *testing.T) { ctx := acctest.Context(t) if testing.Short() { @@ -1288,8 +1404,8 @@ func TestAccRDSCluster_ReplicationSourceIdentifier_kmsKeyID(t *testing.T) { { Config: testAccClusterConfig_replicationSourceIDKMSKeyID(rName), Check: resource.ComposeTestCheckFunc( - testAccCheckClusterExistsWithProvider(ctx, resourceName, &primaryCluster, acctest.RegionProviderFunc(acctest.Region(), &providers)), - testAccCheckClusterExistsWithProvider(ctx, resourceName2, &replicaCluster, acctest.RegionProviderFunc(acctest.AlternateRegion(), &providers)), + testAccCheckClusterExistsWithProvider(ctx, resourceName, &primaryCluster, acctest.RegionProviderFunc(ctx, acctest.Region(), &providers)), + testAccCheckClusterExistsWithProvider(ctx, resourceName2, &replicaCluster, acctest.RegionProviderFunc(ctx, acctest.AlternateRegion(), &providers)), ), }, }, @@ -1671,8 +1787,8 @@ func TestAccRDSCluster_GlobalClusterIdentifier_primarySecondaryClusters(t *testi { Config: testAccClusterConfig_GlobalClusterID_primarySecondaryClusters(rNameGlobal, rNamePrimary, rNameSecondary), Check: resource.ComposeTestCheckFunc( - testAccCheckClusterExistsWithProvider(ctx, resourceNamePrimary, &primaryDbCluster, acctest.RegionProviderFunc(acctest.Region(), &providers)), - testAccCheckClusterExistsWithProvider(ctx, resourceNameSecondary, &secondaryDbCluster, acctest.RegionProviderFunc(acctest.AlternateRegion(), &providers)), + testAccCheckClusterExistsWithProvider(ctx, resourceNamePrimary, &primaryDbCluster, acctest.RegionProviderFunc(ctx, acctest.Region(), &providers)), + testAccCheckClusterExistsWithProvider(ctx, resourceNameSecondary, &secondaryDbCluster, acctest.RegionProviderFunc(ctx, acctest.AlternateRegion(), &providers)), ), }, }, @@ -1706,8 +1822,8 @@ func TestAccRDSCluster_GlobalClusterIdentifier_replicationSourceIdentifier(t *te { Config: testAccClusterConfig_GlobalClusterID_replicationSourceID(rName), Check: resource.ComposeTestCheckFunc( - testAccCheckClusterExistsWithProvider(ctx, resourceNamePrimary, &primaryDbCluster, acctest.RegionProviderFunc(acctest.Region(), &providers)), - testAccCheckClusterExistsWithProvider(ctx, resourceNameSecondary, &secondaryDbCluster, acctest.RegionProviderFunc(acctest.AlternateRegion(), &providers)), + testAccCheckClusterExistsWithProvider(ctx, resourceNamePrimary, &primaryDbCluster, acctest.RegionProviderFunc(ctx, acctest.Region(), &providers)), + testAccCheckClusterExistsWithProvider(ctx, resourceNameSecondary, &secondaryDbCluster, acctest.RegionProviderFunc(ctx, acctest.AlternateRegion(), &providers)), ), }, }, @@ -1744,8 +1860,8 @@ func TestAccRDSCluster_GlobalClusterIdentifier_secondaryClustersWriteForwarding( { Config: testAccClusterConfig_GlobalClusterID_secondaryClustersWriteForwarding(rNameGlobal, rNamePrimary, rNameSecondary), Check: resource.ComposeTestCheckFunc( - testAccCheckClusterExistsWithProvider(ctx, resourceNamePrimary, &primaryDbCluster, acctest.RegionProviderFunc(acctest.Region(), &providers)), - testAccCheckClusterExistsWithProvider(ctx, resourceNameSecondary, &secondaryDbCluster, acctest.RegionProviderFunc(acctest.AlternateRegion(), &providers)), + testAccCheckClusterExistsWithProvider(ctx, resourceNamePrimary, &primaryDbCluster, acctest.RegionProviderFunc(ctx, acctest.Region(), &providers)), + testAccCheckClusterExistsWithProvider(ctx, resourceNameSecondary, &secondaryDbCluster, acctest.RegionProviderFunc(ctx, acctest.AlternateRegion(), &providers)), resource.TestCheckResourceAttr(resourceNameSecondary, "enable_global_write_forwarding", acctest.CtTrue), ), }, @@ -1769,7 +1885,7 @@ func TestAccRDSCluster_ManagedMasterPassword_managed(t *testing.T) { Config: testAccClusterConfig_managedMasterPassword(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckClusterExists(ctx, resourceName, &dbCluster), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "rds", fmt.Sprintf("cluster:%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "rds", fmt.Sprintf("cluster:%s", rName)), resource.TestCheckResourceAttrSet(resourceName, "cluster_resource_id"), resource.TestCheckResourceAttr(resourceName, names.AttrEngine, tfrds.ClusterEngineAuroraMySQL), resource.TestCheckResourceAttrSet(resourceName, names.AttrEngineVersion), @@ -1801,7 +1917,7 @@ func TestAccRDSCluster_ManagedMasterPassword_managedSpecificKMSKey(t *testing.T) Config: testAccClusterConfig_managedMasterPasswordKMSKey(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckClusterExists(ctx, resourceName, &dbCluster), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "rds", fmt.Sprintf("cluster:%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "rds", fmt.Sprintf("cluster:%s", rName)), resource.TestCheckResourceAttrSet(resourceName, "cluster_resource_id"), resource.TestCheckResourceAttr(resourceName, names.AttrEngine, tfrds.ClusterEngineAuroraMySQL), resource.TestCheckResourceAttrSet(resourceName, names.AttrEngineVersion), @@ -1837,7 +1953,7 @@ func TestAccRDSCluster_ManagedMasterPassword_convertToManaged(t *testing.T) { Config: testAccClusterConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckClusterExists(ctx, resourceName, &dbCluster1), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "rds", fmt.Sprintf("cluster:%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "rds", fmt.Sprintf("cluster:%s", rName)), resource.TestCheckResourceAttrSet(resourceName, "cluster_resource_id"), resource.TestCheckNoResourceAttr(resourceName, "manage_master_user_password"), ), @@ -1847,7 +1963,7 @@ func TestAccRDSCluster_ManagedMasterPassword_convertToManaged(t *testing.T) { Config: testAccClusterConfig_managedMasterPassword(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckClusterExists(ctx, resourceName, &dbCluster2), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "rds", fmt.Sprintf("cluster:%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "rds", fmt.Sprintf("cluster:%s", rName)), resource.TestCheckResourceAttrSet(resourceName, "cluster_resource_id"), resource.TestCheckResourceAttrSet(resourceName, "manage_master_user_password"), resource.TestCheckResourceAttr(resourceName, "manage_master_user_password", acctest.CtTrue), @@ -2713,7 +2829,7 @@ func TestAccRDSCluster_engineLifecycleSupport_disabled(t *testing.T) { Config: testAccClusterConfig_engineLifecycleSupport_disabled(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckClusterExists(ctx, resourceName, &dbCluster), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "rds", fmt.Sprintf("cluster:%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "rds", fmt.Sprintf("cluster:%s", rName)), resource.TestCheckResourceAttr(resourceName, "backtrack_window", "0"), resource.TestCheckResourceAttr(resourceName, names.AttrClusterIdentifier, rName), resource.TestCheckResourceAttr(resourceName, names.AttrEngine, tfrds.ClusterEngineAuroraPostgreSQL), @@ -2978,7 +3094,7 @@ func TestAccRDSCluster_localWriteForwarding(t *testing.T) { Config: testAccClusterConfig_localWriteForwarding(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckClusterExists(ctx, resourceName, &dbCluster), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "rds", fmt.Sprintf("cluster:%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "rds", fmt.Sprintf("cluster:%s", rName)), resource.TestCheckResourceAttr(resourceName, "enable_local_write_forwarding", acctest.CtTrue), ), }, @@ -3058,6 +3174,32 @@ resource "aws_rds_cluster" "test" { `, identifierPrefix, tfrds.ClusterEngineAuroraMySQL) } +func testAccClusterConfig_securityGroup(rName, sgName string, sgCt int) string { + return acctest.ConfigCompose( + testAccConfig_ClusterSubnetGroup(rName), + fmt.Sprintf(` +resource "aws_security_group" "test" { + count = %[4]d + name_prefix = %[2]q + vpc_id = aws_vpc.test.id + + tags = { + Name = %[2]q + } +} + +resource "aws_rds_cluster" "test" { + cluster_identifier = %[1]q + engine = %[3]q + master_username = "tfacctest" + master_password = "avoid-plaintext-passwords" + skip_final_snapshot = true + vpc_security_group_ids = aws_security_group.test[*].id + db_subnet_group_name = aws_db_subnet_group.test.name +} +`, rName, sgName, tfrds.ClusterEngineAuroraMySQL, sgCt)) +} + func testAccClusterConfig_managedMasterPassword(rName string) string { return fmt.Sprintf(` resource "aws_rds_cluster" "test" { @@ -3348,7 +3490,7 @@ data "aws_rds_orderable_db_instance" "test" { resource "aws_rds_cluster" "test" { apply_immediately = true db_subnet_group_name = aws_db_subnet_group.test.name - ca_certificate_identifier = "rds-ca-2019" + ca_certificate_identifier = "rds-ca-rsa2048-g1" cluster_identifier = %[1]q engine = data.aws_rds_orderable_db_instance.test.engine engine_version = data.aws_rds_orderable_db_instance.test.engine_version @@ -3393,6 +3535,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), @@ -4285,6 +4456,166 @@ resource "aws_rds_cluster" "alternate" { `, tfrds.ClusterEngineAuroraMySQL, mainInstanceClasses, rName)) } +func testAccClusterConfig_replicationSource_base(rName string) string { + return acctest.ConfigCompose(acctest.ConfigMultipleRegionProvider(2), fmt.Sprintf(` +data "aws_availability_zones" "available" { + provider = "awsalternate" + + state = "available" + + filter { + name = "opt-in-status" + values = ["opt-in-not-required"] + } +} + +data "aws_caller_identity" "current" {} +data "aws_partition" "current" {} +data "aws_region" "current" {} + +data "aws_rds_engine_version" "default" { + engine = %[1]q +} + +data "aws_rds_orderable_db_instance" "test" { + engine = data.aws_rds_engine_version.default.engine + engine_version = data.aws_rds_engine_version.default.version + preferred_instance_classes = [%[2]s] +} + +resource "aws_rds_cluster_parameter_group" "test" { + name = %[3]q + family = data.aws_rds_engine_version.default.parameter_group_family + description = "RDS default cluster parameter group" + + parameter { + name = "binlog_format" + value = "STATEMENT" + apply_method = "pending-reboot" + } +} + +resource "aws_rds_cluster" "test" { + cluster_identifier = "%[3]s-primary" + db_cluster_parameter_group_name = aws_rds_cluster_parameter_group.test.name + database_name = "test" + engine = data.aws_rds_engine_version.default.engine + master_username = "tfacctest" + master_password = "avoid-plaintext-passwords" + storage_encrypted = true + skip_final_snapshot = true +} + +resource "aws_rds_cluster_instance" "test" { + identifier = "%[3]s-primary" + cluster_identifier = aws_rds_cluster.test.id + instance_class = data.aws_rds_orderable_db_instance.test.instance_class + engine = aws_rds_cluster.test.engine + engine_version = aws_rds_cluster.test.engine_version +} + +resource "aws_kms_key" "test" { + provider = "awsalternate" + + description = %[3]q + + policy = < 0 { input.VPC = vpcs[0] } @@ -252,7 +252,7 @@ func resourceZoneUpdate(ctx context.Context, d *schema.ResourceData, meta interf } if d.HasChange("vpc") { - region := meta.(*conns.AWSClient).Region + region := meta.(*conns.AWSClient).Region(ctx) o, n := d.GetChange("vpc") os, ns := o.(*schema.Set), n.(*schema.Set) diff --git a/internal/service/route53/zone_association.go b/internal/service/route53/zone_association.go index 92234639060b..6bf4c1ef12f4 100644 --- a/internal/service/route53/zone_association.go +++ b/internal/service/route53/zone_association.go @@ -66,7 +66,7 @@ func resourceZoneAssociationCreate(ctx context.Context, d *schema.ResourceData, var diags diag.Diagnostics conn := meta.(*conns.AWSClient).Route53Client(ctx) - vpcRegion := meta.(*conns.AWSClient).Region + vpcRegion := meta.(*conns.AWSClient).Region(ctx) if v, ok := d.GetOk("vpc_region"); ok { vpcRegion = v.(string) } @@ -116,7 +116,7 @@ func resourceZoneAssociationRead(ctx context.Context, d *schema.ResourceData, me vpcRegion = d.Get("vpc_region").(string) } if vpcRegion == "" { - vpcRegion = meta.(*conns.AWSClient).Region + vpcRegion = meta.(*conns.AWSClient).Region(ctx) } hostedZoneSummary, err := findZoneAssociationByThreePartKey(ctx, conn, zoneID, vpcID, vpcRegion) @@ -153,7 +153,7 @@ func resourceZoneAssociationDelete(ctx context.Context, d *schema.ResourceData, vpcRegion = d.Get("vpc_region").(string) } if vpcRegion == "" { - vpcRegion = meta.(*conns.AWSClient).Region + vpcRegion = meta.(*conns.AWSClient).Region(ctx) } log.Printf("[INFO] Deleting Route53 Zone Association: %s", d.Id()) diff --git a/internal/service/route53/zones_data_source.go b/internal/service/route53/zones_data_source.go index b9dd9a5b3676..e351750a3a4b 100644 --- a/internal/service/route53/zones_data_source.go +++ b/internal/service/route53/zones_data_source.go @@ -67,7 +67,7 @@ func (d *zonesDataSource) Read(ctx context.Context, request datasource.ReadReque } } - data.ID = types.StringValue(d.Meta().Region) + data.ID = types.StringValue(d.Meta().Region(ctx)) data.ZoneIDs = fwflex.FlattenFrameworkStringValueList(ctx, zoneIDs) response.Diagnostics.Append(response.State.Set(ctx, &data)...) diff --git a/internal/service/route53domains/service_endpoints_gen_test.go b/internal/service/route53domains/service_endpoints_gen_test.go index eef4df7704a9..27fbd43060d6 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/route53domains/service_package.go b/internal/service/route53domains/service_package.go index 374fb73efb6c..4f641b83e381 100644 --- a/internal/service/route53domains/service_package.go +++ b/internal/service/route53domains/service_package.go @@ -23,13 +23,13 @@ func (p *servicePackage) NewClient(ctx context.Context, config map[string]any) ( func(o *route53domains.Options) { if config["partition"].(string) == endpoints.AwsPartitionID { // Route 53 Domains is only available in AWS Commercial us-east-1 Region. - if cfg.Region != names.USEast1RegionID { + if cfg.Region != endpoints.UsEast1RegionID { tflog.Info(ctx, "overriding region", map[string]any{ "original_region": cfg.Region, - "override_region": names.USEast1RegionID, + "override_region": endpoints.UsEast1RegionID, }) } - o.Region = names.USEast1RegionID + o.Region = endpoints.UsEast1RegionID } }, ), nil diff --git a/internal/service/route53recoverycontrolconfig/service_endpoints_gen_test.go b/internal/service/route53recoverycontrolconfig/service_endpoints_gen_test.go index c3f0a6d57fa2..e705a328409f 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/route53recoverycontrolconfig/service_package.go b/internal/service/route53recoverycontrolconfig/service_package.go index 2f80dd5fa3dd..a32d5ef61146 100644 --- a/internal/service/route53recoverycontrolconfig/service_package.go +++ b/internal/service/route53recoverycontrolconfig/service_package.go @@ -25,13 +25,13 @@ func (p *servicePackage) NewClient(ctx context.Context, config map[string]any) ( switch config["partition"].(string) { case endpoints.AwsPartitionID: // https://docs.aws.amazon.com/general/latest/gr/r53arc.html Setting default to us-west-2. - if cfg.Region != names.USWest2RegionID { + if cfg.Region != endpoints.UsWest2RegionID { tflog.Info(ctx, "overriding region", map[string]any{ "original_region": cfg.Region, - "override_region": names.USWest2RegionID, + "override_region": endpoints.UsWest2RegionID, }) } - o.Region = names.USWest2RegionID + o.Region = endpoints.UsWest2RegionID } }, ), nil diff --git a/internal/service/route53recoveryreadiness/cell_test.go b/internal/service/route53recoveryreadiness/cell_test.go index 52622645ec69..250151c3c966 100644 --- a/internal/service/route53recoveryreadiness/cell_test.go +++ b/internal/service/route53recoveryreadiness/cell_test.go @@ -35,7 +35,7 @@ func TestAccRoute53RecoveryReadinessCell_basic(t *testing.T) { Config: testAccCellConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckCellExists(ctx, resourceName), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "route53-recovery-readiness", regexache.MustCompile(`cell/.+`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "route53-recovery-readiness", regexache.MustCompile(`cell/.+`)), resource.TestCheckResourceAttr(resourceName, "cells.#", "0"), resource.TestCheckResourceAttr(resourceName, "parent_readiness_scopes.#", "0"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), @@ -90,18 +90,18 @@ func TestAccRoute53RecoveryReadinessCell_nestedCell(t *testing.T) { Config: testAccCellConfig_child(rNameChild), Check: resource.ComposeTestCheckFunc( testAccCheckCellExists(ctx, resourceNameChild), - acctest.MatchResourceAttrGlobalARN(resourceNameChild, names.AttrARN, "route53-recovery-readiness", regexache.MustCompile(`cell/.+`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceNameChild, names.AttrARN, "route53-recovery-readiness", regexache.MustCompile(`cell/.+`)), ), }, { Config: testAccCellConfig_parent(rNameChild, rNameParent), Check: resource.ComposeTestCheckFunc( testAccCheckCellExists(ctx, resourceNameParent), - acctest.MatchResourceAttrGlobalARN(resourceNameParent, names.AttrARN, "route53-recovery-readiness", regexache.MustCompile(`cell/.+`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceNameParent, names.AttrARN, "route53-recovery-readiness", regexache.MustCompile(`cell/.+`)), resource.TestCheckResourceAttr(resourceNameParent, "cells.#", "1"), resource.TestCheckResourceAttr(resourceNameParent, "parent_readiness_scopes.#", "0"), testAccCheckCellExists(ctx, resourceNameChild), - acctest.MatchResourceAttrGlobalARN(resourceNameChild, names.AttrARN, "route53-recovery-readiness", regexache.MustCompile(`cell/.+`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceNameChild, names.AttrARN, "route53-recovery-readiness", regexache.MustCompile(`cell/.+`)), resource.TestCheckResourceAttr(resourceNameChild, "cells.#", "0"), ), }, @@ -185,7 +185,7 @@ func TestAccRoute53RecoveryReadinessCell_timeout(t *testing.T) { Config: testAccCellConfig_timeout(rName), Check: resource.ComposeTestCheckFunc( testAccCheckCellExists(ctx, resourceName), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "route53-recovery-readiness", regexache.MustCompile(`cell/.+`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "route53-recovery-readiness", regexache.MustCompile(`cell/.+`)), resource.TestCheckResourceAttr(resourceName, "cells.#", "0"), resource.TestCheckResourceAttr(resourceName, "parent_readiness_scopes.#", "0"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), diff --git a/internal/service/route53recoveryreadiness/readiness_check_test.go b/internal/service/route53recoveryreadiness/readiness_check_test.go index 7d4f98fb8c91..1938470d11d7 100644 --- a/internal/service/route53recoveryreadiness/readiness_check_test.go +++ b/internal/service/route53recoveryreadiness/readiness_check_test.go @@ -10,6 +10,7 @@ import ( "github.com/YakDriver/regexache" "github.com/aws/aws-sdk-go-v2/aws/arn" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-plugin-testing/terraform" @@ -28,7 +29,7 @@ func TestAccRoute53RecoveryReadinessReadinessCheck_basic(t *testing.T) { cwArn := arn.ARN{ AccountID: acctest.Ct12Digit, Partition: acctest.Partition(), - Region: names.EUWest1RegionID, + Region: endpoints.EuWest1RegionID, Resource: "alarm:zzzzzzzzz", Service: "cloudwatch", }.String() @@ -43,7 +44,7 @@ func TestAccRoute53RecoveryReadinessReadinessCheck_basic(t *testing.T) { Config: testAccReadinessCheckConfig_basic(rName, rSetName, cwArn), Check: resource.ComposeTestCheckFunc( testAccCheckReadinessCheckExists(ctx, resourceName), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "route53-recovery-readiness", regexache.MustCompile(`readiness-check/.+`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "route53-recovery-readiness", regexache.MustCompile(`readiness-check/.+`)), resource.TestCheckResourceAttr(resourceName, "resource_set_name", rSetName), ), }, @@ -64,7 +65,7 @@ func TestAccRoute53RecoveryReadinessReadinessCheck_disappears(t *testing.T) { cwArn := arn.ARN{ AccountID: acctest.Ct12Digit, Partition: acctest.Partition(), - Region: names.EUWest1RegionID, + Region: endpoints.EuWest1RegionID, Resource: "alarm:zzzzzzzzz", Service: "cloudwatch", }.String() @@ -94,7 +95,7 @@ func TestAccRoute53RecoveryReadinessReadinessCheck_tags(t *testing.T) { cwArn := arn.ARN{ AccountID: acctest.Ct12Digit, Partition: acctest.Partition(), - Region: names.EUWest1RegionID, + Region: endpoints.EuWest1RegionID, Resource: "alarm:zzzzzzzzz", Service: "cloudwatch", }.String() @@ -147,7 +148,7 @@ func TestAccRoute53RecoveryReadinessReadinessCheck_timeout(t *testing.T) { cwArn := arn.ARN{ AccountID: acctest.Ct12Digit, Partition: acctest.Partition(), - Region: names.EUWest1RegionID, + Region: endpoints.EuWest1RegionID, Resource: "alarm:zzzzzzzzz", Service: "cloudwatch", }.String() @@ -162,7 +163,7 @@ func TestAccRoute53RecoveryReadinessReadinessCheck_timeout(t *testing.T) { Config: testAccReadinessCheckConfig_timeout(rName, rSetName, cwArn), Check: resource.ComposeTestCheckFunc( testAccCheckReadinessCheckExists(ctx, resourceName), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "route53-recovery-readiness", regexache.MustCompile(`readiness-check/.+`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "route53-recovery-readiness", regexache.MustCompile(`readiness-check/.+`)), resource.TestCheckResourceAttr(resourceName, "resource_set_name", rSetName), ), }, diff --git a/internal/service/route53recoveryreadiness/recovery_group_test.go b/internal/service/route53recoveryreadiness/recovery_group_test.go index a3cc5aede5a8..90a543f35053 100644 --- a/internal/service/route53recoveryreadiness/recovery_group_test.go +++ b/internal/service/route53recoveryreadiness/recovery_group_test.go @@ -34,7 +34,7 @@ func TestAccRoute53RecoveryReadinessRecoveryGroup_basic(t *testing.T) { Config: testAccRecoveryGroupConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckRecoveryGroupExists(ctx, resourceName), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "route53-recovery-readiness", regexache.MustCompile(`recovery-group/.+`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "route53-recovery-readiness", regexache.MustCompile(`recovery-group/.+`)), resource.TestCheckResourceAttr(resourceName, "cells.#", "0"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), @@ -86,7 +86,7 @@ func TestAccRoute53RecoveryReadinessRecoveryGroup_nestedCell(t *testing.T) { Config: testAccRecoveryGroupConfig_andCell(rName, rNameCell), Check: resource.ComposeTestCheckFunc( testAccCheckRecoveryGroupExists(ctx, resourceName), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "route53-recovery-readiness", regexache.MustCompile(`recovery-group/.+`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "route53-recovery-readiness", regexache.MustCompile(`recovery-group/.+`)), resource.TestCheckResourceAttr(resourceName, "cells.#", "1"), ), }, @@ -157,7 +157,7 @@ func TestAccRoute53RecoveryReadinessRecoveryGroup_timeout(t *testing.T) { Config: testAccRecoveryGroupConfig_timeout(rName), Check: resource.ComposeTestCheckFunc( testAccCheckRecoveryGroupExists(ctx, resourceName), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "route53-recovery-readiness", regexache.MustCompile(`recovery-group/.+`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "route53-recovery-readiness", regexache.MustCompile(`recovery-group/.+`)), resource.TestCheckResourceAttr(resourceName, "cells.#", "0"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), diff --git a/internal/service/route53recoveryreadiness/resource_set_test.go b/internal/service/route53recoveryreadiness/resource_set_test.go index 7d2cf0811695..2b3475f3f8f7 100644 --- a/internal/service/route53recoveryreadiness/resource_set_test.go +++ b/internal/service/route53recoveryreadiness/resource_set_test.go @@ -11,6 +11,7 @@ import ( "github.com/YakDriver/regexache" "github.com/aws/aws-sdk-go-v2/aws/arn" "github.com/aws/aws-sdk-go-v2/service/route53recoveryreadiness" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-plugin-testing/terraform" @@ -27,7 +28,7 @@ func TestAccRoute53RecoveryReadinessResourceSet_basic(t *testing.T) { cwArn := arn.ARN{ AccountID: acctest.Ct12Digit, Partition: acctest.Partition(), - Region: names.EUWest1RegionID, + Region: endpoints.EuWest1RegionID, Resource: "alarm:zzzzzzzzz", Service: "cloudwatch", }.String() @@ -43,7 +44,7 @@ func TestAccRoute53RecoveryReadinessResourceSet_basic(t *testing.T) { Config: testAccResourceSetConfig_basic(rName, cwArn), Check: resource.ComposeTestCheckFunc( testAccCheckResourceSetExists(ctx, resourceName), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "route53-recovery-readiness", regexache.MustCompile(`resource-set.+`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "route53-recovery-readiness", regexache.MustCompile(`resource-set.+`)), resource.TestCheckResourceAttr(resourceName, "resources.#", "1"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), @@ -63,7 +64,7 @@ func TestAccRoute53RecoveryReadinessResourceSet_disappears(t *testing.T) { cwArn := arn.ARN{ AccountID: acctest.Ct12Digit, Partition: acctest.Partition(), - Region: names.EUWest1RegionID, + Region: endpoints.EuWest1RegionID, Resource: "alarm:zzzzzzzzz", Service: "cloudwatch", }.String() @@ -94,7 +95,7 @@ func TestAccRoute53RecoveryReadinessResourceSet_tags(t *testing.T) { cwArn := arn.ARN{ AccountID: acctest.Ct12Digit, Partition: acctest.Partition(), - Region: names.EUWest1RegionID, + Region: endpoints.EuWest1RegionID, Resource: "alarm:zzzzzzzzz", Service: "cloudwatch", }.String() @@ -146,7 +147,7 @@ func TestAccRoute53RecoveryReadinessResourceSet_readinessScope(t *testing.T) { cwArn := arn.ARN{ AccountID: acctest.Ct12Digit, Partition: acctest.Partition(), - Region: names.EUWest1RegionID, + Region: endpoints.EuWest1RegionID, Resource: "alarm:zzzzzzzzz", Service: "cloudwatch", }.String() @@ -161,7 +162,7 @@ func TestAccRoute53RecoveryReadinessResourceSet_readinessScope(t *testing.T) { Config: testAccResourceSetConfig_readinessScopes(rName, cwArn), Check: resource.ComposeTestCheckFunc( testAccCheckResourceSetExists(ctx, resourceName), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "route53-recovery-readiness", regexache.MustCompile(`resource-set.+`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "route53-recovery-readiness", regexache.MustCompile(`resource-set.+`)), resource.TestCheckResourceAttr(resourceName, "resources.0.readiness_scopes.#", "1"), ), }, @@ -182,7 +183,7 @@ func TestAccRoute53RecoveryReadinessResourceSet_basicDNSTargetResource(t *testin hzArn := arn.ARN{ AccountID: acctest.Ct12Digit, Partition: acctest.Partition(), - Region: names.EUWest1RegionID, + Region: endpoints.EuWest1RegionID, Resource: "hostedzone/zzzzzzzzz", Service: "route53", }.String() @@ -202,7 +203,7 @@ func TestAccRoute53RecoveryReadinessResourceSet_basicDNSTargetResource(t *testin Config: testAccResourceSetConfig_basicDNSTarget(rName, domainName, hzArn, recordType, recordSetId), Check: resource.ComposeTestCheckFunc( testAccCheckResourceSetExists(ctx, resourceName), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "route53-recovery-readiness", regexache.MustCompile(`resource-set.+`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "route53-recovery-readiness", regexache.MustCompile(`resource-set.+`)), resource.TestCheckResourceAttr(resourceName, "resources.0.dns_target_resource.0.domain_name", domainName), resource.TestCheckResourceAttrSet(resourceName, "resources.0.dns_target_resource.0.hosted_zone_arn"), resource.TestCheckResourceAttr(resourceName, "resources.0.dns_target_resource.0.record_type", recordType), @@ -225,7 +226,7 @@ func TestAccRoute53RecoveryReadinessResourceSet_dnsTargetResourceNLBTarget(t *te hzArn := arn.ARN{ AccountID: acctest.Ct12Digit, Partition: acctest.Partition(), - Region: names.EUWest1RegionID, + Region: endpoints.EuWest1RegionID, Resource: "hostedzone/zzzzzzzzz", Service: "route53", }.String() @@ -243,7 +244,7 @@ func TestAccRoute53RecoveryReadinessResourceSet_dnsTargetResourceNLBTarget(t *te Config: testAccResourceSetConfig_dnsTargetNlbTarget(rName, hzArn), Check: resource.ComposeTestCheckFunc( testAccCheckResourceSetExists(ctx, resourceName), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "route53-recovery-readiness", regexache.MustCompile(`resource-set.+`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "route53-recovery-readiness", regexache.MustCompile(`resource-set.+`)), resource.TestCheckResourceAttrSet(resourceName, "resources.0.dns_target_resource.0.target_resource.0.nlb_resource.0.arn"), ), }, @@ -263,7 +264,7 @@ func TestAccRoute53RecoveryReadinessResourceSet_dnsTargetResourceR53Target(t *te hzArn := arn.ARN{ AccountID: acctest.Ct12Digit, Partition: acctest.Partition(), - Region: names.EUWest1RegionID, + Region: endpoints.EuWest1RegionID, Resource: "hostedzone/zzzzzzzzz", Service: "route53", }.String() @@ -283,7 +284,7 @@ func TestAccRoute53RecoveryReadinessResourceSet_dnsTargetResourceR53Target(t *te Config: testAccResourceSetConfig_dnsTargetR53Target(rName, hzArn, domainName, recordSetId), Check: resource.ComposeTestCheckFunc( testAccCheckResourceSetExists(ctx, resourceName), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "route53-recovery-readiness", regexache.MustCompile(`resource-set.+`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "route53-recovery-readiness", regexache.MustCompile(`resource-set.+`)), resource.TestCheckResourceAttr(resourceName, "resources.0.dns_target_resource.0.target_resource.0.r53_resource.0.domain_name", domainName), resource.TestCheckResourceAttr(resourceName, "resources.0.dns_target_resource.0.target_resource.0.r53_resource.0.record_set_id", recordSetId), ), @@ -303,7 +304,7 @@ func TestAccRoute53RecoveryReadinessResourceSet_timeout(t *testing.T) { cwArn := arn.ARN{ AccountID: acctest.Ct12Digit, Partition: acctest.Partition(), - Region: names.EUWest1RegionID, + Region: endpoints.EuWest1RegionID, Resource: "alarm:zzzzzzzzz", Service: "cloudwatch", }.String() @@ -319,7 +320,7 @@ func TestAccRoute53RecoveryReadinessResourceSet_timeout(t *testing.T) { Config: testAccResourceSetConfig_timeout(rName, cwArn), Check: resource.ComposeTestCheckFunc( testAccCheckResourceSetExists(ctx, resourceName), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "route53-recovery-readiness", regexache.MustCompile(`resource-set.+`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "route53-recovery-readiness", regexache.MustCompile(`resource-set.+`)), resource.TestCheckResourceAttr(resourceName, "resources.#", "1"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), diff --git a/internal/service/route53recoveryreadiness/service_endpoints_gen_test.go b/internal/service/route53recoveryreadiness/service_endpoints_gen_test.go index 854b1c2350b5..ad42a20c5b78 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/route53recoveryreadiness/service_package.go b/internal/service/route53recoveryreadiness/service_package.go index a520f0cdf882..33de9841e92f 100644 --- a/internal/service/route53recoveryreadiness/service_package.go +++ b/internal/service/route53recoveryreadiness/service_package.go @@ -25,13 +25,13 @@ func (p *servicePackage) NewClient(ctx context.Context, config map[string]any) ( switch config["partition"].(string) { case endpoints.AwsPartitionID: // https://docs.aws.amazon.com/general/latest/gr/r53arc.html Setting default to us-west-2. - if cfg.Region != names.USWest2RegionID { + if cfg.Region != endpoints.UsWest2RegionID { tflog.Info(ctx, "overriding region", map[string]any{ "original_region": cfg.Region, - "override_region": names.USWest2RegionID, + "override_region": endpoints.UsWest2RegionID, }) } - o.Region = names.USWest2RegionID + o.Region = endpoints.UsWest2RegionID } }, ), nil diff --git a/internal/service/route53resolver/config_test.go b/internal/service/route53resolver/config_test.go index bd160f267999..a347a7868a31 100644 --- a/internal/service/route53resolver/config_test.go +++ b/internal/service/route53resolver/config_test.go @@ -37,7 +37,7 @@ func TestAccRoute53ResolverConfig_basic(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckConfigExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "autodefined_reverse_flag", string(awstypes.AutodefinedReverseFlagDisable)), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttrPair(resourceName, names.AttrResourceID, vpcResourceName, names.AttrID), ), }, @@ -51,7 +51,7 @@ func TestAccRoute53ResolverConfig_basic(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckConfigExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "autodefined_reverse_flag", string(awstypes.AutodefinedReverseFlagEnable)), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttrPair(resourceName, names.AttrResourceID, vpcResourceName, names.AttrID), ), }, diff --git a/internal/service/route53resolver/dnssec_config.go b/internal/service/route53resolver/dnssec_config.go index 35ce97be0539..e2f7602986e6 100644 --- a/internal/service/route53resolver/dnssec_config.go +++ b/internal/service/route53resolver/dnssec_config.go @@ -102,7 +102,7 @@ func resourceDNSSECConfigRead(ctx context.Context, d *schema.ResourceData, meta arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "route53resolver", - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), AccountID: ownerID, Resource: fmt.Sprintf("resolver-dnssec-config/%s", resourceID), }.String() diff --git a/internal/service/route53resolver/dnssec_config_test.go b/internal/service/route53resolver/dnssec_config_test.go index 6859c9ae6cfe..1b1a8faf1da7 100644 --- a/internal/service/route53resolver/dnssec_config_test.go +++ b/internal/service/route53resolver/dnssec_config_test.go @@ -35,7 +35,7 @@ func TestAccRoute53ResolverDNSSECConfig_basic(t *testing.T) { Config: testAccDNSSECConfigConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckDNSSECConfigExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "route53resolver", regexache.MustCompile(`resolver-dnssec-config/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "route53resolver", regexache.MustCompile(`resolver-dnssec-config/.+$`)), resource.TestCheckResourceAttrSet(resourceName, names.AttrID), resource.TestCheckResourceAttrSet(resourceName, names.AttrOwnerID), resource.TestCheckResourceAttrSet(resourceName, names.AttrResourceID), diff --git a/internal/service/route53resolver/firewall_config_test.go b/internal/service/route53resolver/firewall_config_test.go index 18237c405d7b..036d8faa05e8 100644 --- a/internal/service/route53resolver/firewall_config_test.go +++ b/internal/service/route53resolver/firewall_config_test.go @@ -36,7 +36,7 @@ func TestAccRoute53ResolverFirewallConfig_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckFirewallConfigExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, "firewall_fail_open", "ENABLED"), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), ), }, { diff --git a/internal/service/route53resolver/firewall_rule_group_test.go b/internal/service/route53resolver/firewall_rule_group_test.go index 00f1ef1a732a..ae8740d6ae8d 100644 --- a/internal/service/route53resolver/firewall_rule_group_test.go +++ b/internal/service/route53resolver/firewall_rule_group_test.go @@ -37,7 +37,7 @@ func TestAccRoute53ResolverFirewallRuleGroup_basic(t *testing.T) { testAccCheckFirewallRuleGroupExists(ctx, resourceName, &v), resource.TestCheckResourceAttrSet(resourceName, names.AttrID), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, "share_status", "NOT_SHARED"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), @@ -93,7 +93,7 @@ func TestAccRoute53ResolverFirewallRuleGroup_tags(t *testing.T) { testAccCheckFirewallRuleGroupExists(ctx, resourceName, &v), resource.TestCheckResourceAttrSet(resourceName, names.AttrID), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, "share_status", "NOT_SHARED"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "1"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsKey1, acctest.CtValue1), @@ -110,7 +110,7 @@ func TestAccRoute53ResolverFirewallRuleGroup_tags(t *testing.T) { testAccCheckFirewallRuleGroupExists(ctx, resourceName, &v), resource.TestCheckResourceAttrSet(resourceName, names.AttrID), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, "share_status", "NOT_SHARED"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "2"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsKey1, acctest.CtValue1Updated), @@ -123,7 +123,7 @@ func TestAccRoute53ResolverFirewallRuleGroup_tags(t *testing.T) { testAccCheckFirewallRuleGroupExists(ctx, resourceName, &v), resource.TestCheckResourceAttrSet(resourceName, names.AttrID), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, "share_status", "NOT_SHARED"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "1"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsKey2, acctest.CtValue2), diff --git a/internal/service/route53resolver/query_log_config_test.go b/internal/service/route53resolver/query_log_config_test.go index b2abaf93ddc3..aea6e9fffc3c 100644 --- a/internal/service/route53resolver/query_log_config_test.go +++ b/internal/service/route53resolver/query_log_config_test.go @@ -38,7 +38,7 @@ func TestAccRoute53ResolverQueryLogConfig_basic(t *testing.T) { testAccCheckQueryLogConfigExists(ctx, resourceName, &v), resource.TestCheckResourceAttrPair(resourceName, names.AttrDestinationARN, s3BucketResourceName, names.AttrARN), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, "share_status", "NOT_SHARED"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), @@ -95,7 +95,7 @@ func TestAccRoute53ResolverQueryLogConfig_tags(t *testing.T) { testAccCheckQueryLogConfigExists(ctx, resourceName, &v), resource.TestCheckResourceAttrPair(resourceName, names.AttrDestinationARN, cwLogGroupResourceName, names.AttrARN), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, "share_status", "NOT_SHARED"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "1"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsKey1, acctest.CtValue1), @@ -112,7 +112,7 @@ func TestAccRoute53ResolverQueryLogConfig_tags(t *testing.T) { testAccCheckQueryLogConfigExists(ctx, resourceName, &v), resource.TestCheckResourceAttrPair(resourceName, names.AttrDestinationARN, cwLogGroupResourceName, names.AttrARN), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, "share_status", "NOT_SHARED"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "2"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsKey1, acctest.CtValue1Updated), @@ -125,7 +125,7 @@ func TestAccRoute53ResolverQueryLogConfig_tags(t *testing.T) { testAccCheckQueryLogConfigExists(ctx, resourceName, &v), resource.TestCheckResourceAttrPair(resourceName, names.AttrDestinationARN, cwLogGroupResourceName, names.AttrARN), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, "share_status", "NOT_SHARED"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "1"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsKey2, acctest.CtValue2), diff --git a/internal/service/route53resolver/rule_test.go b/internal/service/route53resolver/rule_test.go index 1e0a14076a2a..b74952083856 100644 --- a/internal/service/route53resolver/rule_test.go +++ b/internal/service/route53resolver/rule_test.go @@ -39,7 +39,7 @@ func TestAccRoute53ResolverRule_basic(t *testing.T) { resource.TestCheckResourceAttrSet(resourceName, names.AttrARN), resource.TestCheckResourceAttr(resourceName, names.AttrDomainName, domainName), resource.TestCheckResourceAttr(resourceName, names.AttrName, ""), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, "resolver_endpoint_id", ""), resource.TestCheckResourceAttr(resourceName, "rule_type", "SYSTEM"), resource.TestCheckResourceAttr(resourceName, "share_status", "NOT_SHARED"), @@ -144,7 +144,7 @@ func TestAccRoute53ResolverRule_justDotDomainName(t *testing.T) { resource.TestCheckResourceAttr(resourceName, names.AttrDomainName, "."), resource.TestCheckResourceAttr(resourceName, "rule_type", "SYSTEM"), resource.TestCheckResourceAttr(resourceName, "share_status", "NOT_SHARED"), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -175,7 +175,7 @@ func TestAccRoute53ResolverRule_trailingDotDomainName(t *testing.T) { resource.TestCheckResourceAttr(resourceName, names.AttrDomainName, "example.com"), resource.TestCheckResourceAttr(resourceName, "rule_type", "SYSTEM"), resource.TestCheckResourceAttr(resourceName, "share_status", "NOT_SHARED"), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, diff --git a/internal/service/route53resolver/rules_data_source.go b/internal/service/route53resolver/rules_data_source.go index 8c318ebf8d30..6a45989e8d01 100644 --- a/internal/service/route53resolver/rules_data_source.go +++ b/internal/service/route53resolver/rules_data_source.go @@ -99,7 +99,7 @@ func dataSourceRulesRead(ctx context.Context, d *schema.ResourceData, meta inter } } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) d.Set("resolver_rule_ids", aws.ToStringSlice(ruleIDs)) diff --git a/internal/service/route53resolver/service_endpoints_gen_test.go b/internal/service/route53resolver/service_endpoints_gen_test.go index 7da8273ca84d..ee0c9573211b 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/route53resolver/sweep.go b/internal/service/route53resolver/sweep.go index 0a657f7de2f8..fd390b29ae5a 100644 --- a/internal/service/route53resolver/sweep.go +++ b/internal/service/route53resolver/sweep.go @@ -567,7 +567,7 @@ func sweepRules(region string) error { } for _, v := range page.ResolverRules { - if aws.ToString(v.OwnerId) != client.AccountID { + if aws.ToString(v.OwnerId) != client.AccountID(ctx) { continue } diff --git a/internal/service/rum/app_monitor.go b/internal/service/rum/app_monitor.go index 1b51a1a7106a..5c03c3a0b019 100644 --- a/internal/service/rum/app_monitor.go +++ b/internal/service/rum/app_monitor.go @@ -211,8 +211,8 @@ func resourceAppMonitorRead(ctx context.Context, d *schema.ResourceData, meta in arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "rum", - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: "appmonitor/" + name, }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/rum/app_monitor_test.go b/internal/service/rum/app_monitor_test.go index 19b5560a2372..f1b37f4a19e7 100644 --- a/internal/service/rum/app_monitor_test.go +++ b/internal/service/rum/app_monitor_test.go @@ -39,7 +39,7 @@ func TestAccRUMAppMonitor_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "app_monitor_configuration.#", "1"), resource.TestCheckResourceAttr(resourceName, "app_monitor_configuration.0.session_sample_rate", "0.1"), resource.TestCheckResourceAttrSet(resourceName, "app_monitor_id"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "rum", fmt.Sprintf("appmonitor/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "rum", fmt.Sprintf("appmonitor/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cw_log_enabled", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, names.AttrDomain, "localhost"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), @@ -59,7 +59,7 @@ func TestAccRUMAppMonitor_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "app_monitor_configuration.#", "1"), resource.TestCheckResourceAttr(resourceName, "app_monitor_configuration.0.session_sample_rate", "0.1"), resource.TestCheckResourceAttrSet(resourceName, "app_monitor_id"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "rum", fmt.Sprintf("appmonitor/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "rum", fmt.Sprintf("appmonitor/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cw_log_enabled", acctest.CtTrue), resource.TestCheckResourceAttrSet(resourceName, "cw_log_group"), resource.TestCheckResourceAttr(resourceName, names.AttrDomain, "localhost"), diff --git a/internal/service/rum/service_endpoints_gen_test.go b/internal/service/rum/service_endpoints_gen_test.go index 34f4c585da7a..85928df9970d 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.go b/internal/service/s3/bucket.go index 21f85025f511..57a98962cc78 100644 --- a/internal/service/s3/bucket.go +++ b/internal/service/s3/bucket.go @@ -712,7 +712,7 @@ func resourceBucketCreate(ctx context.Context, d *schema.ResourceData, meta inte conn := meta.(*conns.AWSClient).S3Client(ctx) bucket := create.Name(d.Get(names.AttrBucket).(string), d.Get(names.AttrBucketPrefix).(string)) - region := meta.(*conns.AWSClient).Region + region := meta.(*conns.AWSClient).Region(ctx) if err := validBucketName(bucket, region); err != nil { return sdkdiag.AppendErrorf(diags, "validating S3 Bucket (%s) name: %s", bucket, err) diff --git a/internal/service/s3/bucket_accelerate_configuration.go b/internal/service/s3/bucket_accelerate_configuration.go index d18b9d08244f..bdf0f6225619 100644 --- a/internal/service/s3/bucket_accelerate_configuration.go +++ b/internal/service/s3/bucket_accelerate_configuration.go @@ -62,6 +62,9 @@ func resourceBucketAccelerateConfigurationCreate(ctx context.Context, d *schema. conn := meta.(*conns.AWSClient).S3Client(ctx) bucket := d.Get(names.AttrBucket).(string) + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } expectedBucketOwner := d.Get(names.AttrExpectedBucketOwner).(string) input := &s3.PutBucketAccelerateConfigurationInput{ Bucket: aws.String(bucket), @@ -107,6 +110,10 @@ func resourceBucketAccelerateConfigurationRead(ctx context.Context, d *schema.Re return sdkdiag.AppendFromErr(diags, err) } + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } + output, err := findBucketAccelerateConfiguration(ctx, conn, bucket, expectedBucketOwner) if !d.IsNewResource() && tfresource.NotFound(err) { @@ -135,6 +142,10 @@ func resourceBucketAccelerateConfigurationUpdate(ctx context.Context, d *schema. return sdkdiag.AppendFromErr(diags, err) } + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } + input := &s3.PutBucketAccelerateConfigurationInput{ Bucket: aws.String(bucket), AccelerateConfiguration: &types.AccelerateConfiguration{ @@ -163,6 +174,10 @@ func resourceBucketAccelerateConfigurationDelete(ctx context.Context, d *schema. return sdkdiag.AppendFromErr(diags, err) } + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } + input := &s3.PutBucketAccelerateConfigurationInput{ Bucket: aws.String(bucket), AccelerateConfiguration: &types.AccelerateConfiguration{ diff --git a/internal/service/s3/bucket_accelerate_configuration_test.go b/internal/service/s3/bucket_accelerate_configuration_test.go index cd83ce2daea4..e3d1d779a72e 100644 --- a/internal/service/s3/bucket_accelerate_configuration_test.go +++ b/internal/service/s3/bucket_accelerate_configuration_test.go @@ -189,9 +189,9 @@ func TestAccS3BucketAccelerateConfiguration_directoryBucket(t *testing.T) { func testAccCheckBucketAccelerateConfigurationDestroy(ctx context.Context) resource.TestCheckFunc { return func(s *terraform.State) error { - conn := acctest.Provider.Meta().(*conns.AWSClient).S3Client(ctx) - for _, rs := range s.RootModule().Resources { + conn := acctest.Provider.Meta().(*conns.AWSClient).S3Client(ctx) + if rs.Type != "aws_s3_bucket_accelerate_configuration" { continue } @@ -201,6 +201,10 @@ func testAccCheckBucketAccelerateConfigurationDestroy(ctx context.Context) resou return err } + if tfs3.IsDirectoryBucket(bucket) { + conn = acctest.Provider.Meta().(*conns.AWSClient).S3ExpressClient(ctx) + } + _, err = tfs3.FindBucketAccelerateConfiguration(ctx, conn, bucket, expectedBucketOwner) if tfresource.NotFound(err) { @@ -232,6 +236,10 @@ func testAccCheckBucketAccelerateConfigurationExists(ctx context.Context, n stri return err } + if tfs3.IsDirectoryBucket(bucket) { + conn = acctest.Provider.Meta().(*conns.AWSClient).S3ExpressClient(ctx) + } + _, err = tfs3.FindBucketAccelerateConfiguration(ctx, conn, bucket, expectedBucketOwner) return err diff --git a/internal/service/s3/bucket_acl.go b/internal/service/s3/bucket_acl.go index a3f3838f7b97..f194f1195a35 100644 --- a/internal/service/s3/bucket_acl.go +++ b/internal/service/s3/bucket_acl.go @@ -153,6 +153,9 @@ func resourceBucketACLCreate(ctx context.Context, d *schema.ResourceData, meta i conn := meta.(*conns.AWSClient).S3Client(ctx) bucket := d.Get(names.AttrBucket).(string) + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } expectedBucketOwner := d.Get(names.AttrExpectedBucketOwner).(string) acl := d.Get("acl").(string) input := &s3.PutBucketAclInput{ @@ -203,6 +206,10 @@ func resourceBucketACLRead(ctx context.Context, d *schema.ResourceData, meta int return sdkdiag.AppendFromErr(diags, err) } + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } + bucketACL, err := findBucketACL(ctx, conn, bucket, expectedBucketOwner) if !d.IsNewResource() && tfresource.NotFound(err) { @@ -234,6 +241,10 @@ func resourceBucketACLUpdate(ctx context.Context, d *schema.ResourceData, meta i return sdkdiag.AppendFromErr(diags, err) } + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } + input := &s3.PutBucketAclInput{ Bucket: aws.String(bucket), } diff --git a/internal/service/s3/bucket_acl_test.go b/internal/service/s3/bucket_acl_test.go index 10567be64191..ac9dfab15a82 100644 --- a/internal/service/s3/bucket_acl_test.go +++ b/internal/service/s3/bucket_acl_test.go @@ -653,6 +653,9 @@ func testAccCheckBucketACLExists(ctx context.Context, n string) resource.TestChe } conn := acctest.Provider.Meta().(*conns.AWSClient).S3Client(ctx) + if tfs3.IsDirectoryBucket(bucket) { + conn = acctest.Provider.Meta().(*conns.AWSClient).S3ExpressClient(ctx) + } _, err = tfs3.FindBucketACL(ctx, conn, bucket, expectedBucketOwner) diff --git a/internal/service/s3/bucket_analytics_configuration.go b/internal/service/s3/bucket_analytics_configuration.go index 08aa87b21171..597b378185c3 100644 --- a/internal/service/s3/bucket_analytics_configuration.go +++ b/internal/service/s3/bucket_analytics_configuration.go @@ -149,6 +149,9 @@ func resourceBucketAnalyticsConfigurationPut(ctx context.Context, d *schema.Reso } bucket := d.Get(names.AttrBucket).(string) + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } input := &s3.PutBucketAnalyticsConfigurationInput{ Bucket: aws.String(bucket), Id: aws.String(name), @@ -191,6 +194,10 @@ func resourceBucketAnalyticsConfigurationRead(ctx context.Context, d *schema.Res return sdkdiag.AppendFromErr(diags, err) } + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } + ac, err := findAnalyticsConfiguration(ctx, conn, bucket, name) if !d.IsNewResource() && tfresource.NotFound(err) { @@ -224,6 +231,10 @@ func resourceBucketAnalyticsConfigurationDelete(ctx context.Context, d *schema.R return sdkdiag.AppendFromErr(diags, err) } + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } + log.Printf("[DEBUG] Deleting S3 Bucket Analytics Configuration: %s", d.Id()) _, err = conn.DeleteBucketAnalyticsConfiguration(ctx, &s3.DeleteBucketAnalyticsConfigurationInput{ Bucket: aws.String(bucket), diff --git a/internal/service/s3/bucket_analytics_configuration_test.go b/internal/service/s3/bucket_analytics_configuration_test.go index 1f09f4a8f140..0f1e236824ef 100644 --- a/internal/service/s3/bucket_analytics_configuration_test.go +++ b/internal/service/s3/bucket_analytics_configuration_test.go @@ -483,9 +483,9 @@ func TestAccS3BucketAnalyticsConfiguration_directoryBucket(t *testing.T) { func testAccCheckBucketAnalyticsConfigurationDestroy(ctx context.Context) resource.TestCheckFunc { return func(s *terraform.State) error { - conn := acctest.Provider.Meta().(*conns.AWSClient).S3Client(ctx) - for _, rs := range s.RootModule().Resources { + conn := acctest.Provider.Meta().(*conns.AWSClient).S3Client(ctx) + if rs.Type != "aws_s3_bucket_analytics_configuration" { continue } @@ -495,6 +495,10 @@ func testAccCheckBucketAnalyticsConfigurationDestroy(ctx context.Context) resour return err } + if tfs3.IsDirectoryBucket(bucket) { + conn = acctest.Provider.Meta().(*conns.AWSClient).S3ExpressClient(ctx) + } + _, err = tfs3.FindAnalyticsConfiguration(ctx, conn, bucket, name) if tfresource.NotFound(err) { @@ -526,6 +530,10 @@ func testAccCheckBucketAnalyticsConfigurationExists(ctx context.Context, n strin conn := acctest.Provider.Meta().(*conns.AWSClient).S3Client(ctx) + if tfs3.IsDirectoryBucket(bucket) { + conn = acctest.Provider.Meta().(*conns.AWSClient).S3ExpressClient(ctx) + } + output, err := tfs3.FindAnalyticsConfiguration(ctx, conn, bucket, name) if err != nil { diff --git a/internal/service/s3/bucket_cors_configuration.go b/internal/service/s3/bucket_cors_configuration.go index d824498d4c4a..84091060c749 100644 --- a/internal/service/s3/bucket_cors_configuration.go +++ b/internal/service/s3/bucket_cors_configuration.go @@ -95,6 +95,9 @@ func resourceBucketCorsConfigurationCreate(ctx context.Context, d *schema.Resour conn := meta.(*conns.AWSClient).S3Client(ctx) bucket := d.Get(names.AttrBucket).(string) + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } expectedBucketOwner := d.Get(names.AttrExpectedBucketOwner).(string) input := &s3.PutBucketCorsInput{ Bucket: aws.String(bucket), @@ -140,6 +143,10 @@ func resourceBucketCorsConfigurationRead(ctx context.Context, d *schema.Resource return sdkdiag.AppendFromErr(diags, err) } + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } + corsRules, err := findCORSRules(ctx, conn, bucket, expectedBucketOwner) if !d.IsNewResource() && tfresource.NotFound(err) { @@ -170,6 +177,10 @@ func resourceBucketCorsConfigurationUpdate(ctx context.Context, d *schema.Resour return sdkdiag.AppendFromErr(diags, err) } + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } + input := &s3.PutBucketCorsInput{ Bucket: aws.String(bucket), CORSConfiguration: &types.CORSConfiguration{ @@ -198,6 +209,10 @@ func resourceBucketCorsConfigurationDelete(ctx context.Context, d *schema.Resour return sdkdiag.AppendFromErr(diags, err) } + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } + input := &s3.DeleteBucketCorsInput{ Bucket: aws.String(bucket), } diff --git a/internal/service/s3/bucket_cors_configuration_test.go b/internal/service/s3/bucket_cors_configuration_test.go index 7184fc66e9f4..eb25939f95c6 100644 --- a/internal/service/s3/bucket_cors_configuration_test.go +++ b/internal/service/s3/bucket_cors_configuration_test.go @@ -351,9 +351,9 @@ func TestAccS3BucketCORSConfiguration_directoryBucket(t *testing.T) { func testAccCheckBucketCORSConfigurationDestroy(ctx context.Context) resource.TestCheckFunc { return func(s *terraform.State) error { - conn := acctest.Provider.Meta().(*conns.AWSClient).S3Client(ctx) - for _, rs := range s.RootModule().Resources { + conn := acctest.Provider.Meta().(*conns.AWSClient).S3Client(ctx) + if rs.Type != "aws_s3_bucket_cors_configuration" { continue } @@ -363,6 +363,10 @@ func testAccCheckBucketCORSConfigurationDestroy(ctx context.Context) resource.Te return err } + if tfs3.IsDirectoryBucket(bucket) { + conn = acctest.Provider.Meta().(*conns.AWSClient).S3ExpressClient(ctx) + } + _, err = tfs3.FindCORSRules(ctx, conn, bucket, expectedBucketOwner) if tfresource.NotFound(err) { @@ -393,6 +397,9 @@ func testAccCheckBucketCORSConfigurationExists(ctx context.Context, n string) re } conn := acctest.Provider.Meta().(*conns.AWSClient).S3Client(ctx) + if tfs3.IsDirectoryBucket(bucket) { + conn = acctest.Provider.Meta().(*conns.AWSClient).S3ExpressClient(ctx) + } _, err = tfs3.FindCORSRules(ctx, conn, bucket, expectedBucketOwner) diff --git a/internal/service/s3/bucket_data_source.go b/internal/service/s3/bucket_data_source.go index 7f4455a0dbce..995986316c4c 100644 --- a/internal/service/s3/bucket_data_source.go +++ b/internal/service/s3/bucket_data_source.go @@ -9,6 +9,7 @@ import ( "github.com/aws/aws-sdk-go-v2/aws/arn" "github.com/aws/aws-sdk-go-v2/service/s3" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" "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" @@ -63,13 +64,15 @@ func dataSourceBucketRead(ctx context.Context, d *schema.ResourceData, meta inte var diags diag.Diagnostics awsClient := meta.(*conns.AWSClient) conn := awsClient.S3Client(ctx) - var optFns []func(*s3.Options) bucket := d.Get(names.AttrBucket).(string) + + var optFns []func(*s3.Options) // Via S3 access point: "Invalid configuration: region from ARN `us-east-1` does not match client region `aws-global` and UseArnRegion is `false`". - if arn.IsARN(bucket) && conn.Options().Region == names.GlobalRegionID { + if arn.IsARN(bucket) && conn.Options().Region == endpoints.AwsGlobalRegionID { optFns = append(optFns, func(o *s3.Options) { o.UseARNRegion = true }) } + err := findBucket(ctx, conn, bucket, optFns...) if err != nil { diff --git a/internal/service/s3/bucket_intelligent_tiering_configuration.go b/internal/service/s3/bucket_intelligent_tiering_configuration.go index e0442143f4db..cf72e3ac3e19 100644 --- a/internal/service/s3/bucket_intelligent_tiering_configuration.go +++ b/internal/service/s3/bucket_intelligent_tiering_configuration.go @@ -114,6 +114,9 @@ func resourceBucketIntelligentTieringConfigurationPut(ctx context.Context, d *sc } bucket := d.Get(names.AttrBucket).(string) + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } input := &s3.PutBucketIntelligentTieringConfigurationInput{ Bucket: aws.String(bucket), Id: aws.String(name), @@ -156,6 +159,10 @@ func resourceBucketIntelligentTieringConfigurationRead(ctx context.Context, d *s return sdkdiag.AppendFromErr(diags, err) } + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } + output, err := findIntelligentTieringConfiguration(ctx, conn, bucket, name) if !d.IsNewResource() && tfresource.NotFound(err) { @@ -194,6 +201,10 @@ func resourceBucketIntelligentTieringConfigurationDelete(ctx context.Context, d return sdkdiag.AppendFromErr(diags, err) } + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } + log.Printf("[DEBUG] Deleting S3 Bucket Intelligent-Tiering Configuration: %s", d.Id()) _, err = conn.DeleteBucketIntelligentTieringConfiguration(ctx, &s3.DeleteBucketIntelligentTieringConfigurationInput{ Bucket: aws.String(bucket), diff --git a/internal/service/s3/bucket_intelligent_tiering_configuration_test.go b/internal/service/s3/bucket_intelligent_tiering_configuration_test.go index 5370901dd757..fec44fdb5201 100644 --- a/internal/service/s3/bucket_intelligent_tiering_configuration_test.go +++ b/internal/service/s3/bucket_intelligent_tiering_configuration_test.go @@ -227,6 +227,9 @@ func testAccCheckBucketIntelligentTieringConfigurationExists(ctx context.Context } conn := acctest.Provider.Meta().(*conns.AWSClient).S3Client(ctx) + if tfs3.IsDirectoryBucket(bucket) { + conn = acctest.Provider.Meta().(*conns.AWSClient).S3ExpressClient(ctx) + } output, err := tfs3.FindIntelligentTieringConfiguration(ctx, conn, bucket, name) @@ -242,9 +245,9 @@ func testAccCheckBucketIntelligentTieringConfigurationExists(ctx context.Context func testAccCheckBucketIntelligentTieringConfigurationDestroy(ctx context.Context) resource.TestCheckFunc { return func(s *terraform.State) error { - conn := acctest.Provider.Meta().(*conns.AWSClient).S3Client(ctx) - for _, rs := range s.RootModule().Resources { + conn := acctest.Provider.Meta().(*conns.AWSClient).S3Client(ctx) + if rs.Type != "aws_s3_bucket_intelligent_tiering_configuration" { continue } @@ -254,6 +257,10 @@ func testAccCheckBucketIntelligentTieringConfigurationDestroy(ctx context.Contex return err } + if tfs3.IsDirectoryBucket(bucket) { + conn = acctest.Provider.Meta().(*conns.AWSClient).S3ExpressClient(ctx) + } + _, err = tfs3.FindIntelligentTieringConfiguration(ctx, conn, bucket, name) if tfresource.NotFound(err) { diff --git a/internal/service/s3/bucket_inventory.go b/internal/service/s3/bucket_inventory.go index 96ac6163041e..60934560dfea 100644 --- a/internal/service/s3/bucket_inventory.go +++ b/internal/service/s3/bucket_inventory.go @@ -210,6 +210,9 @@ func resourceBucketInventoryPut(ctx context.Context, d *schema.ResourceData, met } bucket := d.Get(names.AttrBucket).(string) + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } input := &s3.PutBucketInventoryConfigurationInput{ Bucket: aws.String(bucket), Id: aws.String(name), @@ -252,6 +255,10 @@ func resourceBucketInventoryRead(ctx context.Context, d *schema.ResourceData, me return sdkdiag.AppendFromErr(diags, err) } + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } + ic, err := findInventoryConfiguration(ctx, conn, bucket, name) if !d.IsNewResource() && tfresource.NotFound(err) { @@ -296,6 +303,10 @@ func resourceBucketInventoryDelete(ctx context.Context, d *schema.ResourceData, return sdkdiag.AppendFromErr(diags, err) } + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } + input := &s3.DeleteBucketInventoryConfigurationInput{ Bucket: aws.String(bucket), Id: aws.String(name), diff --git a/internal/service/s3/bucket_inventory_test.go b/internal/service/s3/bucket_inventory_test.go index 29c059bdd2da..660bd3abc15c 100644 --- a/internal/service/s3/bucket_inventory_test.go +++ b/internal/service/s3/bucket_inventory_test.go @@ -52,7 +52,7 @@ func TestAccS3BucketInventory_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "destination.#", "1"), resource.TestCheckResourceAttr(resourceName, "destination.0.bucket.#", "1"), acctest.CheckResourceAttrGlobalARNNoAccount(resourceName, "destination.0.bucket.0.bucket_arn", "s3", rName), - acctest.CheckResourceAttrAccountID(resourceName, "destination.0.bucket.0.account_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "destination.0.bucket.0.account_id"), resource.TestCheckResourceAttr(resourceName, "destination.0.bucket.0.format", "ORC"), resource.TestCheckResourceAttr(resourceName, "destination.0.bucket.0.prefix", "inventory"), ), @@ -157,6 +157,9 @@ func testAccCheckBucketInventoryExists(ctx context.Context, n string, v *types.I } conn := acctest.Provider.Meta().(*conns.AWSClient).S3Client(ctx) + if tfs3.IsDirectoryBucket(bucket) { + conn = acctest.Provider.Meta().(*conns.AWSClient).S3ExpressClient(ctx) + } output, err := tfs3.FindInventoryConfiguration(ctx, conn, bucket, name) @@ -172,9 +175,9 @@ func testAccCheckBucketInventoryExists(ctx context.Context, n string, v *types.I func testAccCheckBucketInventoryDestroy(ctx context.Context) resource.TestCheckFunc { return func(s *terraform.State) error { - conn := acctest.Provider.Meta().(*conns.AWSClient).S3Client(ctx) - for _, rs := range s.RootModule().Resources { + conn := acctest.Provider.Meta().(*conns.AWSClient).S3Client(ctx) + if rs.Type != "aws_s3_bucket_inventory" { continue } @@ -184,6 +187,10 @@ func testAccCheckBucketInventoryDestroy(ctx context.Context) resource.TestCheckF return err } + if tfs3.IsDirectoryBucket(bucket) { + conn = acctest.Provider.Meta().(*conns.AWSClient).S3ExpressClient(ctx) + } + _, err = tfs3.FindInventoryConfiguration(ctx, conn, bucket, name) if tfresource.NotFound(err) { diff --git a/internal/service/s3/bucket_lifecycle_configuration.go b/internal/service/s3/bucket_lifecycle_configuration.go index 88faf9a2c452..0379cc4e27f2 100644 --- a/internal/service/s3/bucket_lifecycle_configuration.go +++ b/internal/service/s3/bucket_lifecycle_configuration.go @@ -268,6 +268,9 @@ func resourceBucketLifecycleConfigurationCreate(ctx context.Context, d *schema.R conn := meta.(*conns.AWSClient).S3Client(ctx) bucket := d.Get(names.AttrBucket).(string) + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } expectedBucketOwner := d.Get(names.AttrExpectedBucketOwner).(string) rules := expandLifecycleRules(ctx, d.Get(names.AttrRule).([]interface{})) input := &s3.PutBucketLifecycleConfigurationInput{ @@ -314,6 +317,10 @@ func resourceBucketLifecycleConfigurationRead(ctx context.Context, d *schema.Res return sdkdiag.AppendFromErr(diags, err) } + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } + const ( lifecycleConfigurationExtraRetryDelay = 5 * time.Second lifecycleConfigurationRulesSteadyTimeout = 2 * time.Minute @@ -376,6 +383,10 @@ func resourceBucketLifecycleConfigurationUpdate(ctx context.Context, d *schema.R return sdkdiag.AppendFromErr(diags, err) } + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } + rules := expandLifecycleRules(ctx, d.Get(names.AttrRule).([]interface{})) input := &s3.PutBucketLifecycleConfigurationInput{ Bucket: aws.String(bucket), @@ -415,6 +426,10 @@ func resourceBucketLifecycleConfigurationDelete(ctx context.Context, d *schema.R return sdkdiag.AppendFromErr(diags, err) } + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } + input := &s3.DeleteBucketLifecycleInput{ Bucket: aws.String(bucket), } diff --git a/internal/service/s3/bucket_lifecycle_configuration_test.go b/internal/service/s3/bucket_lifecycle_configuration_test.go index e6aac6b1cfcd..6cbcb7e901ae 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, }, }, }) @@ -1124,9 +1136,9 @@ func TestAccS3BucketLifecycleConfiguration_basicTransitionDefaultMinimumObjectSi func testAccCheckBucketLifecycleConfigurationDestroy(ctx context.Context) resource.TestCheckFunc { return func(s *terraform.State) error { - conn := acctest.Provider.Meta().(*conns.AWSClient).S3Client(ctx) - for _, rs := range s.RootModule().Resources { + conn := acctest.Provider.Meta().(*conns.AWSClient).S3Client(ctx) + if rs.Type != "aws_s3_bucket_lifecycle_configuration" { continue } @@ -1136,6 +1148,10 @@ func testAccCheckBucketLifecycleConfigurationDestroy(ctx context.Context) resour return err } + if tfs3.IsDirectoryBucket(bucket) { + conn = acctest.Provider.Meta().(*conns.AWSClient).S3ExpressClient(ctx) + } + _, err = tfs3.FindBucketLifecycleConfiguration(ctx, conn, bucket, expectedBucketOwner) if tfresource.NotFound(err) { @@ -1167,6 +1183,10 @@ func testAccCheckBucketLifecycleConfigurationExists(ctx context.Context, n strin return err } + if tfs3.IsDirectoryBucket(bucket) { + conn = acctest.Provider.Meta().(*conns.AWSClient).S3ExpressClient(ctx) + } + _, err = tfs3.FindBucketLifecycleConfiguration(ctx, conn, bucket, expectedBucketOwner) return err diff --git a/internal/service/s3/bucket_logging.go b/internal/service/s3/bucket_logging.go index 49f0c2e5ffc6..91ecf6eeef44 100644 --- a/internal/service/s3/bucket_logging.go +++ b/internal/service/s3/bucket_logging.go @@ -141,6 +141,9 @@ func resourceBucketLoggingCreate(ctx context.Context, d *schema.ResourceData, me conn := meta.(*conns.AWSClient).S3Client(ctx) bucket := d.Get(names.AttrBucket).(string) + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } expectedBucketOwner := d.Get(names.AttrExpectedBucketOwner).(string) input := &s3.PutBucketLoggingInput{ Bucket: aws.String(bucket), @@ -197,6 +200,10 @@ func resourceBucketLoggingRead(ctx context.Context, d *schema.ResourceData, meta return sdkdiag.AppendFromErr(diags, err) } + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } + loggingEnabled, err := findLoggingEnabled(ctx, conn, bucket, expectedBucketOwner) if !d.IsNewResource() && tfresource.NotFound(err) { @@ -236,6 +243,10 @@ func resourceBucketLoggingUpdate(ctx context.Context, d *schema.ResourceData, me return sdkdiag.AppendFromErr(diags, err) } + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } + input := &s3.PutBucketLoggingInput{ Bucket: aws.String(bucket), BucketLoggingStatus: &types.BucketLoggingStatus{ @@ -275,6 +286,10 @@ func resourceBucketLoggingDelete(ctx context.Context, d *schema.ResourceData, me return sdkdiag.AppendFromErr(diags, err) } + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } + input := &s3.PutBucketLoggingInput{ Bucket: aws.String(bucket), BucketLoggingStatus: &types.BucketLoggingStatus{}, diff --git a/internal/service/s3/bucket_logging_test.go b/internal/service/s3/bucket_logging_test.go index e70b4f44d09d..4544fd4b1585 100644 --- a/internal/service/s3/bucket_logging_test.go +++ b/internal/service/s3/bucket_logging_test.go @@ -373,7 +373,7 @@ func TestAccS3BucketLogging_withExpectedBucketOwner(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckBucketLoggingExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, names.AttrBucket, rName), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrExpectedBucketOwner), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrExpectedBucketOwner), resource.TestCheckResourceAttrPair(resourceName, "target_bucket", "aws_s3_bucket.log_bucket", names.AttrBucket), resource.TestCheckResourceAttr(resourceName, "target_grant.#", "0"), resource.TestCheckResourceAttr(resourceName, "target_object_key_format.#", "0"), @@ -465,9 +465,9 @@ func TestAccS3BucketLogging_directoryBucket(t *testing.T) { func testAccCheckBucketLoggingDestroy(ctx context.Context) resource.TestCheckFunc { return func(s *terraform.State) error { - conn := acctest.Provider.Meta().(*conns.AWSClient).S3Client(ctx) - for _, rs := range s.RootModule().Resources { + conn := acctest.Provider.Meta().(*conns.AWSClient).S3Client(ctx) + if rs.Type != "aws_s3_bucket_logging" { continue } @@ -477,6 +477,10 @@ func testAccCheckBucketLoggingDestroy(ctx context.Context) resource.TestCheckFun return err } + if tfs3.IsDirectoryBucket(bucket) { + conn = acctest.Provider.Meta().(*conns.AWSClient).S3ExpressClient(ctx) + } + _, err = tfs3.FindLoggingEnabled(ctx, conn, bucket, expectedBucketOwner) if tfresource.NotFound(err) { @@ -507,6 +511,9 @@ func testAccCheckBucketLoggingExists(ctx context.Context, n string) resource.Tes } conn := acctest.Provider.Meta().(*conns.AWSClient).S3Client(ctx) + if tfs3.IsDirectoryBucket(bucket) { + conn = acctest.Provider.Meta().(*conns.AWSClient).S3ExpressClient(ctx) + } _, err = tfs3.FindLoggingEnabled(ctx, conn, bucket, expectedBucketOwner) diff --git a/internal/service/s3/bucket_metric.go b/internal/service/s3/bucket_metric.go index d2096c8f9f8f..fe9ae44624b9 100644 --- a/internal/service/s3/bucket_metric.go +++ b/internal/service/s3/bucket_metric.go @@ -95,6 +95,9 @@ func resourceBucketMetricPut(ctx context.Context, d *schema.ResourceData, meta i } bucket := d.Get(names.AttrBucket).(string) + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } input := &s3.PutBucketMetricsConfigurationInput{ Bucket: aws.String(bucket), Id: aws.String(name), @@ -137,6 +140,10 @@ func resourceBucketMetricRead(ctx context.Context, d *schema.ResourceData, meta return sdkdiag.AppendFromErr(diags, err) } + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } + mc, err := findMetricsConfiguration(ctx, conn, bucket, name) if !d.IsNewResource() && tfresource.NotFound(err) { @@ -169,6 +176,10 @@ func resourceBucketMetricDelete(ctx context.Context, d *schema.ResourceData, met return sdkdiag.AppendFromErr(diags, err) } + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } + log.Printf("[DEBUG] Deleting S3 Bucket Metric: %s", d.Id()) _, err = conn.DeleteBucketMetricsConfiguration(ctx, &s3.DeleteBucketMetricsConfigurationInput{ Bucket: aws.String(bucket), diff --git a/internal/service/s3/bucket_metric_test.go b/internal/service/s3/bucket_metric_test.go index 02a7ac07fdb4..9e6d533b8ec8 100644 --- a/internal/service/s3/bucket_metric_test.go +++ b/internal/service/s3/bucket_metric_test.go @@ -11,6 +11,7 @@ import ( "github.com/YakDriver/regexache" "github.com/aws/aws-sdk-go-v2/service/s3/types" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-plugin-testing/terraform" @@ -85,7 +86,7 @@ func TestAccS3BucketMetric_withFilterAccessPoint(t *testing.T) { resourceName := "aws_s3_bucket_metric.test" bucketName := fmt.Sprintf("tf-acc-%d", rInt) metricName := t.Name() - baseAccessPointArn := generateARN("aws:s3", names.USEast1RegionID, "accesspoint") + baseAccessPointArn := generateARN("aws:s3", endpoints.UsEast1RegionID, "accesspoint") accessPoint := fmt.Sprintf("%s/ap-%d", baseAccessPointArn, rInt) accessPointUpdate := fmt.Sprintf("%s/ap-update-%d", baseAccessPointArn, rInt) @@ -129,7 +130,7 @@ func TestAccS3BucketMetric_withFilterAccessPointAndPrefixAndMultiTags(t *testing resourceName := "aws_s3_bucket_metric.test" bucketName := fmt.Sprintf("tf-acc-%d", rInt) metricName := t.Name() - baseAccessPointArn := generateARN("aws:s3", names.USEast1RegionID, "accesspoint") + baseAccessPointArn := generateARN("aws:s3", endpoints.UsEast1RegionID, "accesspoint") accessPoint := fmt.Sprintf("%s/ap-%d", baseAccessPointArn, rInt) accessPointUpdate := fmt.Sprintf("%s/ap-update-%d", baseAccessPointArn, rInt) prefix := fmt.Sprintf("prefix-%d/", rInt) @@ -185,7 +186,7 @@ func TestAccS3BucketMetric_withFilterAccessPointAndPrefixAndSingleTag(t *testing resourceName := "aws_s3_bucket_metric.test" bucketName := fmt.Sprintf("tf-acc-%d", rInt) metricName := t.Name() - baseAccessPointArn := generateARN("aws:s3", names.USEast1RegionID, "accesspoint") + baseAccessPointArn := generateARN("aws:s3", endpoints.UsEast1RegionID, "accesspoint") accessPoint := fmt.Sprintf("%s/ap-%d", baseAccessPointArn, rInt) accessPointUpdate := fmt.Sprintf("%s/ap-update-%d", baseAccessPointArn, rInt) prefix := fmt.Sprintf("prefix-%d/", rInt) @@ -237,7 +238,7 @@ func TestAccS3BucketMetric_withFilterAccessPointAndPrefix(t *testing.T) { resourceName := "aws_s3_bucket_metric.test" bucketName := fmt.Sprintf("tf-acc-%d", rInt) metricName := t.Name() - baseAccessPointArn := generateARN("aws:s3", names.USEast1RegionID, "accesspoint") + baseAccessPointArn := generateARN("aws:s3", endpoints.UsEast1RegionID, "accesspoint") accessPoint := fmt.Sprintf("%s/ap-%d", baseAccessPointArn, rInt) accessPointUpdate := fmt.Sprintf("%s/ap-update-%d", baseAccessPointArn, rInt) prefix := fmt.Sprintf("prefix-%d/", rInt) @@ -285,7 +286,7 @@ func TestAccS3BucketMetric_withFilterAccessPointAndMultipleTags(t *testing.T) { resourceName := "aws_s3_bucket_metric.test" bucketName := fmt.Sprintf("tf-acc-%d", rInt) metricName := t.Name() - baseAccessPointArn := generateARN("aws:s3", names.USEast1RegionID, "accesspoint") + baseAccessPointArn := generateARN("aws:s3", endpoints.UsEast1RegionID, "accesspoint") accessPoint := fmt.Sprintf("%s/ap-%d", baseAccessPointArn, rInt) accessPointUpdate := fmt.Sprintf("%s/ap-update-%d", baseAccessPointArn, rInt) tag1 := fmt.Sprintf("tag1-%d", rInt) @@ -337,7 +338,7 @@ func TestAccS3BucketMetric_withFilterAccessPointAndSingleTag(t *testing.T) { resourceName := "aws_s3_bucket_metric.test" bucketName := fmt.Sprintf("tf-acc-%d", rInt) metricName := t.Name() - baseAccessPointArn := generateARN("aws:s3", names.USEast1RegionID, "accesspoint") + baseAccessPointArn := generateARN("aws:s3", endpoints.UsEast1RegionID, "accesspoint") accessPoint := fmt.Sprintf("%s/ap-%d", baseAccessPointArn, rInt) accessPointUpdate := fmt.Sprintf("%s/ap-update-%d", baseAccessPointArn, rInt) tag1 := fmt.Sprintf("tag-%d", rInt) @@ -634,9 +635,9 @@ func TestAccS3BucketMetric_directoryBucket(t *testing.T) { func testAccCheckBucketMetricDestroy(ctx context.Context) resource.TestCheckFunc { return func(s *terraform.State) error { - conn := acctest.Provider.Meta().(*conns.AWSClient).S3Client(ctx) - for _, rs := range s.RootModule().Resources { + conn := acctest.Provider.Meta().(*conns.AWSClient).S3Client(ctx) + if rs.Type != "aws_s3_bucket_metric" { continue } @@ -646,6 +647,10 @@ func testAccCheckBucketMetricDestroy(ctx context.Context) resource.TestCheckFunc return err } + if tfs3.IsDirectoryBucket(bucket) { + conn = acctest.Provider.Meta().(*conns.AWSClient).S3ExpressClient(ctx) + } + _, err = tfs3.FindMetricsConfiguration(ctx, conn, bucket, name) if tfresource.NotFound(err) { @@ -676,6 +681,9 @@ func testAccCheckBucketMetricsExistsConfig(ctx context.Context, n string, v *typ } conn := acctest.Provider.Meta().(*conns.AWSClient).S3Client(ctx) + if tfs3.IsDirectoryBucket(bucket) { + conn = acctest.Provider.Meta().(*conns.AWSClient).S3ExpressClient(ctx) + } output, err := tfs3.FindMetricsConfiguration(ctx, conn, bucket, name) diff --git a/internal/service/s3/bucket_notification.go b/internal/service/s3/bucket_notification.go index 8fee05584cf9..16dce0de5f7b 100644 --- a/internal/service/s3/bucket_notification.go +++ b/internal/service/s3/bucket_notification.go @@ -21,6 +21,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/errs/sdkdiag" "github.com/hashicorp/terraform-provider-aws/internal/flex" "github.com/hashicorp/terraform-provider-aws/internal/tfresource" + itypes "github.com/hashicorp/terraform-provider-aws/internal/types" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -147,7 +148,11 @@ func resourceBucketNotificationPut(ctx context.Context, d *schema.ResourceData, ) var diags diag.Diagnostics conn := meta.(*conns.AWSClient).S3Client(ctx) + bucket := d.Get(names.AttrBucket).(string) + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } var eventbridgeConfig *types.EventBridgeConfiguration if d.Get("eventbridge").(bool) { @@ -320,7 +325,7 @@ func resourceBucketNotificationPut(ctx context.Context, d *schema.ResourceData, d.SetId(bucket) _, err = tfresource.RetryWhenNotFound(ctx, bucketPropagationTimeout, func() (interface{}, error) { - return findBucketNotificationConfiguration(ctx, conn, d.Id(), "") + return findBucketNotificationConfiguration(ctx, conn, bucket, "") }) if err != nil { @@ -335,7 +340,12 @@ func resourceBucketNotificationRead(ctx context.Context, d *schema.ResourceData, var diags diag.Diagnostics conn := meta.(*conns.AWSClient).S3Client(ctx) - output, err := findBucketNotificationConfiguration(ctx, conn, d.Id(), "") + bucket := d.Id() + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } + + output, err := findBucketNotificationConfiguration(ctx, conn, bucket, "") if !d.IsNewResource() && tfresource.NotFound(err) { log.Printf("[WARN] S3 Bucket Notification (%s) not found, removing from state", d.Id()) @@ -347,7 +357,7 @@ func resourceBucketNotificationRead(ctx context.Context, d *schema.ResourceData, return sdkdiag.AppendErrorf(diags, "reading S3 Bucket Notification (%s): %s", d.Id(), err) } - d.Set(names.AttrBucket, d.Id()) + d.Set(names.AttrBucket, bucket) d.Set("eventbridge", output.EventBridgeConfiguration != nil) if err := d.Set("lambda_function", flattenLambdaFunctionConfigurations(output.LambdaFunctionConfigurations)); err != nil { return sdkdiag.AppendErrorf(diags, "setting lambda_function: %s", err) @@ -356,7 +366,7 @@ func resourceBucketNotificationRead(ctx context.Context, d *schema.ResourceData, return sdkdiag.AppendErrorf(diags, "setting queue: %s", err) } if err := d.Set("topic", flattenTopicConfigurations(output.TopicConfigurations)); err != nil { - return sdkdiag.AppendErrorf(diags, "setting queue: %s", err) + return sdkdiag.AppendErrorf(diags, "setting topic: %s", err) } return diags @@ -366,8 +376,13 @@ func resourceBucketNotificationDelete(ctx context.Context, d *schema.ResourceDat var diags diag.Diagnostics conn := meta.(*conns.AWSClient).S3Client(ctx) + bucket := d.Id() + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } + input := &s3.PutBucketNotificationConfigurationInput{ - Bucket: aws.String(d.Id()), + Bucket: aws.String(bucket), NotificationConfiguration: &types.NotificationConfiguration{}, } @@ -408,7 +423,7 @@ func findBucketNotificationConfiguration(ctx context.Context, conn *s3.Client, b return nil, err } - if output == nil { + if itypes.IsZero(output) { return nil, tfresource.NewEmptyResultError(input) } diff --git a/internal/service/s3/bucket_notification_test.go b/internal/service/s3/bucket_notification_test.go index ff53d5bb494e..c031c031b4e2 100644 --- a/internal/service/s3/bucket_notification_test.go +++ b/internal/service/s3/bucket_notification_test.go @@ -272,13 +272,17 @@ func TestAccS3BucketNotification_directoryBucket(t *testing.T) { func testAccCheckBucketNotificationDestroy(ctx context.Context) resource.TestCheckFunc { return func(s *terraform.State) error { - conn := acctest.Provider.Meta().(*conns.AWSClient).S3Client(ctx) - for _, rs := range s.RootModule().Resources { + conn := acctest.Provider.Meta().(*conns.AWSClient).S3Client(ctx) + if rs.Type != "aws_s3_bucket_notification" { continue } + if tfs3.IsDirectoryBucket(rs.Primary.ID) { + conn = acctest.Provider.Meta().(*conns.AWSClient).S3ExpressClient(ctx) + } + _, err := tfs3.FindBucketNotificationConfiguration(ctx, conn, rs.Primary.ID, "") if tfresource.NotFound(err) { @@ -304,6 +308,9 @@ func testAccCheckBucketNotificationExists(ctx context.Context, n string, v *s3.G } conn := acctest.Provider.Meta().(*conns.AWSClient).S3Client(ctx) + if tfs3.IsDirectoryBucket(rs.Primary.ID) { + conn = acctest.Provider.Meta().(*conns.AWSClient).S3ExpressClient(ctx) + } output, err := tfs3.FindBucketNotificationConfiguration(ctx, conn, rs.Primary.ID, "") diff --git a/internal/service/s3/bucket_object_data_source_test.go b/internal/service/s3/bucket_object_data_source_test.go index f22eff1038c1..51dbb75c3929 100644 --- a/internal/service/s3/bucket_object_data_source_test.go +++ b/internal/service/s3/bucket_object_data_source_test.go @@ -13,6 +13,7 @@ import ( "time" "github.com/YakDriver/regexache" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-provider-aws/internal/acctest" @@ -59,7 +60,11 @@ func TestAccS3BucketObjectDataSource_basicViaAccessPoint(t *testing.T) { accessPointResourceName := "aws_s3_access_point.test" resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t) }, + PreCheck: func() { + acctest.PreCheck(ctx, t) + // "Invalid configuration: region from ARN `us-east-1` does not match client region `aws-global` and UseArnRegion is `false`" is expected. + acctest.PreCheckRegionNot(t, endpoints.UsEast1RegionID) + }, ErrorCheck: acctest.ErrorCheck(t, names.S3ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, Steps: []resource.TestStep{ diff --git a/internal/service/s3/bucket_object_lock_configuration.go b/internal/service/s3/bucket_object_lock_configuration.go index 7b25c3094bea..8a1e66461fc2 100644 --- a/internal/service/s3/bucket_object_lock_configuration.go +++ b/internal/service/s3/bucket_object_lock_configuration.go @@ -103,6 +103,9 @@ func resourceBucketObjectLockConfigurationCreate(ctx context.Context, d *schema. conn := meta.(*conns.AWSClient).S3Client(ctx) bucket := d.Get(names.AttrBucket).(string) + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } expectedBucketOwner := d.Get(names.AttrExpectedBucketOwner).(string) input := &s3.PutObjectLockConfigurationInput{ Bucket: aws.String(bucket), @@ -159,6 +162,10 @@ func resourceBucketObjectLockConfigurationRead(ctx context.Context, d *schema.Re return sdkdiag.AppendFromErr(diags, err) } + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } + objLockConfig, err := findObjectLockConfiguration(ctx, conn, bucket, expectedBucketOwner) if !d.IsNewResource() && tfresource.NotFound(err) { @@ -190,6 +197,10 @@ func resourceBucketObjectLockConfigurationUpdate(ctx context.Context, d *schema. return sdkdiag.AppendFromErr(diags, err) } + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } + input := &s3.PutObjectLockConfigurationInput{ Bucket: aws.String(bucket), ObjectLockConfiguration: &types.ObjectLockConfiguration{ @@ -229,6 +240,10 @@ func resourceBucketObjectLockConfigurationDelete(ctx context.Context, d *schema. return sdkdiag.AppendFromErr(diags, err) } + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } + input := &s3.PutObjectLockConfigurationInput{ Bucket: aws.String(bucket), ObjectLockConfiguration: &types.ObjectLockConfiguration{ diff --git a/internal/service/s3/bucket_object_lock_configuration_test.go b/internal/service/s3/bucket_object_lock_configuration_test.go index b379aaa80f22..7ad52a6df9c4 100644 --- a/internal/service/s3/bucket_object_lock_configuration_test.go +++ b/internal/service/s3/bucket_object_lock_configuration_test.go @@ -232,9 +232,9 @@ func TestAccS3BucketObjectLockConfiguration_directoryBucket(t *testing.T) { func testAccCheckBucketObjectLockConfigurationDestroy(ctx context.Context) resource.TestCheckFunc { return func(s *terraform.State) error { - conn := acctest.Provider.Meta().(*conns.AWSClient).S3Client(ctx) - for _, rs := range s.RootModule().Resources { + conn := acctest.Provider.Meta().(*conns.AWSClient).S3Client(ctx) + if rs.Type != "aws_s3_bucket_object_lock_configuration" { continue } @@ -244,6 +244,10 @@ func testAccCheckBucketObjectLockConfigurationDestroy(ctx context.Context) resou return err } + if tfs3.IsDirectoryBucket(bucket) { + conn = acctest.Provider.Meta().(*conns.AWSClient).S3ExpressClient(ctx) + } + _, err = tfs3.FindObjectLockConfiguration(ctx, conn, bucket, expectedBucketOwner) if tfresource.NotFound(err) { @@ -274,6 +278,9 @@ func testAccCheckBucketObjectLockConfigurationExists(ctx context.Context, n stri } conn := acctest.Provider.Meta().(*conns.AWSClient).S3Client(ctx) + if tfs3.IsDirectoryBucket(bucket) { + conn = acctest.Provider.Meta().(*conns.AWSClient).S3ExpressClient(ctx) + } _, err = tfs3.FindObjectLockConfiguration(ctx, conn, bucket, expectedBucketOwner) diff --git a/internal/service/s3/bucket_object_test.go b/internal/service/s3/bucket_object_test.go index 858f3d6c9e4d..2c7f2215d915 100644 --- a/internal/service/s3/bucket_object_test.go +++ b/internal/service/s3/bucket_object_test.go @@ -19,6 +19,7 @@ import ( "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/service/s3" "github.com/aws/aws-sdk-go-v2/service/s3/types" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-plugin-testing/terraform" @@ -504,7 +505,11 @@ func TestAccS3BucketObject_updatesWithVersioningViaAccessPoint(t *testing.T) { defer os.Remove(sourceInitial) resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t) }, + PreCheck: func() { + acctest.PreCheck(ctx, t) + // "Invalid configuration: region from ARN `us-east-1` does not match client region `aws-global` and UseArnRegion is `false`" is expected. + acctest.PreCheckRegionNot(t, endpoints.UsEast1RegionID) + }, ErrorCheck: acctest.ErrorCheck(t, names.S3ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckBucketObjectDestroy(ctx), diff --git a/internal/service/s3/bucket_ownership_controls.go b/internal/service/s3/bucket_ownership_controls.go index 47342553a978..44b350ad868d 100644 --- a/internal/service/s3/bucket_ownership_controls.go +++ b/internal/service/s3/bucket_ownership_controls.go @@ -66,6 +66,9 @@ func resourceBucketOwnershipControlsCreate(ctx context.Context, d *schema.Resour conn := meta.(*conns.AWSClient).S3Client(ctx) bucket := d.Get(names.AttrBucket).(string) + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } input := &s3.PutBucketOwnershipControlsInput{ Bucket: aws.String(bucket), OwnershipControls: &types.OwnershipControls{ @@ -86,7 +89,7 @@ func resourceBucketOwnershipControlsCreate(ctx context.Context, d *schema.Resour d.SetId(bucket) _, err = tfresource.RetryWhenNotFound(ctx, bucketPropagationTimeout, func() (interface{}, error) { - return findOwnershipControls(ctx, conn, d.Id()) + return findOwnershipControls(ctx, conn, bucket) }) if err != nil { @@ -100,7 +103,12 @@ func resourceBucketOwnershipControlsRead(ctx context.Context, d *schema.Resource var diags diag.Diagnostics conn := meta.(*conns.AWSClient).S3Client(ctx) - oc, err := findOwnershipControls(ctx, conn, d.Id()) + bucket := d.Id() + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } + + oc, err := findOwnershipControls(ctx, conn, bucket) if !d.IsNewResource() && tfresource.NotFound(err) { log.Printf("[WARN] S3 Bucket Ownership Controls (%s) not found, removing from state", d.Id()) @@ -112,7 +120,7 @@ func resourceBucketOwnershipControlsRead(ctx context.Context, d *schema.Resource return sdkdiag.AppendErrorf(diags, "reading S3 Bucket Ownership Controls (%s): %s", d.Id(), err) } - d.Set(names.AttrBucket, d.Id()) + d.Set(names.AttrBucket, bucket) if err := d.Set(names.AttrRule, flattenOwnershipControlsRules(oc.Rules)); err != nil { return sdkdiag.AppendErrorf(diags, "setting rule: %s", err) } @@ -124,8 +132,13 @@ func resourceBucketOwnershipControlsUpdate(ctx context.Context, d *schema.Resour var diags diag.Diagnostics conn := meta.(*conns.AWSClient).S3Client(ctx) + bucket := d.Id() + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } + input := &s3.PutBucketOwnershipControlsInput{ - Bucket: aws.String(d.Id()), + Bucket: aws.String(bucket), OwnershipControls: &types.OwnershipControls{ Rules: expandOwnershipControlsRules(d.Get(names.AttrRule).([]interface{})), }, @@ -144,10 +157,15 @@ func resourceBucketOwnershipControlsDelete(ctx context.Context, d *schema.Resour var diags diag.Diagnostics conn := meta.(*conns.AWSClient).S3Client(ctx) + bucket := d.Id() + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } + log.Printf("[DEBUG] Deleting S3 Bucket Ownership Controls: %s", d.Id()) _, err := tfresource.RetryWhenAWSErrCodeEquals(ctx, 5*time.Minute, func() (interface{}, error) { return conn.DeleteBucketOwnershipControls(ctx, &s3.DeleteBucketOwnershipControlsInput{ - Bucket: aws.String(d.Id()), + Bucket: aws.String(bucket), }) }, errCodeOperationAborted) @@ -160,7 +178,7 @@ func resourceBucketOwnershipControlsDelete(ctx context.Context, d *schema.Resour } _, err = tfresource.RetryUntilNotFound(ctx, bucketPropagationTimeout, func() (interface{}, error) { - return findOwnershipControls(ctx, conn, d.Id()) + return findOwnershipControls(ctx, conn, bucket) }) if err != nil { diff --git a/internal/service/s3/bucket_ownership_controls_test.go b/internal/service/s3/bucket_ownership_controls_test.go index 12387831ee66..368154feb4a7 100644 --- a/internal/service/s3/bucket_ownership_controls_test.go +++ b/internal/service/s3/bucket_ownership_controls_test.go @@ -154,13 +154,17 @@ func TestAccS3BucketOwnershipControls_directoryBucket(t *testing.T) { func testAccCheckBucketOwnershipControlsDestroy(ctx context.Context) resource.TestCheckFunc { return func(s *terraform.State) error { - conn := acctest.Provider.Meta().(*conns.AWSClient).S3Client(ctx) - for _, rs := range s.RootModule().Resources { + conn := acctest.Provider.Meta().(*conns.AWSClient).S3Client(ctx) + if rs.Type != "aws_s3_bucket_ownership_controls" { continue } + if tfs3.IsDirectoryBucket(rs.Primary.ID) { + conn = acctest.Provider.Meta().(*conns.AWSClient).S3ExpressClient(ctx) + } + _, err := tfs3.FindOwnershipControls(ctx, conn, rs.Primary.ID) if tfresource.NotFound(err) { @@ -186,6 +190,9 @@ func testAccCheckBucketOwnershipControlsExists(ctx context.Context, n string) re } conn := acctest.Provider.Meta().(*conns.AWSClient).S3Client(ctx) + if tfs3.IsDirectoryBucket(rs.Primary.ID) { + conn = acctest.Provider.Meta().(*conns.AWSClient).S3ExpressClient(ctx) + } _, err := tfs3.FindOwnershipControls(ctx, conn, rs.Primary.ID) diff --git a/internal/service/s3/bucket_policy.go b/internal/service/s3/bucket_policy.go index 57e7d14c117b..6c1ef7102750 100644 --- a/internal/service/s3/bucket_policy.go +++ b/internal/service/s3/bucket_policy.go @@ -85,7 +85,7 @@ func resourceBucketPolicyPut(ctx context.Context, d *schema.ResourceData, meta i d.SetId(bucket) _, err = tfresource.RetryWhenNotFound(ctx, bucketPropagationTimeout, func() (interface{}, error) { - return findBucketPolicy(ctx, conn, d.Id()) + return findBucketPolicy(ctx, conn, bucket) }) if err != nil { @@ -99,11 +99,13 @@ func resourceBucketPolicyPut(ctx context.Context, d *schema.ResourceData, meta i func resourceBucketPolicyRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics conn := meta.(*conns.AWSClient).S3Client(ctx) - if isDirectoryBucket(d.Id()) { + + bucket := d.Id() + if isDirectoryBucket(bucket) { conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) } - policy, err := findBucketPolicy(ctx, conn, d.Id()) + policy, err := findBucketPolicy(ctx, conn, bucket) if !d.IsNewResource() && tfresource.NotFound(err) { log.Printf("[WARN] S3 Bucket Policy (%s) not found, removing from state", d.Id()) @@ -120,7 +122,7 @@ func resourceBucketPolicyRead(ctx context.Context, d *schema.ResourceData, meta return sdkdiag.AppendFromErr(diags, err) } - d.Set(names.AttrBucket, d.Id()) + d.Set(names.AttrBucket, bucket) d.Set(names.AttrPolicy, policy) return diags @@ -129,13 +131,15 @@ func resourceBucketPolicyRead(ctx context.Context, d *schema.ResourceData, meta func resourceBucketPolicyDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics conn := meta.(*conns.AWSClient).S3Client(ctx) - if isDirectoryBucket(d.Id()) { + + bucket := d.Id() + if isDirectoryBucket(bucket) { conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) } log.Printf("[DEBUG] Deleting S3 Bucket Policy: %s", d.Id()) _, err := conn.DeleteBucketPolicy(ctx, &s3.DeleteBucketPolicyInput{ - Bucket: aws.String(d.Id()), + Bucket: aws.String(bucket), }) if tfawserr.ErrCodeEquals(err, errCodeNoSuchBucket) { @@ -147,7 +151,7 @@ func resourceBucketPolicyDelete(ctx context.Context, d *schema.ResourceData, met } _, err = tfresource.RetryUntilNotFound(ctx, bucketPropagationTimeout, func() (interface{}, error) { - return findBucketPolicy(ctx, conn, d.Id()) + return findBucketPolicy(ctx, conn, bucket) }) if err != nil { diff --git a/internal/service/s3/bucket_policy_data_source.go b/internal/service/s3/bucket_policy_data_source.go index 2f3f99888f40..204eaac8043a 100644 --- a/internal/service/s3/bucket_policy_data_source.go +++ b/internal/service/s3/bucket_policy_data_source.go @@ -36,11 +36,15 @@ func dataSourceBucketPolicyRead(ctx context.Context, d *schema.ResourceData, met var diags diag.Diagnostics conn := meta.(*conns.AWSClient).S3Client(ctx) - name := d.Get(names.AttrBucket).(string) - policy, err := findBucketPolicy(ctx, conn, name) + bucket := d.Get(names.AttrBucket).(string) + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } + + policy, err := findBucketPolicy(ctx, conn, bucket) if err != nil { - return sdkdiag.AppendErrorf(diags, "reading S3 Bucket (%s) Policy: %s", name, err) + return sdkdiag.AppendErrorf(diags, "reading S3 Bucket (%s) Policy: %s", bucket, err) } policy, err = structure.NormalizeJsonString(policy) @@ -48,7 +52,7 @@ func dataSourceBucketPolicyRead(ctx context.Context, d *schema.ResourceData, met return sdkdiag.AppendFromErr(diags, err) } - d.SetId(name) + d.SetId(bucket) d.Set(names.AttrPolicy, policy) return diags diff --git a/internal/service/s3/bucket_policy_test.go b/internal/service/s3/bucket_policy_test.go index 6d6921918afd..5f7a175cb7f9 100644 --- a/internal/service/s3/bucket_policy_test.go +++ b/internal/service/s3/bucket_policy_test.go @@ -454,11 +454,12 @@ func TestAccS3BucketPolicy_directoryBucket(t *testing.T) { func testAccCheckBucketPolicyDestroy(ctx context.Context) resource.TestCheckFunc { return func(s *terraform.State) error { for _, rs := range s.RootModule().Resources { + conn := acctest.Provider.Meta().(*conns.AWSClient).S3Client(ctx) + if rs.Type != "aws_s3_bucket_policy" { continue } - conn := acctest.Provider.Meta().(*conns.AWSClient).S3Client(ctx) if tfs3.IsDirectoryBucket(rs.Primary.ID) { conn = acctest.Provider.Meta().(*conns.AWSClient).S3ExpressClient(ctx) } @@ -499,8 +500,8 @@ func testAccCheckBucketHasPolicy(ctx context.Context, n string, expectedPolicyTe } // Policy text must be generated inside a resource.TestCheckFunc in order for - // the acctest.AccountID() helper to function properly. - expectedPolicyText := fmt.Sprintf(expectedPolicyTemplate, acctest.AccountID(), acctest.Partition(), bucketName) + // the acctest.AccountID(ctx) helper to function properly. + expectedPolicyText := fmt.Sprintf(expectedPolicyTemplate, acctest.AccountID(ctx), acctest.Partition(), bucketName) equivalent, err := awspolicy.PoliciesAreEquivalent(policy, expectedPolicyText) if err != nil { return fmt.Errorf("Error testing policy equivalence: %s", err) diff --git a/internal/service/s3/bucket_public_access_block.go b/internal/service/s3/bucket_public_access_block.go index 865a9641c5e8..d3427149423f 100644 --- a/internal/service/s3/bucket_public_access_block.go +++ b/internal/service/s3/bucket_public_access_block.go @@ -67,6 +67,9 @@ func resourceBucketPublicAccessBlockCreate(ctx context.Context, d *schema.Resour conn := meta.(*conns.AWSClient).S3Client(ctx) bucket := d.Get(names.AttrBucket).(string) + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } input := &s3.PutPublicAccessBlockInput{ Bucket: aws.String(bucket), PublicAccessBlockConfiguration: &types.PublicAccessBlockConfiguration{ @@ -92,7 +95,7 @@ func resourceBucketPublicAccessBlockCreate(ctx context.Context, d *schema.Resour d.SetId(bucket) _, err = tfresource.RetryWhenNotFound(ctx, bucketPropagationTimeout, func() (interface{}, error) { - return findPublicAccessBlockConfiguration(ctx, conn, d.Id()) + return findPublicAccessBlockConfiguration(ctx, conn, bucket) }) if err != nil { @@ -106,7 +109,12 @@ func resourceBucketPublicAccessBlockRead(ctx context.Context, d *schema.Resource var diags diag.Diagnostics conn := meta.(*conns.AWSClient).S3Client(ctx) - pabc, err := findPublicAccessBlockConfiguration(ctx, conn, d.Id()) + bucket := d.Id() + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } + + pabc, err := findPublicAccessBlockConfiguration(ctx, conn, bucket) if !d.IsNewResource() && tfresource.NotFound(err) { log.Printf("[WARN] S3 Bucket Public Access Block (%s) not found, removing from state", d.Id()) @@ -118,7 +126,7 @@ func resourceBucketPublicAccessBlockRead(ctx context.Context, d *schema.Resource return sdkdiag.AppendErrorf(diags, "reading S3 Bucket Public Access Block (%s): %s", d.Id(), err) } - d.Set(names.AttrBucket, d.Id()) + d.Set(names.AttrBucket, bucket) d.Set("block_public_acls", pabc.BlockPublicAcls) d.Set("block_public_policy", pabc.BlockPublicPolicy) d.Set("ignore_public_acls", pabc.IgnorePublicAcls) @@ -131,8 +139,13 @@ func resourceBucketPublicAccessBlockUpdate(ctx context.Context, d *schema.Resour var diags diag.Diagnostics conn := meta.(*conns.AWSClient).S3Client(ctx) + bucket := d.Id() + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } + input := &s3.PutPublicAccessBlockInput{ - Bucket: aws.String(d.Id()), + Bucket: aws.String(bucket), PublicAccessBlockConfiguration: &types.PublicAccessBlockConfiguration{ BlockPublicAcls: aws.Bool(d.Get("block_public_acls").(bool)), BlockPublicPolicy: aws.Bool(d.Get("block_public_policy").(bool)), @@ -164,9 +177,14 @@ func resourceBucketPublicAccessBlockDelete(ctx context.Context, d *schema.Resour var diags diag.Diagnostics conn := meta.(*conns.AWSClient).S3Client(ctx) + bucket := d.Id() + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } + log.Printf("[DEBUG] Deleting S3 Bucket Ownership Controls: %s", d.Id()) _, err := conn.DeletePublicAccessBlock(ctx, &s3.DeletePublicAccessBlockInput{ - Bucket: aws.String(d.Id()), + Bucket: aws.String(bucket), }) if tfawserr.ErrCodeEquals(err, errCodeNoSuchBucket, errCodeNoSuchPublicAccessBlockConfiguration) { @@ -178,7 +196,7 @@ func resourceBucketPublicAccessBlockDelete(ctx context.Context, d *schema.Resour } _, err = tfresource.RetryUntilNotFound(ctx, bucketPropagationTimeout, func() (interface{}, error) { - return findPublicAccessBlockConfiguration(ctx, conn, d.Id()) + return findPublicAccessBlockConfiguration(ctx, conn, bucket) }) if err != nil { diff --git a/internal/service/s3/bucket_public_access_block_test.go b/internal/service/s3/bucket_public_access_block_test.go index 3b942601807a..486ccdc3d593 100644 --- a/internal/service/s3/bucket_public_access_block_test.go +++ b/internal/service/s3/bucket_public_access_block_test.go @@ -290,13 +290,17 @@ func TestAccS3BucketPublicAccessBlock_directoryBucket(t *testing.T) { func testAccCheckBucketPublicAccessBlockDestroy(ctx context.Context) resource.TestCheckFunc { return func(s *terraform.State) error { - conn := acctest.Provider.Meta().(*conns.AWSClient).S3Client(ctx) - for _, rs := range s.RootModule().Resources { + conn := acctest.Provider.Meta().(*conns.AWSClient).S3Client(ctx) + if rs.Type != "aws_s3_bucket_public_access_block" { continue } + if tfs3.IsDirectoryBucket(rs.Primary.ID) { + conn = acctest.Provider.Meta().(*conns.AWSClient).S3ExpressClient(ctx) + } + _, err := tfs3.FindPublicAccessBlockConfiguration(ctx, conn, rs.Primary.ID) if tfresource.NotFound(err) { @@ -322,6 +326,9 @@ func testAccCheckBucketPublicAccessBlockExists(ctx context.Context, n string, v } conn := acctest.Provider.Meta().(*conns.AWSClient).S3Client(ctx) + if tfs3.IsDirectoryBucket(rs.Primary.ID) { + conn = acctest.Provider.Meta().(*conns.AWSClient).S3ExpressClient(ctx) + } output, err := tfs3.FindPublicAccessBlockConfiguration(ctx, conn, rs.Primary.ID) diff --git a/internal/service/s3/bucket_replication_configuration.go b/internal/service/s3/bucket_replication_configuration.go index f4118103f89d..e6d5117c5c18 100644 --- a/internal/service/s3/bucket_replication_configuration.go +++ b/internal/service/s3/bucket_replication_configuration.go @@ -317,6 +317,9 @@ func resourceBucketReplicationConfigurationCreate(ctx context.Context, d *schema conn := meta.(*conns.AWSClient).S3Client(ctx) bucket := d.Get(names.AttrBucket).(string) + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } input := &s3.PutBucketReplicationInput{ Bucket: aws.String(bucket), ReplicationConfiguration: &types.ReplicationConfiguration{ @@ -358,7 +361,7 @@ func resourceBucketReplicationConfigurationCreate(ctx context.Context, d *schema d.SetId(bucket) _, err = tfresource.RetryWhenNotFound(ctx, bucketPropagationTimeout, func() (interface{}, error) { - return findReplicationConfiguration(ctx, conn, d.Id()) + return findReplicationConfiguration(ctx, conn, bucket) }) if err != nil { @@ -372,7 +375,12 @@ func resourceBucketReplicationConfigurationRead(ctx context.Context, d *schema.R var diags diag.Diagnostics conn := meta.(*conns.AWSClient).S3Client(ctx) - rc, err := findReplicationConfiguration(ctx, conn, d.Id()) + bucket := d.Id() + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } + + rc, err := findReplicationConfiguration(ctx, conn, bucket) if !d.IsNewResource() && tfresource.NotFound(err) { log.Printf("[WARN] S3 Bucket Replication Configuration (%s) not found, removing from state", d.Id()) @@ -384,7 +392,7 @@ func resourceBucketReplicationConfigurationRead(ctx context.Context, d *schema.R return sdkdiag.AppendErrorf(diags, "reading S3 Bucket Replication Configuration (%s): %s", d.Id(), err) } - d.Set(names.AttrBucket, d.Id()) + d.Set(names.AttrBucket, bucket) d.Set(names.AttrRole, rc.Role) if err := d.Set(names.AttrRule, flattenReplicationRules(ctx, rc.Rules)); err != nil { return sdkdiag.AppendErrorf(diags, "setting rule: %s", err) @@ -397,8 +405,13 @@ func resourceBucketReplicationConfigurationUpdate(ctx context.Context, d *schema var diags diag.Diagnostics conn := meta.(*conns.AWSClient).S3Client(ctx) + bucket := d.Id() + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } + input := &s3.PutBucketReplicationInput{ - Bucket: aws.String(d.Id()), + Bucket: aws.String(bucket), ReplicationConfiguration: &types.ReplicationConfiguration{ Role: aws.String(d.Get(names.AttrRole).(string)), Rules: expandReplicationRules(ctx, d.Get(names.AttrRule).([]interface{})), @@ -422,9 +435,14 @@ func resourceBucketReplicationConfigurationDelete(ctx context.Context, d *schema var diags diag.Diagnostics conn := meta.(*conns.AWSClient).S3Client(ctx) + bucket := d.Id() + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } + log.Printf("[DEBUG] Deleting S3 Bucket Replication Configuration: %s", d.Id()) _, err := conn.DeleteBucketReplication(ctx, &s3.DeleteBucketReplicationInput{ - Bucket: aws.String(d.Id()), + Bucket: aws.String(bucket), }) if tfawserr.ErrCodeEquals(err, errCodeNoSuchBucket, errCodeReplicationConfigurationNotFound) { @@ -436,7 +454,7 @@ func resourceBucketReplicationConfigurationDelete(ctx context.Context, d *schema } _, err = tfresource.RetryUntilNotFound(ctx, bucketPropagationTimeout, func() (interface{}, error) { - return findReplicationConfiguration(ctx, conn, d.Id()) + return findReplicationConfiguration(ctx, conn, bucket) }) if err != nil { diff --git a/internal/service/s3/bucket_replication_configuration_test.go b/internal/service/s3/bucket_replication_configuration_test.go index f2ea01b5a3d0..03130f55cf3a 100644 --- a/internal/service/s3/bucket_replication_configuration_test.go +++ b/internal/service/s3/bucket_replication_configuration_test.go @@ -1113,7 +1113,7 @@ func TestAccS3BucketReplicationConfiguration_migrate_noChange(t *testing.T) { { Config: testAccBucketConfig_replicationV2PrefixAndTags(rName), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckBucketExistsWithProvider(ctx, bucketResourceName, acctest.RegionProviderFunc(region, &providers)), + testAccCheckBucketExistsWithProvider(ctx, bucketResourceName, acctest.RegionProviderFunc(ctx, region, &providers)), resource.TestCheckResourceAttr(bucketResourceName, "replication_configuration.0.rules.#", "1"), resource.TestCheckTypeSetElemNestedAttrs(bucketResourceName, "replication_configuration.0.rules.*", map[string]string{ "filter.#": "1", @@ -1156,7 +1156,7 @@ func TestAccS3BucketReplicationConfiguration_migrate_withChange(t *testing.T) { { Config: testAccBucketConfig_replicationV2PrefixAndTags(rName), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckBucketExistsWithProvider(ctx, bucketResourceName, acctest.RegionProviderFunc(region, &providers)), + testAccCheckBucketExistsWithProvider(ctx, bucketResourceName, acctest.RegionProviderFunc(ctx, region, &providers)), resource.TestCheckResourceAttr(bucketResourceName, "replication_configuration.0.rules.#", "1"), resource.TestCheckTypeSetElemNestedAttrs(bucketResourceName, "replication_configuration.0.rules.*", map[string]string{ "filter.#": "1", @@ -1205,13 +1205,17 @@ func TestAccS3BucketReplicationConfiguration_directoryBucket(t *testing.T) { // version, but for use with "same region" tests requiring only one provider. func testAccCheckBucketReplicationConfigurationDestroy(ctx context.Context) resource.TestCheckFunc { return func(s *terraform.State) error { - conn := acctest.Provider.Meta().(*conns.AWSClient).S3Client(ctx) - for _, rs := range s.RootModule().Resources { + conn := acctest.Provider.Meta().(*conns.AWSClient).S3Client(ctx) + if rs.Type != "aws_s3_bucket_replication_configuration" { continue } + if tfs3.IsDirectoryBucket(rs.Primary.ID) { + conn = acctest.Provider.Meta().(*conns.AWSClient).S3ExpressClient(ctx) + } + _, err := tfs3.FindReplicationConfiguration(ctx, conn, rs.Primary.ID) if tfresource.NotFound(err) { @@ -1231,13 +1235,17 @@ func testAccCheckBucketReplicationConfigurationDestroy(ctx context.Context) reso func testAccCheckBucketReplicationConfigurationDestroyWithProvider(ctx context.Context) acctest.TestCheckWithProviderFunc { return func(s *terraform.State, provider *schema.Provider) error { - conn := provider.Meta().(*conns.AWSClient).S3Client(ctx) - for _, rs := range s.RootModule().Resources { + conn := provider.Meta().(*conns.AWSClient).S3Client(ctx) + if rs.Type != "aws_s3_bucket_replication_configuration" { continue } + if tfs3.IsDirectoryBucket(rs.Primary.ID) { + conn = acctest.Provider.Meta().(*conns.AWSClient).S3ExpressClient(ctx) + } + _, err := tfs3.FindReplicationConfiguration(ctx, conn, rs.Primary.ID) if tfresource.NotFound(err) { @@ -1263,6 +1271,9 @@ func testAccCheckBucketReplicationConfigurationExists(ctx context.Context, n str } conn := acctest.Provider.Meta().(*conns.AWSClient).S3Client(ctx) + if tfs3.IsDirectoryBucket(rs.Primary.ID) { + conn = acctest.Provider.Meta().(*conns.AWSClient).S3ExpressClient(ctx) + } _, err := tfs3.FindReplicationConfiguration(ctx, conn, rs.Primary.ID) diff --git a/internal/service/s3/bucket_request_payment_configuration.go b/internal/service/s3/bucket_request_payment_configuration.go index d9043faaf528..341476de8df1 100644 --- a/internal/service/s3/bucket_request_payment_configuration.go +++ b/internal/service/s3/bucket_request_payment_configuration.go @@ -62,6 +62,9 @@ func resourceBucketRequestPaymentConfigurationCreate(ctx context.Context, d *sch conn := meta.(*conns.AWSClient).S3Client(ctx) bucket := d.Get(names.AttrBucket).(string) + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } expectedBucketOwner := d.Get(names.AttrExpectedBucketOwner).(string) input := &s3.PutBucketRequestPaymentInput{ Bucket: aws.String(bucket), @@ -107,6 +110,10 @@ func resourceBucketRequestPaymentConfigurationRead(ctx context.Context, d *schem return sdkdiag.AppendFromErr(diags, err) } + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } + output, err := findBucketRequestPayment(ctx, conn, bucket, expectedBucketOwner) if !d.IsNewResource() && tfresource.NotFound(err) { @@ -135,6 +142,10 @@ func resourceBucketRequestPaymentConfigurationUpdate(ctx context.Context, d *sch return sdkdiag.AppendFromErr(diags, err) } + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } + input := &s3.PutBucketRequestPaymentInput{ Bucket: aws.String(bucket), RequestPaymentConfiguration: &types.RequestPaymentConfiguration{ @@ -163,6 +174,10 @@ func resourceBucketRequestPaymentConfigurationDelete(ctx context.Context, d *sch return sdkdiag.AppendFromErr(diags, err) } + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } + input := &s3.PutBucketRequestPaymentInput{ Bucket: aws.String(bucket), RequestPaymentConfiguration: &types.RequestPaymentConfiguration{ diff --git a/internal/service/s3/bucket_request_payment_configuration_test.go b/internal/service/s3/bucket_request_payment_configuration_test.go index 2be82a2d5ebe..388b837103bc 100644 --- a/internal/service/s3/bucket_request_payment_configuration_test.go +++ b/internal/service/s3/bucket_request_payment_configuration_test.go @@ -197,9 +197,9 @@ func TestAccS3BucketRequestPaymentConfiguration_directoryBucket(t *testing.T) { func testAccCheckBucketRequestPaymentConfigurationDestroy(ctx context.Context) resource.TestCheckFunc { return func(s *terraform.State) error { - conn := acctest.Provider.Meta().(*conns.AWSClient).S3Client(ctx) - for _, rs := range s.RootModule().Resources { + conn := acctest.Provider.Meta().(*conns.AWSClient).S3Client(ctx) + if rs.Type != "aws_s3_bucket_request_payment_configuration" { continue } @@ -209,6 +209,10 @@ func testAccCheckBucketRequestPaymentConfigurationDestroy(ctx context.Context) r return err } + if tfs3.IsDirectoryBucket(bucket) { + conn = acctest.Provider.Meta().(*conns.AWSClient).S3ExpressClient(ctx) + } + _, err = tfs3.FindBucketRequestPayment(ctx, conn, bucket, expectedBucketOwner) if tfresource.NotFound(err) { @@ -239,6 +243,9 @@ func testAccCheckBucketRequestPaymentConfigurationExists(ctx context.Context, n } conn := acctest.Provider.Meta().(*conns.AWSClient).S3Client(ctx) + if tfs3.IsDirectoryBucket(bucket) { + conn = acctest.Provider.Meta().(*conns.AWSClient).S3ExpressClient(ctx) + } _, err = tfs3.FindBucketRequestPayment(ctx, conn, bucket, expectedBucketOwner) diff --git a/internal/service/s3/bucket_server_side_encryption_configuration.go b/internal/service/s3/bucket_server_side_encryption_configuration.go index ff5ed8e32ead..bfd95d9c81f9 100644 --- a/internal/service/s3/bucket_server_side_encryption_configuration.go +++ b/internal/service/s3/bucket_server_side_encryption_configuration.go @@ -87,6 +87,9 @@ func resourceBucketServerSideEncryptionConfigurationCreate(ctx context.Context, conn := meta.(*conns.AWSClient).S3Client(ctx) bucket := d.Get(names.AttrBucket).(string) + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } expectedBucketOwner := d.Get(names.AttrExpectedBucketOwner).(string) input := &s3.PutBucketEncryptionInput{ Bucket: aws.String(bucket), @@ -128,6 +131,10 @@ func resourceBucketServerSideEncryptionConfigurationRead(ctx context.Context, d return sdkdiag.AppendFromErr(diags, err) } + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } + sse, err := findServerSideEncryptionConfiguration(ctx, conn, bucket, expectedBucketOwner) if !d.IsNewResource() && tfresource.NotFound(err) { @@ -158,6 +165,10 @@ func resourceBucketServerSideEncryptionConfigurationUpdate(ctx context.Context, return sdkdiag.AppendFromErr(diags, err) } + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } + input := &s3.PutBucketEncryptionInput{ Bucket: aws.String(bucket), ServerSideEncryptionConfiguration: &types.ServerSideEncryptionConfiguration{ @@ -188,6 +199,10 @@ func resourceBucketServerSideEncryptionConfigurationDelete(ctx context.Context, return sdkdiag.AppendFromErr(diags, err) } + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } + input := &s3.DeleteBucketEncryptionInput{ Bucket: aws.String(bucket), } diff --git a/internal/service/s3/bucket_server_side_encryption_configuration_test.go b/internal/service/s3/bucket_server_side_encryption_configuration_test.go index cfc9fd5df292..7d008bb2e73a 100644 --- a/internal/service/s3/bucket_server_side_encryption_configuration_test.go +++ b/internal/service/s3/bucket_server_side_encryption_configuration_test.go @@ -490,6 +490,9 @@ func testAccCheckBucketServerSideEncryptionConfigurationExists(ctx context.Conte } conn := acctest.Provider.Meta().(*conns.AWSClient).S3Client(ctx) + if tfs3.IsDirectoryBucket(bucket) { + conn = acctest.Provider.Meta().(*conns.AWSClient).S3ExpressClient(ctx) + } _, err = tfs3.FindServerSideEncryptionConfiguration(ctx, conn, bucket, expectedBucketOwner) diff --git a/internal/service/s3/bucket_test.go b/internal/service/s3/bucket_test.go index 80fb15f9812a..d5e9f757dbd9 100644 --- a/internal/service/s3/bucket_test.go +++ b/internal/service/s3/bucket_test.go @@ -45,6 +45,7 @@ func testAccErrorCheckSkip(t *testing.T) resource.ErrorCheckFunc { return acctest.ErrorCheckSkipMessagesContaining(t, "Number of distinct destination bucket ARNs cannot exceed", "destination is not allowed", + "blocked by the BlockPublicAcls block public access setting", ) } @@ -434,7 +435,7 @@ func TestAccS3Bucket_Duplicate_basic(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckRegionNot(t, names.USEast1RegionID) + acctest.PreCheckRegionNot(t, endpoints.UsEast1RegionID) }, ErrorCheck: acctest.ErrorCheck(t, names.S3ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, @@ -461,7 +462,7 @@ func TestAccS3Bucket_Duplicate_UsEast1(t *testing.T) { CheckDestroy: testAccCheckBucketDestroy(ctx), Steps: []resource.TestStep{ { - Config: testAccBucketConfig_duplicate(names.USEast1RegionID, bucketName), + Config: testAccBucketConfig_duplicate(endpoints.UsEast1RegionID, bucketName), ExpectError: regexache.MustCompile(tfs3.ErrCodeBucketAlreadyExists), }, }, @@ -482,7 +483,7 @@ func TestAccS3Bucket_Duplicate_UsEast1AltAccount(t *testing.T) { CheckDestroy: testAccCheckBucketDestroy(ctx), Steps: []resource.TestStep{ { - Config: testAccBucketConfig_duplicateAltAccount(names.USEast1RegionID, bucketName), + Config: testAccBucketConfig_duplicateAltAccount(endpoints.UsEast1RegionID, bucketName), ExpectError: regexache.MustCompile(tfs3.ErrCodeBucketAlreadyExists), }, }, @@ -1152,27 +1153,27 @@ func TestAccS3Bucket_Replication_basic(t *testing.T) { { Config: testAccBucketConfig_replication(bucketName, string(types.StorageClassStandard)), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckBucketExistsWithProvider(ctx, resourceName, acctest.RegionProviderFunc(region, &providers)), + testAccCheckBucketExistsWithProvider(ctx, resourceName, acctest.RegionProviderFunc(ctx, region, &providers)), resource.TestCheckResourceAttr(resourceName, "replication_configuration.#", "1"), resource.TestCheckResourceAttrPair(resourceName, "replication_configuration.0.role", iamRoleResourceName, names.AttrARN), resource.TestCheckResourceAttr(resourceName, "replication_configuration.0.rules.#", "1"), - testAccCheckBucketExistsWithProvider(ctx, "aws_s3_bucket.destination", acctest.RegionProviderFunc(alternateRegion, &providers)), + testAccCheckBucketExistsWithProvider(ctx, "aws_s3_bucket.destination", acctest.RegionProviderFunc(ctx, alternateRegion, &providers)), ), }, { Config: testAccBucketConfig_replication(bucketName, string(types.StorageClassGlacier)), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckBucketExistsWithProvider(ctx, resourceName, acctest.RegionProviderFunc(region, &providers)), + testAccCheckBucketExistsWithProvider(ctx, resourceName, acctest.RegionProviderFunc(ctx, region, &providers)), resource.TestCheckResourceAttr(resourceName, "replication_configuration.#", "1"), resource.TestCheckResourceAttrPair(resourceName, "replication_configuration.0.role", iamRoleResourceName, names.AttrARN), resource.TestCheckResourceAttr(resourceName, "replication_configuration.0.rules.#", "1"), - testAccCheckBucketExistsWithProvider(ctx, "aws_s3_bucket.destination", acctest.RegionProviderFunc(alternateRegion, &providers)), + testAccCheckBucketExistsWithProvider(ctx, "aws_s3_bucket.destination", acctest.RegionProviderFunc(ctx, alternateRegion, &providers)), ), }, { Config: testAccBucketConfig_replicationSSEKMSEncryptedObjects(bucketName), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckBucketExistsWithProvider(ctx, resourceName, acctest.RegionProviderFunc(region, &providers)), + testAccCheckBucketExistsWithProvider(ctx, resourceName, acctest.RegionProviderFunc(ctx, region, &providers)), resource.TestCheckResourceAttr(resourceName, "replication_configuration.#", "1"), resource.TestCheckResourceAttrPair(resourceName, "replication_configuration.0.role", iamRoleResourceName, names.AttrARN), resource.TestCheckResourceAttr(resourceName, "replication_configuration.0.rules.#", "1"), @@ -1204,10 +1205,10 @@ func TestAccS3Bucket_Replication_multipleDestinationsEmptyFilter(t *testing.T) { { Config: testAccBucketConfig_replicationMultipleDestinationsEmptyFilter(bucketName), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckBucketExistsWithProvider(ctx, resourceName, acctest.RegionProviderFunc(region, &providers)), - testAccCheckBucketExistsWithProvider(ctx, "aws_s3_bucket.destination", acctest.RegionProviderFunc(alternateRegion, &providers)), - testAccCheckBucketExistsWithProvider(ctx, "aws_s3_bucket.destination2", acctest.RegionProviderFunc(alternateRegion, &providers)), - testAccCheckBucketExistsWithProvider(ctx, "aws_s3_bucket.destination3", acctest.RegionProviderFunc(alternateRegion, &providers)), + testAccCheckBucketExistsWithProvider(ctx, resourceName, acctest.RegionProviderFunc(ctx, region, &providers)), + testAccCheckBucketExistsWithProvider(ctx, "aws_s3_bucket.destination", acctest.RegionProviderFunc(ctx, alternateRegion, &providers)), + testAccCheckBucketExistsWithProvider(ctx, "aws_s3_bucket.destination2", acctest.RegionProviderFunc(ctx, alternateRegion, &providers)), + testAccCheckBucketExistsWithProvider(ctx, "aws_s3_bucket.destination3", acctest.RegionProviderFunc(ctx, alternateRegion, &providers)), resource.TestCheckResourceAttr(resourceName, "replication_configuration.#", "1"), resource.TestCheckResourceAttr(resourceName, "replication_configuration.0.rules.#", "3"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "replication_configuration.0.rules.*", map[string]string{ @@ -1275,10 +1276,10 @@ func TestAccS3Bucket_Replication_multipleDestinationsNonEmptyFilter(t *testing.T { Config: testAccBucketConfig_replicationMultipleDestinationsNonEmptyFilter(bucketName), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckBucketExistsWithProvider(ctx, resourceName, acctest.RegionProviderFunc(region, &providers)), - testAccCheckBucketExistsWithProvider(ctx, "aws_s3_bucket.destination", acctest.RegionProviderFunc(alternateRegion, &providers)), - testAccCheckBucketExistsWithProvider(ctx, "aws_s3_bucket.destination2", acctest.RegionProviderFunc(alternateRegion, &providers)), - testAccCheckBucketExistsWithProvider(ctx, "aws_s3_bucket.destination3", acctest.RegionProviderFunc(alternateRegion, &providers)), + testAccCheckBucketExistsWithProvider(ctx, resourceName, acctest.RegionProviderFunc(ctx, region, &providers)), + testAccCheckBucketExistsWithProvider(ctx, "aws_s3_bucket.destination", acctest.RegionProviderFunc(ctx, alternateRegion, &providers)), + testAccCheckBucketExistsWithProvider(ctx, "aws_s3_bucket.destination2", acctest.RegionProviderFunc(ctx, alternateRegion, &providers)), + testAccCheckBucketExistsWithProvider(ctx, "aws_s3_bucket.destination3", acctest.RegionProviderFunc(ctx, alternateRegion, &providers)), resource.TestCheckResourceAttr(resourceName, "replication_configuration.#", "1"), resource.TestCheckResourceAttr(resourceName, "replication_configuration.0.rules.#", "3"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "replication_configuration.0.rules.*", map[string]string{ @@ -1351,9 +1352,9 @@ func TestAccS3Bucket_Replication_twoDestination(t *testing.T) { { Config: testAccBucketConfig_replicationMultipleDestinationsTwoDestination(bucketName), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckBucketExistsWithProvider(ctx, resourceName, acctest.RegionProviderFunc(region, &providers)), - testAccCheckBucketExistsWithProvider(ctx, "aws_s3_bucket.destination", acctest.RegionProviderFunc(alternateRegion, &providers)), - testAccCheckBucketExistsWithProvider(ctx, "aws_s3_bucket.destination2", acctest.RegionProviderFunc(alternateRegion, &providers)), + testAccCheckBucketExistsWithProvider(ctx, resourceName, acctest.RegionProviderFunc(ctx, region, &providers)), + testAccCheckBucketExistsWithProvider(ctx, "aws_s3_bucket.destination", acctest.RegionProviderFunc(ctx, alternateRegion, &providers)), + testAccCheckBucketExistsWithProvider(ctx, "aws_s3_bucket.destination2", acctest.RegionProviderFunc(ctx, alternateRegion, &providers)), resource.TestCheckResourceAttr(resourceName, "replication_configuration.#", "1"), resource.TestCheckResourceAttr(resourceName, "replication_configuration.0.rules.#", "2"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "replication_configuration.0.rules.*", map[string]string{ @@ -1413,7 +1414,7 @@ func TestAccS3Bucket_Replication_ruleDestinationAccessControlTranslation(t *test { Config: testAccBucketConfig_replicationAccessControlTranslation(bucketName), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckBucketExistsWithProvider(ctx, resourceName, acctest.RegionProviderFunc(region, &providers)), + testAccCheckBucketExistsWithProvider(ctx, resourceName, acctest.RegionProviderFunc(ctx, region, &providers)), resource.TestCheckResourceAttr(resourceName, "replication_configuration.#", "1"), resource.TestCheckResourceAttrPair(resourceName, "replication_configuration.0.role", iamRoleResourceName, names.AttrARN), resource.TestCheckResourceAttr(resourceName, "replication_configuration.0.rules.#", "1"), @@ -1434,7 +1435,7 @@ func TestAccS3Bucket_Replication_ruleDestinationAccessControlTranslation(t *test { Config: testAccBucketConfig_replicationSSEKMSEncryptedObjectsAndAccessControlTranslation(bucketName), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckBucketExistsWithProvider(ctx, resourceName, acctest.RegionProviderFunc(region, &providers)), + testAccCheckBucketExistsWithProvider(ctx, resourceName, acctest.RegionProviderFunc(ctx, region, &providers)), resource.TestCheckResourceAttr(resourceName, "replication_configuration.#", "1"), resource.TestCheckResourceAttrPair(resourceName, "replication_configuration.0.role", iamRoleResourceName, names.AttrARN), resource.TestCheckResourceAttr(resourceName, "replication_configuration.0.rules.#", "1"), @@ -1467,7 +1468,7 @@ func TestAccS3Bucket_Replication_ruleDestinationAddAccessControlTranslation(t *t { Config: testAccBucketConfig_replicationRulesDestination(bucketName), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckBucketExistsWithProvider(ctx, resourceName, acctest.RegionProviderFunc(region, &providers)), + testAccCheckBucketExistsWithProvider(ctx, resourceName, acctest.RegionProviderFunc(ctx, region, &providers)), resource.TestCheckResourceAttr(resourceName, "replication_configuration.#", "1"), resource.TestCheckResourceAttrPair(resourceName, "replication_configuration.0.role", iamRoleResourceName, names.AttrARN), resource.TestCheckResourceAttr(resourceName, "replication_configuration.0.rules.#", "1"), @@ -1488,7 +1489,7 @@ func TestAccS3Bucket_Replication_ruleDestinationAddAccessControlTranslation(t *t { Config: testAccBucketConfig_replicationAccessControlTranslation(bucketName), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckBucketExistsWithProvider(ctx, resourceName, acctest.RegionProviderFunc(region, &providers)), + testAccCheckBucketExistsWithProvider(ctx, resourceName, acctest.RegionProviderFunc(ctx, region, &providers)), resource.TestCheckResourceAttr(resourceName, "replication_configuration.#", "1"), resource.TestCheckResourceAttrPair(resourceName, "replication_configuration.0.role", iamRoleResourceName, names.AttrARN), resource.TestCheckResourceAttr(resourceName, "replication_configuration.0.rules.#", "1"), @@ -1521,8 +1522,8 @@ func TestAccS3Bucket_Replication_withoutStorageClass(t *testing.T) { { Config: testAccBucketConfig_replicationNoStorageClass(bucketName), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckBucketExistsWithProvider(ctx, resourceName, acctest.RegionProviderFunc(region, &providers)), - testAccCheckBucketExistsWithProvider(ctx, "aws_s3_bucket.destination", acctest.RegionProviderFunc(alternateRegion, &providers)), + testAccCheckBucketExistsWithProvider(ctx, resourceName, acctest.RegionProviderFunc(ctx, region, &providers)), + testAccCheckBucketExistsWithProvider(ctx, "aws_s3_bucket.destination", acctest.RegionProviderFunc(ctx, alternateRegion, &providers)), ), }, { @@ -1587,8 +1588,8 @@ func TestAccS3Bucket_Replication_withoutPrefix(t *testing.T) { { Config: testAccBucketConfig_replicationNoPrefix(bucketName), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckBucketExistsWithProvider(ctx, resourceName, acctest.RegionProviderFunc(region, &providers)), - testAccCheckBucketExistsWithProvider(ctx, "aws_s3_bucket.destination", acctest.RegionProviderFunc(alternateRegion, &providers)), + testAccCheckBucketExistsWithProvider(ctx, resourceName, acctest.RegionProviderFunc(ctx, region, &providers)), + testAccCheckBucketExistsWithProvider(ctx, "aws_s3_bucket.destination", acctest.RegionProviderFunc(ctx, alternateRegion, &providers)), ), }, { @@ -1629,21 +1630,21 @@ func TestAccS3Bucket_Replication_schemaV2(t *testing.T) { { Config: testAccBucketConfig_replicationV2DeleteMarkerReplicationDisabled(bucketName), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckBucketExistsWithProvider(ctx, resourceName, acctest.RegionProviderFunc(region, &providers)), + testAccCheckBucketExistsWithProvider(ctx, resourceName, acctest.RegionProviderFunc(ctx, region, &providers)), resource.TestCheckResourceAttr(resourceName, "replication_configuration.#", "1"), resource.TestCheckResourceAttrPair(resourceName, "replication_configuration.0.role", iamRoleResourceName, names.AttrARN), resource.TestCheckResourceAttr(resourceName, "replication_configuration.0.rules.#", "1"), - testAccCheckBucketExistsWithProvider(ctx, "aws_s3_bucket.destination", acctest.RegionProviderFunc(alternateRegion, &providers)), + testAccCheckBucketExistsWithProvider(ctx, "aws_s3_bucket.destination", acctest.RegionProviderFunc(ctx, alternateRegion, &providers)), ), }, { Config: testAccBucketConfig_replicationV2NoTags(bucketName), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckBucketExistsWithProvider(ctx, resourceName, acctest.RegionProviderFunc(region, &providers)), + testAccCheckBucketExistsWithProvider(ctx, resourceName, acctest.RegionProviderFunc(ctx, region, &providers)), resource.TestCheckResourceAttr(resourceName, "replication_configuration.#", "1"), resource.TestCheckResourceAttrPair(resourceName, "replication_configuration.0.role", iamRoleResourceName, names.AttrARN), resource.TestCheckResourceAttr(resourceName, "replication_configuration.0.rules.#", "1"), - testAccCheckBucketExistsWithProvider(ctx, "aws_s3_bucket.destination", acctest.RegionProviderFunc(alternateRegion, &providers)), + testAccCheckBucketExistsWithProvider(ctx, "aws_s3_bucket.destination", acctest.RegionProviderFunc(ctx, alternateRegion, &providers)), ), }, { @@ -1660,31 +1661,31 @@ func TestAccS3Bucket_Replication_schemaV2(t *testing.T) { { Config: testAccBucketConfig_replicationV2OnlyOneTag(bucketName), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckBucketExistsWithProvider(ctx, resourceName, acctest.RegionProviderFunc(region, &providers)), + testAccCheckBucketExistsWithProvider(ctx, resourceName, acctest.RegionProviderFunc(ctx, region, &providers)), resource.TestCheckResourceAttr(resourceName, "replication_configuration.#", "1"), resource.TestCheckResourceAttrPair(resourceName, "replication_configuration.0.role", iamRoleResourceName, names.AttrARN), resource.TestCheckResourceAttr(resourceName, "replication_configuration.0.rules.#", "1"), - testAccCheckBucketExistsWithProvider(ctx, "aws_s3_bucket.destination", acctest.RegionProviderFunc(alternateRegion, &providers)), + testAccCheckBucketExistsWithProvider(ctx, "aws_s3_bucket.destination", acctest.RegionProviderFunc(ctx, alternateRegion, &providers)), ), }, { Config: testAccBucketConfig_replicationV2PrefixAndTags(bucketName), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckBucketExistsWithProvider(ctx, resourceName, acctest.RegionProviderFunc(region, &providers)), + testAccCheckBucketExistsWithProvider(ctx, resourceName, acctest.RegionProviderFunc(ctx, region, &providers)), resource.TestCheckResourceAttr(resourceName, "replication_configuration.#", "1"), resource.TestCheckResourceAttrPair(resourceName, "replication_configuration.0.role", iamRoleResourceName, names.AttrARN), resource.TestCheckResourceAttr(resourceName, "replication_configuration.0.rules.#", "1"), - testAccCheckBucketExistsWithProvider(ctx, "aws_s3_bucket.destination", acctest.RegionProviderFunc(alternateRegion, &providers)), + testAccCheckBucketExistsWithProvider(ctx, "aws_s3_bucket.destination", acctest.RegionProviderFunc(ctx, alternateRegion, &providers)), ), }, { Config: testAccBucketConfig_replicationV2MultipleTags(bucketName), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckBucketExistsWithProvider(ctx, resourceName, acctest.RegionProviderFunc(region, &providers)), + testAccCheckBucketExistsWithProvider(ctx, resourceName, acctest.RegionProviderFunc(ctx, region, &providers)), resource.TestCheckResourceAttr(resourceName, "replication_configuration.#", "1"), resource.TestCheckResourceAttrPair(resourceName, "replication_configuration.0.role", iamRoleResourceName, names.AttrARN), resource.TestCheckResourceAttr(resourceName, "replication_configuration.0.rules.#", "1"), - testAccCheckBucketExistsWithProvider(ctx, "aws_s3_bucket.destination", acctest.RegionProviderFunc(alternateRegion, &providers)), + testAccCheckBucketExistsWithProvider(ctx, "aws_s3_bucket.destination", acctest.RegionProviderFunc(ctx, alternateRegion, &providers)), ), }, }, @@ -1708,7 +1709,7 @@ func TestAccS3Bucket_Replication_schemaV2SameRegion(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckBucketExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, "replication_configuration.#", "1"), - acctest.CheckResourceAttrGlobalARN(resourceName, "replication_configuration.0.role", "iam", fmt.Sprintf("role/%s", rName)), + acctest.CheckResourceAttrGlobalARN(ctx, resourceName, "replication_configuration.0.role", "iam", fmt.Sprintf("role/%s", rName)), resource.TestCheckResourceAttr(resourceName, "replication_configuration.0.rules.#", "1"), testAccCheckBucketExists(ctx, destinationResourceName), ), @@ -1751,44 +1752,44 @@ func TestAccS3Bucket_Replication_RTC_valid(t *testing.T) { { Config: testAccBucketConfig_replicationV2RTC(bucketName, 15), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckBucketExistsWithProvider(ctx, resourceName, acctest.RegionProviderFunc(region, &providers)), + testAccCheckBucketExistsWithProvider(ctx, resourceName, acctest.RegionProviderFunc(ctx, region, &providers)), resource.TestCheckResourceAttr(resourceName, "replication_configuration.#", "1"), resource.TestCheckResourceAttrPair(resourceName, "replication_configuration.0.role", iamRoleResourceName, names.AttrARN), resource.TestCheckResourceAttr(resourceName, "replication_configuration.0.rules.#", "1"), - testAccCheckBucketExistsWithProvider(ctx, "aws_s3_bucket.destination", acctest.RegionProviderFunc(alternateRegion, &providers)), + testAccCheckBucketExistsWithProvider(ctx, "aws_s3_bucket.destination", acctest.RegionProviderFunc(ctx, alternateRegion, &providers)), ), }, { Config: testAccBucketConfig_replicationV2RTCNoMinutes(bucketName), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckBucketExistsWithProvider(ctx, resourceName, acctest.RegionProviderFunc(region, &providers)), + testAccCheckBucketExistsWithProvider(ctx, resourceName, acctest.RegionProviderFunc(ctx, region, &providers)), resource.TestCheckResourceAttr(resourceName, "replication_configuration.#", "1"), resource.TestCheckResourceAttrPair(resourceName, "replication_configuration.0.role", iamRoleResourceName, names.AttrARN), resource.TestCheckResourceAttr(resourceName, "replication_configuration.0.rules.#", "1"), - testAccCheckBucketExistsWithProvider(ctx, "aws_s3_bucket.destination", acctest.RegionProviderFunc(alternateRegion, &providers)), + testAccCheckBucketExistsWithProvider(ctx, "aws_s3_bucket.destination", acctest.RegionProviderFunc(ctx, alternateRegion, &providers)), ), }, { Config: testAccBucketConfig_replicationV2RTCNoStatus(bucketName), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckBucketExistsWithProvider(ctx, resourceName, acctest.RegionProviderFunc(region, &providers)), + testAccCheckBucketExistsWithProvider(ctx, resourceName, acctest.RegionProviderFunc(ctx, region, &providers)), resource.TestCheckResourceAttr(resourceName, "replication_configuration.#", "1"), resource.TestCheckResourceAttrPair(resourceName, "replication_configuration.0.role", iamRoleResourceName, names.AttrARN), resource.TestCheckResourceAttr(resourceName, "replication_configuration.0.rules.#", "1"), - testAccCheckBucketExistsWithProvider(ctx, "aws_s3_bucket.destination", acctest.RegionProviderFunc(alternateRegion, &providers)), + testAccCheckBucketExistsWithProvider(ctx, "aws_s3_bucket.destination", acctest.RegionProviderFunc(ctx, alternateRegion, &providers)), ), }, { Config: testAccBucketConfig_replicationV2RTCNotConfigured(bucketName), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckBucketExistsWithProvider(ctx, resourceName, acctest.RegionProviderFunc(region, &providers)), + testAccCheckBucketExistsWithProvider(ctx, resourceName, acctest.RegionProviderFunc(ctx, region, &providers)), resource.TestCheckResourceAttr(resourceName, "replication_configuration.#", "1"), resource.TestCheckResourceAttrPair(resourceName, "replication_configuration.0.role", iamRoleResourceName, names.AttrARN), resource.TestCheckResourceAttr(resourceName, "replication_configuration.0.rules.#", "1"), resource.TestCheckResourceAttr(resourceName, "replication_configuration.0.rules.0.destination.#", "1"), resource.TestCheckResourceAttr(resourceName, "replication_configuration.0.rules.0.destination.0.replication_time.#", "1"), resource.TestCheckResourceAttr(resourceName, "replication_configuration.0.rules.0.destination.0.metrics.#", "1"), - testAccCheckBucketExistsWithProvider(ctx, "aws_s3_bucket.destination", acctest.RegionProviderFunc(alternateRegion, &providers)), + testAccCheckBucketExistsWithProvider(ctx, "aws_s3_bucket.destination", acctest.RegionProviderFunc(ctx, alternateRegion, &providers)), ), }, }, @@ -2297,7 +2298,7 @@ func TestBucketName(t *testing.T) { } for _, v := range validDnsNames { - if err := tfs3.ValidBucketName(v, names.USWest2RegionID); err != nil { + if err := tfs3.ValidBucketName(v, endpoints.UsWest2RegionID); err != nil { t.Fatalf("%q should be a valid S3 bucket name", v) } } @@ -2314,7 +2315,7 @@ func TestBucketName(t *testing.T) { } for _, v := range invalidDnsNames { - if err := tfs3.ValidBucketName(v, names.USWest2RegionID); err == nil { + if err := tfs3.ValidBucketName(v, endpoints.UsWest2RegionID); err == nil { t.Fatalf("%q should not be a valid S3 bucket name", v) } } @@ -2331,7 +2332,7 @@ func TestBucketName(t *testing.T) { } for _, v := range validEastNames { - if err := tfs3.ValidBucketName(v, names.USEast1RegionID); err != nil { + if err := tfs3.ValidBucketName(v, endpoints.UsEast1RegionID); err != nil { t.Fatalf("%q should be a valid S3 bucket name", v) } } @@ -2342,7 +2343,7 @@ func TestBucketName(t *testing.T) { } for _, v := range invalidEastNames { - if err := tfs3.ValidBucketName(v, names.USEast1RegionID); err == nil { + if err := tfs3.ValidBucketName(v, endpoints.UsEast1RegionID); err == nil { t.Fatalf("%q should not be a valid S3 bucket name", v) } } @@ -2369,24 +2370,24 @@ func TestBucketRegionalDomainName(t *testing.T) { ExpectedOutput: bucket + ".s3.custom.amazonaws.com", }, { - Region: names.USEast1RegionID, + Region: endpoints.UsEast1RegionID, ExpectedErrCount: 0, - ExpectedOutput: bucket + fmt.Sprintf(".s3.%s.%s", names.USEast1RegionID, acctest.PartitionDNSSuffix()), + ExpectedOutput: bucket + fmt.Sprintf(".s3.%s.%s", endpoints.UsEast1RegionID, acctest.PartitionDNSSuffix()), }, { - Region: names.USWest2RegionID, + Region: endpoints.UsWest2RegionID, ExpectedErrCount: 0, - ExpectedOutput: bucket + fmt.Sprintf(".s3.%s.%s", names.USWest2RegionID, acctest.PartitionDNSSuffix()), + ExpectedOutput: bucket + fmt.Sprintf(".s3.%s.%s", endpoints.UsWest2RegionID, acctest.PartitionDNSSuffix()), }, { - Region: names.USGovWest1RegionID, + Region: endpoints.UsGovWest1RegionID, ExpectedErrCount: 0, - ExpectedOutput: bucket + fmt.Sprintf(".s3.%s.%s", names.USGovWest1RegionID, acctest.PartitionDNSSuffix()), + ExpectedOutput: bucket + fmt.Sprintf(".s3.%s.%s", endpoints.UsGovWest1RegionID, acctest.PartitionDNSSuffix()), }, { - Region: names.CNNorth1RegionID, + Region: endpoints.CnNorth1RegionID, ExpectedErrCount: 0, - ExpectedOutput: bucket + fmt.Sprintf(".s3.%s.amazonaws.com.cn", names.CNNorth1RegionID), + ExpectedOutput: bucket + fmt.Sprintf(".s3.%s.amazonaws.com.cn", endpoints.CnNorth1RegionID), }, } @@ -2409,27 +2410,27 @@ func TestWebsiteEndpoint(t *testing.T) { }{ { LocationConstraint: "", - Expected: fmt.Sprintf("bucket-name.s3-website-%s.%s", names.USEast1RegionID, acctest.PartitionDNSSuffix()), + Expected: fmt.Sprintf("bucket-name.s3-website-%s.%s", endpoints.UsEast1RegionID, acctest.PartitionDNSSuffix()), }, { - LocationConstraint: names.USEast2RegionID, - Expected: fmt.Sprintf("bucket-name.s3-website.%s.%s", names.USEast2RegionID, acctest.PartitionDNSSuffix()), + LocationConstraint: endpoints.UsEast2RegionID, + Expected: fmt.Sprintf("bucket-name.s3-website.%s.%s", endpoints.UsEast2RegionID, acctest.PartitionDNSSuffix()), }, { - LocationConstraint: names.USGovEast1RegionID, - Expected: fmt.Sprintf("bucket-name.s3-website.%s.%s", names.USGovEast1RegionID, acctest.PartitionDNSSuffix()), + LocationConstraint: endpoints.UsGovEast1RegionID, + Expected: fmt.Sprintf("bucket-name.s3-website.%s.%s", endpoints.UsGovEast1RegionID, acctest.PartitionDNSSuffix()), }, { - LocationConstraint: names.USISOEast1RegionID, - Expected: fmt.Sprintf("bucket-name.s3-website.%s.c2s.ic.gov", names.USISOEast1RegionID), + LocationConstraint: endpoints.UsIsoEast1RegionID, + Expected: fmt.Sprintf("bucket-name.s3-website.%s.c2s.ic.gov", endpoints.UsIsoEast1RegionID), }, { - LocationConstraint: names.USISOBEast1RegionID, - Expected: fmt.Sprintf("bucket-name.s3-website.%s.sc2s.sgov.gov", names.USISOBEast1RegionID), + LocationConstraint: endpoints.UsIsobEast1RegionID, + Expected: fmt.Sprintf("bucket-name.s3-website.%s.sc2s.sgov.gov", endpoints.UsIsobEast1RegionID), }, { - LocationConstraint: names.CNNorth1RegionID, - Expected: fmt.Sprintf("bucket-name.s3-website.%s.amazonaws.com.cn", names.CNNorth1RegionID), + LocationConstraint: endpoints.CnNorth1RegionID, + Expected: fmt.Sprintf("bucket-name.s3-website.%s.amazonaws.com.cn", endpoints.CnNorth1RegionID), }, } diff --git a/internal/service/s3/bucket_versioning.go b/internal/service/s3/bucket_versioning.go index e94cca2439b1..f690f6497c15 100644 --- a/internal/service/s3/bucket_versioning.go +++ b/internal/service/s3/bucket_versioning.go @@ -105,6 +105,9 @@ func resourceBucketVersioningCreate(ctx context.Context, d *schema.ResourceData, conn := meta.(*conns.AWSClient).S3Client(ctx) bucket := d.Get(names.AttrBucket).(string) + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } expectedBucketOwner := d.Get(names.AttrExpectedBucketOwner).(string) versioningConfiguration := expandBucketVersioningConfiguration(d.Get("versioning_configuration").([]interface{})) @@ -157,6 +160,10 @@ func resourceBucketVersioningRead(ctx context.Context, d *schema.ResourceData, m return sdkdiag.AppendFromErr(diags, err) } + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } + output, err := waitForBucketVersioningStatus(ctx, conn, bucket, expectedBucketOwner) if !d.IsNewResource() && tfresource.NotFound(err) { @@ -187,6 +194,10 @@ func resourceBucketVersioningUpdate(ctx context.Context, d *schema.ResourceData, return sdkdiag.AppendFromErr(diags, err) } + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } + input := &s3.PutBucketVersioningInput{ Bucket: aws.String(bucket), VersioningConfiguration: expandBucketVersioningConfiguration(d.Get("versioning_configuration").([]interface{})), @@ -222,6 +233,10 @@ func resourceBucketVersioningDelete(ctx context.Context, d *schema.ResourceData, return sdkdiag.AppendFromErr(diags, err) } + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } + input := &s3.PutBucketVersioningInput{ Bucket: aws.String(bucket), VersioningConfiguration: &types.VersioningConfiguration{ diff --git a/internal/service/s3/bucket_versioning_test.go b/internal/service/s3/bucket_versioning_test.go index f2f1a441c980..3ee786dff415 100644 --- a/internal/service/s3/bucket_versioning_test.go +++ b/internal/service/s3/bucket_versioning_test.go @@ -503,9 +503,9 @@ func TestAccS3BucketVersioning_directoryBucket(t *testing.T) { func testAccCheckBucketVersioningDestroy(ctx context.Context) resource.TestCheckFunc { return func(s *terraform.State) error { - conn := acctest.Provider.Meta().(*conns.AWSClient).S3Client(ctx) - for _, rs := range s.RootModule().Resources { + conn := acctest.Provider.Meta().(*conns.AWSClient).S3Client(ctx) + if rs.Type != "aws_s3_bucket_versioning" { continue } @@ -515,6 +515,10 @@ func testAccCheckBucketVersioningDestroy(ctx context.Context) resource.TestCheck return err } + if tfs3.IsDirectoryBucket(bucket) { + conn = acctest.Provider.Meta().(*conns.AWSClient).S3ExpressClient(ctx) + } + _, err = tfs3.FindBucketVersioning(ctx, conn, bucket, expectedBucketOwner) if tfresource.NotFound(err) { @@ -545,6 +549,9 @@ func testAccCheckBucketVersioningExists(ctx context.Context, n string) resource. } conn := acctest.Provider.Meta().(*conns.AWSClient).S3Client(ctx) + if tfs3.IsDirectoryBucket(bucket) { + conn = acctest.Provider.Meta().(*conns.AWSClient).S3ExpressClient(ctx) + } _, err = tfs3.FindBucketVersioning(ctx, conn, bucket, expectedBucketOwner) diff --git a/internal/service/s3/bucket_website_configuration.go b/internal/service/s3/bucket_website_configuration.go index b85050b181e8..a6821641ca4a 100644 --- a/internal/service/s3/bucket_website_configuration.go +++ b/internal/service/s3/bucket_website_configuration.go @@ -211,6 +211,9 @@ func resourceBucketWebsiteConfigurationCreate(ctx context.Context, d *schema.Res } bucket := d.Get(names.AttrBucket).(string) + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } expectedBucketOwner := d.Get(names.AttrExpectedBucketOwner).(string) input := &s3.PutBucketWebsiteInput{ Bucket: aws.String(bucket), @@ -254,6 +257,10 @@ func resourceBucketWebsiteConfigurationRead(ctx context.Context, d *schema.Resou return sdkdiag.AppendFromErr(diags, err) } + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } + output, err := findBucketWebsite(ctx, conn, bucket, expectedBucketOwner) if !d.IsNewResource() && tfresource.NotFound(err) { @@ -310,6 +317,10 @@ func resourceBucketWebsiteConfigurationUpdate(ctx context.Context, d *schema.Res return sdkdiag.AppendFromErr(diags, err) } + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } + websiteConfig := &types.WebsiteConfiguration{} if v, ok := d.GetOk("error_document"); ok && len(v.([]interface{})) > 0 && v.([]interface{})[0] != nil { @@ -375,6 +386,10 @@ func resourceBucketWebsiteConfigurationDelete(ctx context.Context, d *schema.Res return sdkdiag.AppendFromErr(diags, err) } + if isDirectoryBucket(bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } + input := &s3.DeleteBucketWebsiteInput{ Bucket: aws.String(bucket), } diff --git a/internal/service/s3/bucket_website_configuration_test.go b/internal/service/s3/bucket_website_configuration_test.go index cccffb385698..824d87397eee 100644 --- a/internal/service/s3/bucket_website_configuration_test.go +++ b/internal/service/s3/bucket_website_configuration_test.go @@ -558,9 +558,9 @@ func TestAccS3BucketWebsiteConfiguration_directoryBucket(t *testing.T) { func testAccCheckBucketWebsiteConfigurationDestroy(ctx context.Context) resource.TestCheckFunc { return func(s *terraform.State) error { - conn := acctest.Provider.Meta().(*conns.AWSClient).S3Client(ctx) - for _, rs := range s.RootModule().Resources { + conn := acctest.Provider.Meta().(*conns.AWSClient).S3Client(ctx) + if rs.Type != "aws_s3_bucket_website_configuration" { continue } @@ -570,6 +570,10 @@ func testAccCheckBucketWebsiteConfigurationDestroy(ctx context.Context) resource return err } + if tfs3.IsDirectoryBucket(bucket) { + conn = acctest.Provider.Meta().(*conns.AWSClient).S3ExpressClient(ctx) + } + _, err = tfs3.FindBucketWebsite(ctx, conn, bucket, expectedBucketOwner) if tfresource.NotFound(err) { @@ -601,6 +605,10 @@ func testAccCheckBucketWebsiteConfigurationExists(ctx context.Context, n string) return err } + if tfs3.IsDirectoryBucket(bucket) { + conn = acctest.Provider.Meta().(*conns.AWSClient).S3ExpressClient(ctx) + } + _, err = tfs3.FindBucketWebsite(ctx, conn, bucket, expectedBucketOwner) return err diff --git a/internal/service/s3/directory_bucket.go b/internal/service/s3/directory_bucket.go index 19a22a000d56..4d9aeaac1f98 100644 --- a/internal/service/s3/directory_bucket.go +++ b/internal/service/s3/directory_bucket.go @@ -30,7 +30,7 @@ import ( var ( // e.g. example--usw2-az2--x-s3 - directoryBucketNameRegex = regexache.MustCompile(`^([0-9a-z.-]+)--([a-z]+\d+-az\d+)--x-s3$`) + directoryBucketNameRegex = regexache.MustCompile(`^(?:[0-9a-z.-]+)--(?:[0-9a-za-z]+(?:-[0-9a-za-z]+)+)--x-s3$`) ) func isDirectoryBucket(bucket string) bool { @@ -46,6 +46,7 @@ func newDirectoryBucketResource(context.Context) (resource.ResourceWithConfigure type directoryBucketResource struct { framework.ResourceWithConfigure + framework.WithNoOpUpdate[directoryBucketResourceModel] // Only 'force_destroy' can be updated. framework.WithImportByID } @@ -128,17 +129,13 @@ func (r *directoryBucketResource) Schema(ctx context.Context, request resource.S func (r *directoryBucketResource) Create(ctx context.Context, request resource.CreateRequest, response *resource.CreateResponse) { var data directoryBucketResourceModel - response.Diagnostics.Append(request.Plan.Get(ctx, &data)...) - if response.Diagnostics.HasError() { return } locationInfoData, diags := data.Location.ToPtr(ctx) - response.Diagnostics.Append(diags...) - if response.Diagnostics.HasError() { return } @@ -176,9 +173,7 @@ func (r *directoryBucketResource) Create(ctx context.Context, request resource.C func (r *directoryBucketResource) Read(ctx context.Context, request resource.ReadRequest, response *resource.ReadResponse) { var data directoryBucketResourceModel - response.Diagnostics.Append(request.State.Get(ctx, &data)...) - if response.Diagnostics.HasError() { return } @@ -222,29 +217,9 @@ func (r *directoryBucketResource) Read(ctx context.Context, request resource.Rea response.Diagnostics.Append(response.State.Set(ctx, &data)...) } -func (r *directoryBucketResource) Update(ctx context.Context, request resource.UpdateRequest, response *resource.UpdateResponse) { - var old, new directoryBucketResourceModel - - response.Diagnostics.Append(request.State.Get(ctx, &old)...) - - if response.Diagnostics.HasError() { - return - } - - response.Diagnostics.Append(request.Plan.Get(ctx, &new)...) - - if response.Diagnostics.HasError() { - return - } - - response.Diagnostics.Append(response.State.Set(ctx, &new)...) -} - func (r *directoryBucketResource) Delete(ctx context.Context, request resource.DeleteRequest, response *resource.DeleteResponse) { var data directoryBucketResourceModel - response.Diagnostics.Append(request.State.Get(ctx, &data)...) - if response.Diagnostics.HasError() { return } diff --git a/internal/service/s3/directory_bucket_test.go b/internal/service/s3/directory_bucket_test.go index a5a1d9db2618..872f66de2773 100644 --- a/internal/service/s3/directory_bucket_test.go +++ b/internal/service/s3/directory_bucket_test.go @@ -34,7 +34,7 @@ func TestAccS3DirectoryBucket_basic(t *testing.T) { Config: testAccDirectoryBucketConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckDirectoryBucketExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "s3express", regexache.MustCompile(fmt.Sprintf(`bucket/%s--.*-x-s3`, rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "s3express", regexache.MustCompile(fmt.Sprintf(`bucket/%s--.*-x-s3`, rName))), resource.TestCheckResourceAttr(resourceName, "data_redundancy", "SingleAvailabilityZone"), resource.TestCheckResourceAttr(resourceName, "location.#", "1"), resource.TestCheckResourceAttrSet(resourceName, "location.0.name"), diff --git a/internal/service/s3/directory_buckets_data_source.go b/internal/service/s3/directory_buckets_data_source.go index 645cb587af1d..cd4e4edccfcf 100644 --- a/internal/service/s3/directory_buckets_data_source.go +++ b/internal/service/s3/directory_buckets_data_source.go @@ -51,9 +51,7 @@ func (d *directoryBucketsDataSource) Schema(ctx context.Context, req datasource. func (d *directoryBucketsDataSource) Read(ctx context.Context, request datasource.ReadRequest, response *datasource.ReadResponse) { var data directoryBucketsDataSourceModel - response.Diagnostics.Append(request.Config.Get(ctx, &data)...) - if response.Diagnostics.HasError() { return } @@ -81,7 +79,7 @@ func (d *directoryBucketsDataSource) Read(ctx context.Context, request datasourc return d.Meta().RegionalARN(ctx, "s3express", fmt.Sprintf("bucket/%s", v)) })) data.Buckets = flex.FlattenFrameworkStringValueList(ctx, buckets) - data.ID = types.StringValue(d.Meta().Region) + data.ID = types.StringValue(d.Meta().Region(ctx)) response.Diagnostics.Append(response.State.Set(ctx, &data)...) } diff --git a/internal/service/s3/enum.go b/internal/service/s3/enum.go index dea45d082add..a7fd9295a22d 100644 --- a/internal/service/s3/enum.go +++ b/internal/service/s3/enum.go @@ -19,13 +19,16 @@ const ( bucketNameTypeObjectLambdaAccessPointAlias bucketNameTypeObjectLambdaAccessPointARN bucketNameTypeMultiRegionAccessPointARN + bucketNameTypeS3OnOutpostsAccessPointAlias + bucketNameTypeS3OnOutpostsAccessPointARN ) func bucketNameTypeFor(bucket string) bucketNameType { switch { case arn.IsARN(bucket): - switch v, _ := arn.Parse(bucket); v.Resource { - case "accesspoint": + v, _ := arn.Parse(bucket) + switch { + case strings.HasPrefix(v.Resource, "accesspoint/"): switch v.Service { case "s3": if v.Region == "" { @@ -35,6 +38,11 @@ func bucketNameTypeFor(bucket string) bucketNameType { case "s3-object-lambda": return bucketNameTypeObjectLambdaAccessPointARN } + case strings.HasPrefix(v.Resource, "outpost/"): + switch v.Service { + case "s3-outposts": + return bucketNameTypeS3OnOutpostsAccessPointARN + } } case directoryBucketNameRegex.MatchString(bucket): return bucketNameTypeDirectoryBucket @@ -42,7 +50,9 @@ func bucketNameTypeFor(bucket string) bucketNameType { return bucketNameTypeAccessPointAlias case strings.HasSuffix(bucket, "--ol-s3"): return bucketNameTypeObjectLambdaAccessPointAlias + case strings.HasSuffix(bucket, "--op-s3"): + return bucketNameTypeS3OnOutpostsAccessPointAlias } - return bucketNameTypeDirectoryBucket + return bucketNameTypeGeneralPurposeBucket } diff --git a/internal/service/s3/enum_test.go b/internal/service/s3/enum_test.go new file mode 100644 index 000000000000..7a770cf3eb9c --- /dev/null +++ b/internal/service/s3/enum_test.go @@ -0,0 +1,84 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +package s3 + +import ( + "testing" +) + +func TestBucketNameTypeFor(t *testing.T) { + t.Parallel() + + testCases := []struct { + testName string + bucket string + expectedType bucketNameType + }{ + { + testName: "General purpose bucket name", + bucket: "tf-acc-test-5488849387206835662", + expectedType: bucketNameTypeGeneralPurposeBucket, + }, + { + testName: "Directory bucket name (AZ)", + bucket: "tf-acc-test-5488849387206835662--use1-az6--x-s3", + expectedType: bucketNameTypeDirectoryBucket, + }, + { + testName: "Directory bucket name (medium DLZ)", + bucket: "mybucket--test1-zone-ab1--x-s3", + expectedType: bucketNameTypeDirectoryBucket, + }, + { + testName: "Directory bucket name (long DLZ)", + bucket: "mybucket--test1-long1-zone-ab1--x-s3", + expectedType: bucketNameTypeDirectoryBucket, + }, + { + testName: "Multi-Region access point ARN", + bucket: "arn:aws:s3::111122223333:accesspoint/MultiRegionAccessPoint_alias", //lintignore:AWSAT003,AWSAT005 + expectedType: bucketNameTypeMultiRegionAccessPointARN, + }, + { + testName: "Access point ARN", + bucket: "arn:aws:s3:us-east-1:111122223333:accesspoint/my-access-point", //lintignore:AWSAT003,AWSAT005 + expectedType: bucketNameTypeAccessPointARN, + }, + { + testName: "Access point alias", + bucket: "my-access-point-hrzrlukc5m36ft7okagglf3gmwluquse1b-s3alias", + expectedType: bucketNameTypeAccessPointAlias, + }, + { + testName: "Object lambda access point alias", + bucket: "my-object-lambda-acc-1a4n8yjrb3kda96f67zwrwiiuse1a--ol-s3", + expectedType: bucketNameTypeObjectLambdaAccessPointAlias, + }, + { + testName: "Object lambda access point ARN", + bucket: "arn:aws:s3-object-lambda:us-east-1:111122223333:accesspoint/my-object-lambda-access-point", //lintignore:AWSAT003,AWSAT005 + expectedType: bucketNameTypeObjectLambdaAccessPointARN, + }, + { + testName: "S3 on Outposts access point alias", + bucket: "my-access-po-o01ac5d28a6a232904e8xz5w8ijx1qzlbp3i3kuse10--op-s3", + expectedType: bucketNameTypeS3OnOutpostsAccessPointAlias, + }, + { + testName: "S3 on Outposts access point ARN", + bucket: "arn:aws:s3-outposts:us-east-1:123456789012:outpost/op-01ac5d28a6a232904/accesspoint/my-access-point", //lintignore:AWSAT003,AWSAT005 + expectedType: bucketNameTypeS3OnOutpostsAccessPointARN, + }, + } + + for _, testCase := range testCases { + t.Run(testCase.testName, func(t *testing.T) { + t.Parallel() + + if got, want := bucketNameTypeFor(testCase.bucket), testCase.expectedType; got != want { + t.Errorf("bucketNameTypeFor(%q) = %v, want %v", testCase.bucket, got, want) + } + }) + } +} diff --git a/internal/service/s3/exports_test.go b/internal/service/s3/exports_test.go index 70f93d0140b5..19c85ec5a318 100644 --- a/internal/service/s3/exports_test.go +++ b/internal/service/s3/exports_test.go @@ -73,4 +73,6 @@ var ( ParseObjectARN = parseObjectARN ) -type ObjectARN = objectARN +type ( + ObjectARN = objectARN +) diff --git a/internal/service/s3/hosted_zones.go b/internal/service/s3/hosted_zones.go index ccb039f2d35a..20fa84b70ba1 100644 --- a/internal/service/s3/hosted_zones.go +++ b/internal/service/s3/hosted_zones.go @@ -6,45 +6,45 @@ package s3 import ( "fmt" - "github.com/hashicorp/terraform-provider-aws/names" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" ) // See https://docs.aws.amazon.com/general/latest/gr/s3.html#s3_website_region_endpoints. var hostedZoneIDsMap = map[string]string{ - names.AFSouth1RegionID: "Z83WF9RJE8B12", - names.APEast1RegionID: "ZNB98KWMFR0R6", - names.APNortheast1RegionID: "Z2M4EHUR26P7ZW", - names.APNortheast2RegionID: "Z3W03O7B5YMIYP", - names.APNortheast3RegionID: "Z2YQB5RD63NC85", - names.APSouth1RegionID: "Z11RGJOFQNVJUP", - names.APSouth2RegionID: "Z02976202B4EZMXIPMXF7", - names.APSoutheast1RegionID: "Z3O0J2DXBE1FTB", - names.APSoutheast2RegionID: "Z1WCIGYICN2BYD", - names.APSoutheast3RegionID: "Z01846753K324LI26A3VV", - names.APSoutheast4RegionID: "Z0312387243XT5FE14WFO", - names.APSoutheast5RegionID: "Z08660063OXLMA7F1FJHU", - names.CACentral1RegionID: "Z1QDHH18159H29", - names.CAWest1RegionID: "Z03565811Z33SLEZTHOUL", - names.CNNorth1RegionID: "Z5CN8UMXT92WN", - names.CNNorthwest1RegionID: "Z282HJ1KT0DH03", - names.EUCentral1RegionID: "Z21DNDUVLTQW6Q", - names.EUCentral2RegionID: "Z030506016YDQGETNASS", - names.EUNorth1RegionID: "Z3BAZG2TWCNX0D", - names.EUSouth1RegionID: "Z30OZKI7KPW7MI", - names.EUSouth2RegionID: "Z0081959F7139GRJC19J", - names.EUWest1RegionID: "Z1BKCTXD74EZPE", - names.EUWest2RegionID: "Z3GKZC51ZF0DB4", - names.EUWest3RegionID: "Z3R1K369G5AVDG", - names.ILCentral1RegionID: "Z09640613K4A3MN55U7GU", - names.MECentral1RegionID: "Z06143092I8HRXZRUZROF", - names.MESouth1RegionID: "Z1MPMWCPA7YB62", - names.SAEast1RegionID: "Z7KQH4QJS55SO", - names.USEast1RegionID: "Z3AQBSTGFYJSTF", - names.USEast2RegionID: "Z2O1EMRO9K5GLX", - names.USGovEast1RegionID: "Z2NIFVYYW2VKV1", - names.USGovWest1RegionID: "Z31GFT0UA1I2HV", - names.USWest1RegionID: "Z2F56UZL2M1ACD", - names.USWest2RegionID: "Z3BJ6K6RIION7M", + endpoints.AfSouth1RegionID: "Z83WF9RJE8B12", + endpoints.ApEast1RegionID: "ZNB98KWMFR0R6", + endpoints.ApNortheast1RegionID: "Z2M4EHUR26P7ZW", + endpoints.ApNortheast2RegionID: "Z3W03O7B5YMIYP", + endpoints.ApNortheast3RegionID: "Z2YQB5RD63NC85", + endpoints.ApSouth1RegionID: "Z11RGJOFQNVJUP", + endpoints.ApSouth2RegionID: "Z02976202B4EZMXIPMXF7", + endpoints.ApSoutheast1RegionID: "Z3O0J2DXBE1FTB", + endpoints.ApSoutheast2RegionID: "Z1WCIGYICN2BYD", + endpoints.ApSoutheast3RegionID: "Z01846753K324LI26A3VV", + endpoints.ApSoutheast4RegionID: "Z0312387243XT5FE14WFO", + endpoints.ApSoutheast5RegionID: "Z08660063OXLMA7F1FJHU", + endpoints.CaCentral1RegionID: "Z1QDHH18159H29", + endpoints.CaWest1RegionID: "Z03565811Z33SLEZTHOUL", + endpoints.CnNorth1RegionID: "Z5CN8UMXT92WN", + endpoints.CnNorthwest1RegionID: "Z282HJ1KT0DH03", + endpoints.EuCentral1RegionID: "Z21DNDUVLTQW6Q", + endpoints.EuCentral2RegionID: "Z030506016YDQGETNASS", + endpoints.EuNorth1RegionID: "Z3BAZG2TWCNX0D", + endpoints.EuSouth1RegionID: "Z30OZKI7KPW7MI", + endpoints.EuSouth2RegionID: "Z0081959F7139GRJC19J", + endpoints.EuWest1RegionID: "Z1BKCTXD74EZPE", + endpoints.EuWest2RegionID: "Z3GKZC51ZF0DB4", + endpoints.EuWest3RegionID: "Z3R1K369G5AVDG", + endpoints.IlCentral1RegionID: "Z09640613K4A3MN55U7GU", + endpoints.MeCentral1RegionID: "Z06143092I8HRXZRUZROF", + endpoints.MeSouth1RegionID: "Z1MPMWCPA7YB62", + endpoints.SaEast1RegionID: "Z7KQH4QJS55SO", + endpoints.UsEast1RegionID: "Z3AQBSTGFYJSTF", + endpoints.UsEast2RegionID: "Z2O1EMRO9K5GLX", + endpoints.UsGovEast1RegionID: "Z2NIFVYYW2VKV1", + endpoints.UsGovWest1RegionID: "Z31GFT0UA1I2HV", + endpoints.UsWest1RegionID: "Z2F56UZL2M1ACD", + endpoints.UsWest2RegionID: "Z3BJ6K6RIION7M", } // hostedZoneIDForRegion returns the Route 53 hosted zone ID for an S3 website endpoint Region. diff --git a/internal/service/s3/object.go b/internal/service/s3/object.go index 5bf30aecfdb0..297b20fd0a1f 100644 --- a/internal/service/s3/object.go +++ b/internal/service/s3/object.go @@ -20,6 +20,7 @@ import ( "github.com/aws/aws-sdk-go-v2/feature/s3/manager" "github.com/aws/aws-sdk-go-v2/service/s3" "github.com/aws/aws-sdk-go-v2/service/s3/types" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" "github.com/hashicorp/aws-sdk-go-base/v2/tfawserr" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/customdiff" @@ -253,16 +254,18 @@ func resourceObjectCreate(ctx context.Context, d *schema.ResourceData, meta inte func resourceObjectRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics conn := meta.(*conns.AWSClient).S3Client(ctx) - var optFns []func(*s3.Options) bucket := d.Get(names.AttrBucket).(string) if isDirectoryBucket(bucket) { conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) } + + var optFns []func(*s3.Options) // Via S3 access point: "Invalid configuration: region from ARN `us-east-1` does not match client region `aws-global` and UseArnRegion is `false`". - if arn.IsARN(bucket) && conn.Options().Region == names.GlobalRegionID { + if arn.IsARN(bucket) && conn.Options().Region == endpoints.AwsGlobalRegionID { optFns = append(optFns, func(o *s3.Options) { o.UseARNRegion = true }) } + key := sdkv1CompatibleCleanKey(d.Get(names.AttrKey).(string)) output, err := findObjectByBucketAndKey(ctx, conn, bucket, key, "", d.Get("checksum_algorithm").(string), optFns...) @@ -321,16 +324,18 @@ func resourceObjectUpdate(ctx context.Context, d *schema.ResourceData, meta inte } conn := meta.(*conns.AWSClient).S3Client(ctx) - var optFns []func(*s3.Options) bucket := d.Get(names.AttrBucket).(string) if isDirectoryBucket(bucket) { conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) } + + var optFns []func(*s3.Options) // Via S3 access point: "Invalid configuration: region from ARN `us-east-1` does not match client region `aws-global` and UseArnRegion is `false`". - if arn.IsARN(bucket) && conn.Options().Region == names.GlobalRegionID { + if arn.IsARN(bucket) && conn.Options().Region == endpoints.AwsGlobalRegionID { optFns = append(optFns, func(o *s3.Options) { o.UseARNRegion = true }) } + key := sdkv1CompatibleCleanKey(d.Get(names.AttrKey).(string)) if d.HasChange("acl") { @@ -396,16 +401,18 @@ func resourceObjectUpdate(ctx context.Context, d *schema.ResourceData, meta inte func resourceObjectDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics conn := meta.(*conns.AWSClient).S3Client(ctx) - var optFns []func(*s3.Options) bucket := d.Get(names.AttrBucket).(string) if isDirectoryBucket(bucket) { conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) } + + var optFns []func(*s3.Options) // Via S3 access point: "Invalid configuration: region from ARN `us-east-1` does not match client region `aws-global` and UseArnRegion is `false`". - if arn.IsARN(bucket) && conn.Options().Region == names.GlobalRegionID { + if arn.IsARN(bucket) && conn.Options().Region == endpoints.AwsGlobalRegionID { optFns = append(optFns, func(o *s3.Options) { o.UseARNRegion = true }) } + key := sdkv1CompatibleCleanKey(d.Get(names.AttrKey).(string)) var err error @@ -444,14 +451,15 @@ func resourceObjectImport(ctx context.Context, d *schema.ResourceData, meta inte func resourceObjectUpload(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics conn := meta.(*conns.AWSClient).S3Client(ctx) - var optFns []func(*s3.Options) bucket := d.Get(names.AttrBucket).(string) if isDirectoryBucket(bucket) { conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) } + + var optFns []func(*s3.Options) // Via S3 access point: "Invalid configuration: region from ARN `us-east-1` does not match client region `aws-global` and UseArnRegion is `false`". - if arn.IsARN(bucket) && conn.Options().Region == names.GlobalRegionID { + if arn.IsARN(bucket) && conn.Options().Region == endpoints.AwsGlobalRegionID { optFns = append(optFns, func(o *s3.Options) { o.UseARNRegion = true }) } diff --git a/internal/service/s3/object_copy.go b/internal/service/s3/object_copy.go index 098e411abb85..2abc9645b8ae 100644 --- a/internal/service/s3/object_copy.go +++ b/internal/service/s3/object_copy.go @@ -15,6 +15,7 @@ import ( "github.com/aws/aws-sdk-go-v2/aws/arn" "github.com/aws/aws-sdk-go-v2/service/s3" "github.com/aws/aws-sdk-go-v2/service/s3/types" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" @@ -336,16 +337,18 @@ func resourceObjectCopyCreate(ctx context.Context, d *schema.ResourceData, meta func resourceObjectCopyRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics conn := meta.(*conns.AWSClient).S3Client(ctx) - var optFns []func(*s3.Options) bucket := d.Get(names.AttrBucket).(string) if isDirectoryBucket(bucket) { conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) } + + var optFns []func(*s3.Options) // Via S3 access point: "Invalid configuration: region from ARN `us-east-1` does not match client region `aws-global` and UseArnRegion is `false`". - if arn.IsARN(bucket) && conn.Options().Region == names.GlobalRegionID { + if arn.IsARN(bucket) && conn.Options().Region == endpoints.AwsGlobalRegionID { optFns = append(optFns, func(o *s3.Options) { o.UseARNRegion = true }) } + key := sdkv1CompatibleCleanKey(d.Get(names.AttrKey).(string)) output, err := findObjectByBucketAndKey(ctx, conn, bucket, key, "", d.Get("checksum_algorithm").(string), optFns...) @@ -459,16 +462,18 @@ func resourceObjectCopyUpdate(ctx context.Context, d *schema.ResourceData, meta func resourceObjectCopyDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics conn := meta.(*conns.AWSClient).S3Client(ctx) - var optFns []func(*s3.Options) bucket := d.Get(names.AttrBucket).(string) if isDirectoryBucket(bucket) { conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) } + + var optFns []func(*s3.Options) // Via S3 access point: "Invalid configuration: region from ARN `us-east-1` does not match client region `aws-global` and UseArnRegion is `false`". - if arn.IsARN(bucket) && conn.Options().Region == names.GlobalRegionID { + if arn.IsARN(bucket) && conn.Options().Region == endpoints.AwsGlobalRegionID { optFns = append(optFns, func(o *s3.Options) { o.UseARNRegion = true }) } + key := sdkv1CompatibleCleanKey(d.Get(names.AttrKey).(string)) var err error @@ -487,14 +492,15 @@ func resourceObjectCopyDelete(ctx context.Context, d *schema.ResourceData, meta func resourceObjectCopyDoCopy(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics conn := meta.(*conns.AWSClient).S3Client(ctx) - var optFns []func(*s3.Options) bucket := d.Get(names.AttrBucket).(string) if isDirectoryBucket(bucket) { conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) } + + var optFns []func(*s3.Options) // Via S3 access point: "Invalid configuration: region from ARN `us-east-1` does not match client region `aws-global` and UseArnRegion is `false`". - if arn.IsARN(bucket) && conn.Options().Region == names.GlobalRegionID { + if arn.IsARN(bucket) && conn.Options().Region == endpoints.AwsGlobalRegionID { optFns = append(optFns, func(o *s3.Options) { o.UseARNRegion = true }) } diff --git a/internal/service/s3/object_copy_test.go b/internal/service/s3/object_copy_test.go index a6c104096e5b..f5f5674e31c2 100644 --- a/internal/service/s3/object_copy_test.go +++ b/internal/service/s3/object_copy_test.go @@ -11,6 +11,7 @@ import ( "github.com/YakDriver/regexache" "github.com/aws/aws-sdk-go-v2/aws/arn" "github.com/aws/aws-sdk-go-v2/service/s3" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-plugin-testing/terraform" @@ -413,7 +414,7 @@ func TestAccS3ObjectCopy_directoryBucket(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "customer_key_md5", ""), resource.TestCheckNoResourceAttr(resourceName, names.AttrExpectedBucketOwner), resource.TestCheckNoResourceAttr(resourceName, "expected_source_bucket_owner"), - resource.TestCheckResourceAttr(resourceName, "expiration", ""), + resource.TestCheckResourceAttr(resourceName, "expiration", "NotImplemented"), resource.TestCheckNoResourceAttr(resourceName, "expires"), resource.TestCheckResourceAttr(resourceName, names.AttrForceDestroy, acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "grant.#", "0"), @@ -505,7 +506,7 @@ func TestAccS3ObjectCopy_basicViaAccessPoint(t *testing.T) { resource.TestCheckNoResourceAttr(resourceName, "source_customer_algorithm"), resource.TestCheckNoResourceAttr(resourceName, "source_customer_key"), resource.TestCheckNoResourceAttr(resourceName, "source_customer_key_md5"), - resource.TestCheckResourceAttr(resourceName, "source_version_id", ""), + resource.TestCheckResourceAttrSet(resourceName, "source_version_id"), resource.TestCheckResourceAttr(resourceName, names.AttrStorageClass, "STANDARD"), resource.TestCheckNoResourceAttr(resourceName, "tagging_directive"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), @@ -520,17 +521,18 @@ func TestAccS3ObjectCopy_basicViaAccessPoint(t *testing.T) { func testAccCheckObjectCopyDestroy(ctx context.Context) resource.TestCheckFunc { return func(s *terraform.State) error { for _, rs := range s.RootModule().Resources { + conn := acctest.Provider.Meta().(*conns.AWSClient).S3Client(ctx) + if rs.Type != "aws_s3_object_copy" { continue } - conn := acctest.Provider.Meta().(*conns.AWSClient).S3Client(ctx) if tfs3.IsDirectoryBucket(rs.Primary.Attributes[names.AttrBucket]) { conn = acctest.Provider.Meta().(*conns.AWSClient).S3ExpressClient(ctx) } var optFns []func(*s3.Options) - if arn.IsARN(rs.Primary.Attributes[names.AttrBucket]) && conn.Options().Region == names.GlobalRegionID { + if arn.IsARN(rs.Primary.Attributes[names.AttrBucket]) && conn.Options().Region == endpoints.AwsGlobalRegionID { optFns = append(optFns, func(o *s3.Options) { o.UseARNRegion = true }) } @@ -564,7 +566,7 @@ func testAccCheckObjectCopyExists(ctx context.Context, n string) resource.TestCh } var optFns []func(*s3.Options) - if arn.IsARN(rs.Primary.Attributes[names.AttrBucket]) && conn.Options().Region == names.GlobalRegionID { + if arn.IsARN(rs.Primary.Attributes[names.AttrBucket]) && conn.Options().Region == endpoints.AwsGlobalRegionID { optFns = append(optFns, func(o *s3.Options) { o.UseARNRegion = true }) } @@ -847,7 +849,7 @@ resource "aws_s3_access_point" "target" { } resource "aws_s3_object" "source" { - bucket = aws_s3_bucket.source.bucket + bucket = aws_s3_bucket_versioning.source.bucket key = %[2]q content = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" } diff --git a/internal/service/s3/object_data_source.go b/internal/service/s3/object_data_source.go index 3ccd63de3a90..77db9c084f83 100644 --- a/internal/service/s3/object_data_source.go +++ b/internal/service/s3/object_data_source.go @@ -15,6 +15,7 @@ import ( "github.com/aws/aws-sdk-go-v2/feature/s3/manager" "github.com/aws/aws-sdk-go-v2/service/s3" "github.com/aws/aws-sdk-go-v2/service/s3/types" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" "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" @@ -162,16 +163,18 @@ func dataSourceObject() *schema.Resource { func dataSourceObjectRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics conn := meta.(*conns.AWSClient).S3Client(ctx) - var optFns []func(*s3.Options) bucket := d.Get(names.AttrBucket).(string) if isDirectoryBucket(bucket) { conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) } + + var optFns []func(*s3.Options) // Via S3 access point: "Invalid configuration: region from ARN `us-east-1` does not match client region `aws-global` and UseArnRegion is `false`". - if arn.IsARN(bucket) && conn.Options().Region == names.GlobalRegionID { + if arn.IsARN(bucket) && conn.Options().Region == endpoints.AwsGlobalRegionID { optFns = append(optFns, func(o *s3.Options) { o.UseARNRegion = true }) } + key := sdkv1CompatibleCleanKey(d.Get(names.AttrKey).(string)) input := &s3.HeadObjectInput{ Bucket: aws.String(bucket), diff --git a/internal/service/s3/object_test.go b/internal/service/s3/object_test.go index 41e3b49f92a4..fa93fb8a0c4e 100644 --- a/internal/service/s3/object_test.go +++ b/internal/service/s3/object_test.go @@ -20,6 +20,7 @@ import ( "github.com/aws/aws-sdk-go-v2/service/s3" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/google/go-cmp/cmp" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" "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" @@ -652,7 +653,7 @@ func TestAccS3Object_updatesWithVersioningViaAccessPoint(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckObjectExists(ctx, resourceName, &originalObj), testAccCheckObjectBody(&originalObj, "initial versioned object state"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "s3", fmt.Sprintf("accesspoint/%s/updateable-key", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "s3", fmt.Sprintf("accesspoint/%s/updateable-key", rName)), resource.TestCheckResourceAttrPair(resourceName, names.AttrBucket, accessPointResourceName, names.AttrARN), resource.TestCheckResourceAttr(resourceName, "etag", "cee4407fa91906284e2a5e5e03e86b1b"), ), @@ -1843,6 +1844,10 @@ func TestAccS3Object_prefix(t *testing.T) { func TestAccS3Object_crossRegion(t *testing.T) { ctx := acctest.Context(t) rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + errorPattern := `PermanentRedirect` + if acctest.Region() == endpoints.UsEast1RegionID { + errorPattern = `No AWSAccessKey was presented` + } resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { @@ -1855,7 +1860,7 @@ func TestAccS3Object_crossRegion(t *testing.T) { Steps: []resource.TestStep{ { Config: testAccObjectConfig_crossRegion(rName), - ExpectError: regexache.MustCompile(`PermanentRedirect`), + ExpectError: regexache.MustCompile(errorPattern), }, }, }) @@ -1865,7 +1870,7 @@ func TestAccS3Object_crossRegion(t *testing.T) { func TestAccS3Object_optInRegion(t *testing.T) { ctx := acctest.Context(t) rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) - optInRegion := names.APEast1RegionID // Hong Kong. + optInRegion := endpoints.ApEast1RegionID // Hong Kong. providers := make(map[string]*schema.Provider) resource.ParallelTest(t, resource.TestCase{ @@ -2034,17 +2039,18 @@ func testAccCheckObjectVersionIDEquals(first, second *s3.GetObjectOutput) resour func testAccCheckObjectDestroy(ctx context.Context) resource.TestCheckFunc { return func(s *terraform.State) error { for _, rs := range s.RootModule().Resources { + conn := acctest.Provider.Meta().(*conns.AWSClient).S3Client(ctx) + if rs.Type != "aws_s3_object" { continue } - conn := acctest.Provider.Meta().(*conns.AWSClient).S3Client(ctx) if tfs3.IsDirectoryBucket(rs.Primary.Attributes[names.AttrBucket]) { conn = acctest.Provider.Meta().(*conns.AWSClient).S3ExpressClient(ctx) } var optFns []func(*s3.Options) - if arn.IsARN(rs.Primary.Attributes[names.AttrBucket]) && conn.Options().Region == names.GlobalRegionID { + if arn.IsARN(rs.Primary.Attributes[names.AttrBucket]) && conn.Options().Region == endpoints.AwsGlobalRegionID { optFns = append(optFns, func(o *s3.Options) { o.UseARNRegion = true }) } @@ -2078,7 +2084,7 @@ func testAccCheckObjectExists(ctx context.Context, n string, v *s3.GetObjectOutp } var optFns []func(*s3.Options) - if arn.IsARN(rs.Primary.Attributes[names.AttrBucket]) && conn.Options().Region == names.GlobalRegionID { + if arn.IsARN(rs.Primary.Attributes[names.AttrBucket]) && conn.Options().Region == endpoints.AwsGlobalRegionID { optFns = append(optFns, func(o *s3.Options) { o.UseARNRegion = true }) } @@ -2137,7 +2143,7 @@ func testAccCheckObjectACL(ctx context.Context, n string, want []string) resourc } var optFns []func(*s3.Options) - if arn.IsARN(rs.Primary.Attributes[names.AttrBucket]) && conn.Options().Region == names.GlobalRegionID { + if arn.IsARN(rs.Primary.Attributes[names.AttrBucket]) && conn.Options().Region == endpoints.AwsGlobalRegionID { optFns = append(optFns, func(o *s3.Options) { o.UseARNRegion = true }) } @@ -2176,7 +2182,7 @@ func testAccCheckObjectStorageClass(ctx context.Context, n, want string) resourc } var optFns []func(*s3.Options) - if arn.IsARN(rs.Primary.Attributes[names.AttrBucket]) && conn.Options().Region == names.GlobalRegionID { + if arn.IsARN(rs.Primary.Attributes[names.AttrBucket]) && conn.Options().Region == endpoints.AwsGlobalRegionID { optFns = append(optFns, func(o *s3.Options) { o.UseARNRegion = true }) } @@ -2211,7 +2217,7 @@ func testAccCheckObjectSSE(ctx context.Context, n, want string) resource.TestChe } var optFns []func(*s3.Options) - if arn.IsARN(rs.Primary.Attributes[names.AttrBucket]) && conn.Options().Region == names.GlobalRegionID { + if arn.IsARN(rs.Primary.Attributes[names.AttrBucket]) && conn.Options().Region == endpoints.AwsGlobalRegionID { optFns = append(optFns, func(o *s3.Options) { o.UseARNRegion = true }) } @@ -2255,7 +2261,7 @@ func testAccCheckObjectUpdateTags(ctx context.Context, n string, oldTags, newTag } var optFns []func(*s3.Options) - if arn.IsARN(rs.Primary.Attributes[names.AttrBucket]) && conn.Options().Region == names.GlobalRegionID { + if arn.IsARN(rs.Primary.Attributes[names.AttrBucket]) && conn.Options().Region == endpoints.AwsGlobalRegionID { optFns = append(optFns, func(o *s3.Options) { o.UseARNRegion = true }) } @@ -2273,7 +2279,7 @@ func testAccCheckAllObjectTags(ctx context.Context, n string, expectedTags map[s } var optFns []func(*s3.Options) - if arn.IsARN(rs.Primary.Attributes[names.AttrBucket]) && conn.Options().Region == names.GlobalRegionID { + if arn.IsARN(rs.Primary.Attributes[names.AttrBucket]) && conn.Options().Region == endpoints.AwsGlobalRegionID { optFns = append(optFns, func(o *s3.Options) { o.UseARNRegion = true }) } diff --git a/internal/service/s3/objects_data_source.go b/internal/service/s3/objects_data_source.go index 40b28484053b..6005d423be5a 100644 --- a/internal/service/s3/objects_data_source.go +++ b/internal/service/s3/objects_data_source.go @@ -10,6 +10,7 @@ import ( "github.com/aws/aws-sdk-go-v2/aws/arn" "github.com/aws/aws-sdk-go-v2/service/s3" "github.com/aws/aws-sdk-go-v2/service/s3/types" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" "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" @@ -87,16 +88,18 @@ func dataSourceObjects() *schema.Resource { func dataSourceObjectsRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics conn := meta.(*conns.AWSClient).S3Client(ctx) - var optFns []func(*s3.Options) bucket := d.Get(names.AttrBucket).(string) if isDirectoryBucket(bucket) { conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) } + + var optFns []func(*s3.Options) // Via S3 access point: "Invalid configuration: region from ARN `us-east-1` does not match client region `aws-global` and UseArnRegion is `false`". - if arn.IsARN(bucket) && conn.Options().Region == names.GlobalRegionID { + if arn.IsARN(bucket) && conn.Options().Region == endpoints.AwsGlobalRegionID { optFns = append(optFns, func(o *s3.Options) { o.UseARNRegion = true }) } + input := &s3.ListObjectsV2Input{ Bucket: aws.String(bucket), } diff --git a/internal/service/s3/service_endpoints_gen_test.go b/internal/service/s3/service_endpoints_gen_test.go index 4b9d357b3547..069757a06ac7 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/s3/service_package.go b/internal/service/s3/service_package.go index 3f95940d0c3f..81b6d88f973d 100644 --- a/internal/service/s3/service_package.go +++ b/internal/service/s3/service_package.go @@ -9,6 +9,7 @@ import ( "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/aws/retry" "github.com/aws/aws-sdk-go-v2/service/s3" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" "github.com/hashicorp/aws-sdk-go-base/v2/tfawserr" "github.com/hashicorp/terraform-plugin-log/tflog" "github.com/hashicorp/terraform-provider-aws/internal/conns" @@ -23,15 +24,20 @@ func (p *servicePackage) NewClient(ctx context.Context, config map[string]any) ( s3.WithEndpointResolverV2(newEndpointResolverV2()), withBaseEndpoint(config[names.AttrEndpoint].(string)), func(o *s3.Options) { - if o.Region == names.USEast1RegionID && config["s3_us_east_1_regional_endpoint"].(string) != "regional" { - // Maintain the AWS SDK for Go v1 default of using the global endpoint in us-east-1. - // See https://github.com/hashicorp/terraform-provider-aws/issues/33028. - tflog.Info(ctx, "overriding region", map[string]any{ - "original_region": cfg.Region, - "override_region": names.GlobalRegionID, - }) - o.Region = names.GlobalRegionID + switch region, s3USEast1RegionalEndpoint := o.Region, config["s3_us_east_1_regional_endpoint"].(string) == "regional"; region { + case endpoints.UsEast1RegionID: + if !s3USEast1RegionalEndpoint { + // Maintain the AWS SDK for Go v1 default of using the global endpoint in us-east-1. + // See https://github.com/hashicorp/terraform-provider-aws/issues/33028. + overrideRegion := endpoints.AwsGlobalRegionID + tflog.Info(ctx, "overriding region", map[string]any{ + "original_region": cfg.Region, + "override_region": overrideRegion, + }) + o.Region = overrideRegion + } } + o.UsePathStyle = config["s3_use_path_style"].(bool) o.Retryer = conns.AddIsErrorRetryables(cfg.Retryer().(aws.RetryerV2), retry.IsErrorRetryableFunc(func(err error) aws.Ternary { diff --git a/internal/service/s3/sweep.go b/internal/service/s3/sweep.go index 3c0d45792762..1134a70f7e8c 100644 --- a/internal/service/s3/sweep.go +++ b/internal/service/s3/sweep.go @@ -56,7 +56,7 @@ func sweepGeneralPurposeBucketObjects(ctx context.Context, client *conns.AWSClie var sweepables []sweep.Sweepable input := s3.ListBucketsInput{ - BucketRegion: aws.String(client.Region), + BucketRegion: aws.String(client.Region(ctx)), } pages := s3.NewListBucketsPaginator(conn, &input) for pages.HasMorePages() { @@ -167,7 +167,7 @@ func sweepBuckets(ctx context.Context, client *conns.AWSClient) ([]sweep.Sweepab r := resourceBucket() input := s3.ListBucketsInput{ - BucketRegion: aws.String(client.Region), + BucketRegion: aws.String(client.Region(ctx)), } pages := s3.NewListBucketsPaginator(conn, &input) for pages.HasMorePages() { diff --git a/internal/service/s3/tags.go b/internal/service/s3/tags.go index ad469f13d56c..cf5adedcc82c 100644 --- a/internal/service/s3/tags.go +++ b/internal/service/s3/tags.go @@ -12,8 +12,10 @@ import ( "net/http" "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/aws/arn" "github.com/aws/aws-sdk-go-v2/service/s3" awstypes "github.com/aws/aws-sdk-go-v2/service/s3/types" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" "github.com/hashicorp/aws-sdk-go-base/v2/tfawserr" "github.com/hashicorp/terraform-provider-aws/internal/conns" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" @@ -167,9 +169,14 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier, res tags tftags.KeyValueTags err error ) + conn := meta.(*conns.AWSClient).S3Client(ctx) + switch resourceType { case "Bucket": - tags, err = bucketListTags(ctx, meta.(*conns.AWSClient).S3Client(ctx), identifier) + if isDirectoryBucket(identifier) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } + tags, err = bucketListTags(ctx, conn, identifier) case "Object", "ObjectCopy", "BucketObject": var objectARN objectARN @@ -177,7 +184,18 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier, res if err != nil { return err } - tags, err = objectListTags(ctx, meta.(*conns.AWSClient).S3Client(ctx), objectARN.Bucket, objectARN.Key) + + if isDirectoryBucket(objectARN.Bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } + + var optFns []func(*s3.Options) + // Via S3 access point: "Invalid configuration: region from ARN `us-east-1` does not match client region `aws-global` and UseArnRegion is `false`". + if arn.IsARN(objectARN.Bucket) && conn.Options().Region == endpoints.AwsGlobalRegionID { + optFns = append(optFns, func(o *s3.Options) { o.UseARNRegion = true }) + } + + tags, err = objectListTags(ctx, conn, objectARN.Bucket, objectARN.Key, optFns...) default: return nil @@ -197,16 +215,32 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier, res // UpdateTags updates s3 service tags. // It is called from outside this package. func (p *servicePackage) UpdateTags(ctx context.Context, meta any, identifier, resourceType string, oldTags, newTags any) error { + conn := meta.(*conns.AWSClient).S3Client(ctx) + switch resourceType { case "Bucket": - return bucketUpdateTags(ctx, meta.(*conns.AWSClient).S3Client(ctx), identifier, oldTags, newTags) + if isDirectoryBucket(identifier) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } + return bucketUpdateTags(ctx, conn, identifier, oldTags, newTags) case "Object", "ObjectCopy", "BucketObject": objectARN, err := parseObjectARN(identifier) if err != nil { return err } - return objectUpdateTags(ctx, meta.(*conns.AWSClient).S3Client(ctx), objectARN.Bucket, objectARN.Key, oldTags, newTags) + + if isDirectoryBucket(objectARN.Bucket) { + conn = meta.(*conns.AWSClient).S3ExpressClient(ctx) + } + + var optFns []func(*s3.Options) + // Via S3 access point: "Invalid configuration: region from ARN `us-east-1` does not match client region `aws-global` and UseArnRegion is `false`". + if arn.IsARN(objectARN.Bucket) && conn.Options().Region == endpoints.AwsGlobalRegionID { + optFns = append(optFns, func(o *s3.Options) { o.UseARNRegion = true }) + } + + return objectUpdateTags(ctx, conn, objectARN.Bucket, objectARN.Key, oldTags, newTags, optFns...) default: return nil diff --git a/internal/service/s3control/access_grant.go b/internal/service/s3control/access_grant.go index 6bd3274a3fac..4f7e38caed83 100644 --- a/internal/service/s3control/access_grant.go +++ b/internal/service/s3control/access_grant.go @@ -167,7 +167,7 @@ func (r *accessGrantResource) Create(ctx context.Context, request resource.Creat conn := r.Meta().S3ControlClient(ctx) if data.AccountID.ValueString() == "" { - data.AccountID = types.StringValue(r.Meta().AccountID) + data.AccountID = types.StringValue(r.Meta().AccountID(ctx)) } input := &s3control.CreateAccessGrantInput{} response.Diagnostics.Append(fwflex.Expand(ctx, data, input)...) diff --git a/internal/service/s3control/access_grant_test.go b/internal/service/s3control/access_grant_test.go index a1e8ae4f2414..8474999fdf3c 100644 --- a/internal/service/s3control/access_grant_test.go +++ b/internal/service/s3control/access_grant_test.go @@ -37,7 +37,7 @@ func testAccAccessGrant_basic(t *testing.T) { resource.TestCheckResourceAttrSet(resourceName, "access_grant_id"), resource.TestCheckResourceAttrSet(resourceName, "access_grants_location_id"), resource.TestCheckResourceAttr(resourceName, "access_grants_location_configuration.#", "0"), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrAccountID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrAccountID), resource.TestCheckResourceAttrSet(resourceName, "grant_scope"), resource.TestCheckResourceAttr(resourceName, "permission", "READ"), resource.TestCheckNoResourceAttr(resourceName, "s3_prefix_type"), diff --git a/internal/service/s3control/access_grants_instance.go b/internal/service/s3control/access_grants_instance.go index 5f13ed285927..24ce989902a7 100644 --- a/internal/service/s3control/access_grants_instance.go +++ b/internal/service/s3control/access_grants_instance.go @@ -99,7 +99,7 @@ func (r *accessGrantsInstanceResource) Create(ctx context.Context, request resou conn := r.Meta().S3ControlClient(ctx) if data.AccountID.ValueString() == "" { - data.AccountID = types.StringValue(r.Meta().AccountID) + data.AccountID = types.StringValue(r.Meta().AccountID(ctx)) } input := &s3control.CreateAccessGrantsInstanceInput{ AccountId: flex.StringFromFramework(ctx, data.AccountID), diff --git a/internal/service/s3control/access_grants_instance_resource_policy.go b/internal/service/s3control/access_grants_instance_resource_policy.go index d01af9e594fd..abc90bc3ddb2 100644 --- a/internal/service/s3control/access_grants_instance_resource_policy.go +++ b/internal/service/s3control/access_grants_instance_resource_policy.go @@ -77,7 +77,7 @@ func (r *accessGrantsInstanceResourcePolicyResource) Create(ctx context.Context, conn := r.Meta().S3ControlClient(ctx) if data.AccountID.ValueString() == "" { - data.AccountID = types.StringValue(r.Meta().AccountID) + data.AccountID = types.StringValue(r.Meta().AccountID(ctx)) } input := &s3control.PutAccessGrantsInstanceResourcePolicyInput{ AccountId: flex.StringFromFramework(ctx, data.AccountID), diff --git a/internal/service/s3control/access_grants_instance_resource_policy_test.go b/internal/service/s3control/access_grants_instance_resource_policy_test.go index c213ee290245..bfd9da857f04 100644 --- a/internal/service/s3control/access_grants_instance_resource_policy_test.go +++ b/internal/service/s3control/access_grants_instance_resource_policy_test.go @@ -31,7 +31,7 @@ func testAccAccessGrantsInstanceResourcePolicy_basic(t *testing.T) { Config: testAccAccessGrantsInstanceResourcePolicyConfig_basic(`"s3:ListAccessGrants","s3:ListAccessGrantsLocations","s3:GetDataAccess"`), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckAccessGrantsInstanceResourcePolicyExists(ctx, resourceName), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrAccountID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrAccountID), resource.TestCheckResourceAttrSet(resourceName, names.AttrPolicy), ), }, diff --git a/internal/service/s3control/access_grants_instance_test.go b/internal/service/s3control/access_grants_instance_test.go index 15734f5f8663..4c9b5e01d70b 100644 --- a/internal/service/s3control/access_grants_instance_test.go +++ b/internal/service/s3control/access_grants_instance_test.go @@ -33,7 +33,7 @@ func testAccAccessGrantsInstance_basic(t *testing.T) { testAccCheckAccessGrantsInstanceExists(ctx, resourceName), resource.TestCheckResourceAttrSet(resourceName, "access_grants_instance_arn"), resource.TestCheckResourceAttrSet(resourceName, "access_grants_instance_id"), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrAccountID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrAccountID), resource.TestCheckNoResourceAttr(resourceName, "identity_center_application_arn"), resource.TestCheckNoResourceAttr(resourceName, "identity_center_arn"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), diff --git a/internal/service/s3control/access_grants_location.go b/internal/service/s3control/access_grants_location.go index 9443dfb0910a..e29fdacea730 100644 --- a/internal/service/s3control/access_grants_location.go +++ b/internal/service/s3control/access_grants_location.go @@ -100,7 +100,7 @@ func (r *accessGrantsLocationResource) Create(ctx context.Context, request resou conn := r.Meta().S3ControlClient(ctx) if data.AccountID.ValueString() == "" { - data.AccountID = types.StringValue(r.Meta().AccountID) + data.AccountID = types.StringValue(r.Meta().AccountID(ctx)) } input := &s3control.CreateAccessGrantsLocationInput{} response.Diagnostics.Append(fwflex.Expand(ctx, data, input)...) diff --git a/internal/service/s3control/access_grants_location_test.go b/internal/service/s3control/access_grants_location_test.go index d3922b6c729b..596db14291af 100644 --- a/internal/service/s3control/access_grants_location_test.go +++ b/internal/service/s3control/access_grants_location_test.go @@ -35,7 +35,7 @@ func testAccAccessGrantsLocation_basic(t *testing.T) { testAccCheckAccessGrantsLocationExists(ctx, resourceName), resource.TestCheckResourceAttrSet(resourceName, "access_grants_location_arn"), resource.TestCheckResourceAttrSet(resourceName, "access_grants_location_id"), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrAccountID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrAccountID), resource.TestCheckResourceAttr(resourceName, "location_scope", "s3://"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), diff --git a/internal/service/s3control/access_point.go b/internal/service/s3control/access_point.go index 91e886230989..3fc55ce04985 100644 --- a/internal/service/s3control/access_point.go +++ b/internal/service/s3control/access_point.go @@ -162,7 +162,7 @@ func resourceAccessPointCreate(ctx context.Context, d *schema.ResourceData, meta var diags diag.Diagnostics conn := meta.(*conns.AWSClient).S3ControlClient(ctx) - accountID := meta.(*conns.AWSClient).AccountID + accountID := meta.(*conns.AWSClient).AccountID(ctx) if v, ok := d.GetOk(names.AttrAccountID); ok { accountID = v.(string) } @@ -275,7 +275,7 @@ func resourceAccessPointRead(ctx context.Context, d *schema.ResourceData, meta i accessPointARN := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "s3", - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), AccountID: accountID, Resource: fmt.Sprintf("accesspoint/%s", aws.ToString(output.Name)), } diff --git a/internal/service/s3control/access_point_test.go b/internal/service/s3control/access_point_test.go index 9239a6a6c8a3..24cfc78f2761 100644 --- a/internal/service/s3control/access_point_test.go +++ b/internal/service/s3control/access_point_test.go @@ -38,12 +38,12 @@ func TestAccS3ControlAccessPoint_basic(t *testing.T) { Config: testAccAccessPointConfig_basic(bucketName, accessPointName), Check: resource.ComposeTestCheckFunc( testAccCheckAccessPointExists(ctx, resourceName, &v), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrAccountID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrAccountID), // https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-points-alias.html: resource.TestMatchResourceAttr(resourceName, names.AttrAlias, regexache.MustCompile(`^.*-s3alias$`)), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "s3", fmt.Sprintf("accesspoint/%s", accessPointName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "s3", fmt.Sprintf("accesspoint/%s", accessPointName)), resource.TestCheckResourceAttr(resourceName, names.AttrBucket, bucketName), - acctest.CheckResourceAttrAccountID(resourceName, "bucket_account_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "bucket_account_id"), acctest.MatchResourceAttrRegionalHostname(resourceName, names.AttrDomainName, "s3-accesspoint", regexache.MustCompile(fmt.Sprintf("^%s-\\d{12}", accessPointName))), resource.TestCheckResourceAttr(resourceName, "endpoints.%", "4"), resource.TestCheckResourceAttr(resourceName, "has_public_access_policy", acctest.CtFalse), @@ -108,8 +108,8 @@ func TestAccS3ControlAccessPoint_Bucket_arn(t *testing.T) { Config: testAccAccessPointConfig_bucketARN(rName), Check: resource.ComposeTestCheckFunc( testAccCheckAccessPointExists(ctx, resourceName, &v), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrAccountID), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "s3-outposts", fmt.Sprintf("outpost/[^/]+/accesspoint/%s", rName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrAccountID), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "s3-outposts", fmt.Sprintf("outpost/[^/]+/accesspoint/%s", rName)), resource.TestCheckResourceAttrPair(resourceName, names.AttrBucket, "aws_s3control_bucket.test", names.AttrARN), acctest.MatchResourceAttrRegionalHostname(resourceName, names.AttrDomainName, "s3-accesspoint", regexache.MustCompile(fmt.Sprintf("^%s-\\d{12}", rName))), resource.TestCheckResourceAttr(resourceName, "has_public_access_policy", acctest.CtFalse), @@ -156,7 +156,7 @@ func TestAccS3ControlAccessPoint_policy(t *testing.T) { ] } ] -}`, acctest.Partition(), acctest.Region(), acctest.AccountID(), rName) +}`, acctest.Partition(), acctest.Region(), acctest.AccountID(ctx), rName) } expectedPolicyText2 := func() string { return fmt.Sprintf(`{ @@ -177,7 +177,7 @@ func TestAccS3ControlAccessPoint_policy(t *testing.T) { ] } ] -}`, acctest.Partition(), acctest.Region(), acctest.AccountID(), rName) +}`, acctest.Partition(), acctest.Region(), acctest.AccountID(ctx), rName) } resource.ParallelTest(t, resource.TestCase{ @@ -191,8 +191,8 @@ func TestAccS3ControlAccessPoint_policy(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckAccessPointExists(ctx, resourceName, &v), testAccCheckAccessPointHasPolicy(ctx, resourceName, expectedPolicyText1), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrAccountID), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "s3", fmt.Sprintf("accesspoint/%s", rName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrAccountID), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "s3", fmt.Sprintf("accesspoint/%s", rName)), resource.TestCheckResourceAttr(resourceName, names.AttrBucket, rName), resource.TestCheckResourceAttr(resourceName, "has_public_access_policy", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), @@ -244,8 +244,8 @@ func TestAccS3ControlAccessPoint_publicAccessBlock(t *testing.T) { Config: testAccAccessPointConfig_publicBlock(rName), Check: resource.ComposeTestCheckFunc( testAccCheckAccessPointExists(ctx, resourceName, &v), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrAccountID), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "s3", fmt.Sprintf("accesspoint/%s", rName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrAccountID), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "s3", fmt.Sprintf("accesspoint/%s", rName)), resource.TestCheckResourceAttr(resourceName, names.AttrBucket, rName), resource.TestCheckResourceAttr(resourceName, "has_public_access_policy", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), @@ -285,8 +285,8 @@ func TestAccS3ControlAccessPoint_vpc(t *testing.T) { Config: testAccAccessPointConfig_vpc(rName), Check: resource.ComposeTestCheckFunc( testAccCheckAccessPointExists(ctx, resourceName, &v), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrAccountID), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "s3", fmt.Sprintf("accesspoint/%s", rName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrAccountID), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "s3", fmt.Sprintf("accesspoint/%s", rName)), resource.TestCheckResourceAttr(resourceName, names.AttrBucket, rName), resource.TestCheckResourceAttr(resourceName, "has_public_access_policy", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), diff --git a/internal/service/s3control/account_public_access_block.go b/internal/service/s3control/account_public_access_block.go index fa3e60497a01..dc39feb6aa6b 100644 --- a/internal/service/s3control/account_public_access_block.go +++ b/internal/service/s3control/account_public_access_block.go @@ -72,7 +72,7 @@ func resourceAccountPublicAccessBlockCreate(ctx context.Context, d *schema.Resou var diags diag.Diagnostics conn := meta.(*conns.AWSClient).S3ControlClient(ctx) - accountID := meta.(*conns.AWSClient).AccountID + accountID := meta.(*conns.AWSClient).AccountID(ctx) if v, ok := d.GetOk(names.AttrAccountID); ok { accountID = v.(string) } diff --git a/internal/service/s3control/account_public_access_block_data_source.go b/internal/service/s3control/account_public_access_block_data_source.go index 4f43908828ce..e93bed5c7187 100644 --- a/internal/service/s3control/account_public_access_block_data_source.go +++ b/internal/service/s3control/account_public_access_block_data_source.go @@ -49,7 +49,7 @@ func dataSourceAccountPublicAccessBlockRead(ctx context.Context, d *schema.Resou var diags diag.Diagnostics conn := meta.(*conns.AWSClient).S3ControlClient(ctx) - accountID := meta.(*conns.AWSClient).AccountID + accountID := meta.(*conns.AWSClient).AccountID(ctx) if v, ok := d.GetOk(names.AttrAccountID); ok { accountID = v.(string) } diff --git a/internal/service/s3control/account_public_access_block_test.go b/internal/service/s3control/account_public_access_block_test.go index 841957214a06..307919df80ff 100644 --- a/internal/service/s3control/account_public_access_block_test.go +++ b/internal/service/s3control/account_public_access_block_test.go @@ -55,7 +55,7 @@ func testAccAccountPublicAccessBlock_basic(t *testing.T) { Config: testAccAccountPublicAccessBlockConfig_basic(), Check: resource.ComposeTestCheckFunc( testAccCheckAccountPublicAccessBlockExists(ctx, resourceName, &v), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrAccountID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrAccountID), resource.TestCheckResourceAttr(resourceName, "block_public_acls", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "block_public_policy", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "ignore_public_acls", acctest.CtFalse), @@ -109,7 +109,7 @@ func testAccAccountPublicAccessBlock_AccountID(t *testing.T) { Config: testAccAccountPublicAccessBlockConfig_id(), Check: resource.ComposeTestCheckFunc( testAccCheckAccountPublicAccessBlockExists(ctx, resourceName, &v), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrAccountID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrAccountID), ), }, { diff --git a/internal/service/s3control/bucket_test.go b/internal/service/s3control/bucket_test.go index 8a35257c86db..6ba054a4c374 100644 --- a/internal/service/s3control/bucket_test.go +++ b/internal/service/s3control/bucket_test.go @@ -35,7 +35,7 @@ func TestAccS3ControlBucket_basic(t *testing.T) { Config: testAccBucketConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckBucketExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "s3-outposts", regexache.MustCompile(fmt.Sprintf("outpost/[^/]+/bucket/%s", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "s3-outposts", regexache.MustCompile(fmt.Sprintf("outpost/[^/]+/bucket/%s", rName))), resource.TestCheckResourceAttr(resourceName, names.AttrBucket, rName), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreationDate), resource.TestCheckResourceAttrPair(resourceName, "outpost_id", "data.aws_outposts_outpost.test", names.AttrID), diff --git a/internal/service/s3control/multi_region_access_point.go b/internal/service/s3control/multi_region_access_point.go index 40c13b195190..e3b79f652d08 100644 --- a/internal/service/s3control/multi_region_access_point.go +++ b/internal/service/s3control/multi_region_access_point.go @@ -14,6 +14,7 @@ import ( "github.com/aws/aws-sdk-go-v2/aws/arn" "github.com/aws/aws-sdk-go-v2/service/s3control" "github.com/aws/aws-sdk-go-v2/service/s3control/types" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" "github.com/hashicorp/aws-sdk-go-base/v2/tfawserr" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry" @@ -155,7 +156,7 @@ func resourceMultiRegionAccessPointCreate(ctx context.Context, d *schema.Resourc var diags diag.Diagnostics conn := meta.(*conns.AWSClient).S3ControlClient(ctx) - accountID := meta.(*conns.AWSClient).AccountID + accountID := meta.(*conns.AWSClient).AccountID(ctx) if v, ok := d.GetOk(names.AttrAccountID); ok { accountID = v.(string) } @@ -171,7 +172,7 @@ func resourceMultiRegionAccessPointCreate(ctx context.Context, d *schema.Resourc output, err := conn.CreateMultiRegionAccessPoint(ctx, input, func(o *s3control.Options) { // All Multi-Region Access Point actions are routed to the US West (Oregon) Region. - o.Region = names.USWest2RegionID + o.Region = endpoints.UsWest2RegionID }) if err != nil { @@ -247,7 +248,7 @@ func resourceMultiRegionAccessPointDelete(ctx context.Context, d *schema.Resourc log.Printf("[DEBUG] Deleting S3 Multi-Region Access Point: %s", d.Id()) output, err := conn.DeleteMultiRegionAccessPoint(ctx, input, func(o *s3control.Options) { // All Multi-Region Access Point actions are routed to the US West (Oregon) Region. - o.Region = names.USWest2RegionID + o.Region = endpoints.UsWest2RegionID }) if tfawserr.ErrCodeEquals(err, errCodeNoSuchMultiRegionAccessPoint) { @@ -273,7 +274,7 @@ func findMultiRegionAccessPointByTwoPartKey(ctx context.Context, conn *s3control output, err := conn.GetMultiRegionAccessPoint(ctx, input, func(o *s3control.Options) { // All Multi-Region Access Point actions are routed to the US West (Oregon) Region. - o.Region = names.USWest2RegionID + o.Region = endpoints.UsWest2RegionID }) if tfawserr.ErrCodeEquals(err, errCodeNoSuchMultiRegionAccessPoint) { @@ -302,7 +303,7 @@ func findMultiRegionAccessPointOperationByTwoPartKey(ctx context.Context, conn * output, err := conn.DescribeMultiRegionAccessPointOperation(ctx, input, func(o *s3control.Options) { // All Multi-Region Access Point actions are routed to the US West (Oregon) Region. - o.Region = names.USWest2RegionID + o.Region = endpoints.UsWest2RegionID }) if tfawserr.ErrCodeEquals(err, errCodeNoSuchAsyncRequest) { diff --git a/internal/service/s3control/multi_region_access_point_data_source.go b/internal/service/s3control/multi_region_access_point_data_source.go index 35a60c62a425..b1566ca28eea 100644 --- a/internal/service/s3control/multi_region_access_point_data_source.go +++ b/internal/service/s3control/multi_region_access_point_data_source.go @@ -106,7 +106,7 @@ func dataSourceMultiRegionAccessPointBlockRead(ctx context.Context, d *schema.Re var diags diag.Diagnostics conn := meta.(*conns.AWSClient).S3ControlClient(ctx) - accountID := meta.(*conns.AWSClient).AccountID + accountID := meta.(*conns.AWSClient).AccountID(ctx) if v, ok := d.GetOk(names.AttrAccountID); ok { accountID = v.(string) } diff --git a/internal/service/s3control/multi_region_access_point_policy.go b/internal/service/s3control/multi_region_access_point_policy.go index 975f9f11e299..5baf860c2cfe 100644 --- a/internal/service/s3control/multi_region_access_point_policy.go +++ b/internal/service/s3control/multi_region_access_point_policy.go @@ -11,6 +11,7 @@ import ( "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/service/s3control" "github.com/aws/aws-sdk-go-v2/service/s3control/types" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" "github.com/hashicorp/aws-sdk-go-base/v2/tfawserr" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry" @@ -92,7 +93,7 @@ func resourceMultiRegionAccessPointPolicyCreate(ctx context.Context, d *schema.R var diags diag.Diagnostics conn := meta.(*conns.AWSClient).S3ControlClient(ctx) - accountID := meta.(*conns.AWSClient).AccountID + accountID := meta.(*conns.AWSClient).AccountID(ctx) if v, ok := d.GetOk(names.AttrAccountID); ok { accountID = v.(string) } @@ -108,7 +109,7 @@ func resourceMultiRegionAccessPointPolicyCreate(ctx context.Context, d *schema.R output, err := conn.PutMultiRegionAccessPointPolicy(ctx, input, func(o *s3control.Options) { // All Multi-Region Access Point actions are routed to the US West (Oregon) Region. - o.Region = names.USWest2RegionID + o.Region = endpoints.UsWest2RegionID }) if err != nil { @@ -191,7 +192,7 @@ func resourceMultiRegionAccessPointPolicyUpdate(ctx context.Context, d *schema.R output, err := conn.PutMultiRegionAccessPointPolicy(ctx, input, func(o *s3control.Options) { // All Multi-Region Access Point actions are routed to the US West (Oregon) Region. - o.Region = names.USWest2RegionID + o.Region = endpoints.UsWest2RegionID }) if err != nil { @@ -213,7 +214,7 @@ func findMultiRegionAccessPointPolicyDocumentByTwoPartKey(ctx context.Context, c output, err := conn.GetMultiRegionAccessPointPolicy(ctx, input, func(o *s3control.Options) { // All Multi-Region Access Point actions are routed to the US West (Oregon) Region. - o.Region = names.USWest2RegionID + o.Region = endpoints.UsWest2RegionID }) if tfawserr.ErrCodeEquals(err, errCodeNoSuchMultiRegionAccessPoint) { diff --git a/internal/service/s3control/multi_region_access_point_policy_test.go b/internal/service/s3control/multi_region_access_point_policy_test.go index 8193fb37d23f..1403f9f91f20 100644 --- a/internal/service/s3control/multi_region_access_point_policy_test.go +++ b/internal/service/s3control/multi_region_access_point_policy_test.go @@ -39,7 +39,7 @@ func TestAccS3ControlMultiRegionAccessPointPolicy_basic(t *testing.T) { Config: testAccMultiRegionAccessPointPolicyConfig_basic(bucketName, multiRegionAccessPointName), Check: resource.ComposeTestCheckFunc( testAccCheckMultiRegionAccessPointPolicyExists(ctx, resourceName, &v), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrAccountID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrAccountID), resource.TestCheckResourceAttr(resourceName, "details.#", "1"), resource.TestCheckResourceAttr(resourceName, "details.0.name", multiRegionAccessPointName), resource.TestCheckResourceAttrSet(resourceName, "details.0.policy"), diff --git a/internal/service/s3control/multi_region_access_point_test.go b/internal/service/s3control/multi_region_access_point_test.go index 7045119cb14c..05a1060c9ba0 100644 --- a/internal/service/s3control/multi_region_access_point_test.go +++ b/internal/service/s3control/multi_region_access_point_test.go @@ -39,9 +39,9 @@ func TestAccS3ControlMultiRegionAccessPoint_basic(t *testing.T) { Config: testAccMultiRegionAccessPointConfig_basic(bucketName, rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckMultiRegionAccessPointExists(ctx, resourceName, &v), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrAccountID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrAccountID), resource.TestMatchResourceAttr(resourceName, names.AttrAlias, regexache.MustCompile(`^[a-z][0-9a-z]*[.]mrap$`)), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "s3", regexache.MustCompile(`accesspoint\/[a-z][0-9a-z]*[.]mrap$`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "s3", regexache.MustCompile(`accesspoint\/[a-z][0-9a-z]*[.]mrap$`)), acctest.MatchResourceAttrGlobalHostname(resourceName, names.AttrDomainName, "accesspoint.s3-global", regexache.MustCompile(`^[a-z][0-9a-z]*[.]mrap`)), resource.TestCheckResourceAttr(resourceName, "details.#", "1"), resource.TestCheckResourceAttr(resourceName, "details.0.name", rName), @@ -53,7 +53,7 @@ func TestAccS3ControlMultiRegionAccessPoint_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "details.0.region.#", "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "details.0.region.*", map[string]string{ names.AttrBucket: bucketName, - "bucket_account_id": acctest.AccountID(), + "bucket_account_id": acctest.AccountID(ctx), names.AttrRegion: acctest.Region(), }), resource.TestCheckResourceAttr(resourceName, names.AttrStatus, string(types.MultiRegionAccessPointStatusReady)), diff --git a/internal/service/s3control/object_lambda_access_point.go b/internal/service/s3control/object_lambda_access_point.go index 2f58a7ff898c..55d69b00184e 100644 --- a/internal/service/s3control/object_lambda_access_point.go +++ b/internal/service/s3control/object_lambda_access_point.go @@ -137,7 +137,7 @@ func resourceObjectLambdaAccessPointCreate(ctx context.Context, d *schema.Resour var diags diag.Diagnostics conn := meta.(*conns.AWSClient).S3ControlClient(ctx) - accountID := meta.(*conns.AWSClient).AccountID + accountID := meta.(*conns.AWSClient).AccountID(ctx) if v, ok := d.GetOk(names.AttrAccountID); ok { accountID = v.(string) } @@ -189,7 +189,7 @@ func resourceObjectLambdaAccessPointRead(ctx context.Context, d *schema.Resource arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "s3-object-lambda", - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), AccountID: accountID, Resource: fmt.Sprintf("accesspoint/%s", name), }.String() diff --git a/internal/service/s3control/object_lambda_access_point_policy.go b/internal/service/s3control/object_lambda_access_point_policy.go index cbadf48daa40..750697896848 100644 --- a/internal/service/s3control/object_lambda_access_point_policy.go +++ b/internal/service/s3control/object_lambda_access_point_policy.go @@ -75,7 +75,7 @@ func resourceObjectLambdaAccessPointPolicyCreate(ctx context.Context, d *schema. return sdkdiag.AppendFromErr(diags, err) } - accountID := meta.(*conns.AWSClient).AccountID + accountID := meta.(*conns.AWSClient).AccountID(ctx) if v, ok := d.GetOk(names.AttrAccountID); ok { accountID = v.(string) } diff --git a/internal/service/s3control/object_lambda_access_point_policy_test.go b/internal/service/s3control/object_lambda_access_point_policy_test.go index dfc5e1ba27c5..6f53664f8eeb 100644 --- a/internal/service/s3control/object_lambda_access_point_policy_test.go +++ b/internal/service/s3control/object_lambda_access_point_policy_test.go @@ -33,7 +33,7 @@ func TestAccS3ControlObjectLambdaAccessPointPolicy_basic(t *testing.T) { Config: testAccObjectLambdaAccessPointPolicyConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckObjectLambdaAccessPointPolicyExists(ctx, resourceName), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrAccountID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrAccountID), resource.TestCheckResourceAttr(resourceName, "has_public_access_policy", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttrSet(resourceName, names.AttrPolicy), @@ -110,7 +110,7 @@ func TestAccS3ControlObjectLambdaAccessPointPolicy_update(t *testing.T) { Config: testAccObjectLambdaAccessPointPolicyConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckObjectLambdaAccessPointPolicyExists(ctx, resourceName), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrAccountID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrAccountID), resource.TestCheckResourceAttr(resourceName, "has_public_access_policy", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttrSet(resourceName, names.AttrPolicy), @@ -125,7 +125,7 @@ func TestAccS3ControlObjectLambdaAccessPointPolicy_update(t *testing.T) { Config: testAccObjectLambdaAccessPointPolicyConfig_updated(rName), Check: resource.ComposeTestCheckFunc( testAccCheckObjectLambdaAccessPointPolicyExists(ctx, resourceName), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrAccountID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrAccountID), resource.TestCheckResourceAttr(resourceName, "has_public_access_policy", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttrSet(resourceName, names.AttrPolicy), diff --git a/internal/service/s3control/object_lambda_access_point_test.go b/internal/service/s3control/object_lambda_access_point_test.go index ed5efe362368..4bc38f580dcb 100644 --- a/internal/service/s3control/object_lambda_access_point_test.go +++ b/internal/service/s3control/object_lambda_access_point_test.go @@ -38,9 +38,9 @@ func TestAccS3ControlObjectLambdaAccessPoint_basic(t *testing.T) { Config: testAccObjectLambdaAccessPointConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckObjectLambdaAccessPointExists(ctx, resourceName, &v), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrAccountID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrAccountID), resource.TestMatchResourceAttr(resourceName, names.AttrAlias, regexache.MustCompile("^.{1,20}-.*--ol-s3$")), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "s3-object-lambda", fmt.Sprintf("accesspoint/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "s3-object-lambda", fmt.Sprintf("accesspoint/%s", rName)), resource.TestCheckResourceAttr(resourceName, "configuration.#", "1"), resource.TestCheckResourceAttr(resourceName, "configuration.0.allowed_features.#", "0"), resource.TestCheckResourceAttr(resourceName, "configuration.0.cloud_watch_metrics_enabled", acctest.CtFalse), @@ -107,8 +107,8 @@ func TestAccS3ControlObjectLambdaAccessPoint_update(t *testing.T) { Config: testAccObjectLambdaAccessPointConfig_optionals(rName), Check: resource.ComposeTestCheckFunc( testAccCheckObjectLambdaAccessPointExists(ctx, resourceName, &v), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrAccountID), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "s3-object-lambda", fmt.Sprintf("accesspoint/%s", rName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrAccountID), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "s3-object-lambda", fmt.Sprintf("accesspoint/%s", rName)), resource.TestCheckResourceAttr(resourceName, "configuration.#", "1"), resource.TestCheckResourceAttr(resourceName, "configuration.0.allowed_features.#", "2"), resource.TestCheckTypeSetElemAttr(resourceName, "configuration.0.allowed_features.*", "GetObject-PartNumber"), @@ -135,8 +135,8 @@ func TestAccS3ControlObjectLambdaAccessPoint_update(t *testing.T) { Config: testAccObjectLambdaAccessPointConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckObjectLambdaAccessPointExists(ctx, resourceName, &v), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrAccountID), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "s3-object-lambda", fmt.Sprintf("accesspoint/%s", rName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrAccountID), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "s3-object-lambda", fmt.Sprintf("accesspoint/%s", rName)), resource.TestCheckResourceAttr(resourceName, "configuration.#", "1"), resource.TestCheckResourceAttr(resourceName, "configuration.0.allowed_features.#", "0"), resource.TestCheckResourceAttr(resourceName, "configuration.0.cloud_watch_metrics_enabled", acctest.CtFalse), diff --git a/internal/service/s3control/storage_lens_configuration.go b/internal/service/s3control/storage_lens_configuration.go index c1f95e1a3b2a..7c6d919263fc 100644 --- a/internal/service/s3control/storage_lens_configuration.go +++ b/internal/service/s3control/storage_lens_configuration.go @@ -398,7 +398,7 @@ func resourceStorageLensConfigurationCreate(ctx context.Context, d *schema.Resou var diags diag.Diagnostics conn := meta.(*conns.AWSClient).S3ControlClient(ctx) - accountID := meta.(*conns.AWSClient).AccountID + accountID := meta.(*conns.AWSClient).AccountID(ctx) if v, ok := d.GetOk(names.AttrAccountID); ok { accountID = v.(string) } diff --git a/internal/service/s3control/storage_lens_configuration_test.go b/internal/service/s3control/storage_lens_configuration_test.go index 9ac0efdfc3d0..fee3df780707 100644 --- a/internal/service/s3control/storage_lens_configuration_test.go +++ b/internal/service/s3control/storage_lens_configuration_test.go @@ -33,8 +33,8 @@ func TestAccS3ControlStorageLensConfiguration_basic(t *testing.T) { Config: testAccStorageLensConfigurationConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckStorageLensConfigurationExists(ctx, resourceName), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrAccountID), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "s3", fmt.Sprintf("storage-lens/%s", rName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrAccountID), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "s3", fmt.Sprintf("storage-lens/%s", rName)), resource.TestCheckResourceAttr(resourceName, "storage_lens_configuration.#", "1"), resource.TestCheckResourceAttr(resourceName, "storage_lens_configuration.0.account_level.#", "1"), resource.TestCheckResourceAttr(resourceName, "storage_lens_configuration.0.account_level.0.activity_metrics.#", "0"), @@ -147,8 +147,8 @@ func TestAccS3ControlStorageLensConfiguration_update(t *testing.T) { Config: testAccStorageLensConfigurationConfig_allAttributes(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckStorageLensConfigurationExists(ctx, resourceName), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrAccountID), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "s3", fmt.Sprintf("storage-lens/%s", rName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrAccountID), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "s3", fmt.Sprintf("storage-lens/%s", rName)), resource.TestCheckResourceAttr(resourceName, "storage_lens_configuration.#", "1"), resource.TestCheckResourceAttr(resourceName, "storage_lens_configuration.0.account_level.#", "1"), resource.TestCheckResourceAttr(resourceName, "storage_lens_configuration.0.account_level.0.activity_metrics.#", "1"), @@ -174,7 +174,7 @@ func TestAccS3ControlStorageLensConfiguration_update(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "storage_lens_configuration.0.data_export.0.cloud_watch_metrics.#", "1"), resource.TestCheckResourceAttr(resourceName, "storage_lens_configuration.0.data_export.0.cloud_watch_metrics.0.enabled", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "storage_lens_configuration.0.data_export.0.s3_bucket_destination.#", "1"), - acctest.CheckResourceAttrAccountID(resourceName, "storage_lens_configuration.0.data_export.0.s3_bucket_destination.0.account_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "storage_lens_configuration.0.data_export.0.s3_bucket_destination.0.account_id"), resource.TestCheckResourceAttrSet(resourceName, "storage_lens_configuration.0.data_export.0.s3_bucket_destination.0.arn"), resource.TestCheckResourceAttr(resourceName, "storage_lens_configuration.0.data_export.0.s3_bucket_destination.0.encryption.#", "0"), resource.TestCheckResourceAttr(resourceName, "storage_lens_configuration.0.data_export.0.s3_bucket_destination.0.format", "CSV"), @@ -197,8 +197,8 @@ func TestAccS3ControlStorageLensConfiguration_update(t *testing.T) { Config: testAccStorageLensConfigurationConfig_allAttributesUpdated(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckStorageLensConfigurationExists(ctx, resourceName), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrAccountID), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "s3", fmt.Sprintf("storage-lens/%s", rName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrAccountID), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "s3", fmt.Sprintf("storage-lens/%s", rName)), resource.TestCheckResourceAttr(resourceName, "storage_lens_configuration.#", "1"), resource.TestCheckResourceAttr(resourceName, "storage_lens_configuration.0.account_level.#", "1"), resource.TestCheckResourceAttr(resourceName, "storage_lens_configuration.0.account_level.0.activity_metrics.#", "1"), @@ -218,7 +218,7 @@ func TestAccS3ControlStorageLensConfiguration_update(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "storage_lens_configuration.0.data_export.0.cloud_watch_metrics.#", "1"), resource.TestCheckResourceAttr(resourceName, "storage_lens_configuration.0.data_export.0.cloud_watch_metrics.0.enabled", acctest.CtTrue), resource.TestCheckResourceAttr(resourceName, "storage_lens_configuration.0.data_export.0.s3_bucket_destination.#", "1"), - acctest.CheckResourceAttrAccountID(resourceName, "storage_lens_configuration.0.data_export.0.s3_bucket_destination.0.account_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "storage_lens_configuration.0.data_export.0.s3_bucket_destination.0.account_id"), resource.TestCheckResourceAttrSet(resourceName, "storage_lens_configuration.0.data_export.0.s3_bucket_destination.0.arn"), resource.TestCheckResourceAttr(resourceName, "storage_lens_configuration.0.data_export.0.s3_bucket_destination.0.encryption.#", "1"), resource.TestCheckResourceAttr(resourceName, "storage_lens_configuration.0.data_export.0.s3_bucket_destination.0.encryption.0.sse_kms.#", "0"), @@ -253,8 +253,8 @@ func TestAccS3ControlStorageLensConfiguration_advancedMetrics(t *testing.T) { Config: testAccStorageLensConfigurationConfig_advancedMetrics(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckStorageLensConfigurationExists(ctx, resourceName), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrAccountID), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "s3", fmt.Sprintf("storage-lens/%s", rName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrAccountID), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "s3", fmt.Sprintf("storage-lens/%s", rName)), resource.TestCheckResourceAttr(resourceName, "storage_lens_configuration.#", "1"), resource.TestCheckResourceAttr(resourceName, "storage_lens_configuration.0.account_level.#", "1"), resource.TestCheckResourceAttr(resourceName, "storage_lens_configuration.0.account_level.0.activity_metrics.#", "1"), @@ -295,8 +295,8 @@ func TestAccS3ControlStorageLensConfiguration_advancedMetrics(t *testing.T) { Config: testAccStorageLensConfigurationConfig_freeMetrics(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckStorageLensConfigurationExists(ctx, resourceName), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrAccountID), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "s3", fmt.Sprintf("storage-lens/%s", rName)), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrAccountID), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "s3", fmt.Sprintf("storage-lens/%s", rName)), resource.TestCheckResourceAttr(resourceName, "storage_lens_configuration.#", "1"), resource.TestCheckResourceAttr(resourceName, "storage_lens_configuration.0.account_level.#", "1"), resource.TestCheckResourceAttr(resourceName, "storage_lens_configuration.0.account_level.0.activity_metrics.#", "0"), diff --git a/internal/service/s3control/sweep.go b/internal/service/s3control/sweep.go index 127f3416133a..d90419509dd5 100644 --- a/internal/service/s3control/sweep.go +++ b/internal/service/s3control/sweep.go @@ -9,6 +9,7 @@ import ( "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/service/s3control" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-provider-aws/internal/flex" "github.com/hashicorp/terraform-provider-aws/internal/sweep" @@ -70,7 +71,7 @@ func sweepAccessGrants(region string) error { return fmt.Errorf("error getting client: %s", err) } conn := client.S3ControlClient(ctx) - accountID := client.AccountID + accountID := client.AccountID(ctx) input := &s3control.ListAccessGrantsInput{ AccountId: aws.String(accountID), } @@ -112,7 +113,7 @@ func sweepAccessGrantsInstances(region string) error { return fmt.Errorf("error getting client: %s", err) } conn := client.S3ControlClient(ctx) - accountID := client.AccountID + accountID := client.AccountID(ctx) input := &s3control.ListAccessGrantsInstancesInput{ AccountId: aws.String(accountID), } @@ -154,7 +155,7 @@ func sweepAccessGrantsLocations(region string) error { return fmt.Errorf("error getting client: %s", err) } conn := client.S3ControlClient(ctx) - accountID := client.AccountID + accountID := client.AccountID(ctx) input := &s3control.ListAccessGrantsLocationsInput{ AccountId: aws.String(accountID), } @@ -196,7 +197,7 @@ func sweepAccessPoints(region string) error { return fmt.Errorf("error getting client: %s", err) } conn := client.S3ControlClient(ctx) - accountID := client.AccountID + accountID := client.AccountID(ctx) input := &s3control.ListAccessPointsInput{ AccountId: aws.String(accountID), } @@ -242,7 +243,7 @@ func sweepAccessPoints(region string) error { func sweepMultiRegionAccessPoints(region string) error { ctx := sweep.Context(region) - if region != names.USWest2RegionID { + if region != endpoints.UsWest2RegionID { log.Printf("[WARN] Skipping S3 Multi-Region Access Point sweep for region: %s", region) return nil } @@ -251,7 +252,7 @@ func sweepMultiRegionAccessPoints(region string) error { return fmt.Errorf("error getting client: %s", err) } conn := client.S3ControlClient(ctx) - accountID := client.AccountID + accountID := client.AccountID(ctx) input := &s3control.ListMultiRegionAccessPointsInput{ AccountId: aws.String(accountID), } @@ -295,7 +296,7 @@ func sweepObjectLambdaAccessPoints(region string) error { return fmt.Errorf("error getting client: %s", err) } conn := client.S3ControlClient(ctx) - accountID := client.AccountID + accountID := client.AccountID(ctx) input := &s3control.ListAccessPointsForObjectLambdaInput{ AccountId: aws.String(accountID), } @@ -334,7 +335,7 @@ func sweepObjectLambdaAccessPoints(region string) error { func sweepStorageLensConfigurations(region string) error { ctx := sweep.Context(region) - if region == names.USGovEast1RegionID || region == names.USGovWest1RegionID { + if region == endpoints.UsGovEast1RegionID || region == endpoints.UsGovWest1RegionID { log.Printf("[WARN] Skipping S3 Storage Lens Configuration sweep for region: %s", region) return nil } @@ -343,7 +344,7 @@ func sweepStorageLensConfigurations(region string) error { return fmt.Errorf("error getting client: %s", err) } conn := client.S3ControlClient(ctx) - accountID := client.AccountID + accountID := client.AccountID(ctx) input := &s3control.ListStorageLensConfigurationsInput{ AccountId: aws.String(accountID), } diff --git a/internal/service/s3outposts/endpoint_test.go b/internal/service/s3outposts/endpoint_test.go index 92f266a999f4..9f47d083eefa 100644 --- a/internal/service/s3outposts/endpoint_test.go +++ b/internal/service/s3outposts/endpoint_test.go @@ -35,7 +35,7 @@ func TestAccS3OutpostsEndpoint_basic(t *testing.T) { Config: testAccEndpointConfig_basic(rName, rInt), Check: resource.ComposeTestCheckFunc( testAccCheckEndpointExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "s3-outposts", regexache.MustCompile(`outpost/[^/]+/endpoint/[0-9a-z]+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "s3-outposts", regexache.MustCompile(`outpost/[^/]+/endpoint/[0-9a-z]+`)), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreationTime), resource.TestCheckResourceAttrPair(resourceName, names.AttrCIDRBlock, "aws_vpc.test", names.AttrCIDRBlock), resource.TestCheckResourceAttr(resourceName, "network_interfaces.#", "4"), @@ -71,7 +71,7 @@ func TestAccS3OutpostsEndpoint_private(t *testing.T) { Config: testAccEndpointConfig_private(rName, rInt), Check: resource.ComposeTestCheckFunc( testAccCheckEndpointExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "s3-outposts", regexache.MustCompile(`outpost/[^/]+/endpoint/[0-9a-z]+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "s3-outposts", regexache.MustCompile(`outpost/[^/]+/endpoint/[0-9a-z]+`)), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreationTime), resource.TestCheckResourceAttrPair(resourceName, names.AttrCIDRBlock, "aws_vpc.test", names.AttrCIDRBlock), resource.TestCheckResourceAttr(resourceName, "network_interfaces.#", "4"), @@ -107,7 +107,7 @@ func TestAccS3OutpostsEndpoint_customerOwnedIPv4Pool(t *testing.T) { Config: testAccEndpointConfig_customerOwnedIPv4Pool(rName, rInt), Check: resource.ComposeTestCheckFunc( testAccCheckEndpointExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "s3-outposts", regexache.MustCompile(`outpost/[^/]+/endpoint/[0-9a-z]+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "s3-outposts", regexache.MustCompile(`outpost/[^/]+/endpoint/[0-9a-z]+`)), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreationTime), resource.TestCheckResourceAttrPair(resourceName, names.AttrCIDRBlock, "aws_vpc.test", names.AttrCIDRBlock), resource.TestCheckResourceAttr(resourceName, "network_interfaces.#", "4"), diff --git a/internal/service/s3outposts/service_endpoints_gen_test.go b/internal/service/s3outposts/service_endpoints_gen_test.go index 39714787d68f..801a9e7b9a00 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/s3tables/exports_test.go b/internal/service/s3tables/exports_test.go new file mode 100644 index 000000000000..73ad6a1f1b5d --- /dev/null +++ b/internal/service/s3tables/exports_test.go @@ -0,0 +1,31 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +package s3tables + +var ( + NewResourceNamespace = newResourceNamespace + NewResourceTable = newResourceTable + NewResourceTableBucket = newResourceTableBucket + NewResourceTableBucketPolicy = newResourceTableBucketPolicy + ResourceTablePolicy = newResourceTablePolicy + + FindNamespace = findNamespace + FindTable = findTable + FindTableBucket = findTableBucket + FindTableBucketPolicy = findTableBucketPolicy + FindTablePolicy = findTablePolicy + + TableIDFromTableARN = tableIDFromTableARN +) + +const ( + ResNameNamespace = resNameNamespace + ResNameTableBucket = resNameTableBucket + + NamespaceIDSeparator = namespaceIDSeparator +) + +type ( + TableIdentifier = tableIdentifier +) diff --git a/internal/service/s3tables/generate.go b/internal/service/s3tables/generate.go new file mode 100644 index 000000000000..998536c74211 --- /dev/null +++ b/internal/service/s3tables/generate.go @@ -0,0 +1,7 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +//go:generate go run ../../generate/servicepackage/main.go +// ONLY generate directives and package declaration! Do not add anything else to this file. + +package s3tables diff --git a/internal/service/s3tables/namespace.go b/internal/service/s3tables/namespace.go new file mode 100644 index 000000000000..f73944ce9812 --- /dev/null +++ b/internal/service/s3tables/namespace.go @@ -0,0 +1,291 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +package s3tables + +import ( + "context" + "errors" + "fmt" + "strings" + + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/service/s3tables" + awstypes "github.com/aws/aws-sdk-go-v2/service/s3tables/types" + "github.com/hashicorp/terraform-plugin-framework-timetypes/timetypes" + "github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator" + "github.com/hashicorp/terraform-plugin-framework/diag" + "github.com/hashicorp/terraform-plugin-framework/path" + "github.com/hashicorp/terraform-plugin-framework/resource" + "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/schema/validator" + "github.com/hashicorp/terraform-plugin-framework/tfsdk" + "github.com/hashicorp/terraform-plugin-framework/types" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry" + "github.com/hashicorp/terraform-provider-aws/internal/create" + "github.com/hashicorp/terraform-provider-aws/internal/errs" + "github.com/hashicorp/terraform-provider-aws/internal/framework" + "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" + "github.com/hashicorp/terraform-provider-aws/names" +) + +// @FrameworkResource("aws_s3tables_namespace", name="Namespace") +func newResourceNamespace(_ context.Context) (resource.ResourceWithConfigure, error) { + return &resourceNamespace{}, nil +} + +const ( + resNameNamespace = "Namespace" +) + +type resourceNamespace struct { + framework.ResourceWithConfigure + framework.WithNoUpdate +} + +func (r *resourceNamespace) Metadata(_ context.Context, req resource.MetadataRequest, resp *resource.MetadataResponse) { + resp.TypeName = "aws_s3tables_namespace" +} + +func (r *resourceNamespace) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + names.AttrCreatedAt: schema.StringAttribute{ + CustomType: timetypes.RFC3339Type{}, + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + }, + "created_by": schema.StringAttribute{ + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + }, + names.AttrNamespace: schema.StringAttribute{ + Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.RequiresReplace(), + }, + Validators: namespaceNameValidator, + }, + names.AttrOwnerAccountID: schema.StringAttribute{ + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + }, + "table_bucket_arn": schema.StringAttribute{ + CustomType: fwtypes.ARNType, + Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.RequiresReplace(), + }, + }, + }, + } +} + +func (r *resourceNamespace) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) { + conn := r.Meta().S3TablesClient(ctx) + + var plan resourceNamespaceModel + resp.Diagnostics.Append(req.Plan.Get(ctx, &plan)...) + if resp.Diagnostics.HasError() { + return + } + + var input s3tables.CreateNamespaceInput + resp.Diagnostics.Append(flex.Expand(ctx, plan, &input)...) + if resp.Diagnostics.HasError() { + return + } + input.Namespace = []string{plan.Namespace.ValueString()} + + out, err := conn.CreateNamespace(ctx, &input) + if err != nil { + resp.Diagnostics.AddError( + create.ProblemStandardMessage(names.S3Tables, create.ErrActionCreating, resNameNamespace, plan.Namespace.String(), err), + err.Error(), + ) + return + } + if out == nil { + resp.Diagnostics.AddError( + create.ProblemStandardMessage(names.S3Tables, create.ErrActionCreating, resNameNamespace, plan.Namespace.String(), nil), + errors.New("empty output").Error(), + ) + return + } + + namespace, err := findNamespace(ctx, conn, plan.TableBucketARN.ValueString(), out.Namespace[0]) + if err != nil { + resp.Diagnostics.AddError( + create.ProblemStandardMessage(names.S3Tables, create.ErrActionCreating, resNameNamespace, plan.Namespace.String(), err), + err.Error(), + ) + return + } + + resp.Diagnostics.Append(flex.Flatten(ctx, namespace, &plan)...) + if resp.Diagnostics.HasError() { + return + } + plan.Namespace = types.StringValue(out.Namespace[0]) + + resp.Diagnostics.Append(resp.State.Set(ctx, plan)...) +} + +func (r *resourceNamespace) Read(ctx context.Context, req resource.ReadRequest, resp *resource.ReadResponse) { + conn := r.Meta().S3TablesClient(ctx) + + var state resourceNamespaceModel + resp.Diagnostics.Append(req.State.Get(ctx, &state)...) + if resp.Diagnostics.HasError() { + return + } + + out, err := findNamespace(ctx, conn, state.TableBucketARN.ValueString(), state.Namespace.ValueString()) + if tfresource.NotFound(err) { + resp.State.RemoveResource(ctx) + return + } + if err != nil { + resp.Diagnostics.AddError( + create.ProblemStandardMessage(names.S3Tables, create.ErrActionReading, resNameNamespace, state.Namespace.String(), err), + err.Error(), + ) + return + } + + resp.Diagnostics.Append(flex.Flatten(ctx, out, &state)...) + if resp.Diagnostics.HasError() { + return + } + + resp.Diagnostics.Append(resp.State.Set(ctx, &state)...) +} + +func (r *resourceNamespace) Delete(ctx context.Context, req resource.DeleteRequest, resp *resource.DeleteResponse) { + conn := r.Meta().S3TablesClient(ctx) + + var state resourceNamespaceModel + resp.Diagnostics.Append(req.State.Get(ctx, &state)...) + if resp.Diagnostics.HasError() { + return + } + + input := s3tables.DeleteNamespaceInput{ + Namespace: state.Namespace.ValueStringPointer(), + TableBucketARN: state.TableBucketARN.ValueStringPointer(), + } + + _, err := conn.DeleteNamespace(ctx, &input) + if err != nil { + if errs.IsA[*awstypes.NotFoundException](err) { + return + } + + resp.Diagnostics.AddError( + create.ProblemStandardMessage(names.S3Tables, create.ErrActionDeleting, resNameNamespace, state.Namespace.String(), err), + err.Error(), + ) + return + } +} + +func (r *resourceNamespace) ImportState(ctx context.Context, req resource.ImportStateRequest, resp *resource.ImportStateResponse) { + identifier, err := parseNamespaceIdentifier(req.ID) + if err != nil { + resp.Diagnostics.AddError( + "Invalid Import ID", + "Import IDs for S3 Tables Namespaces must use the format "+namespaceIDSeparator+".\n"+ + fmt.Sprintf("Had %q", req.ID), + ) + return + } + + identifier.PopulateState(ctx, &resp.State, &resp.Diagnostics) +} + +func findNamespace(ctx context.Context, conn *s3tables.Client, bucketARN, name string) (*s3tables.GetNamespaceOutput, error) { + in := s3tables.GetNamespaceInput{ + Namespace: aws.String(name), + TableBucketARN: aws.String(bucketARN), + } + + out, err := conn.GetNamespace(ctx, &in) + if err != nil { + if errs.IsA[*awstypes.NotFoundException](err) { + return nil, &retry.NotFoundError{ + LastError: err, + LastRequest: in, + } + } + + return nil, err + } + + if out == nil { + return nil, tfresource.NewEmptyResultError(in) + } + + return out, nil +} + +type resourceNamespaceModel struct { + CreatedAt timetypes.RFC3339 `tfsdk:"created_at"` + CreatedBy types.String `tfsdk:"created_by"` + Namespace types.String `tfsdk:"namespace" autoflex:"-"` + OwnerAccountID types.String `tfsdk:"owner_account_id"` + TableBucketARN fwtypes.ARN `tfsdk:"table_bucket_arn"` +} + +var namespaceNameValidator = []validator.String{ + stringvalidator.LengthBetween(1, 255), + stringMustContainLowerCaseLettersNumbersUnderscores, + stringMustStartWithLetterOrNumber, + stringMustEndWithLetterOrNumber, +} + +type namespaceIdentifier struct { + TableBucketARN string + Namespace string +} + +const ( + namespaceIDSeparator = ";" + namespaceIDParts = 2 +) + +func parseNamespaceIdentifier(s string) (namespaceIdentifier, error) { + parts := strings.Split(s, namespaceIDSeparator) + if len(parts) != namespaceIDParts { + return namespaceIdentifier{}, errors.New("not enough parts") + } + for i := range namespaceIDParts { + if parts[i] == "" { + return namespaceIdentifier{}, errors.New("empty part") + } + } + + return namespaceIdentifier{ + TableBucketARN: parts[0], + Namespace: parts[1], + }, nil +} + +func (id namespaceIdentifier) String() string { + return id.TableBucketARN + tableIDSeparator + + id.Namespace +} + +func (id namespaceIdentifier) PopulateState(ctx context.Context, s *tfsdk.State, diags *diag.Diagnostics) { + diags.Append(s.SetAttribute(ctx, path.Root("table_bucket_arn"), id.TableBucketARN)...) + diags.Append(s.SetAttribute(ctx, path.Root(names.AttrNamespace), id.Namespace)...) +} diff --git a/internal/service/s3tables/namespace_test.go b/internal/service/s3tables/namespace_test.go new file mode 100644 index 000000000000..e570e9b378da --- /dev/null +++ b/internal/service/s3tables/namespace_test.go @@ -0,0 +1,188 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +package s3tables_test + +import ( + "context" + "errors" + "fmt" + "strings" + "testing" + + "github.com/aws/aws-sdk-go-v2/service/s3tables" + "github.com/hashicorp/terraform-plugin-framework/path" + "github.com/hashicorp/terraform-plugin-framework/tfsdk" + sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/terraform" + "github.com/hashicorp/terraform-provider-aws/internal/acctest" + "github.com/hashicorp/terraform-provider-aws/internal/conns" + "github.com/hashicorp/terraform-provider-aws/internal/create" + "github.com/hashicorp/terraform-provider-aws/internal/errs/fwdiag" + tfs3tables "github.com/hashicorp/terraform-provider-aws/internal/service/s3tables" + "github.com/hashicorp/terraform-provider-aws/internal/tfresource" + "github.com/hashicorp/terraform-provider-aws/names" +) + +func TestAccS3TablesNamespace_basic(t *testing.T) { + ctx := acctest.Context(t) + + var namespace s3tables.GetNamespaceOutput + bucketName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + rName := strings.ReplaceAll(bucketName, "-", "_") + resourceName := "aws_s3tables_namespace.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { + acctest.PreCheck(ctx, t) + testAccPreCheck(ctx, t) + }, + ErrorCheck: acctest.ErrorCheck(t, names.S3TablesServiceID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckNamespaceDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccNamespaceConfig_basic(rName, bucketName), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckNamespaceExists(ctx, resourceName, &namespace), + resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedAt), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "created_by"), + resource.TestCheckResourceAttr(resourceName, names.AttrNamespace, rName), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerAccountID), + resource.TestCheckResourceAttrPair(resourceName, "table_bucket_arn", "aws_s3tables_table_bucket.test", names.AttrARN), + ), + }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateIdFunc: testAccNamespaceImportStateIdFunc(resourceName), + ImportStateVerify: true, + ImportStateVerifyIdentifierAttribute: names.AttrNamespace, + }, + }, + }) +} + +func TestAccS3TablesNamespace_disappears(t *testing.T) { + ctx := acctest.Context(t) + + var namespace s3tables.GetNamespaceOutput + bucketName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + rName := strings.ReplaceAll(bucketName, "-", "_") + resourceName := "aws_s3tables_namespace.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { + acctest.PreCheck(ctx, t) + testAccPreCheck(ctx, t) + }, + ErrorCheck: acctest.ErrorCheck(t, names.S3TablesServiceID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckNamespaceDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccNamespaceConfig_basic(rName, bucketName), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckNamespaceExists(ctx, resourceName, &namespace), + acctest.CheckFrameworkResourceDisappearsWithStateFunc(ctx, acctest.Provider, tfs3tables.NewResourceNamespace, resourceName, namespaceDisappearsStateFunc), + ), + ExpectNonEmptyPlan: true, + }, + }, + }) +} + +func testAccCheckNamespaceDestroy(ctx context.Context) resource.TestCheckFunc { + return func(s *terraform.State) error { + conn := acctest.Provider.Meta().(*conns.AWSClient).S3TablesClient(ctx) + + for _, rs := range s.RootModule().Resources { + if rs.Type != "aws_s3tables_namespace" { + continue + } + + _, err := tfs3tables.FindNamespace(ctx, conn, rs.Primary.Attributes["table_bucket_arn"], rs.Primary.Attributes[names.AttrNamespace]) + if tfresource.NotFound(err) { + return nil + } + if err != nil { + return create.Error(names.S3Tables, create.ErrActionCheckingDestroyed, tfs3tables.ResNameNamespace, rs.Primary.ID, err) + } + + return create.Error(names.S3Tables, create.ErrActionCheckingDestroyed, tfs3tables.ResNameNamespace, rs.Primary.ID, errors.New("not destroyed")) + } + + return nil + } +} + +func testAccCheckNamespaceExists(ctx context.Context, name string, namespace *s3tables.GetNamespaceOutput) resource.TestCheckFunc { + return func(s *terraform.State) error { + rs, ok := s.RootModule().Resources[name] + if !ok { + return create.Error(names.S3Tables, create.ErrActionCheckingExistence, tfs3tables.ResNameNamespace, name, errors.New("not found")) + } + + if rs.Primary.Attributes["table_bucket_arn"] == "" || rs.Primary.Attributes[names.AttrNamespace] == "" { + return create.Error(names.S3Tables, create.ErrActionCheckingExistence, tfs3tables.ResNameNamespace, name, errors.New("not set")) + } + + conn := acctest.Provider.Meta().(*conns.AWSClient).S3TablesClient(ctx) + + resp, err := tfs3tables.FindNamespace(ctx, conn, rs.Primary.Attributes["table_bucket_arn"], rs.Primary.Attributes[names.AttrNamespace]) + if err != nil { + return create.Error(names.S3Tables, create.ErrActionCheckingExistence, tfs3tables.ResNameNamespace, rs.Primary.ID, err) + } + + *namespace = *resp + + return nil + } +} + +func testAccNamespaceImportStateIdFunc(resourceName string) resource.ImportStateIdFunc { + return func(s *terraform.State) (string, error) { + rs, ok := s.RootModule().Resources[resourceName] + if !ok { + return "", fmt.Errorf("not found: %s", resourceName) + } + + return rs.Primary.Attributes["table_bucket_arn"] + tfs3tables.NamespaceIDSeparator + rs.Primary.Attributes[names.AttrNamespace], nil + } +} + +func namespaceDisappearsStateFunc(ctx context.Context, state *tfsdk.State, is *terraform.InstanceState) error { + v, ok := is.Attributes[names.AttrNamespace] + if !ok { + return errors.New(`Identifying attribute "namespace" not defined`) + } + + if err := fwdiag.DiagnosticsError(state.SetAttribute(ctx, path.Root(names.AttrNamespace), v)); err != nil { + return err + } + + v, ok = is.Attributes["table_bucket_arn"] + if !ok { + return errors.New(`Identifying attribute "table_bucket_arn" not defined`) + } + + if err := fwdiag.DiagnosticsError(state.SetAttribute(ctx, path.Root("table_bucket_arn"), v)); err != nil { + return err + } + + return nil +} + +func testAccNamespaceConfig_basic(rName, bucketName string) string { + return fmt.Sprintf(` +resource "aws_s3tables_namespace" "test" { + namespace = %[1]q + table_bucket_arn = aws_s3tables_table_bucket.test.arn +} + +resource "aws_s3tables_table_bucket" "test" { + name = %[2]q +} +`, rName, bucketName) +} diff --git a/internal/service/s3tables/s3tables_test.go b/internal/service/s3tables/s3tables_test.go new file mode 100644 index 000000000000..84a81b3361c3 --- /dev/null +++ b/internal/service/s3tables/s3tables_test.go @@ -0,0 +1,25 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +package s3tables_test + +import ( + "context" + "testing" + + "github.com/aws/aws-sdk-go-v2/service/s3tables" + "github.com/hashicorp/terraform-provider-aws/internal/acctest" + "github.com/hashicorp/terraform-provider-aws/internal/conns" +) + +func testAccPreCheck(ctx context.Context, t *testing.T) { + conn := acctest.Provider.Meta().(*conns.AWSClient).S3TablesClient(ctx) + + _, err := conn.ListTableBuckets(ctx, &s3tables.ListTableBucketsInput{}) + if acctest.PreCheckSkipError(err) { + t.Skipf("skipping acceptance testing: %s", err) + } + if err != nil { + t.Fatalf("unexpected PreCheck error: %s", err) + } +} diff --git a/internal/service/s3tables/service_endpoint_resolver_gen.go b/internal/service/s3tables/service_endpoint_resolver_gen.go new file mode 100644 index 000000000000..5e03ccf49e00 --- /dev/null +++ b/internal/service/s3tables/service_endpoint_resolver_gen.go @@ -0,0 +1,82 @@ +// Code generated by internal/generate/servicepackage/main.go; DO NOT EDIT. + +package s3tables + +import ( + "context" + "fmt" + "net" + + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/service/s3tables" + smithyendpoints "github.com/aws/smithy-go/endpoints" + "github.com/hashicorp/terraform-plugin-log/tflog" + "github.com/hashicorp/terraform-provider-aws/internal/errs" +) + +var _ s3tables.EndpointResolverV2 = resolverV2{} + +type resolverV2 struct { + defaultResolver s3tables.EndpointResolverV2 +} + +func newEndpointResolverV2() resolverV2 { + return resolverV2{ + defaultResolver: s3tables.NewDefaultEndpointResolverV2(), + } +} + +func (r resolverV2) ResolveEndpoint(ctx context.Context, params s3tables.EndpointParameters) (endpoint smithyendpoints.Endpoint, err error) { + params = params.WithDefaults() + useFIPS := aws.ToBool(params.UseFIPS) + + if eps := params.Endpoint; aws.ToString(eps) != "" { + tflog.Debug(ctx, "setting endpoint", map[string]any{ + "tf_aws.endpoint": endpoint, + }) + + if useFIPS { + tflog.Debug(ctx, "endpoint set, ignoring UseFIPSEndpoint setting") + params.UseFIPS = aws.Bool(false) + } + + return r.defaultResolver.ResolveEndpoint(ctx, params) + } else if useFIPS { + ctx = tflog.SetField(ctx, "tf_aws.use_fips", useFIPS) + + endpoint, err = r.defaultResolver.ResolveEndpoint(ctx, params) + if err != nil { + return endpoint, err + } + + tflog.Debug(ctx, "endpoint resolved", map[string]any{ + "tf_aws.endpoint": endpoint.URI.String(), + }) + + hostname := endpoint.URI.Hostname() + _, err = net.LookupHost(hostname) + if err != nil { + if dnsErr, ok := errs.As[*net.DNSError](err); ok && dnsErr.IsNotFound { + tflog.Debug(ctx, "default endpoint host not found, disabling FIPS", map[string]any{ + "tf_aws.hostname": hostname, + }) + params.UseFIPS = aws.Bool(false) + } else { + err = fmt.Errorf("looking up s3tables endpoint %q: %s", hostname, err) + return + } + } else { + return endpoint, err + } + } + + return r.defaultResolver.ResolveEndpoint(ctx, params) +} + +func withBaseEndpoint(endpoint string) func(*s3tables.Options) { + return func(o *s3tables.Options) { + if endpoint != "" { + o.BaseEndpoint = aws.String(endpoint) + } + } +} diff --git a/internal/service/s3tables/service_endpoints_gen_test.go b/internal/service/s3tables/service_endpoints_gen_test.go new file mode 100644 index 000000000000..4592ba4ea5b4 --- /dev/null +++ b/internal/service/s3tables/service_endpoints_gen_test.go @@ -0,0 +1,600 @@ +// Code generated by internal/generate/serviceendpointtests/main.go; DO NOT EDIT. + +package s3tables_test + +import ( + "context" + "errors" + "fmt" + "maps" + "net" + "net/url" + "os" + "path/filepath" + "reflect" + "strings" + "testing" + + "github.com/aws/aws-sdk-go-v2/aws" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/service/s3tables" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" + "github.com/google/go-cmp/cmp" + "github.com/hashicorp/aws-sdk-go-base/v2/servicemocks" + "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" + "github.com/hashicorp/terraform-provider-aws/names" +) + +type endpointTestCase struct { + with []setupFunc + expected caseExpectations +} + +type caseSetup struct { + config map[string]any + configFile configFile + environmentVariables map[string]string +} + +type configFile struct { + baseUrl string + serviceUrl string +} + +type caseExpectations struct { + diags diag.Diagnostics + endpoint string + region string +} + +type apiCallParams struct { + endpoint string + region string +} + +type setupFunc func(setup *caseSetup) + +type callFunc func(ctx context.Context, t *testing.T, meta *conns.AWSClient) apiCallParams + +const ( + packageNameConfigEndpoint = "https://packagename-config.endpoint.test/" + awsServiceEnvvarEndpoint = "https://service-envvar.endpoint.test/" + baseEnvvarEndpoint = "https://base-envvar.endpoint.test/" + serviceConfigFileEndpoint = "https://service-configfile.endpoint.test/" + baseConfigFileEndpoint = "https://base-configfile.endpoint.test/" +) + +const ( + packageName = "s3tables" + awsEnvVar = "AWS_ENDPOINT_URL_S3TABLES" + baseEnvVar = "AWS_ENDPOINT_URL" + configParam = "s3tables" +) + +const ( + expectedCallRegion = "us-west-2" //lintignore:AWSAT003 +) + +func TestEndpointConfiguration(t *testing.T) { //nolint:paralleltest // uses t.Setenv + const providerRegion = "us-west-2" //lintignore:AWSAT003 + const expectedEndpointRegion = providerRegion + + testcases := map[string]endpointTestCase{ + "no config": { + with: []setupFunc{withNoConfig}, + expected: expectDefaultEndpoint(t, expectedEndpointRegion), + }, + + // Package name endpoint on Config + + "package name endpoint config": { + with: []setupFunc{ + withPackageNameEndpointInConfig, + }, + expected: expectPackageNameConfigEndpoint(), + }, + + "package name endpoint config overrides aws service envvar": { + with: []setupFunc{ + withPackageNameEndpointInConfig, + withAwsEnvVar, + }, + expected: expectPackageNameConfigEndpoint(), + }, + + "package name endpoint config overrides base envvar": { + with: []setupFunc{ + withPackageNameEndpointInConfig, + withBaseEnvVar, + }, + expected: expectPackageNameConfigEndpoint(), + }, + + "package name endpoint config overrides service config file": { + with: []setupFunc{ + withPackageNameEndpointInConfig, + withServiceEndpointInConfigFile, + }, + expected: expectPackageNameConfigEndpoint(), + }, + + "package name endpoint config overrides base config file": { + with: []setupFunc{ + withPackageNameEndpointInConfig, + withBaseEndpointInConfigFile, + }, + expected: expectPackageNameConfigEndpoint(), + }, + + // Service endpoint in AWS envvar + + "service aws envvar": { + with: []setupFunc{ + withAwsEnvVar, + }, + expected: expectAwsEnvVarEndpoint(), + }, + + "service aws envvar overrides base envvar": { + with: []setupFunc{ + withAwsEnvVar, + withBaseEnvVar, + }, + expected: expectAwsEnvVarEndpoint(), + }, + + "service aws envvar overrides service config file": { + with: []setupFunc{ + withAwsEnvVar, + withServiceEndpointInConfigFile, + }, + expected: expectAwsEnvVarEndpoint(), + }, + + "service aws envvar overrides base config file": { + with: []setupFunc{ + withAwsEnvVar, + withBaseEndpointInConfigFile, + }, + expected: expectAwsEnvVarEndpoint(), + }, + + // Base endpoint in envvar + + "base endpoint envvar": { + with: []setupFunc{ + withBaseEnvVar, + }, + expected: expectBaseEnvVarEndpoint(), + }, + + "base endpoint envvar overrides service config file": { + with: []setupFunc{ + withBaseEnvVar, + withServiceEndpointInConfigFile, + }, + expected: expectBaseEnvVarEndpoint(), + }, + + "base endpoint envvar overrides base config file": { + with: []setupFunc{ + withBaseEnvVar, + withBaseEndpointInConfigFile, + }, + expected: expectBaseEnvVarEndpoint(), + }, + + // Service endpoint in config file + + "service config file": { + with: []setupFunc{ + withServiceEndpointInConfigFile, + }, + expected: expectServiceConfigFileEndpoint(), + }, + + "service config file overrides base config file": { + with: []setupFunc{ + withServiceEndpointInConfigFile, + withBaseEndpointInConfigFile, + }, + expected: expectServiceConfigFileEndpoint(), + }, + + // Base endpoint in config file + + "base endpoint config file": { + with: []setupFunc{ + withBaseEndpointInConfigFile, + }, + expected: expectBaseConfigFileEndpoint(), + }, + + // Use FIPS endpoint on Config + + "use fips config": { + with: []setupFunc{ + withUseFIPSInConfig, + }, + expected: expectDefaultFIPSEndpoint(t, expectedEndpointRegion), + }, + + "use fips config with package name endpoint config": { + with: []setupFunc{ + withUseFIPSInConfig, + withPackageNameEndpointInConfig, + }, + expected: expectPackageNameConfigEndpoint(), + }, + } + + for name, testcase := range testcases { //nolint:paralleltest // uses t.Setenv + t.Run(name, func(t *testing.T) { + testEndpointCase(t, providerRegion, testcase, callService) + }) + } +} + +func defaultEndpoint(region string) (url.URL, error) { + r := s3tables.NewDefaultEndpointResolverV2() + + ep, err := r.ResolveEndpoint(context.Background(), s3tables.EndpointParameters{ + Region: aws.String(region), + }) + if err != nil { + return url.URL{}, err + } + + if ep.URI.Path == "" { + ep.URI.Path = "/" + } + + return ep.URI, nil +} + +func defaultFIPSEndpoint(region string) (url.URL, error) { + r := s3tables.NewDefaultEndpointResolverV2() + + ep, err := r.ResolveEndpoint(context.Background(), s3tables.EndpointParameters{ + Region: aws.String(region), + UseFIPS: aws.Bool(true), + }) + if err != nil { + return url.URL{}, err + } + + if ep.URI.Path == "" { + ep.URI.Path = "/" + } + + return ep.URI, nil +} + +func callService(ctx context.Context, t *testing.T, meta *conns.AWSClient) apiCallParams { + t.Helper() + + client := meta.S3TablesClient(ctx) + + var result apiCallParams + + _, err := client.ListTableBuckets(ctx, &s3tables.ListTableBucketsInput{}, + func(opts *s3tables.Options) { + opts.APIOptions = append(opts.APIOptions, + addRetrieveEndpointURLMiddleware(t, &result.endpoint), + addRetrieveRegionMiddleware(&result.region), + addCancelRequestMiddleware(), + ) + }, + ) + if err == nil { + t.Fatal("Expected an error, got none") + } else if !errors.Is(err, errCancelOperation) { + t.Fatalf("Unexpected error: %s", err) + } + + return result +} + +func withNoConfig(_ *caseSetup) { + // no-op +} + +func withPackageNameEndpointInConfig(setup *caseSetup) { + if _, ok := setup.config[names.AttrEndpoints]; !ok { + setup.config[names.AttrEndpoints] = []any{ + map[string]any{}, + } + } + endpoints := setup.config[names.AttrEndpoints].([]any)[0].(map[string]any) + endpoints[packageName] = packageNameConfigEndpoint +} + +func withAwsEnvVar(setup *caseSetup) { + setup.environmentVariables[awsEnvVar] = awsServiceEnvvarEndpoint +} + +func withBaseEnvVar(setup *caseSetup) { + setup.environmentVariables[baseEnvVar] = baseEnvvarEndpoint +} + +func withServiceEndpointInConfigFile(setup *caseSetup) { + setup.configFile.serviceUrl = serviceConfigFileEndpoint +} + +func withBaseEndpointInConfigFile(setup *caseSetup) { + setup.configFile.baseUrl = baseConfigFileEndpoint +} + +func withUseFIPSInConfig(setup *caseSetup) { + setup.config["use_fips_endpoint"] = true +} + +func expectDefaultEndpoint(t *testing.T, region string) caseExpectations { + t.Helper() + + endpoint, err := defaultEndpoint(region) + if err != nil { + t.Fatalf("resolving accessanalyzer default endpoint: %s", err) + } + + return caseExpectations{ + endpoint: endpoint.String(), + region: expectedCallRegion, + } +} + +func expectDefaultFIPSEndpoint(t *testing.T, region string) caseExpectations { + t.Helper() + + endpoint, err := defaultFIPSEndpoint(region) + if err != nil { + t.Fatalf("resolving accessanalyzer FIPS endpoint: %s", err) + } + + hostname := endpoint.Hostname() + _, err = net.LookupHost(hostname) + if dnsErr, ok := errs.As[*net.DNSError](err); ok && dnsErr.IsNotFound { + return expectDefaultEndpoint(t, region) + } else if err != nil { + t.Fatalf("looking up accessanalyzer endpoint %q: %s", hostname, err) + } + + return caseExpectations{ + endpoint: endpoint.String(), + region: expectedCallRegion, + } +} + +func expectPackageNameConfigEndpoint() caseExpectations { + return caseExpectations{ + endpoint: packageNameConfigEndpoint, + region: expectedCallRegion, + } +} + +func expectAwsEnvVarEndpoint() caseExpectations { + return caseExpectations{ + endpoint: awsServiceEnvvarEndpoint, + region: expectedCallRegion, + } +} + +func expectBaseEnvVarEndpoint() caseExpectations { + return caseExpectations{ + endpoint: baseEnvvarEndpoint, + region: expectedCallRegion, + } +} + +func expectServiceConfigFileEndpoint() caseExpectations { + return caseExpectations{ + endpoint: serviceConfigFileEndpoint, + region: expectedCallRegion, + } +} + +func expectBaseConfigFileEndpoint() caseExpectations { + return caseExpectations{ + endpoint: baseConfigFileEndpoint, + region: expectedCallRegion, + } +} + +func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, callF callFunc) { + t.Helper() + + ctx := context.Background() + + setup := caseSetup{ + config: map[string]any{}, + environmentVariables: map[string]string{}, + } + + for _, f := range testcase.with { + f(&setup) + } + + config := map[string]any{ + names.AttrAccessKey: servicemocks.MockStaticAccessKey, + names.AttrSecretKey: servicemocks.MockStaticSecretKey, + names.AttrRegion: region, + names.AttrSkipCredentialsValidation: true, + names.AttrSkipRequestingAccountID: true, + } + + maps.Copy(config, setup.config) + + if setup.configFile.baseUrl != "" || setup.configFile.serviceUrl != "" { + config[names.AttrProfile] = "default" + tempDir := t.TempDir() + writeSharedConfigFile(t, &config, tempDir, generateSharedConfigFile(setup.configFile)) + } + + for k, v := range setup.environmentVariables { + t.Setenv(k, v) + } + + p, err := provider.New(ctx) + if err != nil { + t.Fatal(err) + } + + expectedDiags := testcase.expected.diags + diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) + + if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { + t.Errorf("unexpected diagnostics difference: %s", diff) + } + + if diags.HasError() { + return + } + + meta := p.Meta().(*conns.AWSClient) + + callParams := callF(ctx, t, meta) + + if e, a := testcase.expected.endpoint, callParams.endpoint; e != a { + t.Errorf("expected endpoint %q, got %q", e, a) + } + + if e, a := testcase.expected.region, callParams.region; e != a { + t.Errorf("expected region %q, got %q", e, a) + } +} + +func addRetrieveEndpointURLMiddleware(t *testing.T, endpoint *string) func(*middleware.Stack) error { + return func(stack *middleware.Stack) error { + return stack.Finalize.Add( + retrieveEndpointURLMiddleware(t, endpoint), + middleware.After, + ) + } +} + +func retrieveEndpointURLMiddleware(t *testing.T, endpoint *string) middleware.FinalizeMiddleware { + return middleware.FinalizeMiddlewareFunc( + "Test: Retrieve Endpoint", + func(ctx context.Context, in middleware.FinalizeInput, next middleware.FinalizeHandler) (middleware.FinalizeOutput, middleware.Metadata, error) { + t.Helper() + + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + t.Fatalf("Expected *github.com/aws/smithy-go/transport/http.Request, got %s", fullTypeName(in.Request)) + } + + url := request.URL + url.RawQuery = "" + url.Path = "/" + + *endpoint = url.String() + + return next.HandleFinalize(ctx, in) + }) +} + +func addRetrieveRegionMiddleware(region *string) func(*middleware.Stack) error { + return func(stack *middleware.Stack) error { + return stack.Serialize.Add( + retrieveRegionMiddleware(region), + middleware.After, + ) + } +} + +func retrieveRegionMiddleware(region *string) middleware.SerializeMiddleware { + return middleware.SerializeMiddlewareFunc( + "Test: Retrieve Region", + func(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) (middleware.SerializeOutput, middleware.Metadata, error) { + *region = awsmiddleware.GetRegion(ctx) + + return next.HandleSerialize(ctx, in) + }, + ) +} + +var errCancelOperation = fmt.Errorf("Test: Canceling request") + +func addCancelRequestMiddleware() func(*middleware.Stack) error { + return func(stack *middleware.Stack) error { + return stack.Finalize.Add( + cancelRequestMiddleware(), + middleware.After, + ) + } +} + +// cancelRequestMiddleware creates a Smithy middleware that intercepts the request before sending and cancels it +func cancelRequestMiddleware() middleware.FinalizeMiddleware { + return middleware.FinalizeMiddlewareFunc( + "Test: Cancel Requests", + func(_ context.Context, in middleware.FinalizeInput, next middleware.FinalizeHandler) (middleware.FinalizeOutput, middleware.Metadata, error) { + return middleware.FinalizeOutput{}, middleware.Metadata{}, errCancelOperation + }) +} + +func fullTypeName(i interface{}) string { + return fullValueTypeName(reflect.ValueOf(i)) +} + +func fullValueTypeName(v reflect.Value) string { + if v.Kind() == reflect.Ptr { + return "*" + fullValueTypeName(reflect.Indirect(v)) + } + + requestType := v.Type() + return fmt.Sprintf("%s.%s", requestType.PkgPath(), requestType.Name()) +} + +func generateSharedConfigFile(config configFile) string { + var buf strings.Builder + + buf.WriteString(` +[default] +aws_access_key_id = DefaultSharedCredentialsAccessKey +aws_secret_access_key = DefaultSharedCredentialsSecretKey +`) + if config.baseUrl != "" { + buf.WriteString(fmt.Sprintf("endpoint_url = %s\n", config.baseUrl)) + } + + if config.serviceUrl != "" { + buf.WriteString(fmt.Sprintf(` +services = endpoint-test + +[services endpoint-test] +%[1]s = + endpoint_url = %[2]s +`, configParam, serviceConfigFileEndpoint)) + } + + return buf.String() +} + +func writeSharedConfigFile(t *testing.T, config *map[string]any, tempDir, content string) string { + t.Helper() + + file, err := os.Create(filepath.Join(tempDir, "aws-sdk-go-base-shared-configuration-file")) + if err != nil { + t.Fatalf("creating shared configuration file: %s", err) + } + + _, err = file.WriteString(content) + if err != nil { + t.Fatalf(" writing shared configuration file: %s", err) + } + + if v, ok := (*config)[names.AttrSharedConfigFiles]; !ok { + (*config)[names.AttrSharedConfigFiles] = []any{file.Name()} + } else { + (*config)[names.AttrSharedConfigFiles] = append(v.([]any), file.Name()) + } + + return file.Name() +} diff --git a/internal/service/s3tables/service_package_gen.go b/internal/service/s3tables/service_package_gen.go new file mode 100644 index 000000000000..24e03012b5b5 --- /dev/null +++ b/internal/service/s3tables/service_package_gen.go @@ -0,0 +1,70 @@ +// Code generated by internal/generate/servicepackage/main.go; DO NOT EDIT. + +package s3tables + +import ( + "context" + + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/service/s3tables" + "github.com/hashicorp/terraform-provider-aws/internal/conns" + "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/names" +) + +type servicePackage struct{} + +func (p *servicePackage) FrameworkDataSources(ctx context.Context) []*types.ServicePackageFrameworkDataSource { + return []*types.ServicePackageFrameworkDataSource{} +} + +func (p *servicePackage) FrameworkResources(ctx context.Context) []*types.ServicePackageFrameworkResource { + return []*types.ServicePackageFrameworkResource{ + { + Factory: newResourceNamespace, + Name: "Namespace", + }, + { + Factory: newResourceTable, + Name: "Table", + }, + { + Factory: newResourceTableBucket, + Name: "Table Bucket", + }, + { + Factory: newResourceTableBucketPolicy, + Name: "Table Bucket Policy", + }, + { + Factory: newResourceTablePolicy, + Name: "Table Policy", + }, + } +} + +func (p *servicePackage) SDKDataSources(ctx context.Context) []*types.ServicePackageSDKDataSource { + return []*types.ServicePackageSDKDataSource{} +} + +func (p *servicePackage) SDKResources(ctx context.Context) []*types.ServicePackageSDKResource { + return []*types.ServicePackageSDKResource{} +} + +func (p *servicePackage) ServicePackageName() string { + return names.S3Tables +} + +// NewClient returns a new AWS SDK for Go v2 client for this service package's AWS API. +func (p *servicePackage) NewClient(ctx context.Context, config map[string]any) (*s3tables.Client, error) { + cfg := *(config["aws_sdkv2_config"].(*aws.Config)) + + return s3tables.NewFromConfig(cfg, + s3tables.WithEndpointResolverV2(newEndpointResolverV2()), + withBaseEndpoint(config[names.AttrEndpoint].(string)), + ), nil +} + +func ServicePackage(ctx context.Context) conns.ServicePackage { + return &servicePackage{} +} diff --git a/internal/service/s3tables/sweep.go b/internal/service/s3tables/sweep.go new file mode 100644 index 000000000000..d0caae2c1651 --- /dev/null +++ b/internal/service/s3tables/sweep.go @@ -0,0 +1,134 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +package s3tables + +import ( + "context" + + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/service/s3tables" + "github.com/hashicorp/terraform-provider-aws/internal/conns" + "github.com/hashicorp/terraform-provider-aws/internal/sweep" + "github.com/hashicorp/terraform-provider-aws/internal/sweep/awsv2" + "github.com/hashicorp/terraform-provider-aws/internal/sweep/framework" + "github.com/hashicorp/terraform-provider-aws/names" +) + +func RegisterSweepers() { + awsv2.Register("aws_s3tables_namespace", sweepNamespaces, + "aws_s3tables_table", + ) + + awsv2.Register("aws_s3tables_table", sweepTables) + + awsv2.Register("aws_s3tables_table_bucket", sweepTableBuckets, + "aws_s3tables_namespace", + ) +} + +func sweepNamespaces(ctx context.Context, client *conns.AWSClient) ([]sweep.Sweepable, error) { + conn := client.S3TablesClient(ctx) + + var sweepResources []sweep.Sweepable + + tableBuckets := s3tables.NewListTableBucketsPaginator(conn, &s3tables.ListTableBucketsInput{}) + for tableBuckets.HasMorePages() { + page, err := tableBuckets.NextPage(ctx) + if err != nil { + return nil, err + } + + for _, bucket := range page.TableBuckets { + namespaces := s3tables.NewListNamespacesPaginator(conn, &s3tables.ListNamespacesInput{ + TableBucketARN: bucket.Arn, + }) + for namespaces.HasMorePages() { + page, err := namespaces.NextPage(ctx) + if err != nil { + return nil, err + } + + for _, namespace := range page.Namespaces { + sweepResources = append(sweepResources, framework.NewSweepResource(newResourceNamespace, client, + framework.NewAttribute("table_bucket_arn", aws.ToString(bucket.Arn)), + framework.NewAttribute(names.AttrNamespace, namespace.Namespace), + )) + } + } + } + } + + return sweepResources, nil +} + +func sweepTables(ctx context.Context, client *conns.AWSClient) ([]sweep.Sweepable, error) { + conn := client.S3TablesClient(ctx) + + var sweepResources []sweep.Sweepable + + tableBuckets := s3tables.NewListTableBucketsPaginator(conn, &s3tables.ListTableBucketsInput{}) + for tableBuckets.HasMorePages() { + page, err := tableBuckets.NextPage(ctx) + if err != nil { + return nil, err + } + + for _, bucket := range page.TableBuckets { + namespaces := s3tables.NewListNamespacesPaginator(conn, &s3tables.ListNamespacesInput{ + TableBucketARN: bucket.Arn, + }) + for namespaces.HasMorePages() { + page, err := namespaces.NextPage(ctx) + if err != nil { + return nil, err + } + + for _, namespace := range page.Namespaces { + tables := s3tables.NewListTablesPaginator(conn, &s3tables.ListTablesInput{ + TableBucketARN: bucket.Arn, + Namespace: aws.String(namespace.Namespace[0]), + }) + for tables.HasMorePages() { + page, err := tables.NextPage(ctx) + if err != nil { + return nil, err + } + + for _, table := range page.Tables { + sweepResources = append(sweepResources, framework.NewSweepResource(newResourceTable, client, + framework.NewAttribute("table_bucket_arn", aws.ToString(bucket.Arn)), + framework.NewAttribute(names.AttrNamespace, namespace.Namespace[0]), + framework.NewAttribute(names.AttrName, aws.ToString(table.Name)), + )) + } + } + } + } + } + } + + return sweepResources, nil +} + +func sweepTableBuckets(ctx context.Context, client *conns.AWSClient) ([]sweep.Sweepable, error) { + conn := client.S3TablesClient(ctx) + + var sweepResources []sweep.Sweepable + + pages := s3tables.NewListTableBucketsPaginator(conn, &s3tables.ListTableBucketsInput{}) + for pages.HasMorePages() { + page, err := pages.NextPage(ctx) + if err != nil { + return nil, err + } + + for _, bucket := range page.TableBuckets { + sweepResources = append(sweepResources, framework.NewSweepResource(newResourceTableBucket, client, + framework.NewAttribute(names.AttrARN, aws.ToString(bucket.Arn)), + )) + } + } + + return sweepResources, nil +} diff --git a/internal/service/s3tables/table.go b/internal/service/s3tables/table.go new file mode 100644 index 000000000000..37bf68453775 --- /dev/null +++ b/internal/service/s3tables/table.go @@ -0,0 +1,780 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +package s3tables + +import ( + "context" + "errors" + "fmt" + "strings" + + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/aws/arn" + "github.com/aws/aws-sdk-go-v2/service/s3tables" + awstypes "github.com/aws/aws-sdk-go-v2/service/s3tables/types" + "github.com/hashicorp/terraform-plugin-framework-timetypes/timetypes" + "github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator" + "github.com/hashicorp/terraform-plugin-framework/diag" + "github.com/hashicorp/terraform-plugin-framework/path" + "github.com/hashicorp/terraform-plugin-framework/resource" + "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/objectplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/schema/validator" + "github.com/hashicorp/terraform-plugin-framework/tfsdk" + "github.com/hashicorp/terraform-plugin-framework/types" + "github.com/hashicorp/terraform-plugin-log/tflog" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry" + "github.com/hashicorp/terraform-provider-aws/internal/create" + "github.com/hashicorp/terraform-provider-aws/internal/errs" + "github.com/hashicorp/terraform-provider-aws/internal/framework" + "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" + "github.com/hashicorp/terraform-provider-aws/names" +) + +// @FrameworkResource("aws_s3tables_table", name="Table") +func newResourceTable(_ context.Context) (resource.ResourceWithConfigure, error) { + return &resourceTable{}, nil +} + +const ( + ResNameTable = "Table" +) + +type resourceTable struct { + framework.ResourceWithConfigure +} + +func (r *resourceTable) Metadata(_ context.Context, req resource.MetadataRequest, resp *resource.MetadataResponse) { + resp.TypeName = "aws_s3tables_table" +} + +func (r *resourceTable) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + names.AttrARN: framework.ARNAttributeComputedOnly(), + names.AttrCreatedAt: schema.StringAttribute{ + CustomType: timetypes.RFC3339Type{}, + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + }, + "created_by": schema.StringAttribute{ + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + }, + names.AttrFormat: schema.StringAttribute{ + CustomType: fwtypes.StringEnumType[awstypes.OpenTableFormat](), + Required: true, + // TODO: Only one format is currently supported. When a new value is added, we can determine if `format` can be changed in-place or must recreate the resource + }, + // TODO: Once Protocol v6 is supported, convert this to a `schema.SingleNestedAttribute` with full schema information + // Validations needed: + // * iceberg_compaction.settings.target_file_size_mb: int32validator.Between(64, 512) + // * iceberg_snapshot_management.settings.max_snapshot_age_hours: int32validator.AtLeast(1) + // * iceberg_snapshot_management.settings.min_snapshots_to_keep: int32validator.AtLeast(1) + "maintenance_configuration": schema.ObjectAttribute{ + CustomType: fwtypes.NewObjectTypeOf[tableMaintenanceConfigurationModel](ctx), + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ + objectplanmodifier.UseStateForUnknown(), + }, + }, + "metadata_location": schema.StringAttribute{ + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + }, + "modified_at": schema.StringAttribute{ + CustomType: timetypes.RFC3339Type{}, + Computed: true, + }, + "modified_by": schema.StringAttribute{ + Computed: true, + }, + names.AttrName: schema.StringAttribute{ + Required: true, + Validators: tableNameValidator, + }, + names.AttrNamespace: schema.StringAttribute{ + Required: true, + Validators: namespaceNameValidator, + }, + names.AttrOwnerAccountID: schema.StringAttribute{ + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + }, + "table_bucket_arn": schema.StringAttribute{ + CustomType: fwtypes.ARNType, + Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.RequiresReplace(), + }, + }, + names.AttrType: schema.StringAttribute{ + CustomType: fwtypes.StringEnumType[awstypes.TableType](), + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + }, + "version_token": schema.StringAttribute{ + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + }, + "warehouse_location": schema.StringAttribute{ + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + }, + }, + } +} + +func (r *resourceTable) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) { + conn := r.Meta().S3TablesClient(ctx) + + var plan resourceTableModel + resp.Diagnostics.Append(req.Plan.Get(ctx, &plan)...) + if resp.Diagnostics.HasError() { + return + } + + var input s3tables.CreateTableInput + resp.Diagnostics.Append(flex.Expand(ctx, plan, &input)...) + if resp.Diagnostics.HasError() { + return + } + + _, err := conn.CreateTable(ctx, &input) + if err != nil { + resp.Diagnostics.AddError( + create.ProblemStandardMessage(names.S3Tables, create.ErrActionCreating, ResNameTable, plan.Name.String(), err), + err.Error(), + ) + return + } + + if !plan.MaintenanceConfiguration.IsUnknown() && !plan.MaintenanceConfiguration.IsNull() { + mc, d := plan.MaintenanceConfiguration.ToPtr(ctx) + resp.Diagnostics.Append(d...) + if resp.Diagnostics.HasError() { + return + } + + if !mc.IcebergCompaction.IsNull() { + input := s3tables.PutTableMaintenanceConfigurationInput{ + Name: plan.Name.ValueStringPointer(), + Namespace: plan.Namespace.ValueStringPointer(), + TableBucketARN: plan.TableBucketARN.ValueStringPointer(), + Type: awstypes.TableMaintenanceTypeIcebergCompaction, + } + + value, d := expandTableMaintenanceIcebergCompaction(ctx, mc.IcebergCompaction) + resp.Diagnostics.Append(d...) + if resp.Diagnostics.HasError() { + return + } + input.Value = &value + + _, err := conn.PutTableMaintenanceConfiguration(ctx, &input) + if err != nil { + resp.Diagnostics.AddError( + create.ProblemStandardMessage(names.S3Tables, create.ErrActionCreating, resNameTableBucket, plan.Name.String(), err), + err.Error(), + ) + return + } + } + + if !mc.IcebergSnapshotManagement.IsNull() { + input := s3tables.PutTableMaintenanceConfigurationInput{ + Name: plan.Name.ValueStringPointer(), + Namespace: plan.Namespace.ValueStringPointer(), + TableBucketARN: plan.TableBucketARN.ValueStringPointer(), + Type: awstypes.TableMaintenanceTypeIcebergSnapshotManagement, + } + + value, d := expandTableMaintenanceIcebergSnapshotManagement(ctx, mc.IcebergSnapshotManagement) + resp.Diagnostics.Append(d...) + if resp.Diagnostics.HasError() { + return + } + input.Value = &value + + _, err := conn.PutTableMaintenanceConfiguration(ctx, &input) + if err != nil { + resp.Diagnostics.AddError( + create.ProblemStandardMessage(names.S3Tables, create.ErrActionCreating, resNameTableBucket, plan.Name.String(), err), + err.Error(), + ) + return + } + } + } + + table, err := findTable(ctx, conn, plan.TableBucketARN.ValueString(), plan.Namespace.ValueString(), plan.Name.ValueString()) + if err != nil { + resp.Diagnostics.AddError( + create.ProblemStandardMessage(names.S3Tables, create.ErrActionCreating, ResNameTable, plan.Name.String(), err), + err.Error(), + ) + return + } + + resp.Diagnostics.Append(flex.Flatten(ctx, table, &plan, flex.WithFieldNamePrefix("Table"))...) + if resp.Diagnostics.HasError() { + return + } + plan.Namespace = types.StringValue(table.Namespace[0]) + + awsMaintenanceConfig, err := conn.GetTableMaintenanceConfiguration(ctx, &s3tables.GetTableMaintenanceConfigurationInput{ + Name: plan.Name.ValueStringPointer(), + Namespace: plan.Namespace.ValueStringPointer(), + TableBucketARN: plan.TableBucketARN.ValueStringPointer(), + }) + if err != nil { + resp.Diagnostics.AddError( + create.ProblemStandardMessage(names.S3Tables, create.ErrActionCreating, resNameTableBucket, plan.Name.String(), err), + err.Error(), + ) + } + maintenanceConfiguration, d := flattenTableMaintenanceConfiguration(ctx, awsMaintenanceConfig) + resp.Diagnostics.Append(d...) + if resp.Diagnostics.HasError() { + return + } + plan.MaintenanceConfiguration = maintenanceConfiguration + + resp.Diagnostics.Append(resp.State.Set(ctx, plan)...) +} + +func (r *resourceTable) Read(ctx context.Context, req resource.ReadRequest, resp *resource.ReadResponse) { + conn := r.Meta().S3TablesClient(ctx) + + var state resourceTableModel + resp.Diagnostics.Append(req.State.Get(ctx, &state)...) + if resp.Diagnostics.HasError() { + return + } + + out, err := findTable(ctx, conn, state.TableBucketARN.ValueString(), state.Namespace.ValueString(), state.Name.ValueString()) + if tfresource.NotFound(err) { + resp.State.RemoveResource(ctx) + return + } + if err != nil { + resp.Diagnostics.AddError( + create.ProblemStandardMessage(names.S3Tables, create.ErrActionReading, ResNameTable, state.Name.String(), err), + err.Error(), + ) + return + } + + resp.Diagnostics.Append(flex.Flatten(ctx, out, &state, flex.WithFieldNamePrefix("Table"))...) + if resp.Diagnostics.HasError() { + return + } + state.Namespace = types.StringValue(out.Namespace[0]) + + awsMaintenanceConfig, err := conn.GetTableMaintenanceConfiguration(ctx, &s3tables.GetTableMaintenanceConfigurationInput{ + Name: state.Name.ValueStringPointer(), + Namespace: state.Namespace.ValueStringPointer(), + TableBucketARN: state.TableBucketARN.ValueStringPointer(), + }) + if err != nil { + resp.Diagnostics.AddError( + create.ProblemStandardMessage(names.S3Tables, create.ErrActionReading, resNameTableBucket, state.Name.String(), err), + err.Error(), + ) + } + maintenanceConfiguration, d := flattenTableMaintenanceConfiguration(ctx, awsMaintenanceConfig) + resp.Diagnostics.Append(d...) + if resp.Diagnostics.HasError() { + return + } + state.MaintenanceConfiguration = maintenanceConfiguration + + resp.Diagnostics.Append(resp.State.Set(ctx, &state)...) +} + +func (r *resourceTable) Update(ctx context.Context, req resource.UpdateRequest, resp *resource.UpdateResponse) { + conn := r.Meta().S3TablesClient(ctx) + + var plan, state resourceTableModel + resp.Diagnostics.Append(req.Plan.Get(ctx, &plan)...) + resp.Diagnostics.Append(req.State.Get(ctx, &state)...) + if resp.Diagnostics.HasError() { + return + } + + if !plan.Name.Equal(state.Name) || !plan.Namespace.Equal(state.Namespace) { + input := s3tables.RenameTableInput{ + TableBucketARN: state.TableBucketARN.ValueStringPointer(), + Namespace: state.Namespace.ValueStringPointer(), + Name: state.Name.ValueStringPointer(), + } + + if !plan.Name.Equal(state.Name) { + input.NewName = plan.Name.ValueStringPointer() + } + + if !plan.Namespace.Equal(state.Namespace) { + input.NewNamespaceName = plan.Namespace.ValueStringPointer() + } + + _, err := conn.RenameTable(ctx, &input) + if err != nil { + resp.Diagnostics.AddError( + create.ProblemStandardMessage(names.S3Tables, create.ErrActionUpdating, ResNameTable, state.Name.String(), err), + err.Error(), + ) + } + } + + if !plan.MaintenanceConfiguration.Equal(state.MaintenanceConfiguration) { + planMC, d := plan.MaintenanceConfiguration.ToPtr(ctx) + resp.Diagnostics.Append(d...) + if resp.Diagnostics.HasError() { + return + } + + stateMC, d := state.MaintenanceConfiguration.ToPtr(ctx) + resp.Diagnostics.Append(d...) + if resp.Diagnostics.HasError() { + return + } + + if !planMC.IcebergCompaction.Equal(stateMC.IcebergCompaction) { + input := s3tables.PutTableMaintenanceConfigurationInput{ + Name: plan.Name.ValueStringPointer(), + Namespace: plan.Namespace.ValueStringPointer(), + TableBucketARN: plan.TableBucketARN.ValueStringPointer(), + Type: awstypes.TableMaintenanceTypeIcebergCompaction, + } + + value, d := expandTableMaintenanceIcebergCompaction(ctx, planMC.IcebergCompaction) + resp.Diagnostics.Append(d...) + if resp.Diagnostics.HasError() { + return + } + input.Value = &value + + _, err := conn.PutTableMaintenanceConfiguration(ctx, &input) + if err != nil { + resp.Diagnostics.AddError( + create.ProblemStandardMessage(names.S3Tables, create.ErrActionUpdating, resNameTableBucket, plan.Name.String(), err), + err.Error(), + ) + return + } + } + + if !planMC.IcebergSnapshotManagement.Equal(stateMC.IcebergSnapshotManagement) { + input := s3tables.PutTableMaintenanceConfigurationInput{ + Name: plan.Name.ValueStringPointer(), + Namespace: plan.Namespace.ValueStringPointer(), + TableBucketARN: plan.TableBucketARN.ValueStringPointer(), + Type: awstypes.TableMaintenanceTypeIcebergSnapshotManagement, + } + + value, d := expandTableMaintenanceIcebergSnapshotManagement(ctx, planMC.IcebergSnapshotManagement) + resp.Diagnostics.Append(d...) + if resp.Diagnostics.HasError() { + return + } + input.Value = &value + + _, err := conn.PutTableMaintenanceConfiguration(ctx, &input) + if err != nil { + resp.Diagnostics.AddError( + create.ProblemStandardMessage(names.S3Tables, create.ErrActionUpdating, resNameTableBucket, plan.Name.String(), err), + err.Error(), + ) + return + } + } + } + + table, err := findTable(ctx, conn, plan.TableBucketARN.ValueString(), plan.Namespace.ValueString(), plan.Name.ValueString()) + if err != nil { + resp.Diagnostics.AddError( + create.ProblemStandardMessage(names.S3Tables, create.ErrActionUpdating, ResNameTable, plan.Name.String(), err), + err.Error(), + ) + return + } + + resp.Diagnostics.Append(flex.Flatten(ctx, table, &plan, flex.WithFieldNamePrefix("Table"))...) + if resp.Diagnostics.HasError() { + return + } + plan.Namespace = types.StringValue(table.Namespace[0]) + + awsMaintenanceConfig, err := conn.GetTableMaintenanceConfiguration(ctx, &s3tables.GetTableMaintenanceConfigurationInput{ + Name: plan.Name.ValueStringPointer(), + Namespace: plan.Namespace.ValueStringPointer(), + TableBucketARN: plan.TableBucketARN.ValueStringPointer(), + }) + if err != nil { + resp.Diagnostics.AddError( + create.ProblemStandardMessage(names.S3Tables, create.ErrActionUpdating, resNameTableBucket, plan.Name.String(), err), + err.Error(), + ) + } + maintenanceConfiguration, d := flattenTableMaintenanceConfiguration(ctx, awsMaintenanceConfig) + resp.Diagnostics.Append(d...) + if resp.Diagnostics.HasError() { + return + } + plan.MaintenanceConfiguration = maintenanceConfiguration + + resp.Diagnostics.Append(resp.State.Set(ctx, &plan)...) +} + +func (r *resourceTable) Delete(ctx context.Context, req resource.DeleteRequest, resp *resource.DeleteResponse) { + conn := r.Meta().S3TablesClient(ctx) + + var state resourceTableModel + resp.Diagnostics.Append(req.State.Get(ctx, &state)...) + if resp.Diagnostics.HasError() { + return + } + + input := s3tables.DeleteTableInput{ + Name: state.Name.ValueStringPointer(), + Namespace: state.Namespace.ValueStringPointer(), + TableBucketARN: state.TableBucketARN.ValueStringPointer(), + } + + _, err := conn.DeleteTable(ctx, &input) + if err != nil { + if errs.IsA[*awstypes.NotFoundException](err) { + return + } + + resp.Diagnostics.AddError( + create.ProblemStandardMessage(names.S3Tables, create.ErrActionDeleting, ResNameTable, state.Name.String(), err), + err.Error(), + ) + return + } +} + +func (r *resourceTable) ImportState(ctx context.Context, req resource.ImportStateRequest, resp *resource.ImportStateResponse) { + identifier, err := parseTableIdentifier(req.ID) + if err != nil { + resp.Diagnostics.AddError( + "Invalid Import ID", + "Import IDs for S3 Tables Tables must use the format
"+tableIDSeparator+""+tableIDSeparator+"
.\n"+ + fmt.Sprintf("Had %q", req.ID), + ) + return + } + + identifier.PopulateState(ctx, &resp.State, &resp.Diagnostics) +} + +func findTable(ctx context.Context, conn *s3tables.Client, bucketARN, namespace, name string) (*s3tables.GetTableOutput, error) { + in := s3tables.GetTableInput{ + Name: aws.String(name), + Namespace: aws.String(namespace), + TableBucketARN: aws.String(bucketARN), + } + + out, err := conn.GetTable(ctx, &in) + if err != nil { + if errs.IsA[*awstypes.NotFoundException](err) { + return nil, &retry.NotFoundError{ + LastError: err, + LastRequest: in, + } + } + + return nil, err + } + + if out == nil { + return nil, tfresource.NewEmptyResultError(in) + } + + return out, nil +} + +type resourceTableModel struct { + ARN types.String `tfsdk:"arn"` + CreatedAt timetypes.RFC3339 `tfsdk:"created_at"` + CreatedBy types.String `tfsdk:"created_by"` + Format fwtypes.StringEnum[awstypes.OpenTableFormat] `tfsdk:"format"` + MaintenanceConfiguration fwtypes.ObjectValueOf[tableMaintenanceConfigurationModel] `tfsdk:"maintenance_configuration" autoflex:"-"` + MetadataLocation types.String `tfsdk:"metadata_location"` + ModifiedAt timetypes.RFC3339 `tfsdk:"modified_at"` + ModifiedBy types.String `tfsdk:"modified_by"` + Name types.String `tfsdk:"name"` + Namespace types.String `tfsdk:"namespace" autoflex:",noflatten"` // On read, Namespace is an array + OwnerAccountID types.String `tfsdk:"owner_account_id"` + TableBucketARN fwtypes.ARN `tfsdk:"table_bucket_arn"` + Type fwtypes.StringEnum[awstypes.TableType] `tfsdk:"type"` + VersionToken types.String `tfsdk:"version_token"` + WarehouseLocation types.String `tfsdk:"warehouse_location"` +} + +type tableMaintenanceConfigurationModel struct { + IcebergCompaction fwtypes.ObjectValueOf[tableMaintenanceConfigurationValueModel[icebergCompactionSettingsModel]] `tfsdk:"iceberg_compaction"` + IcebergSnapshotManagement fwtypes.ObjectValueOf[tableMaintenanceConfigurationValueModel[icebergSnapshotManagementSettingsModel]] `tfsdk:"iceberg_snapshot_management"` +} + +type tableMaintenanceConfigurationValueModel[T any] struct { + Settings fwtypes.ObjectValueOf[T] `tfsdk:"settings"` + Status fwtypes.StringEnum[awstypes.MaintenanceStatus] `tfsdk:"status"` +} + +type icebergCompactionSettingsModel struct { + TargetFileSizeMB types.Int32 `tfsdk:"target_file_size_mb"` +} + +type icebergSnapshotManagementSettingsModel struct { + MaxSnapshotAgeHours types.Int32 `tfsdk:"max_snapshot_age_hours"` + MinSnapshotsToKeep types.Int32 `tfsdk:"min_snapshots_to_keep"` +} + +func flattenTableMaintenanceConfiguration(ctx context.Context, in *s3tables.GetTableMaintenanceConfigurationOutput) (result fwtypes.ObjectValueOf[tableMaintenanceConfigurationModel], diags diag.Diagnostics) { // nosemgrep:ci.semgrep.framework.manual-flattener-functions + compactionConfig := in.Configuration[string(awstypes.TableMaintenanceTypeIcebergCompaction)] + compactionConfigModel, d := flattenTableMaintenanceIcebergCompaction(ctx, &compactionConfig) + diags.Append(d...) + if diags.HasError() { + return result, diags + } + + snapshotManagementConfig := in.Configuration[string(awstypes.TableMaintenanceTypeIcebergSnapshotManagement)] + snapshotManagementConfigModel, d := flattenTableMaintenanceIcebergSnapshotManagement(ctx, &snapshotManagementConfig) + diags.Append(d...) + if diags.HasError() { + return result, diags + } + + model := tableMaintenanceConfigurationModel{ + IcebergCompaction: compactionConfigModel, + IcebergSnapshotManagement: snapshotManagementConfigModel, + } + + result, d = fwtypes.NewObjectValueOf(ctx, &model) + diags.Append(d...) + return result, diags +} + +func expandTableMaintenanceIcebergCompaction(ctx context.Context, in fwtypes.ObjectValueOf[tableMaintenanceConfigurationValueModel[icebergCompactionSettingsModel]]) (result awstypes.TableMaintenanceConfigurationValue, diags diag.Diagnostics) { // nosemgrep:ci.semgrep.framework.manual-expander-functions + model, d := in.ToPtr(ctx) + diags.Append(d...) + if diags.HasError() { + return result, diags + } + + settings, d := expandIcebergCompactionSettings(ctx, model.Settings) + diags.Append(d...) + if diags.HasError() { + return result, diags + } + + result.Settings = settings + result.Status = model.Status.ValueEnum() + + return result, diags +} + +func flattenTableMaintenanceIcebergCompaction(ctx context.Context, in *awstypes.TableMaintenanceConfigurationValue) (result fwtypes.ObjectValueOf[tableMaintenanceConfigurationValueModel[icebergCompactionSettingsModel]], diags diag.Diagnostics) { // nosemgrep:ci.semgrep.framework.manual-flattener-functions + iceberg, d := flattenIcebergCompactionSettings(ctx, in.Settings) + diags.Append(d...) + if diags.HasError() { + return result, diags + } + + model := tableMaintenanceConfigurationValueModel[icebergCompactionSettingsModel]{ + Settings: iceberg, + Status: fwtypes.StringEnumValue(in.Status), + } + + result, d = fwtypes.NewObjectValueOf(ctx, &model) + diags.Append(d...) + return result, diags +} + +func expandIcebergCompactionSettings(ctx context.Context, in fwtypes.ObjectValueOf[icebergCompactionSettingsModel]) (result *awstypes.TableMaintenanceSettingsMemberIcebergCompaction, diags diag.Diagnostics) { // nosemgrep:ci.semgrep.framework.manual-expander-functions + model, d := in.ToPtr(ctx) + diags.Append(d...) + if diags.HasError() { + return result, diags + } + + var value awstypes.IcebergCompactionSettings + + diags.Append(flex.Expand(ctx, model, &value)...) + + return &awstypes.TableMaintenanceSettingsMemberIcebergCompaction{ + Value: value, + }, diags +} + +func flattenIcebergCompactionSettings(ctx context.Context, in awstypes.TableMaintenanceSettings) (result fwtypes.ObjectValueOf[icebergCompactionSettingsModel], diags diag.Diagnostics) { // nosemgrep:ci.semgrep.framework.manual-flattener-functions + switch t := in.(type) { + case *awstypes.TableMaintenanceSettingsMemberIcebergCompaction: + var model icebergCompactionSettingsModel + diags.Append(flex.Flatten(ctx, t.Value, &model)...) + result = fwtypes.NewObjectValueOfMust(ctx, &model) + + case *awstypes.UnknownUnionMember: + tflog.Warn(ctx, "Unexpected tagged union member", map[string]any{ + "tag": t.Tag, + }) + + default: + tflog.Warn(ctx, "Unexpected nil tagged union value") + } + return result, diags +} + +func expandTableMaintenanceIcebergSnapshotManagement(ctx context.Context, in fwtypes.ObjectValueOf[tableMaintenanceConfigurationValueModel[icebergSnapshotManagementSettingsModel]]) (result awstypes.TableMaintenanceConfigurationValue, diags diag.Diagnostics) { // nosemgrep:ci.semgrep.framework.manual-expander-functions + model, d := in.ToPtr(ctx) + diags.Append(d...) + if diags.HasError() { + return result, diags + } + + settings, d := expandIcebergSnapshotManagementSettings(ctx, model.Settings) + diags.Append(d...) + if diags.HasError() { + return result, diags + } + + result.Settings = settings + result.Status = model.Status.ValueEnum() + + return result, diags +} + +func flattenTableMaintenanceIcebergSnapshotManagement(ctx context.Context, in *awstypes.TableMaintenanceConfigurationValue) (result fwtypes.ObjectValueOf[tableMaintenanceConfigurationValueModel[icebergSnapshotManagementSettingsModel]], diags diag.Diagnostics) { // nosemgrep:ci.semgrep.framework.manual-flattener-functions + iceberg, d := flattenIcebergSnapshotManagementSettings(ctx, in.Settings) + diags.Append(d...) + if diags.HasError() { + return result, diags + } + + model := tableMaintenanceConfigurationValueModel[icebergSnapshotManagementSettingsModel]{ + Settings: iceberg, + Status: fwtypes.StringEnumValue(in.Status), + } + + result, d = fwtypes.NewObjectValueOf(ctx, &model) + diags.Append(d...) + return result, diags +} + +func expandIcebergSnapshotManagementSettings(ctx context.Context, in fwtypes.ObjectValueOf[icebergSnapshotManagementSettingsModel]) (result *awstypes.TableMaintenanceSettingsMemberIcebergSnapshotManagement, diags diag.Diagnostics) { // nosemgrep:ci.semgrep.framework.manual-expander-functions + model, d := in.ToPtr(ctx) + diags.Append(d...) + if diags.HasError() { + return result, diags + } + + var value awstypes.IcebergSnapshotManagementSettings + + diags.Append(flex.Expand(ctx, model, &value)...) + + return &awstypes.TableMaintenanceSettingsMemberIcebergSnapshotManagement{ + Value: value, + }, diags +} + +func flattenIcebergSnapshotManagementSettings(ctx context.Context, in awstypes.TableMaintenanceSettings) (result fwtypes.ObjectValueOf[icebergSnapshotManagementSettingsModel], diags diag.Diagnostics) { // nosemgrep:ci.semgrep.framework.manual-flattener-functions + switch t := in.(type) { + case *awstypes.TableMaintenanceSettingsMemberIcebergSnapshotManagement: + var model icebergSnapshotManagementSettingsModel + diags.Append(flex.Flatten(ctx, t.Value, &model)...) + result = fwtypes.NewObjectValueOfMust(ctx, &model) + + case *awstypes.UnknownUnionMember: + tflog.Warn(ctx, "Unexpected tagged union member", map[string]any{ + "tag": t.Tag, + }) + + default: + tflog.Warn(ctx, "Unexpected nil tagged union value") + } + return result, diags +} + +func tableIDFromTableARN(s string) (string, error) { + arn, err := arn.Parse(s) + if err != nil { + return "", err + } + + return tableIDFromTableARNResource(arn.Resource), nil +} + +func tableIDFromTableARNResource(s string) string { + parts := strings.SplitN(s, "/", 4) + return parts[3] +} + +type tableIdentifier struct { + TableBucketARN string + Namespace string + Name string +} + +const ( + tableIDSeparator = ";" + tableIDParts = 3 +) + +func parseTableIdentifier(s string) (tableIdentifier, error) { + parts := strings.Split(s, tableIDSeparator) + if len(parts) != tableIDParts { + return tableIdentifier{}, errors.New("not enough parts") + } + for i := range tableIDParts { + if parts[i] == "" { + return tableIdentifier{}, errors.New("empty part") + } + } + + return tableIdentifier{ + TableBucketARN: parts[0], + Namespace: parts[1], + Name: parts[2], + }, nil +} + +func (id tableIdentifier) String() string { + return id.TableBucketARN + tableIDSeparator + + id.Namespace + tableIDSeparator + + id.Name +} + +func (id tableIdentifier) PopulateState(ctx context.Context, s *tfsdk.State, diags *diag.Diagnostics) { + diags.Append(s.SetAttribute(ctx, path.Root("table_bucket_arn"), id.TableBucketARN)...) + diags.Append(s.SetAttribute(ctx, path.Root(names.AttrNamespace), id.Namespace)...) + diags.Append(s.SetAttribute(ctx, path.Root(names.AttrName), id.Name)...) +} + +var tableNameValidator = []validator.String{ + stringvalidator.LengthBetween(1, 255), + stringMustContainLowerCaseLettersNumbersUnderscores, + stringMustStartWithLetterOrNumber, + stringMustEndWithLetterOrNumber, +} diff --git a/internal/service/s3tables/table_bucket.go b/internal/service/s3tables/table_bucket.go new file mode 100644 index 000000000000..465acba923bc --- /dev/null +++ b/internal/service/s3tables/table_bucket.go @@ -0,0 +1,476 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +package s3tables + +import ( + "context" + "errors" + + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/service/s3tables" + awstypes "github.com/aws/aws-sdk-go-v2/service/s3tables/types" + "github.com/hashicorp/terraform-plugin-framework-timetypes/timetypes" + "github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator" + "github.com/hashicorp/terraform-plugin-framework/diag" + "github.com/hashicorp/terraform-plugin-framework/path" + "github.com/hashicorp/terraform-plugin-framework/resource" + "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/objectplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/schema/validator" + "github.com/hashicorp/terraform-plugin-framework/types" + "github.com/hashicorp/terraform-plugin-log/tflog" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry" + "github.com/hashicorp/terraform-provider-aws/internal/create" + "github.com/hashicorp/terraform-provider-aws/internal/errs" + "github.com/hashicorp/terraform-provider-aws/internal/framework" + "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/framework/validators" + "github.com/hashicorp/terraform-provider-aws/internal/tfresource" + "github.com/hashicorp/terraform-provider-aws/names" +) + +// @FrameworkResource("aws_s3tables_table_bucket", name="Table Bucket") +func newResourceTableBucket(_ context.Context) (resource.ResourceWithConfigure, error) { + return &resourceTableBucket{}, nil +} + +const ( + resNameTableBucket = "Table Bucket" +) + +type resourceTableBucket struct { + framework.ResourceWithConfigure +} + +func (r *resourceTableBucket) Metadata(_ context.Context, req resource.MetadataRequest, resp *resource.MetadataResponse) { + resp.TypeName = "aws_s3tables_table_bucket" +} + +func (r *resourceTableBucket) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + names.AttrARN: framework.ARNAttributeComputedOnly(), + names.AttrCreatedAt: schema.StringAttribute{ + CustomType: timetypes.RFC3339Type{}, + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + }, + // TODO: Once Protocol v6 is supported, convert this to a `schema.SingleNestedAttribute` with full schema information + // Validations needed: + // * iceberg_unreferenced_file_removal.settings.non_current_days: int32validator.AtLeast(1) + // * iceberg_unreferenced_file_removal.settings.unreferenced_days: int32validator.AtLeast(1) + "maintenance_configuration": schema.ObjectAttribute{ + CustomType: fwtypes.NewObjectTypeOf[tableBucketMaintenanceConfigurationModel](ctx), + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Object{ + objectplanmodifier.UseStateForUnknown(), + }, + }, + names.AttrName: schema.StringAttribute{ + Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.RequiresReplace(), + }, + Validators: []validator.String{ + stringvalidator.LengthBetween(3, 63), + stringMustContainLowerCaseLettersNumbersHypens, + stringMustStartWithLetterOrNumber, + stringMustEndWithLetterOrNumber, + validators.PrefixNoneOf( + "xn--", + "sthree-", + "sthree-configurator", + "amzn-s3-demo-", + ), + validators.SuffixNoneOf( + "-s3alias", + "--ol-s3", + ".mrap", + "--x-s3", + ), + }, + }, + names.AttrOwnerAccountID: schema.StringAttribute{ + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + }, + }, + } +} + +func (r *resourceTableBucket) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) { + conn := r.Meta().S3TablesClient(ctx) + + var plan resourceTableBucketModel + resp.Diagnostics.Append(req.Plan.Get(ctx, &plan)...) + if resp.Diagnostics.HasError() { + return + } + + var input s3tables.CreateTableBucketInput + resp.Diagnostics.Append(flex.Expand(ctx, plan, &input)...) + if resp.Diagnostics.HasError() { + return + } + + out, err := conn.CreateTableBucket(ctx, &input) + if err != nil { + resp.Diagnostics.AddError( + create.ProblemStandardMessage(names.S3Tables, create.ErrActionCreating, resNameTableBucket, plan.Name.String(), err), + err.Error(), + ) + return + } + if out == nil || out.Arn == nil { + resp.Diagnostics.AddError( + create.ProblemStandardMessage(names.S3Tables, create.ErrActionCreating, resNameTableBucket, plan.Name.String(), nil), + errors.New("empty output").Error(), + ) + return + } + + if !plan.MaintenanceConfiguration.IsUnknown() && !plan.MaintenanceConfiguration.IsNull() { + mc, d := plan.MaintenanceConfiguration.ToPtr(ctx) + resp.Diagnostics.Append(d...) + if resp.Diagnostics.HasError() { + return + } + + if !mc.IcebergUnreferencedFileRemovalSettings.IsNull() { + input := s3tables.PutTableBucketMaintenanceConfigurationInput{ + TableBucketARN: out.Arn, + Type: awstypes.TableBucketMaintenanceTypeIcebergUnreferencedFileRemoval, + } + + value, d := expandTableBucketMaintenanceIcebergUnreferencedFileRemoval(ctx, mc.IcebergUnreferencedFileRemovalSettings) + resp.Diagnostics.Append(d...) + if resp.Diagnostics.HasError() { + return + } + + input.Value = &value + + _, err := conn.PutTableBucketMaintenanceConfiguration(ctx, &input) + if err != nil { + resp.Diagnostics.AddError( + create.ProblemStandardMessage(names.S3Tables, create.ErrActionCreating, resNameTableBucket, plan.Name.String(), err), + err.Error(), + ) + return + } + } + } + + bucket, err := findTableBucket(ctx, conn, aws.ToString(out.Arn)) + if err != nil { + resp.Diagnostics.AddError( + create.ProblemStandardMessage(names.S3Tables, create.ErrActionCreating, resNameTableBucket, plan.Name.String(), err), + err.Error(), + ) + } + + resp.Diagnostics.Append(flex.Flatten(ctx, bucket, &plan)...) + if resp.Diagnostics.HasError() { + return + } + + awsMaintenanceConfig, err := conn.GetTableBucketMaintenanceConfiguration(ctx, &s3tables.GetTableBucketMaintenanceConfigurationInput{ + TableBucketARN: bucket.Arn, + }) + if err != nil { + resp.Diagnostics.AddError( + create.ProblemStandardMessage(names.S3Tables, create.ErrActionCreating, resNameTableBucket, plan.Name.String(), err), + err.Error(), + ) + } + maintenanceConfiguration, d := flattenTableBucketMaintenanceConfiguration(ctx, awsMaintenanceConfig) + resp.Diagnostics.Append(d...) + if resp.Diagnostics.HasError() { + return + } + plan.MaintenanceConfiguration = maintenanceConfiguration + + resp.Diagnostics.Append(resp.State.Set(ctx, plan)...) +} + +func (r *resourceTableBucket) Read(ctx context.Context, req resource.ReadRequest, resp *resource.ReadResponse) { + conn := r.Meta().S3TablesClient(ctx) + + var state resourceTableBucketModel + resp.Diagnostics.Append(req.State.Get(ctx, &state)...) + if resp.Diagnostics.HasError() { + return + } + + out, err := findTableBucket(ctx, conn, state.ARN.ValueString()) + if tfresource.NotFound(err) { + resp.State.RemoveResource(ctx) + return + } + if err != nil { + resp.Diagnostics.AddError( + create.ProblemStandardMessage(names.S3Tables, create.ErrActionReading, resNameTableBucket, state.Name.String(), err), + err.Error(), + ) + return + } + + resp.Diagnostics.Append(flex.Flatten(ctx, out, &state)...) + if resp.Diagnostics.HasError() { + return + } + + awsMaintenanceConfig, err := conn.GetTableBucketMaintenanceConfiguration(ctx, &s3tables.GetTableBucketMaintenanceConfigurationInput{ + TableBucketARN: state.ARN.ValueStringPointer(), + }) + if err != nil { + resp.Diagnostics.AddError( + create.ProblemStandardMessage(names.S3Tables, create.ErrActionReading, resNameTableBucket, state.Name.String(), err), + err.Error(), + ) + } + maintenanceConfiguration, d := flattenTableBucketMaintenanceConfiguration(ctx, awsMaintenanceConfig) + resp.Diagnostics.Append(d...) + if resp.Diagnostics.HasError() { + return + } + state.MaintenanceConfiguration = maintenanceConfiguration + + resp.Diagnostics.Append(resp.State.Set(ctx, &state)...) +} + +func (r *resourceTableBucket) Update(ctx context.Context, req resource.UpdateRequest, resp *resource.UpdateResponse) { + var state, plan resourceTableBucketModel + resp.Diagnostics.Append(req.Plan.Get(ctx, &plan)...) + if resp.Diagnostics.HasError() { + return + } + resp.Diagnostics.Append(req.State.Get(ctx, &state)...) + if resp.Diagnostics.HasError() { + return + } + + if !state.MaintenanceConfiguration.Equal(plan.MaintenanceConfiguration) { + conn := r.Meta().S3TablesClient(ctx) + + mc, d := plan.MaintenanceConfiguration.ToPtr(ctx) + resp.Diagnostics.Append(d...) + if resp.Diagnostics.HasError() { + return + } + + if !mc.IcebergUnreferencedFileRemovalSettings.IsNull() { + input := s3tables.PutTableBucketMaintenanceConfigurationInput{ + TableBucketARN: state.ARN.ValueStringPointer(), + Type: awstypes.TableBucketMaintenanceTypeIcebergUnreferencedFileRemoval, + } + + value, d := expandTableBucketMaintenanceIcebergUnreferencedFileRemoval(ctx, mc.IcebergUnreferencedFileRemovalSettings) + resp.Diagnostics.Append(d...) + if resp.Diagnostics.HasError() { + return + } + + input.Value = &value + + _, err := conn.PutTableBucketMaintenanceConfiguration(ctx, &input) + if err != nil { + resp.Diagnostics.AddError( + create.ProblemStandardMessage(names.S3Tables, create.ErrActionUpdating, resNameTableBucket, plan.Name.String(), err), + err.Error(), + ) + return + } + } + + awsMaintenanceConfig, err := conn.GetTableBucketMaintenanceConfiguration(ctx, &s3tables.GetTableBucketMaintenanceConfigurationInput{ + TableBucketARN: state.ARN.ValueStringPointer(), + }) + if err != nil { + resp.Diagnostics.AddError( + create.ProblemStandardMessage(names.S3Tables, create.ErrActionUpdating, resNameTableBucket, plan.Name.String(), err), + err.Error(), + ) + } + maintenanceConfiguration, d := flattenTableBucketMaintenanceConfiguration(ctx, awsMaintenanceConfig) + resp.Diagnostics.Append(d...) + if resp.Diagnostics.HasError() { + return + } + plan.MaintenanceConfiguration = maintenanceConfiguration + } + + resp.Diagnostics.Append(resp.State.Set(ctx, &plan)...) +} + +func (r *resourceTableBucket) Delete(ctx context.Context, req resource.DeleteRequest, resp *resource.DeleteResponse) { + conn := r.Meta().S3TablesClient(ctx) + + var state resourceTableBucketModel + resp.Diagnostics.Append(req.State.Get(ctx, &state)...) + if resp.Diagnostics.HasError() { + return + } + + input := &s3tables.DeleteTableBucketInput{ + TableBucketARN: state.ARN.ValueStringPointer(), + } + + _, err := conn.DeleteTableBucket(ctx, input) + if errs.IsA[*awstypes.NotFoundException](err) { + return + } + if err != nil { + resp.Diagnostics.AddError( + create.ProblemStandardMessage(names.S3Tables, create.ErrActionDeleting, resNameTableBucket, state.Name.String(), err), + err.Error(), + ) + return + } +} + +func (r *resourceTableBucket) ImportState(ctx context.Context, req resource.ImportStateRequest, resp *resource.ImportStateResponse) { + resource.ImportStatePassthroughID(ctx, path.Root(names.AttrARN), req, resp) +} + +func findTableBucket(ctx context.Context, conn *s3tables.Client, arn string) (*s3tables.GetTableBucketOutput, error) { + in := s3tables.GetTableBucketInput{ + TableBucketARN: aws.String(arn), + } + + out, err := conn.GetTableBucket(ctx, &in) + if err != nil { + if errs.IsA[*awstypes.NotFoundException](err) { + return nil, &retry.NotFoundError{ + LastError: err, + LastRequest: in, + } + } + + return nil, err + } + + if out == nil { + return nil, tfresource.NewEmptyResultError(in) + } + + return out, nil +} + +type resourceTableBucketModel struct { + ARN types.String `tfsdk:"arn"` + CreatedAt timetypes.RFC3339 `tfsdk:"created_at"` + MaintenanceConfiguration fwtypes.ObjectValueOf[tableBucketMaintenanceConfigurationModel] `tfsdk:"maintenance_configuration" autoflex:"-"` + Name types.String `tfsdk:"name"` + OwnerAccountID types.String `tfsdk:"owner_account_id"` +} + +type tableBucketMaintenanceConfigurationModel struct { + IcebergUnreferencedFileRemovalSettings fwtypes.ObjectValueOf[tableBucketMaintenanceConfigurationValueModel[icebergUnreferencedFileRemovalSettingsModel]] `tfsdk:"iceberg_unreferenced_file_removal"` +} + +type tableBucketMaintenanceConfigurationValueModel[T any] struct { + Settings fwtypes.ObjectValueOf[T] `tfsdk:"settings"` + Status fwtypes.StringEnum[awstypes.MaintenanceStatus] `tfsdk:"status"` +} + +type icebergUnreferencedFileRemovalSettingsModel struct { + NonCurrentDays types.Int32 `tfsdk:"non_current_days"` + UnreferencedDays types.Int32 `tfsdk:"unreferenced_days"` +} + +func flattenTableBucketMaintenanceConfiguration(ctx context.Context, in *s3tables.GetTableBucketMaintenanceConfigurationOutput) (result fwtypes.ObjectValueOf[tableBucketMaintenanceConfigurationModel], diags diag.Diagnostics) { // nosemgrep:ci.semgrep.framework.manual-flattener-functions + unreferencedFileRemovalConfig := in.Configuration[string(awstypes.TableBucketMaintenanceTypeIcebergUnreferencedFileRemoval)] + unreferencedFileRemovalConfigModel, d := flattenTableBucketMaintenanceIcebergUnreferencedFileRemoval(ctx, &unreferencedFileRemovalConfig) + diags.Append(d...) + if diags.HasError() { + return result, diags + } + + model := tableBucketMaintenanceConfigurationModel{ + IcebergUnreferencedFileRemovalSettings: unreferencedFileRemovalConfigModel, + } + + result, d = fwtypes.NewObjectValueOf(ctx, &model) + diags.Append(d...) + return result, diags +} + +func expandTableBucketMaintenanceIcebergUnreferencedFileRemoval(ctx context.Context, in fwtypes.ObjectValueOf[tableBucketMaintenanceConfigurationValueModel[icebergUnreferencedFileRemovalSettingsModel]]) (result awstypes.TableBucketMaintenanceConfigurationValue, diags diag.Diagnostics) { // nosemgrep:ci.semgrep.framework.manual-expander-functions + model, d := in.ToPtr(ctx) + diags.Append(d...) + if diags.HasError() { + return result, diags + } + + settings, d := expandIcebergUnreferencedFileRemovalSettings(ctx, model.Settings) + diags.Append(d...) + if diags.HasError() { + return result, diags + } + + result.Settings = settings + result.Status = model.Status.ValueEnum() + + return result, diags +} + +func flattenTableBucketMaintenanceIcebergUnreferencedFileRemoval(ctx context.Context, in *awstypes.TableBucketMaintenanceConfigurationValue) (result fwtypes.ObjectValueOf[tableBucketMaintenanceConfigurationValueModel[icebergUnreferencedFileRemovalSettingsModel]], diags diag.Diagnostics) { // nosemgrep:ci.semgrep.framework.manual-flattener-functions + iceberg, d := flattenIcebergUnreferencedFileRemovalSettings(ctx, in.Settings) + diags.Append(d...) + if diags.HasError() { + return result, diags + } + + model := tableBucketMaintenanceConfigurationValueModel[icebergUnreferencedFileRemovalSettingsModel]{ + Settings: iceberg, + Status: fwtypes.StringEnumValue(in.Status), + } + + result, d = fwtypes.NewObjectValueOf(ctx, &model) + diags.Append(d...) + return result, diags +} + +func expandIcebergUnreferencedFileRemovalSettings(ctx context.Context, in fwtypes.ObjectValueOf[icebergUnreferencedFileRemovalSettingsModel]) (result *awstypes.TableBucketMaintenanceSettingsMemberIcebergUnreferencedFileRemoval, diags diag.Diagnostics) { // nosemgrep:ci.semgrep.framework.manual-expander-functions + model, d := in.ToPtr(ctx) + diags.Append(d...) + if diags.HasError() { + return result, diags + } + + var value awstypes.IcebergUnreferencedFileRemovalSettings + + diags.Append(flex.Expand(ctx, model, &value)...) + + return &awstypes.TableBucketMaintenanceSettingsMemberIcebergUnreferencedFileRemoval{ + Value: value, + }, diags +} + +func flattenIcebergUnreferencedFileRemovalSettings(ctx context.Context, in awstypes.TableBucketMaintenanceSettings) (result fwtypes.ObjectValueOf[icebergUnreferencedFileRemovalSettingsModel], diags diag.Diagnostics) { // nosemgrep:ci.semgrep.framework.manual-flattener-functions + switch t := in.(type) { + case *awstypes.TableBucketMaintenanceSettingsMemberIcebergUnreferencedFileRemoval: + var model icebergUnreferencedFileRemovalSettingsModel + diags.Append(flex.Flatten(ctx, t.Value, &model)...) + result = fwtypes.NewObjectValueOfMust(ctx, &model) + + case *awstypes.UnknownUnionMember: + tflog.Warn(ctx, "Unexpected tagged union member", map[string]any{ + "tag": t.Tag, + }) + + default: + tflog.Warn(ctx, "Unexpected nil tagged union value") + } + return result, diags +} diff --git a/internal/service/s3tables/table_bucket_policy.go b/internal/service/s3tables/table_bucket_policy.go new file mode 100644 index 000000000000..861ad62e7524 --- /dev/null +++ b/internal/service/s3tables/table_bucket_policy.go @@ -0,0 +1,228 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +package s3tables + +import ( + "context" + + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/service/s3tables" + awstypes "github.com/aws/aws-sdk-go-v2/service/s3tables/types" + "github.com/hashicorp/terraform-plugin-framework/path" + "github.com/hashicorp/terraform-plugin-framework/resource" + "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry" + "github.com/hashicorp/terraform-provider-aws/internal/create" + "github.com/hashicorp/terraform-provider-aws/internal/errs" + "github.com/hashicorp/terraform-provider-aws/internal/framework" + "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" + "github.com/hashicorp/terraform-provider-aws/names" +) + +// @FrameworkResource("aws_s3tables_table_bucket_policy", name="Table Bucket Policy") +func newResourceTableBucketPolicy(_ context.Context) (resource.ResourceWithConfigure, error) { + return &resourceTableBucketPolicy{}, nil +} + +const ( + ResNameTableBucketPolicy = "Table Bucket Policy" +) + +type resourceTableBucketPolicy struct { + framework.ResourceWithConfigure +} + +func (r *resourceTableBucketPolicy) Metadata(_ context.Context, req resource.MetadataRequest, resp *resource.MetadataResponse) { + resp.TypeName = "aws_s3tables_table_bucket_policy" +} + +func (r *resourceTableBucketPolicy) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + "resource_policy": schema.StringAttribute{ + CustomType: fwtypes.IAMPolicyType, + Required: true, + }, + "table_bucket_arn": schema.StringAttribute{ + CustomType: fwtypes.ARNType, + Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.RequiresReplace(), + }, + }, + }, + } +} + +func (r *resourceTableBucketPolicy) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) { + conn := r.Meta().S3TablesClient(ctx) + + var plan resourceTableBucketPolicyModel + resp.Diagnostics.Append(req.Plan.Get(ctx, &plan)...) + if resp.Diagnostics.HasError() { + return + } + + var input s3tables.PutTableBucketPolicyInput + resp.Diagnostics.Append(flex.Expand(ctx, plan, &input)...) + if resp.Diagnostics.HasError() { + return + } + + _, err := conn.PutTableBucketPolicy(ctx, &input) + if err != nil { + resp.Diagnostics.AddError( + create.ProblemStandardMessage(names.S3Tables, create.ErrActionCreating, ResNameTableBucketPolicy, plan.TableBucketARN.String(), err), + err.Error(), + ) + return + } + + out, err := findTableBucketPolicy(ctx, conn, plan.TableBucketARN.ValueString()) + if err != nil { + resp.Diagnostics.AddError( + create.ProblemStandardMessage(names.S3Tables, create.ErrActionCreating, ResNameTableBucketPolicy, plan.TableBucketARN.String(), err), + err.Error(), + ) + return + } + + resp.Diagnostics.Append(flex.Flatten(ctx, out, &plan)...) + if resp.Diagnostics.HasError() { + return + } + + resp.Diagnostics.Append(resp.State.Set(ctx, plan)...) +} + +func (r *resourceTableBucketPolicy) Read(ctx context.Context, req resource.ReadRequest, resp *resource.ReadResponse) { + conn := r.Meta().S3TablesClient(ctx) + + var state resourceTableBucketPolicyModel + resp.Diagnostics.Append(req.State.Get(ctx, &state)...) + if resp.Diagnostics.HasError() { + return + } + + out, err := findTableBucketPolicy(ctx, conn, state.TableBucketARN.ValueString()) + if tfresource.NotFound(err) { + resp.State.RemoveResource(ctx) + return + } + if err != nil { + resp.Diagnostics.AddError( + create.ProblemStandardMessage(names.S3Tables, create.ErrActionReading, ResNameTableBucketPolicy, state.TableBucketARN.String(), err), + err.Error(), + ) + return + } + + resp.Diagnostics.Append(flex.Flatten(ctx, out, &state)...) + if resp.Diagnostics.HasError() { + return + } + + resp.Diagnostics.Append(resp.State.Set(ctx, &state)...) +} + +func (r *resourceTableBucketPolicy) Update(ctx context.Context, req resource.UpdateRequest, resp *resource.UpdateResponse) { + conn := r.Meta().S3TablesClient(ctx) + + var plan resourceTableBucketPolicyModel + resp.Diagnostics.Append(req.Plan.Get(ctx, &plan)...) + if resp.Diagnostics.HasError() { + return + } + + var input s3tables.PutTableBucketPolicyInput + resp.Diagnostics.Append(flex.Expand(ctx, plan, &input)...) + if resp.Diagnostics.HasError() { + return + } + + _, err := conn.PutTableBucketPolicy(ctx, &input) + if err != nil { + resp.Diagnostics.AddError( + create.ProblemStandardMessage(names.S3Tables, create.ErrActionCreating, ResNameTableBucketPolicy, plan.TableBucketARN.String(), err), + err.Error(), + ) + return + } + + out, err := findTableBucketPolicy(ctx, conn, plan.TableBucketARN.ValueString()) + if err != nil { + resp.Diagnostics.AddError( + create.ProblemStandardMessage(names.S3Tables, create.ErrActionCreating, ResNameTableBucketPolicy, plan.TableBucketARN.String(), err), + err.Error(), + ) + return + } + + resp.Diagnostics.Append(flex.Flatten(ctx, out, &plan)...) + if resp.Diagnostics.HasError() { + return + } + + resp.Diagnostics.Append(resp.State.Set(ctx, plan)...) +} + +func (r *resourceTableBucketPolicy) Delete(ctx context.Context, req resource.DeleteRequest, resp *resource.DeleteResponse) { + conn := r.Meta().S3TablesClient(ctx) + + var state resourceTableBucketPolicyModel + resp.Diagnostics.Append(req.State.Get(ctx, &state)...) + if resp.Diagnostics.HasError() { + return + } + + input := s3tables.DeleteTableBucketPolicyInput{ + TableBucketARN: state.TableBucketARN.ValueStringPointer(), + } + + _, err := conn.DeleteTableBucketPolicy(ctx, &input) + if err != nil { + if errs.IsA[*awstypes.NotFoundException](err) { + return + } + + resp.Diagnostics.AddError( + create.ProblemStandardMessage(names.S3Tables, create.ErrActionDeleting, ResNameTableBucketPolicy, state.TableBucketARN.String(), err), + err.Error(), + ) + return + } +} + +func (r *resourceTableBucketPolicy) ImportState(ctx context.Context, req resource.ImportStateRequest, resp *resource.ImportStateResponse) { + resource.ImportStatePassthroughID(ctx, path.Root("table_bucket_arn"), req, resp) +} + +func findTableBucketPolicy(ctx context.Context, conn *s3tables.Client, tableBucketARN string) (*s3tables.GetTableBucketPolicyOutput, error) { + in := s3tables.GetTableBucketPolicyInput{ + TableBucketARN: aws.String(tableBucketARN), + } + + out, err := conn.GetTableBucketPolicy(ctx, &in) + if err != nil { + if errs.IsA[*awstypes.NotFoundException](err) { + return nil, &retry.NotFoundError{ + LastError: err, + LastRequest: in, + } + } + + return nil, err + } + + return out, nil +} + +type resourceTableBucketPolicyModel struct { + ResourcePolicy fwtypes.IAMPolicy `tfsdk:"resource_policy"` + TableBucketARN fwtypes.ARN `tfsdk:"table_bucket_arn"` +} diff --git a/internal/service/s3tables/table_bucket_policy_test.go b/internal/service/s3tables/table_bucket_policy_test.go new file mode 100644 index 000000000000..5e08ba3b5aea --- /dev/null +++ b/internal/service/s3tables/table_bucket_policy_test.go @@ -0,0 +1,160 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +package s3tables_test + +import ( + "context" + "errors" + "fmt" + "testing" + + "github.com/aws/aws-sdk-go-v2/service/s3tables" + sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/terraform" + "github.com/hashicorp/terraform-provider-aws/internal/acctest" + "github.com/hashicorp/terraform-provider-aws/internal/conns" + "github.com/hashicorp/terraform-provider-aws/internal/create" + tfs3tables "github.com/hashicorp/terraform-provider-aws/internal/service/s3tables" + "github.com/hashicorp/terraform-provider-aws/internal/tfresource" + "github.com/hashicorp/terraform-provider-aws/names" +) + +func TestAccS3TablesTableBucketPolicy_basic(t *testing.T) { + ctx := acctest.Context(t) + + var tablebucketpolicy s3tables.GetTableBucketPolicyOutput + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + resourceName := "aws_s3tables_table_bucket_policy.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { + acctest.PreCheck(ctx, t) + testAccPreCheck(ctx, t) + }, + ErrorCheck: acctest.ErrorCheck(t, names.S3TablesServiceID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckTableBucketPolicyDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccTableBucketPolicyConfig_basic(rName), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckTableBucketPolicyExists(ctx, resourceName, &tablebucketpolicy), + resource.TestCheckResourceAttrSet(resourceName, "resource_policy"), + resource.TestCheckResourceAttrPair(resourceName, "table_bucket_arn", "aws_s3tables_table_bucket.test", names.AttrARN), + ), + }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateIdFunc: acctest.AttrImportStateIdFunc(resourceName, "table_bucket_arn"), + ImportStateVerify: true, + ImportStateVerifyIdentifierAttribute: "table_bucket_arn", + ImportStateVerifyIgnore: []string{"resource_policy"}, + }, + }, + }) +} + +func TestAccS3TablesTableBucketPolicy_disappears(t *testing.T) { + ctx := acctest.Context(t) + + var tablebucketpolicy s3tables.GetTableBucketPolicyOutput + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + resourceName := "aws_s3tables_table_bucket_policy.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { + acctest.PreCheck(ctx, t) + testAccPreCheck(ctx, t) + }, + ErrorCheck: acctest.ErrorCheck(t, names.S3TablesServiceID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckTableBucketPolicyDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccTableBucketPolicyConfig_basic(rName), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckTableBucketPolicyExists(ctx, resourceName, &tablebucketpolicy), + acctest.CheckFrameworkResourceDisappears(ctx, acctest.Provider, tfs3tables.NewResourceTableBucketPolicy, resourceName), + ), + ExpectNonEmptyPlan: true, + }, + }, + }) +} + +func testAccCheckTableBucketPolicyDestroy(ctx context.Context) resource.TestCheckFunc { + return func(s *terraform.State) error { + conn := acctest.Provider.Meta().(*conns.AWSClient).S3TablesClient(ctx) + + for _, rs := range s.RootModule().Resources { + if rs.Type != "aws_s3tables_table_bucket_policy" { + continue + } + + _, err := tfs3tables.FindTableBucketPolicy(ctx, conn, rs.Primary.Attributes["table_bucket_arn"]) + if tfresource.NotFound(err) { + return nil + } + if err != nil { + return create.Error(names.S3Tables, create.ErrActionCheckingDestroyed, tfs3tables.ResNameTableBucketPolicy, rs.Primary.ID, err) + } + + return create.Error(names.S3Tables, create.ErrActionCheckingDestroyed, tfs3tables.ResNameTableBucketPolicy, rs.Primary.ID, errors.New("not destroyed")) + } + + return nil + } +} + +func testAccCheckTableBucketPolicyExists(ctx context.Context, name string, tablebucketpolicy *s3tables.GetTableBucketPolicyOutput) resource.TestCheckFunc { + return func(s *terraform.State) error { + rs, ok := s.RootModule().Resources[name] + if !ok { + return create.Error(names.S3Tables, create.ErrActionCheckingExistence, tfs3tables.ResNameTableBucketPolicy, name, errors.New("not found")) + } + + if rs.Primary.Attributes["table_bucket_arn"] == "" { + return create.Error(names.S3Tables, create.ErrActionCheckingExistence, tfs3tables.ResNameTableBucketPolicy, name, errors.New("not set")) + } + + conn := acctest.Provider.Meta().(*conns.AWSClient).S3TablesClient(ctx) + + resp, err := tfs3tables.FindTableBucketPolicy(ctx, conn, rs.Primary.Attributes["table_bucket_arn"]) + if err != nil { + return create.Error(names.S3Tables, create.ErrActionCheckingExistence, tfs3tables.ResNameTableBucketPolicy, rs.Primary.ID, err) + } + + *tablebucketpolicy = *resp + + return nil + } +} + +func testAccTableBucketPolicyConfig_basic(rName string) string { + return fmt.Sprintf(` +resource "aws_s3tables_table_bucket_policy" "test" { + resource_policy = data.aws_iam_policy_document.test.json + table_bucket_arn = aws_s3tables_table_bucket.test.arn +} + +data "aws_iam_policy_document" "test" { + statement { + actions = ["s3tables:*"] + principals { + type = "AWS" + identifiers = [data.aws_caller_identity.current.account_id] + } + resources = ["${aws_s3tables_table_bucket.test.arn}/*"] + } +} + +resource "aws_s3tables_table_bucket" "test" { + name = %[1]q +} + +data "aws_caller_identity" "current" {} +`, rName) +} diff --git a/internal/service/s3tables/table_bucket_test.go b/internal/service/s3tables/table_bucket_test.go new file mode 100644 index 000000000000..7fc6eb4dc851 --- /dev/null +++ b/internal/service/s3tables/table_bucket_test.go @@ -0,0 +1,269 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +package s3tables_test + +import ( + "context" + "errors" + "fmt" + "testing" + + "github.com/aws/aws-sdk-go-v2/service/s3tables" + awstypes "github.com/aws/aws-sdk-go-v2/service/s3tables/types" + sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/knownvalue" + "github.com/hashicorp/terraform-plugin-testing/statecheck" + "github.com/hashicorp/terraform-plugin-testing/terraform" + "github.com/hashicorp/terraform-plugin-testing/tfjsonpath" + "github.com/hashicorp/terraform-provider-aws/internal/acctest" + tfknownvalue "github.com/hashicorp/terraform-provider-aws/internal/acctest/knownvalue" + "github.com/hashicorp/terraform-provider-aws/internal/conns" + "github.com/hashicorp/terraform-provider-aws/internal/create" + tfs3tables "github.com/hashicorp/terraform-provider-aws/internal/service/s3tables" + "github.com/hashicorp/terraform-provider-aws/internal/tfresource" + "github.com/hashicorp/terraform-provider-aws/names" +) + +func TestAccS3TablesTableBucket_basic(t *testing.T) { + ctx := acctest.Context(t) + + var tablebucket s3tables.GetTableBucketOutput + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + resourceName := "aws_s3tables_table_bucket.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { + acctest.PreCheck(ctx, t) + testAccPreCheck(ctx, t) + }, + ErrorCheck: acctest.ErrorCheck(t, names.S3TablesServiceID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckTableBucketDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccTableBucketConfig_basic(rName), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckTableBucketExists(ctx, resourceName, &tablebucket), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "s3tables", "bucket/"+rName), + resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedAt), + resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerAccountID), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New("maintenance_configuration"), knownvalue.ObjectExact(map[string]knownvalue.Check{ + "iceberg_unreferenced_file_removal": knownvalue.ObjectExact(map[string]knownvalue.Check{ + "settings": knownvalue.ObjectExact(map[string]knownvalue.Check{ + "non_current_days": knownvalue.Int32Exact(10), + "unreferenced_days": knownvalue.Int32Exact(3), + }), + names.AttrStatus: tfknownvalue.StringExact(awstypes.MaintenanceStatusEnabled), + }), + })), + }, + }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateIdFunc: acctest.AttrImportStateIdFunc(resourceName, names.AttrARN), + ImportStateVerify: true, + ImportStateVerifyIdentifierAttribute: names.AttrARN, + }, + }, + }) +} + +func TestAccS3TablesTableBucket_disappears(t *testing.T) { + ctx := acctest.Context(t) + + var tablebucket s3tables.GetTableBucketOutput + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + resourceName := "aws_s3tables_table_bucket.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { + acctest.PreCheck(ctx, t) + testAccPreCheck(ctx, t) + }, + ErrorCheck: acctest.ErrorCheck(t, names.S3TablesServiceID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckTableBucketDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccTableBucketConfig_basic(rName), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckTableBucketExists(ctx, resourceName, &tablebucket), + acctest.CheckFrameworkResourceDisappears(ctx, acctest.Provider, tfs3tables.NewResourceTableBucket, resourceName), + ), + ExpectNonEmptyPlan: true, + }, + }, + }) +} + +func TestAccS3TablesTableBucket_maintenanceConfiguration(t *testing.T) { + ctx := acctest.Context(t) + + var tablebucket s3tables.GetTableBucketOutput + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + resourceName := "aws_s3tables_table_bucket.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { + acctest.PreCheck(ctx, t) + testAccPreCheck(ctx, t) + }, + ErrorCheck: acctest.ErrorCheck(t, names.S3TablesServiceID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckTableBucketDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccTableBucketConfig_maintenanceConfiguration(rName, awstypes.MaintenanceStatusEnabled, 20, 6), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckTableBucketExists(ctx, resourceName, &tablebucket), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New("maintenance_configuration"), knownvalue.ObjectExact(map[string]knownvalue.Check{ + "iceberg_unreferenced_file_removal": knownvalue.ObjectExact(map[string]knownvalue.Check{ + "settings": knownvalue.ObjectExact(map[string]knownvalue.Check{ + "non_current_days": knownvalue.Int32Exact(20), + "unreferenced_days": knownvalue.Int32Exact(6), + }), + names.AttrStatus: tfknownvalue.StringExact(awstypes.MaintenanceStatusEnabled), + }), + })), + }, + }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateIdFunc: acctest.AttrImportStateIdFunc(resourceName, names.AttrARN), + ImportStateVerify: true, + ImportStateVerifyIdentifierAttribute: names.AttrARN, + }, + { + Config: testAccTableBucketConfig_maintenanceConfiguration(rName, awstypes.MaintenanceStatusEnabled, 15, 4), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckTableBucketExists(ctx, resourceName, &tablebucket), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New("maintenance_configuration"), knownvalue.ObjectExact(map[string]knownvalue.Check{ + "iceberg_unreferenced_file_removal": knownvalue.ObjectExact(map[string]knownvalue.Check{ + "settings": knownvalue.ObjectExact(map[string]knownvalue.Check{ + "non_current_days": knownvalue.Int32Exact(15), + "unreferenced_days": knownvalue.Int32Exact(4), + }), + names.AttrStatus: tfknownvalue.StringExact(awstypes.MaintenanceStatusEnabled), + }), + })), + }, + }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateIdFunc: acctest.AttrImportStateIdFunc(resourceName, names.AttrARN), + ImportStateVerify: true, + ImportStateVerifyIdentifierAttribute: names.AttrARN, + }, + { + Config: testAccTableBucketConfig_maintenanceConfiguration(rName, awstypes.MaintenanceStatusDisabled, 15, 4), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckTableBucketExists(ctx, resourceName, &tablebucket), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New("maintenance_configuration"), knownvalue.ObjectExact(map[string]knownvalue.Check{ + "iceberg_unreferenced_file_removal": knownvalue.ObjectExact(map[string]knownvalue.Check{ + "settings": knownvalue.ObjectExact(map[string]knownvalue.Check{ + "non_current_days": knownvalue.Int32Exact(15), + "unreferenced_days": knownvalue.Int32Exact(4), + }), + names.AttrStatus: tfknownvalue.StringExact(awstypes.MaintenanceStatusDisabled), + }), + })), + }, + }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateIdFunc: acctest.AttrImportStateIdFunc(resourceName, names.AttrARN), + ImportStateVerify: true, + ImportStateVerifyIdentifierAttribute: names.AttrARN, + }, + }, + }) +} + +func testAccCheckTableBucketDestroy(ctx context.Context) resource.TestCheckFunc { + return func(s *terraform.State) error { + conn := acctest.Provider.Meta().(*conns.AWSClient).S3TablesClient(ctx) + + for _, rs := range s.RootModule().Resources { + if rs.Type != "aws_s3tables_table_bucket" { + continue + } + + _, err := tfs3tables.FindTableBucket(ctx, conn, rs.Primary.Attributes[names.AttrARN]) + if tfresource.NotFound(err) { + return nil + } + if err != nil { + return create.Error(names.S3Tables, create.ErrActionCheckingDestroyed, tfs3tables.ResNameTableBucket, rs.Primary.ID, err) + } + + return create.Error(names.S3Tables, create.ErrActionCheckingDestroyed, tfs3tables.ResNameTableBucket, rs.Primary.ID, errors.New("not destroyed")) + } + + return nil + } +} + +func testAccCheckTableBucketExists(ctx context.Context, name string, tablebucket *s3tables.GetTableBucketOutput) resource.TestCheckFunc { + return func(s *terraform.State) error { + rs, ok := s.RootModule().Resources[name] + if !ok { + return create.Error(names.S3Tables, create.ErrActionCheckingExistence, tfs3tables.ResNameTableBucket, name, errors.New("not found")) + } + + if rs.Primary.Attributes[names.AttrARN] == "" { + return create.Error(names.S3Tables, create.ErrActionCheckingExistence, tfs3tables.ResNameTableBucket, name, errors.New("not set")) + } + + conn := acctest.Provider.Meta().(*conns.AWSClient).S3TablesClient(ctx) + + resp, err := tfs3tables.FindTableBucket(ctx, conn, rs.Primary.Attributes[names.AttrARN]) + if err != nil { + return create.Error(names.S3Tables, create.ErrActionCheckingExistence, tfs3tables.ResNameTableBucket, rs.Primary.ID, err) + } + + *tablebucket = *resp + + return nil + } +} + +func testAccTableBucketConfig_basic(rName string) string { + return fmt.Sprintf(` +resource "aws_s3tables_table_bucket" "test" { + name = %[1]q +} +`, rName) +} + +func testAccTableBucketConfig_maintenanceConfiguration(rName string, status awstypes.MaintenanceStatus, nonCurrentDays, unreferencedDays int32) string { + return fmt.Sprintf(` +resource "aws_s3tables_table_bucket" "test" { + name = %[1]q + + maintenance_configuration = { + iceberg_unreferenced_file_removal = { + settings = { + non_current_days = %[3]d + unreferenced_days = %[4]d + } + status = %[2]q + } + } +} +`, rName, status, nonCurrentDays, unreferencedDays) +} diff --git a/internal/service/s3tables/table_policy.go b/internal/service/s3tables/table_policy.go new file mode 100644 index 000000000000..01f007f7ef50 --- /dev/null +++ b/internal/service/s3tables/table_policy.go @@ -0,0 +1,263 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +package s3tables + +import ( + "context" + "fmt" + + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/service/s3tables" + awstypes "github.com/aws/aws-sdk-go-v2/service/s3tables/types" + "github.com/hashicorp/terraform-plugin-framework/resource" + "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/types" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry" + "github.com/hashicorp/terraform-provider-aws/internal/create" + "github.com/hashicorp/terraform-provider-aws/internal/errs" + "github.com/hashicorp/terraform-provider-aws/internal/framework" + "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" + "github.com/hashicorp/terraform-provider-aws/names" +) + +// @FrameworkResource("aws_s3tables_table_policy", name="Table Policy") +func newResourceTablePolicy(_ context.Context) (resource.ResourceWithConfigure, error) { + return &resourceTablePolicy{}, nil +} + +const ( + ResNameTablePolicy = "Table Policy" +) + +type resourceTablePolicy struct { + framework.ResourceWithConfigure +} + +func (r *resourceTablePolicy) Metadata(_ context.Context, req resource.MetadataRequest, resp *resource.MetadataResponse) { + resp.TypeName = "aws_s3tables_table_policy" +} + +func (r *resourceTablePolicy) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + names.AttrName: schema.StringAttribute{ + Required: true, + Validators: tableNameValidator, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.RequiresReplace(), + }, + }, + names.AttrNamespace: schema.StringAttribute{ + Required: true, + Validators: namespaceNameValidator, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.RequiresReplace(), + }, + }, + "resource_policy": schema.StringAttribute{ + CustomType: fwtypes.IAMPolicyType, + Required: true, + }, + "table_bucket_arn": schema.StringAttribute{ + CustomType: fwtypes.ARNType, + Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.RequiresReplace(), + }, + }, + }, + } +} + +func (r *resourceTablePolicy) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) { + conn := r.Meta().S3TablesClient(ctx) + + var plan resourceTablePolicyModel + resp.Diagnostics.Append(req.Plan.Get(ctx, &plan)...) + if resp.Diagnostics.HasError() { + return + } + + var input s3tables.PutTablePolicyInput + resp.Diagnostics.Append(flex.Expand(ctx, plan, &input)...) + if resp.Diagnostics.HasError() { + return + } + + _, err := conn.PutTablePolicy(ctx, &input) + if err != nil { + resp.Diagnostics.AddError( + create.ProblemStandardMessage(names.S3Tables, create.ErrActionCreating, ResNameTablePolicy, plan.Name.String(), err), + err.Error(), + ) + return + } + + out, err := findTablePolicy(ctx, conn, plan.TableBucketARN.ValueString(), plan.Namespace.ValueString(), plan.Name.ValueString()) + if err != nil { + resp.Diagnostics.AddError( + create.ProblemStandardMessage(names.S3Tables, create.ErrActionCreating, ResNameTableBucketPolicy, plan.Name.String(), err), + err.Error(), + ) + return + } + + resp.Diagnostics.Append(flex.Flatten(ctx, out, &plan)...) + if resp.Diagnostics.HasError() { + return + } + + resp.Diagnostics.Append(resp.State.Set(ctx, plan)...) +} + +func (r *resourceTablePolicy) Read(ctx context.Context, req resource.ReadRequest, resp *resource.ReadResponse) { + conn := r.Meta().S3TablesClient(ctx) + + var state resourceTablePolicyModel + resp.Diagnostics.Append(req.State.Get(ctx, &state)...) + if resp.Diagnostics.HasError() { + return + } + + out, err := findTablePolicy(ctx, conn, state.TableBucketARN.ValueString(), state.Namespace.ValueString(), state.Name.ValueString()) + if tfresource.NotFound(err) { + resp.State.RemoveResource(ctx) + return + } + if err != nil { + resp.Diagnostics.AddError( + create.ProblemStandardMessage(names.S3Tables, create.ErrActionReading, ResNameTablePolicy, state.Name.String(), err), + err.Error(), + ) + return + } + + resp.Diagnostics.Append(flex.Flatten(ctx, out, &state)...) + if resp.Diagnostics.HasError() { + return + } + + resp.Diagnostics.Append(resp.State.Set(ctx, &state)...) +} + +func (r *resourceTablePolicy) Update(ctx context.Context, req resource.UpdateRequest, resp *resource.UpdateResponse) { + conn := r.Meta().S3TablesClient(ctx) + + var plan resourceTablePolicyModel + resp.Diagnostics.Append(req.Plan.Get(ctx, &plan)...) + if resp.Diagnostics.HasError() { + return + } + + var input s3tables.PutTablePolicyInput + resp.Diagnostics.Append(flex.Expand(ctx, plan, &input)...) + if resp.Diagnostics.HasError() { + return + } + + _, err := conn.PutTablePolicy(ctx, &input) + if err != nil { + resp.Diagnostics.AddError( + create.ProblemStandardMessage(names.S3Tables, create.ErrActionUpdating, ResNameTablePolicy, plan.Name.String(), err), + err.Error(), + ) + return + } + + out, err := findTablePolicy(ctx, conn, plan.TableBucketARN.ValueString(), plan.Namespace.ValueString(), plan.Name.ValueString()) + if err != nil { + resp.Diagnostics.AddError( + create.ProblemStandardMessage(names.S3Tables, create.ErrActionCreating, ResNameTableBucketPolicy, plan.Name.String(), err), + err.Error(), + ) + return + } + + resp.Diagnostics.Append(flex.Flatten(ctx, out, &plan)...) + if resp.Diagnostics.HasError() { + return + } + + resp.Diagnostics.Append(resp.State.Set(ctx, &plan)...) +} + +func (r *resourceTablePolicy) Delete(ctx context.Context, req resource.DeleteRequest, resp *resource.DeleteResponse) { + conn := r.Meta().S3TablesClient(ctx) + + var state resourceTablePolicyModel + resp.Diagnostics.Append(req.State.Get(ctx, &state)...) + if resp.Diagnostics.HasError() { + return + } + + input := s3tables.DeleteTablePolicyInput{ + Name: state.Name.ValueStringPointer(), + Namespace: state.Namespace.ValueStringPointer(), + TableBucketARN: state.TableBucketARN.ValueStringPointer(), + } + + _, err := conn.DeleteTablePolicy(ctx, &input) + if err != nil { + if errs.IsA[*awstypes.NotFoundException](err) { + return + } + + resp.Diagnostics.AddError( + create.ProblemStandardMessage(names.S3Tables, create.ErrActionDeleting, ResNameTablePolicy, state.Name.String(), err), + err.Error(), + ) + return + } +} + +func (r *resourceTablePolicy) ImportState(ctx context.Context, req resource.ImportStateRequest, resp *resource.ImportStateResponse) { + identifier, err := parseTableIdentifier(req.ID) + if err != nil { + resp.Diagnostics.AddError( + "Invalid Import ID", + "Import IDs for S3 Tables Table Policies must use the format
"+tableIDSeparator+""+tableIDSeparator+"
.\n"+ + fmt.Sprintf("Had %q", req.ID), + ) + return + } + + identifier.PopulateState(ctx, &resp.State, &resp.Diagnostics) +} + +func findTablePolicy(ctx context.Context, conn *s3tables.Client, bucketARN, namespace, name string) (*s3tables.GetTablePolicyOutput, error) { + in := s3tables.GetTablePolicyInput{ + Name: aws.String(name), + Namespace: aws.String(namespace), + TableBucketARN: aws.String(bucketARN), + } + + out, err := conn.GetTablePolicy(ctx, &in) + if err != nil { + if errs.IsA[*awstypes.NotFoundException](err) { + return nil, &retry.NotFoundError{ + LastError: err, + LastRequest: in, + } + } + + return nil, err + } + + if out == nil { + return nil, tfresource.NewEmptyResultError(in) + } + + return out, nil +} + +type resourceTablePolicyModel struct { + Name types.String `tfsdk:"name"` + Namespace types.String `tfsdk:"namespace"` + ResourcePolicy fwtypes.IAMPolicy `tfsdk:"resource_policy"` + TableBucketARN fwtypes.ARN `tfsdk:"table_bucket_arn"` +} diff --git a/internal/service/s3tables/table_policy_test.go b/internal/service/s3tables/table_policy_test.go new file mode 100644 index 000000000000..8af7c3d86da2 --- /dev/null +++ b/internal/service/s3tables/table_policy_test.go @@ -0,0 +1,210 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +package s3tables_test + +import ( + "context" + "errors" + "fmt" + "strings" + "testing" + + "github.com/aws/aws-sdk-go-v2/service/s3tables" + sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/terraform" + "github.com/hashicorp/terraform-provider-aws/internal/acctest" + "github.com/hashicorp/terraform-provider-aws/internal/conns" + "github.com/hashicorp/terraform-provider-aws/internal/create" + tfs3tables "github.com/hashicorp/terraform-provider-aws/internal/service/s3tables" + "github.com/hashicorp/terraform-provider-aws/internal/tfresource" + "github.com/hashicorp/terraform-provider-aws/names" +) + +func TestAccS3TablesTablePolicy_basic(t *testing.T) { + ctx := acctest.Context(t) + + var tablepolicy s3tables.GetTablePolicyOutput + bucketName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + namespace := strings.ReplaceAll(sdkacctest.RandomWithPrefix(acctest.ResourcePrefix), "-", "_") + rName := strings.ReplaceAll(sdkacctest.RandomWithPrefix(acctest.ResourcePrefix), "-", "_") + resourceName := "aws_s3tables_table_policy.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { + acctest.PreCheck(ctx, t) + testAccPreCheck(ctx, t) + }, + ErrorCheck: acctest.ErrorCheck(t, names.S3TablesServiceID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckTablePolicyDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccTablePolicyConfig_basic(rName, namespace, bucketName), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckTablePolicyExists(ctx, resourceName, &tablepolicy), + resource.TestCheckResourceAttrSet(resourceName, "resource_policy"), + resource.TestCheckResourceAttrPair(resourceName, names.AttrName, "aws_s3tables_table.test", names.AttrName), + resource.TestCheckResourceAttrPair(resourceName, names.AttrNamespace, "aws_s3tables_table.test", names.AttrNamespace), + resource.TestCheckResourceAttrPair(resourceName, "table_bucket_arn", "aws_s3tables_table.test", "table_bucket_arn"), + ), + }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateIdFunc: testAccTablePolicyImportStateIdFunc(resourceName), + ImportStateVerify: true, + ImportStateVerifyIdentifierAttribute: names.AttrName, + ImportStateVerifyIgnore: []string{"resource_policy"}, + }, + }, + }) +} + +func TestAccS3TablesTablePolicy_disappears(t *testing.T) { + ctx := acctest.Context(t) + + var tablepolicy s3tables.GetTablePolicyOutput + bucketName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + namespace := strings.ReplaceAll(sdkacctest.RandomWithPrefix(acctest.ResourcePrefix), "-", "_") + rName := strings.ReplaceAll(sdkacctest.RandomWithPrefix(acctest.ResourcePrefix), "-", "_") + resourceName := "aws_s3tables_table_policy.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { + acctest.PreCheck(ctx, t) + testAccPreCheck(ctx, t) + }, + ErrorCheck: acctest.ErrorCheck(t, names.S3TablesServiceID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckTablePolicyDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccTablePolicyConfig_basic(rName, namespace, bucketName), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckTablePolicyExists(ctx, resourceName, &tablepolicy), + acctest.CheckFrameworkResourceDisappears(ctx, acctest.Provider, tfs3tables.ResourceTablePolicy, resourceName), + ), + ExpectNonEmptyPlan: true, + }, + }, + }) +} + +func testAccCheckTablePolicyDestroy(ctx context.Context) resource.TestCheckFunc { + return func(s *terraform.State) error { + conn := acctest.Provider.Meta().(*conns.AWSClient).S3TablesClient(ctx) + + for _, rs := range s.RootModule().Resources { + if rs.Type != "aws_s3tables_table_policy" { + continue + } + + _, err := tfs3tables.FindTablePolicy(ctx, conn, + rs.Primary.Attributes["table_bucket_arn"], + rs.Primary.Attributes[names.AttrNamespace], + rs.Primary.Attributes[names.AttrName], + ) + if tfresource.NotFound(err) { + return nil + } + if err != nil { + return create.Error(names.S3Tables, create.ErrActionCheckingDestroyed, tfs3tables.ResNameTablePolicy, rs.Primary.ID, err) + } + + return create.Error(names.S3Tables, create.ErrActionCheckingDestroyed, tfs3tables.ResNameTablePolicy, rs.Primary.ID, errors.New("not destroyed")) + } + + return nil + } +} + +func testAccCheckTablePolicyExists(ctx context.Context, name string, tablepolicy *s3tables.GetTablePolicyOutput) resource.TestCheckFunc { + return func(s *terraform.State) error { + rs, ok := s.RootModule().Resources[name] + if !ok { + return create.Error(names.S3Tables, create.ErrActionCheckingExistence, tfs3tables.ResNameTablePolicy, name, errors.New("not found")) + } + + if rs.Primary.Attributes["table_bucket_arn"] == "" || rs.Primary.Attributes[names.AttrNamespace] == "" || rs.Primary.Attributes[names.AttrName] == "" { + return create.Error(names.S3Tables, create.ErrActionCheckingExistence, tfs3tables.ResNameTablePolicy, name, errors.New("not set")) + } + + conn := acctest.Provider.Meta().(*conns.AWSClient).S3TablesClient(ctx) + + resp, err := tfs3tables.FindTablePolicy(ctx, conn, + rs.Primary.Attributes["table_bucket_arn"], + rs.Primary.Attributes[names.AttrNamespace], + rs.Primary.Attributes[names.AttrName], + ) + if err != nil { + return create.Error(names.S3Tables, create.ErrActionCheckingExistence, tfs3tables.ResNameTablePolicy, rs.Primary.ID, err) + } + + *tablepolicy = *resp + + return nil + } +} + +func testAccTablePolicyImportStateIdFunc(resourceName string) resource.ImportStateIdFunc { + return func(s *terraform.State) (string, error) { + rs, ok := s.RootModule().Resources[resourceName] + if !ok { + return "", fmt.Errorf("not found: %s", resourceName) + } + + identifier := tfs3tables.TableIdentifier{ + TableBucketARN: rs.Primary.Attributes["table_bucket_arn"], + Namespace: rs.Primary.Attributes[names.AttrNamespace], + Name: rs.Primary.Attributes[names.AttrName], + } + + return identifier.String(), nil + } +} + +func testAccTablePolicyConfig_basic(rName, namespace, bucketName string) string { + return fmt.Sprintf(` +resource "aws_s3tables_table_policy" "test" { + resource_policy = data.aws_iam_policy_document.test.json + name = aws_s3tables_table.test.name + namespace = aws_s3tables_table.test.namespace + table_bucket_arn = aws_s3tables_table.test.table_bucket_arn +} + +data "aws_iam_policy_document" "test" { + statement { + actions = ["s3tables:*"] + principals { + type = "AWS" + identifiers = [data.aws_caller_identity.current.account_id] + } + resources = [aws_s3tables_table.test.arn] + } +} + +resource "aws_s3tables_table" "test" { + name = %[1]q + namespace = aws_s3tables_namespace.test.namespace + table_bucket_arn = aws_s3tables_namespace.test.table_bucket_arn + format = "ICEBERG" +} + +resource "aws_s3tables_namespace" "test" { + namespace = %[2]q + table_bucket_arn = aws_s3tables_table_bucket.test.arn + + lifecycle { + create_before_destroy = true + } +} + +resource "aws_s3tables_table_bucket" "test" { + name = %[3]q +} + +data "aws_caller_identity" "current" {} +`, rName, namespace, bucketName) +} diff --git a/internal/service/s3tables/table_test.go b/internal/service/s3tables/table_test.go new file mode 100644 index 000000000000..c54fb682b88e --- /dev/null +++ b/internal/service/s3tables/table_test.go @@ -0,0 +1,601 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +package s3tables_test + +import ( + "context" + "errors" + "fmt" + "strings" + "testing" + + "github.com/YakDriver/regexache" + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/service/s3tables" + awstypes "github.com/aws/aws-sdk-go-v2/service/s3tables/types" + "github.com/hashicorp/terraform-plugin-testing/compare" + sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/knownvalue" + "github.com/hashicorp/terraform-plugin-testing/plancheck" + "github.com/hashicorp/terraform-plugin-testing/statecheck" + "github.com/hashicorp/terraform-plugin-testing/terraform" + "github.com/hashicorp/terraform-plugin-testing/tfjsonpath" + "github.com/hashicorp/terraform-provider-aws/internal/acctest" + tfknownvalue "github.com/hashicorp/terraform-provider-aws/internal/acctest/knownvalue" + "github.com/hashicorp/terraform-provider-aws/internal/conns" + "github.com/hashicorp/terraform-provider-aws/internal/create" + tfs3tables "github.com/hashicorp/terraform-provider-aws/internal/service/s3tables" + "github.com/hashicorp/terraform-provider-aws/internal/tfresource" + "github.com/hashicorp/terraform-provider-aws/internal/verify" + "github.com/hashicorp/terraform-provider-aws/names" +) + +func TestAccS3TablesTable_basic(t *testing.T) { + ctx := acctest.Context(t) + + var table s3tables.GetTableOutput + bucketName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + namespace := strings.ReplaceAll(sdkacctest.RandomWithPrefix(acctest.ResourcePrefix), "-", "_") + rName := strings.ReplaceAll(sdkacctest.RandomWithPrefix(acctest.ResourcePrefix), "-", "_") + resourceName := "aws_s3tables_table.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { + acctest.PreCheck(ctx, t) + testAccPreCheck(ctx, t) + }, + ErrorCheck: acctest.ErrorCheck(t, names.S3TablesServiceID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckTableDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccTableConfig_basic(rName, namespace, bucketName), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckTableExists(ctx, resourceName, &table), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "s3tables", regexache.MustCompile("bucket/"+bucketName+"/table/"+verify.UUIDRegexPattern+"$")), + resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedAt), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "created_by"), + resource.TestCheckResourceAttr(resourceName, names.AttrFormat, "ICEBERG"), + resource.TestCheckNoResourceAttr(resourceName, "metadata_location"), + resource.TestCheckResourceAttrPair(resourceName, "modified_at", resourceName, names.AttrCreatedAt), + resource.TestCheckNoResourceAttr(resourceName, "modified_by"), + resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), + resource.TestCheckResourceAttrPair(resourceName, names.AttrNamespace, "aws_s3tables_namespace.test", names.AttrNamespace), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerAccountID), + resource.TestCheckResourceAttrPair(resourceName, "table_bucket_arn", "aws_s3tables_table_bucket.test", names.AttrARN), + resource.TestCheckResourceAttr(resourceName, names.AttrType, string(awstypes.TableTypeCustomer)), + resource.TestCheckResourceAttrSet(resourceName, "version_token"), + func(s *terraform.State) error { + tableID, err := tfs3tables.TableIDFromTableARN(aws.ToString(table.TableARN)) + if err != nil { + return err + } + return resource.TestMatchResourceAttr(resourceName, "warehouse_location", regexache.MustCompile("^s3://"+tableID[:19]+".+--table-s3$"))(s) + }, + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New("maintenance_configuration"), knownvalue.ObjectExact(map[string]knownvalue.Check{ + "iceberg_compaction": knownvalue.ObjectExact(map[string]knownvalue.Check{ + "settings": knownvalue.ObjectExact(map[string]knownvalue.Check{ + "target_file_size_mb": knownvalue.Int32Exact(512), + }), + names.AttrStatus: tfknownvalue.StringExact(awstypes.MaintenanceStatusEnabled), + }), + "iceberg_snapshot_management": knownvalue.ObjectExact(map[string]knownvalue.Check{ + "settings": knownvalue.ObjectExact(map[string]knownvalue.Check{ + "max_snapshot_age_hours": knownvalue.Int32Exact(120), + "min_snapshots_to_keep": knownvalue.Int32Exact(1), + }), + names.AttrStatus: tfknownvalue.StringExact(awstypes.MaintenanceStatusEnabled), + }), + })), + }, + }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateIdFunc: testAccTableImportStateIdFunc(resourceName), + ImportStateVerify: true, + ImportStateVerifyIdentifierAttribute: names.AttrARN, + }, + }, + }) +} + +func TestAccS3TablesTable_disappears(t *testing.T) { + ctx := acctest.Context(t) + + var table s3tables.GetTableOutput + bucketName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + namespace := strings.ReplaceAll(sdkacctest.RandomWithPrefix(acctest.ResourcePrefix), "-", "_") + rName := strings.ReplaceAll(sdkacctest.RandomWithPrefix(acctest.ResourcePrefix), "-", "_") + resourceName := "aws_s3tables_table.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { + acctest.PreCheck(ctx, t) + testAccPreCheck(ctx, t) + }, + ErrorCheck: acctest.ErrorCheck(t, names.S3TablesServiceID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckTableDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccTableConfig_basic(rName, namespace, bucketName), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckTableExists(ctx, resourceName, &table), + acctest.CheckFrameworkResourceDisappears(ctx, acctest.Provider, tfs3tables.NewResourceTable, resourceName), + ), + ExpectNonEmptyPlan: true, + }, + }, + }) +} + +func TestAccS3TablesTable_rename(t *testing.T) { + ctx := acctest.Context(t) + + var table s3tables.GetTableOutput + bucketName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + namespace := strings.ReplaceAll(sdkacctest.RandomWithPrefix(acctest.ResourcePrefix), "-", "_") + rName := strings.ReplaceAll(sdkacctest.RandomWithPrefix(acctest.ResourcePrefix), "-", "_") + rNameUpdated := strings.ReplaceAll(sdkacctest.RandomWithPrefix(acctest.ResourcePrefix), "-", "_") + resourceName := "aws_s3tables_table.test" + + createdAtNoChange := statecheck.CompareValue(compare.ValuesSame()) + createdByNoChange := statecheck.CompareValue(compare.ValuesSame()) + modifiedAtChange := statecheck.CompareValue(compare.ValuesDiffer()) + modifiedByChange := statecheck.CompareValue(compare.ValuesDiffer()) + versionNoChange := statecheck.CompareValue(compare.ValuesSame()) + warehouseLocationNoChange := statecheck.CompareValue(compare.ValuesSame()) + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { + acctest.PreCheck(ctx, t) + testAccPreCheck(ctx, t) + }, + ErrorCheck: acctest.ErrorCheck(t, names.S3TablesServiceID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckTableDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccTableConfig_basic(rName, namespace, bucketName), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckTableExists(ctx, resourceName, &table), + resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), + ), + ConfigStateChecks: []statecheck.StateCheck{ + createdAtNoChange.AddStateValue(resourceName, tfjsonpath.New(names.AttrCreatedAt)), + createdByNoChange.AddStateValue(resourceName, tfjsonpath.New("created_by")), + modifiedAtChange.AddStateValue(resourceName, tfjsonpath.New("modified_at")), + modifiedByChange.AddStateValue(resourceName, tfjsonpath.New("modified_by")), + versionNoChange.AddStateValue(resourceName, tfjsonpath.New("version_token")), + warehouseLocationNoChange.AddStateValue(resourceName, tfjsonpath.New("warehouse_location")), + }, + }, + { + Config: testAccTableConfig_basic(rNameUpdated, namespace, bucketName), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckTableExists(ctx, resourceName, &table), + resource.TestCheckResourceAttr(resourceName, names.AttrName, rNameUpdated), + resource.TestCheckResourceAttrSet(resourceName, "modified_at"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "modified_by"), + ), + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrName), knownvalue.StringExact(rNameUpdated)), + }, + PostApplyPreRefresh: []plancheck.PlanCheck{ + plancheck.ExpectEmptyPlan(), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectEmptyPlan(), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + createdAtNoChange.AddStateValue(resourceName, tfjsonpath.New(names.AttrCreatedAt)), + createdByNoChange.AddStateValue(resourceName, tfjsonpath.New("created_by")), + modifiedAtChange.AddStateValue(resourceName, tfjsonpath.New("modified_at")), + modifiedByChange.AddStateValue(resourceName, tfjsonpath.New("modified_by")), + versionNoChange.AddStateValue(resourceName, tfjsonpath.New("version_token")), + warehouseLocationNoChange.AddStateValue(resourceName, tfjsonpath.New("warehouse_location")), + }, + }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateIdFunc: testAccTableImportStateIdFunc(resourceName), + ImportStateVerify: true, + ImportStateVerifyIdentifierAttribute: names.AttrARN, + }, + }, + }) +} + +func TestAccS3TablesTable_updateNamespace(t *testing.T) { + ctx := acctest.Context(t) + + var table s3tables.GetTableOutput + bucketName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + namespace := strings.ReplaceAll(sdkacctest.RandomWithPrefix(acctest.ResourcePrefix), "-", "_") + rName := strings.ReplaceAll(sdkacctest.RandomWithPrefix(acctest.ResourcePrefix), "-", "_") + namespaceUpdated := strings.ReplaceAll(sdkacctest.RandomWithPrefix(acctest.ResourcePrefix), "-", "_") + resourceName := "aws_s3tables_table.test" + + createdAtNoChange := statecheck.CompareValue(compare.ValuesSame()) + createdByNoChange := statecheck.CompareValue(compare.ValuesSame()) + modifiedAtChange := statecheck.CompareValue(compare.ValuesDiffer()) + modifiedByChange := statecheck.CompareValue(compare.ValuesDiffer()) + versionNoChange := statecheck.CompareValue(compare.ValuesSame()) + warehouseLocationNoChange := statecheck.CompareValue(compare.ValuesSame()) + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { + acctest.PreCheck(ctx, t) + testAccPreCheck(ctx, t) + }, + ErrorCheck: acctest.ErrorCheck(t, names.S3TablesServiceID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckTableDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccTableConfig_basic(rName, namespace, bucketName), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckTableExists(ctx, resourceName, &table), + resource.TestCheckResourceAttr(resourceName, names.AttrNamespace, namespace), + ), + ConfigStateChecks: []statecheck.StateCheck{ + createdAtNoChange.AddStateValue(resourceName, tfjsonpath.New(names.AttrCreatedAt)), + createdByNoChange.AddStateValue(resourceName, tfjsonpath.New("created_by")), + modifiedAtChange.AddStateValue(resourceName, tfjsonpath.New("modified_at")), + modifiedByChange.AddStateValue(resourceName, tfjsonpath.New("modified_by")), + versionNoChange.AddStateValue(resourceName, tfjsonpath.New("version_token")), + warehouseLocationNoChange.AddStateValue(resourceName, tfjsonpath.New("warehouse_location")), + }, + }, + { + Config: testAccTableConfig_basic(rName, namespaceUpdated, bucketName), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckTableExists(ctx, resourceName, &table), + resource.TestCheckResourceAttr(resourceName, names.AttrNamespace, namespaceUpdated), + resource.TestCheckResourceAttrSet(resourceName, "modified_at"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "modified_by"), + ), + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrNamespace), knownvalue.StringExact(namespaceUpdated)), + }, + PostApplyPreRefresh: []plancheck.PlanCheck{ + plancheck.ExpectEmptyPlan(), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectEmptyPlan(), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + createdAtNoChange.AddStateValue(resourceName, tfjsonpath.New(names.AttrCreatedAt)), + createdByNoChange.AddStateValue(resourceName, tfjsonpath.New("created_by")), + modifiedAtChange.AddStateValue(resourceName, tfjsonpath.New("modified_at")), + modifiedByChange.AddStateValue(resourceName, tfjsonpath.New("modified_by")), + versionNoChange.AddStateValue(resourceName, tfjsonpath.New("version_token")), + warehouseLocationNoChange.AddStateValue(resourceName, tfjsonpath.New("warehouse_location")), + }, + }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateIdFunc: testAccTableImportStateIdFunc(resourceName), + ImportStateVerify: true, + ImportStateVerifyIdentifierAttribute: names.AttrARN, + }, + }, + }) +} + +func TestAccS3TablesTable_updateNameAndNamespace(t *testing.T) { + ctx := acctest.Context(t) + + var table s3tables.GetTableOutput + bucketName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + namespace := strings.ReplaceAll(sdkacctest.RandomWithPrefix(acctest.ResourcePrefix), "-", "_") + rName := strings.ReplaceAll(sdkacctest.RandomWithPrefix(acctest.ResourcePrefix), "-", "_") + namespaceUpdated := strings.ReplaceAll(sdkacctest.RandomWithPrefix(acctest.ResourcePrefix), "-", "_") + rNameUpdated := strings.ReplaceAll(sdkacctest.RandomWithPrefix(acctest.ResourcePrefix), "-", "_") + resourceName := "aws_s3tables_table.test" + + createdAtNoChange := statecheck.CompareValue(compare.ValuesSame()) + createdByNoChange := statecheck.CompareValue(compare.ValuesSame()) + modifiedAtChange := statecheck.CompareValue(compare.ValuesDiffer()) + modifiedByChange := statecheck.CompareValue(compare.ValuesDiffer()) + versionNoChange := statecheck.CompareValue(compare.ValuesSame()) + warehouseLocationNoChange := statecheck.CompareValue(compare.ValuesSame()) + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { + acctest.PreCheck(ctx, t) + testAccPreCheck(ctx, t) + }, + ErrorCheck: acctest.ErrorCheck(t, names.S3TablesServiceID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckTableDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccTableConfig_basic(rName, namespace, bucketName), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckTableExists(ctx, resourceName, &table), + resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), + resource.TestCheckResourceAttr(resourceName, names.AttrNamespace, namespace), + ), + ConfigStateChecks: []statecheck.StateCheck{ + createdAtNoChange.AddStateValue(resourceName, tfjsonpath.New(names.AttrCreatedAt)), + createdByNoChange.AddStateValue(resourceName, tfjsonpath.New("created_by")), + modifiedAtChange.AddStateValue(resourceName, tfjsonpath.New("modified_at")), + modifiedByChange.AddStateValue(resourceName, tfjsonpath.New("modified_by")), + versionNoChange.AddStateValue(resourceName, tfjsonpath.New("version_token")), + warehouseLocationNoChange.AddStateValue(resourceName, tfjsonpath.New("warehouse_location")), + }, + }, + { + Config: testAccTableConfig_basic(rNameUpdated, namespaceUpdated, bucketName), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckTableExists(ctx, resourceName, &table), + resource.TestCheckResourceAttr(resourceName, names.AttrName, rNameUpdated), + resource.TestCheckResourceAttr(resourceName, names.AttrNamespace, namespaceUpdated), + resource.TestCheckResourceAttrSet(resourceName, "modified_at"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "modified_by"), + ), + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionUpdate), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrName), knownvalue.StringExact(rNameUpdated)), + plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrNamespace), knownvalue.StringExact(namespaceUpdated)), + }, + PostApplyPreRefresh: []plancheck.PlanCheck{ + plancheck.ExpectEmptyPlan(), + }, + PostApplyPostRefresh: []plancheck.PlanCheck{ + plancheck.ExpectEmptyPlan(), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + createdAtNoChange.AddStateValue(resourceName, tfjsonpath.New(names.AttrCreatedAt)), + createdByNoChange.AddStateValue(resourceName, tfjsonpath.New("created_by")), + modifiedAtChange.AddStateValue(resourceName, tfjsonpath.New("modified_at")), + modifiedByChange.AddStateValue(resourceName, tfjsonpath.New("modified_by")), + versionNoChange.AddStateValue(resourceName, tfjsonpath.New("version_token")), + warehouseLocationNoChange.AddStateValue(resourceName, tfjsonpath.New("warehouse_location")), + }, + }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateIdFunc: testAccTableImportStateIdFunc(resourceName), + ImportStateVerify: true, + ImportStateVerifyIdentifierAttribute: names.AttrARN, + }, + }, + }) +} + +func TestAccS3TablesTable_maintenanceConfiguration(t *testing.T) { + ctx := acctest.Context(t) + + var table s3tables.GetTableOutput + bucketName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + namespace := strings.ReplaceAll(sdkacctest.RandomWithPrefix(acctest.ResourcePrefix), "-", "_") + rName := strings.ReplaceAll(sdkacctest.RandomWithPrefix(acctest.ResourcePrefix), "-", "_") + resourceName := "aws_s3tables_table.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { + acctest.PreCheck(ctx, t) + testAccPreCheck(ctx, t) + }, + ErrorCheck: acctest.ErrorCheck(t, names.S3TablesServiceID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckTableDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccTableConfig_maintenanceConfiguration(rName, namespace, bucketName, 64, 24, 2), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckTableExists(ctx, resourceName, &table), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New("maintenance_configuration"), knownvalue.ObjectExact(map[string]knownvalue.Check{ + "iceberg_compaction": knownvalue.ObjectExact(map[string]knownvalue.Check{ + "settings": knownvalue.ObjectExact(map[string]knownvalue.Check{ + "target_file_size_mb": knownvalue.Int32Exact(64), + }), + names.AttrStatus: tfknownvalue.StringExact(awstypes.MaintenanceStatusEnabled), + }), + "iceberg_snapshot_management": knownvalue.ObjectExact(map[string]knownvalue.Check{ + "settings": knownvalue.ObjectExact(map[string]knownvalue.Check{ + "max_snapshot_age_hours": knownvalue.Int32Exact(24), + "min_snapshots_to_keep": knownvalue.Int32Exact(2), + }), + names.AttrStatus: tfknownvalue.StringExact(awstypes.MaintenanceStatusEnabled), + }), + })), + }, + }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateIdFunc: testAccTableImportStateIdFunc(resourceName), + ImportStateVerify: true, + ImportStateVerifyIdentifierAttribute: names.AttrARN, + }, + { + Config: testAccTableConfig_maintenanceConfiguration(rName, namespace, bucketName, 128, 48, 1), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckTableExists(ctx, resourceName, &table), + ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New("maintenance_configuration"), knownvalue.ObjectExact(map[string]knownvalue.Check{ + "iceberg_compaction": knownvalue.ObjectExact(map[string]knownvalue.Check{ + "settings": knownvalue.ObjectExact(map[string]knownvalue.Check{ + "target_file_size_mb": knownvalue.Int32Exact(128), + }), + names.AttrStatus: tfknownvalue.StringExact(awstypes.MaintenanceStatusEnabled), + }), + "iceberg_snapshot_management": knownvalue.ObjectExact(map[string]knownvalue.Check{ + "settings": knownvalue.ObjectExact(map[string]knownvalue.Check{ + "max_snapshot_age_hours": knownvalue.Int32Exact(48), + "min_snapshots_to_keep": knownvalue.Int32Exact(1), + }), + names.AttrStatus: tfknownvalue.StringExact(awstypes.MaintenanceStatusEnabled), + }), + })), + }, + }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateIdFunc: testAccTableImportStateIdFunc(resourceName), + ImportStateVerify: true, + ImportStateVerifyIdentifierAttribute: names.AttrARN, + }, + }, + }) +} + +func testAccCheckTableDestroy(ctx context.Context) resource.TestCheckFunc { + return func(s *terraform.State) error { + conn := acctest.Provider.Meta().(*conns.AWSClient).S3TablesClient(ctx) + + for _, rs := range s.RootModule().Resources { + if rs.Type != "aws_s3tables_table" { + continue + } + + _, err := tfs3tables.FindTable(ctx, conn, + rs.Primary.Attributes["table_bucket_arn"], + rs.Primary.Attributes[names.AttrNamespace], + rs.Primary.Attributes[names.AttrName], + ) + if tfresource.NotFound(err) { + return nil + } + if err != nil { + return create.Error(names.S3Tables, create.ErrActionCheckingDestroyed, tfs3tables.ResNameTable, rs.Primary.ID, err) + } + + return create.Error(names.S3Tables, create.ErrActionCheckingDestroyed, tfs3tables.ResNameTable, rs.Primary.ID, errors.New("not destroyed")) + } + + return nil + } +} + +func testAccCheckTableExists(ctx context.Context, name string, table *s3tables.GetTableOutput) resource.TestCheckFunc { + return func(s *terraform.State) error { + rs, ok := s.RootModule().Resources[name] + if !ok { + return create.Error(names.S3Tables, create.ErrActionCheckingExistence, tfs3tables.ResNameTable, name, errors.New("not found")) + } + + if rs.Primary.Attributes["table_bucket_arn"] == "" || rs.Primary.Attributes[names.AttrNamespace] == "" || rs.Primary.Attributes[names.AttrName] == "" { + return create.Error(names.S3Tables, create.ErrActionCheckingExistence, tfs3tables.ResNameTable, name, errors.New("not set")) + } + + conn := acctest.Provider.Meta().(*conns.AWSClient).S3TablesClient(ctx) + + resp, err := tfs3tables.FindTable(ctx, conn, + rs.Primary.Attributes["table_bucket_arn"], + rs.Primary.Attributes[names.AttrNamespace], + rs.Primary.Attributes[names.AttrName], + ) + if err != nil { + return create.Error(names.S3Tables, create.ErrActionCheckingExistence, tfs3tables.ResNameTable, rs.Primary.ID, err) + } + + *table = *resp + + return nil + } +} + +func testAccTableImportStateIdFunc(resourceName string) resource.ImportStateIdFunc { + return func(s *terraform.State) (string, error) { + rs, ok := s.RootModule().Resources[resourceName] + if !ok { + return "", fmt.Errorf("not found: %s", resourceName) + } + + identifier := tfs3tables.TableIdentifier{ + TableBucketARN: rs.Primary.Attributes["table_bucket_arn"], + Namespace: rs.Primary.Attributes[names.AttrNamespace], + Name: rs.Primary.Attributes[names.AttrName], + } + + return identifier.String(), nil + } +} + +func testAccTableConfig_basic(rName, namespace, bucketName string) string { + return fmt.Sprintf(` +resource "aws_s3tables_table" "test" { + name = %[1]q + namespace = aws_s3tables_namespace.test.namespace + table_bucket_arn = aws_s3tables_namespace.test.table_bucket_arn + format = "ICEBERG" +} + +resource "aws_s3tables_namespace" "test" { + namespace = %[2]q + table_bucket_arn = aws_s3tables_table_bucket.test.arn + + lifecycle { + create_before_destroy = true + } +} + +resource "aws_s3tables_table_bucket" "test" { + name = %[3]q +} +`, rName, namespace, bucketName) +} + +func testAccTableConfig_maintenanceConfiguration(rName, namespace, bucketName string, targetSize, maxSnapshotAge, minSnapshots int32) string { + return fmt.Sprintf(` +resource "aws_s3tables_table" "test" { + name = %[1]q + namespace = aws_s3tables_namespace.test.namespace + table_bucket_arn = aws_s3tables_namespace.test.table_bucket_arn + format = "ICEBERG" + + maintenance_configuration = { + iceberg_compaction = { + settings = { + target_file_size_mb = %[4]d + } + status = "enabled" + } + iceberg_snapshot_management = { + settings = { + max_snapshot_age_hours = %[5]d + min_snapshots_to_keep = %[6]d + } + status = "enabled" + } + } +} + +resource "aws_s3tables_namespace" "test" { + namespace = %[2]q + table_bucket_arn = aws_s3tables_table_bucket.test.arn + + lifecycle { + create_before_destroy = true + } +} + +resource "aws_s3tables_table_bucket" "test" { + name = %[3]q +} +`, rName, namespace, bucketName, targetSize, maxSnapshotAge, minSnapshots) +} diff --git a/internal/service/s3tables/validate.go b/internal/service/s3tables/validate.go new file mode 100644 index 000000000000..be3a4af9db0d --- /dev/null +++ b/internal/service/s3tables/validate.go @@ -0,0 +1,17 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +package s3tables + +import ( + "github.com/YakDriver/regexache" + "github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator" +) + +var ( + stringMustContainLowerCaseLettersNumbersHypens = stringvalidator.RegexMatches(regexache.MustCompile(`^[0-9a-z-]+$`), "must contain only lowercase letters, numbers, or hyphens") + stringMustContainLowerCaseLettersNumbersUnderscores = stringvalidator.RegexMatches(regexache.MustCompile(`^[0-9a-z_]+$`), "must contain only lowercase letters, numbers, or underscores") + + stringMustStartWithLetterOrNumber = stringvalidator.RegexMatches(regexache.MustCompile(`^[0-9a-z]`), "must start with a letter or number") + stringMustEndWithLetterOrNumber = stringvalidator.RegexMatches(regexache.MustCompile(`[0-9a-z]$`), "must end with a letter or number") +) diff --git a/internal/service/sagemaker/app_image_config_test.go b/internal/service/sagemaker/app_image_config_test.go index cffdbbb3e986..717931ba9b5c 100644 --- a/internal/service/sagemaker/app_image_config_test.go +++ b/internal/service/sagemaker/app_image_config_test.go @@ -36,7 +36,7 @@ func TestAccSageMakerAppImageConfig_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckAppImageConfigExists(ctx, resourceName, &config), resource.TestCheckResourceAttr(resourceName, "app_image_config_name", rName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "sagemaker", fmt.Sprintf("app-image-config/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "sagemaker", fmt.Sprintf("app-image-config/%s", rName)), resource.TestCheckResourceAttr(resourceName, "kernel_gateway_image_config.#", "0"), resource.TestCheckResourceAttr(resourceName, "jupyter_lab_image_config.#", "0"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), diff --git a/internal/service/sagemaker/app_test.go b/internal/service/sagemaker/app_test.go index c981ef668bc0..f5a21a32dc34 100644 --- a/internal/service/sagemaker/app_test.go +++ b/internal/service/sagemaker/app_test.go @@ -12,6 +12,7 @@ import ( "github.com/aws/aws-sdk-go-v2/aws/arn" "github.com/aws/aws-sdk-go-v2/service/sagemaker" awstypes "github.com/aws/aws-sdk-go-v2/service/sagemaker/types" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-plugin-testing/terraform" @@ -40,7 +41,7 @@ func testAccDecodeAppID(t *testing.T) { arn := arn.ARN{ AccountID: "012345678912", Partition: acctest.Partition(), - Region: names.EUWest2RegionID, + Region: endpoints.EuWest2RegionID, Resource: "app/domain-id/user-profile-name/%s/app-name", Service: names.SageMaker, }.String() @@ -81,7 +82,7 @@ func testAccApp_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "app_name", rName), resource.TestCheckResourceAttrPair(resourceName, "domain_id", "aws_sagemaker_domain.test", names.AttrID), resource.TestCheckResourceAttrPair(resourceName, "user_profile_name", "aws_sagemaker_user_profile.test", "user_profile_name"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "sagemaker", regexache.MustCompile(`app/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "sagemaker", regexache.MustCompile(`app/.+`)), resource.TestCheckResourceAttr(resourceName, "resource_spec.#", "1"), resource.TestCheckResourceAttrSet(resourceName, "resource_spec.0.sagemaker_image_arn"), resource.TestCheckResourceAttr(resourceName, "resource_spec.0.instance_type", "system"), diff --git a/internal/service/sagemaker/code_repository_test.go b/internal/service/sagemaker/code_repository_test.go index 24f84a468b01..ac6502a23151 100644 --- a/internal/service/sagemaker/code_repository_test.go +++ b/internal/service/sagemaker/code_repository_test.go @@ -36,7 +36,7 @@ func TestAccSageMakerCodeRepository_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckCodeRepositoryExists(ctx, resourceName, &repo), resource.TestCheckResourceAttr(resourceName, "code_repository_name", rName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "sagemaker", fmt.Sprintf("code-repository/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "sagemaker", fmt.Sprintf("code-repository/%s", rName)), resource.TestCheckResourceAttr(resourceName, "git_config.#", "1"), resource.TestCheckResourceAttr(resourceName, "git_config.0.repository_url", "https://github.com/hashicorp/terraform-provider-aws.git"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), @@ -68,7 +68,7 @@ func TestAccSageMakerCodeRepository_Git_branch(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckCodeRepositoryExists(ctx, resourceName, &repo), resource.TestCheckResourceAttr(resourceName, "code_repository_name", rName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "sagemaker", fmt.Sprintf("code-repository/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "sagemaker", fmt.Sprintf("code-repository/%s", rName)), resource.TestCheckResourceAttr(resourceName, "git_config.#", "1"), resource.TestCheckResourceAttr(resourceName, "git_config.0.repository_url", "https://github.com/hashicorp/terraform-provider-aws.git"), resource.TestCheckResourceAttr(resourceName, "git_config.0.branch", "master"), @@ -100,7 +100,7 @@ func TestAccSageMakerCodeRepository_Git_secret(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckCodeRepositoryExists(ctx, resourceName, &repo), resource.TestCheckResourceAttr(resourceName, "code_repository_name", rName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "sagemaker", fmt.Sprintf("code-repository/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "sagemaker", fmt.Sprintf("code-repository/%s", rName)), resource.TestCheckResourceAttr(resourceName, "git_config.#", "1"), resource.TestCheckResourceAttr(resourceName, "git_config.0.repository_url", "https://github.com/hashicorp/terraform-provider-aws.git"), resource.TestCheckResourceAttrPair(resourceName, "git_config.0.secret_arn", "aws_secretsmanager_secret.test", names.AttrARN), @@ -116,7 +116,7 @@ func TestAccSageMakerCodeRepository_Git_secret(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckCodeRepositoryExists(ctx, resourceName, &repo), resource.TestCheckResourceAttr(resourceName, "code_repository_name", rName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "sagemaker", fmt.Sprintf("code-repository/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "sagemaker", fmt.Sprintf("code-repository/%s", rName)), resource.TestCheckResourceAttr(resourceName, "git_config.#", "1"), resource.TestCheckResourceAttr(resourceName, "git_config.0.repository_url", "https://github.com/hashicorp/terraform-provider-aws.git"), resource.TestCheckResourceAttrPair(resourceName, "git_config.0.secret_arn", "aws_secretsmanager_secret.test2", names.AttrARN), diff --git a/internal/service/sagemaker/data_quality_job_definition_test.go b/internal/service/sagemaker/data_quality_job_definition_test.go index 0f67e4236f04..28807313a1e9 100644 --- a/internal/service/sagemaker/data_quality_job_definition_test.go +++ b/internal/service/sagemaker/data_quality_job_definition_test.go @@ -35,7 +35,7 @@ func TestAccSageMakerDataQualityJobDefinition_endpoint(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckDataQualityJobDefinitionExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "sagemaker", fmt.Sprintf("data-quality-job-definition/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "sagemaker", fmt.Sprintf("data-quality-job-definition/%s", rName)), resource.TestCheckResourceAttr(resourceName, "data_quality_app_specification.#", "1"), resource.TestCheckResourceAttrPair(resourceName, "data_quality_app_specification.0.image_uri", "data.aws_sagemaker_prebuilt_ecr_image.monitor", "registry_path"), resource.TestCheckResourceAttr(resourceName, "data_quality_job_input.#", "1"), diff --git a/internal/service/sagemaker/device_fleet_test.go b/internal/service/sagemaker/device_fleet_test.go index 3361e2d57e87..3d04ecd4bedf 100644 --- a/internal/service/sagemaker/device_fleet_test.go +++ b/internal/service/sagemaker/device_fleet_test.go @@ -38,7 +38,7 @@ func TestAccSageMakerDeviceFleet_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckDeviceFleetExists(ctx, resourceName, &deviceFleet), resource.TestCheckResourceAttr(resourceName, "device_fleet_name", rName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "sagemaker", fmt.Sprintf("device-fleet/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "sagemaker", fmt.Sprintf("device-fleet/%s", rName)), resource.TestCheckResourceAttrPair(resourceName, names.AttrRoleARN, "aws_iam_role.test", names.AttrARN), resource.TestCheckResourceAttr(resourceName, "output_config.#", "1"), resource.TestCheckResourceAttr(resourceName, "output_config.0.s3_output_location", fmt.Sprintf("s3://%s/prefix/", rName)), diff --git a/internal/service/sagemaker/device_test.go b/internal/service/sagemaker/device_test.go index 31146de8ad6f..fdd7abacdbc8 100644 --- a/internal/service/sagemaker/device_test.go +++ b/internal/service/sagemaker/device_test.go @@ -38,7 +38,7 @@ func TestAccSageMakerDevice_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckDeviceExists(ctx, resourceName, &device), resource.TestCheckResourceAttr(resourceName, "device_fleet_name", rName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "sagemaker", fmt.Sprintf("device-fleet/%[1]s/device/%[1]s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "sagemaker", fmt.Sprintf("device-fleet/%[1]s/device/%[1]s", rName)), resource.TestCheckResourceAttr(resourceName, "device.#", "1"), resource.TestCheckResourceAttr(resourceName, "device.0.device_name", rName), ), diff --git a/internal/service/sagemaker/domain_test.go b/internal/service/sagemaker/domain_test.go index e2210f043220..d1b5f06129b4 100644 --- a/internal/service/sagemaker/domain_test.go +++ b/internal/service/sagemaker/domain_test.go @@ -45,7 +45,7 @@ func testAccDomain_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "default_user_settings.#", "1"), resource.TestCheckResourceAttr(resourceName, "default_user_settings.0.auto_mount_home_efs", "Enabled"), resource.TestCheckResourceAttrPair(resourceName, "default_user_settings.0.execution_role", "aws_iam_role.test", names.AttrARN), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "sagemaker", regexache.MustCompile(`domain/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "sagemaker", regexache.MustCompile(`domain/.+`)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttr(resourceName, "tag_propagation", "DISABLED"), resource.TestCheckResourceAttrPair(resourceName, names.AttrVPCID, "aws_vpc.test", names.AttrID), @@ -1271,7 +1271,7 @@ func testAccDomain_defaultUserSettingsUpdated(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "subnet_ids.#", "1"), resource.TestCheckResourceAttr(resourceName, "default_user_settings.#", "1"), resource.TestCheckResourceAttrPair(resourceName, "default_user_settings.0.execution_role", "aws_iam_role.test", names.AttrARN), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "sagemaker", regexache.MustCompile(`domain/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "sagemaker", regexache.MustCompile(`domain/.+`)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttrPair(resourceName, names.AttrVPCID, "aws_vpc.test", names.AttrID), resource.TestCheckResourceAttrSet(resourceName, names.AttrURL), diff --git a/internal/service/sagemaker/endpoint_test.go b/internal/service/sagemaker/endpoint_test.go index 3cf4823ac6be..fe197b93dd6c 100644 --- a/internal/service/sagemaker/endpoint_test.go +++ b/internal/service/sagemaker/endpoint_test.go @@ -34,7 +34,7 @@ func TestAccSageMakerEndpoint_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckEndpointExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "sagemaker", fmt.Sprintf("endpoint/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "sagemaker", fmt.Sprintf("endpoint/%s", rName)), resource.TestCheckResourceAttr(resourceName, "endpoint_config_name", rName), resource.TestCheckResourceAttr(resourceName, "deployment_config.#", "0"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), diff --git a/internal/service/sagemaker/feature_group_test.go b/internal/service/sagemaker/feature_group_test.go index c4da46c2b40c..45d512fa037e 100644 --- a/internal/service/sagemaker/feature_group_test.go +++ b/internal/service/sagemaker/feature_group_test.go @@ -69,7 +69,7 @@ func testAccFeatureGroup_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "feature_definition.#", "1"), resource.TestCheckResourceAttr(resourceName, "feature_definition.0.feature_name", rName), resource.TestCheckResourceAttr(resourceName, "feature_definition.0.feature_type", "String"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "sagemaker", fmt.Sprintf("feature-group/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "sagemaker", fmt.Sprintf("feature-group/%s", rName)), resource.TestCheckResourceAttr(resourceName, "offline_store_config.#", "0"), ), }, diff --git a/internal/service/sagemaker/flow_definition_test.go b/internal/service/sagemaker/flow_definition_test.go index 7988af5dae3d..dd1062f79601 100644 --- a/internal/service/sagemaker/flow_definition_test.go +++ b/internal/service/sagemaker/flow_definition_test.go @@ -36,7 +36,7 @@ func testAccFlowDefinition_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckFlowDefinitionExists(ctx, resourceName, &flowDefinition), resource.TestCheckResourceAttr(resourceName, "flow_definition_name", rName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "sagemaker", fmt.Sprintf("flow-definition/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "sagemaker", fmt.Sprintf("flow-definition/%s", rName)), resource.TestCheckResourceAttrPair(resourceName, names.AttrRoleARN, "aws_iam_role.test", names.AttrARN), resource.TestCheckResourceAttr(resourceName, "human_loop_request_source.#", "0"), resource.TestCheckResourceAttr(resourceName, "human_loop_activation_config.#", "0"), diff --git a/internal/service/sagemaker/hub_test.go b/internal/service/sagemaker/hub_test.go index d19afdee40eb..117615bf2214 100644 --- a/internal/service/sagemaker/hub_test.go +++ b/internal/service/sagemaker/hub_test.go @@ -40,7 +40,7 @@ func TestAccSageMakerHub_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "hub_description", rName), resource.TestCheckResourceAttr(resourceName, "hub_search_keywords.#", "0"), resource.TestCheckResourceAttr(resourceName, "s3_storage_config.#", "0"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "sagemaker", fmt.Sprintf("hub/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "sagemaker", fmt.Sprintf("hub/%s", rName)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -55,7 +55,7 @@ func TestAccSageMakerHub_basic(t *testing.T) { testAccCheckHubExists(ctx, resourceName, &mpg), resource.TestCheckResourceAttr(resourceName, "hub_name", rName), resource.TestCheckResourceAttr(resourceName, "hub_description", rNameUpdated), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "sagemaker", fmt.Sprintf("hub/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "sagemaker", fmt.Sprintf("hub/%s", rName)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, diff --git a/internal/service/sagemaker/human_task_ui_test.go b/internal/service/sagemaker/human_task_ui_test.go index a2330e58ae50..a1340ce2958b 100644 --- a/internal/service/sagemaker/human_task_ui_test.go +++ b/internal/service/sagemaker/human_task_ui_test.go @@ -36,7 +36,7 @@ func TestAccSageMakerHumanTaskUI_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckHumanTaskUIExists(ctx, resourceName, &humanTaskUi), resource.TestCheckResourceAttr(resourceName, "human_task_ui_name", rName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "sagemaker", fmt.Sprintf("human-task-ui/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "sagemaker", fmt.Sprintf("human-task-ui/%s", rName)), resource.TestCheckResourceAttr(resourceName, "ui_template.#", "1"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), diff --git a/internal/service/sagemaker/image_test.go b/internal/service/sagemaker/image_test.go index c27d47c59f8e..257ff96c9afd 100644 --- a/internal/service/sagemaker/image_test.go +++ b/internal/service/sagemaker/image_test.go @@ -36,7 +36,7 @@ func TestAccSageMakerImage_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckImageExists(ctx, resourceName, &image), resource.TestCheckResourceAttr(resourceName, "image_name", rName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "sagemaker", fmt.Sprintf("image/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "sagemaker", fmt.Sprintf("image/%s", rName)), resource.TestCheckResourceAttrPair(resourceName, names.AttrRoleARN, "aws_iam_role.test", names.AttrARN), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), diff --git a/internal/service/sagemaker/image_version_test.go b/internal/service/sagemaker/image_version_test.go index 869f6eb94538..fbd7be7cd248 100644 --- a/internal/service/sagemaker/image_version_test.go +++ b/internal/service/sagemaker/image_version_test.go @@ -44,8 +44,8 @@ func TestAccSageMakerImageVersion_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "image_name", rName), resource.TestCheckResourceAttr(resourceName, "base_image", baseImage), resource.TestCheckResourceAttr(resourceName, names.AttrVersion, "1"), - acctest.CheckResourceAttrRegionalARN(resourceName, "image_arn", "sagemaker", fmt.Sprintf("image/%s", rName)), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "sagemaker", fmt.Sprintf("image-version/%s/1", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, "image_arn", "sagemaker", fmt.Sprintf("image/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "sagemaker", fmt.Sprintf("image-version/%s/1", rName)), resource.TestCheckResourceAttrSet(resourceName, "container_image"), ), }, diff --git a/internal/service/sagemaker/mlflow_tracking_server_test.go b/internal/service/sagemaker/mlflow_tracking_server_test.go index 45a718253dba..495dc8ceb501 100644 --- a/internal/service/sagemaker/mlflow_tracking_server_test.go +++ b/internal/service/sagemaker/mlflow_tracking_server_test.go @@ -40,7 +40,7 @@ func TestAccSageMakerMlflowTrackingServer_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "tracking_server_size", "Small"), resource.TestCheckResourceAttrSet(resourceName, "tracking_server_url"), resource.TestCheckResourceAttrPair(resourceName, names.AttrRoleARN, "aws_iam_role.test", names.AttrARN), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "sagemaker", fmt.Sprintf("mlflow-tracking-server/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "sagemaker", fmt.Sprintf("mlflow-tracking-server/%s", rName)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -59,7 +59,7 @@ func TestAccSageMakerMlflowTrackingServer_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "weekly_maintenance_window_start", "Sun:01:00"), resource.TestCheckResourceAttrSet(resourceName, "tracking_server_url"), resource.TestCheckResourceAttrPair(resourceName, names.AttrRoleARN, "aws_iam_role.test", names.AttrARN), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "sagemaker", fmt.Sprintf("mlflow-tracking-server/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "sagemaker", fmt.Sprintf("mlflow-tracking-server/%s", rName)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, diff --git a/internal/service/sagemaker/model_package_group_test.go b/internal/service/sagemaker/model_package_group_test.go index 8f1aa5105e11..c39507ab3b5f 100644 --- a/internal/service/sagemaker/model_package_group_test.go +++ b/internal/service/sagemaker/model_package_group_test.go @@ -36,7 +36,7 @@ func TestAccSageMakerModelPackageGroup_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckModelPackageGroupExists(ctx, resourceName, &mpg), resource.TestCheckResourceAttr(resourceName, "model_package_group_name", rName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "sagemaker", fmt.Sprintf("model-package-group/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "sagemaker", fmt.Sprintf("model-package-group/%s", rName)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, diff --git a/internal/service/sagemaker/model_test.go b/internal/service/sagemaker/model_test.go index 7b897be51e88..1d69097090f5 100644 --- a/internal/service/sagemaker/model_test.go +++ b/internal/service/sagemaker/model_test.go @@ -39,7 +39,7 @@ func TestAccSageMakerModel_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "primary_container.0.mode", "SingleModel"), resource.TestCheckResourceAttr(resourceName, "primary_container.0.environment.%", "0"), resource.TestCheckResourceAttrPair(resourceName, names.AttrExecutionRoleARN, "aws_iam_role.test", names.AttrARN), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "sagemaker", fmt.Sprintf("model/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "sagemaker", fmt.Sprintf("model/%s", rName)), resource.TestCheckResourceAttr(resourceName, "enable_network_isolation", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttr(resourceName, "inference_execution_config.#", "0"), diff --git a/internal/service/sagemaker/monitoring_schedule_test.go b/internal/service/sagemaker/monitoring_schedule_test.go index cea6a589fd80..72dae7fb7e0f 100644 --- a/internal/service/sagemaker/monitoring_schedule_test.go +++ b/internal/service/sagemaker/monitoring_schedule_test.go @@ -34,7 +34,7 @@ func TestAccSageMakerMonitoringSchedule_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckMonitoringScheduleExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "sagemaker", fmt.Sprintf("monitoring-schedule/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "sagemaker", fmt.Sprintf("monitoring-schedule/%s", rName)), resource.TestCheckResourceAttr(resourceName, "monitoring_schedule_config.#", "1"), resource.TestCheckResourceAttrPair(resourceName, "monitoring_schedule_config.0.monitoring_job_definition_name", "aws_sagemaker_data_quality_job_definition.test", names.AttrName), resource.TestCheckResourceAttr(resourceName, "monitoring_schedule_config.0.monitoring_type", "DataQuality"), diff --git a/internal/service/sagemaker/notebook_instance_lifecycle_configuration_test.go b/internal/service/sagemaker/notebook_instance_lifecycle_configuration_test.go index d885e19d0209..d42a4af9b8e8 100644 --- a/internal/service/sagemaker/notebook_instance_lifecycle_configuration_test.go +++ b/internal/service/sagemaker/notebook_instance_lifecycle_configuration_test.go @@ -40,7 +40,7 @@ func TestAccSageMakerNotebookInstanceLifecycleConfiguration_basic(t *testing.T) resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckNoResourceAttr(resourceName, "on_create"), resource.TestCheckNoResourceAttr(resourceName, "on_start"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "sagemaker", fmt.Sprintf("notebook-instance-lifecycle-config/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "sagemaker", fmt.Sprintf("notebook-instance-lifecycle-config/%s", rName)), ), }, { diff --git a/internal/service/sagemaker/pipeline_test.go b/internal/service/sagemaker/pipeline_test.go index 249334e7d56d..6c4fe97db1e0 100644 --- a/internal/service/sagemaker/pipeline_test.go +++ b/internal/service/sagemaker/pipeline_test.go @@ -39,7 +39,7 @@ func TestAccSageMakerPipeline_basic(t *testing.T) { testAccCheckPipelineExists(ctx, resourceName, &pipeline), resource.TestCheckResourceAttr(resourceName, "pipeline_name", rName), resource.TestCheckResourceAttr(resourceName, "pipeline_display_name", rName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "sagemaker", regexache.MustCompile(`pipeline/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "sagemaker", regexache.MustCompile(`pipeline/.+`)), resource.TestCheckResourceAttrPair(resourceName, names.AttrRoleARN, "aws_iam_role.test", names.AttrARN), resource.TestCheckResourceAttr(resourceName, "parallelism_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), @@ -56,7 +56,7 @@ func TestAccSageMakerPipeline_basic(t *testing.T) { testAccCheckPipelineExists(ctx, resourceName, &pipeline), resource.TestCheckResourceAttr(resourceName, "pipeline_name", rName), resource.TestCheckResourceAttr(resourceName, "pipeline_display_name", rNameUpdated), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "sagemaker", regexache.MustCompile(`pipeline/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "sagemaker", regexache.MustCompile(`pipeline/.+`)), resource.TestCheckResourceAttrPair(resourceName, names.AttrRoleARN, "aws_iam_role.test", names.AttrARN), resource.TestCheckResourceAttr(resourceName, "parallelism_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), diff --git a/internal/service/sagemaker/prebuilt_ecr_image_data_source.go b/internal/service/sagemaker/prebuilt_ecr_image_data_source.go index 082b45b9aa05..30610a317f3a 100644 --- a/internal/service/sagemaker/prebuilt_ecr_image_data_source.go +++ b/internal/service/sagemaker/prebuilt_ecr_image_data_source.go @@ -7,6 +7,7 @@ import ( "context" "fmt" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" @@ -188,129 +189,129 @@ const ( // https://github.com/aws/sagemaker-python-sdk/blob/master/src/sagemaker/image_uri_config/seq2seq.json var prebuiltECRImageIDByRegion_blazing = map[string]string{ - names.AFSouth1RegionID: "455444449433", - names.APEast1RegionID: "286214385809", - names.APNortheast1RegionID: "501404015308", - names.APNortheast2RegionID: "306986355934", - names.APNortheast3RegionID: "867004704886", - names.APSouth1RegionID: "991648021394", - names.APSouth2RegionID: "628508329040", - names.APSoutheast1RegionID: "475088953585", - names.APSoutheast2RegionID: "544295431143", - names.APSoutheast3RegionID: "951798379941", - names.APSoutheast4RegionID: "106583098589", - names.CACentral1RegionID: "469771592824", - names.CAWest1RegionID: "190319476487", - names.CNNorth1RegionID: "390948362332", - names.CNNorthwest1RegionID: "387376663083", - names.EUCentral1RegionID: "813361260812", - names.EUCentral2RegionID: "680994064768", - names.EUNorth1RegionID: "669576153137", - names.EUSouth1RegionID: "257386234256", - names.EUSouth2RegionID: "104374241257", - names.EUWest1RegionID: "685385470294", - names.EUWest2RegionID: "644912444149", - names.EUWest3RegionID: "749696950732", - names.ILCentral1RegionID: "898809789911", - names.MECentral1RegionID: "272398656194", - names.MESouth1RegionID: "249704162688", - names.SAEast1RegionID: "855470959533", - names.USEast1RegionID: "811284229777", - names.USEast2RegionID: "825641698319", - names.USGovEast1RegionID: "237065988967", - names.USGovWest1RegionID: "226302683700", - names.USISOEast1RegionID: "490574956308", - names.USISOBEast1RegionID: "765400339828", - names.USWest1RegionID: "632365934929", - names.USWest2RegionID: "433757028032", + endpoints.AfSouth1RegionID: "455444449433", + endpoints.ApEast1RegionID: "286214385809", + endpoints.ApNortheast1RegionID: "501404015308", + endpoints.ApNortheast2RegionID: "306986355934", + endpoints.ApNortheast3RegionID: "867004704886", + endpoints.ApSouth1RegionID: "991648021394", + endpoints.ApSouth2RegionID: "628508329040", + endpoints.ApSoutheast1RegionID: "475088953585", + endpoints.ApSoutheast2RegionID: "544295431143", + endpoints.ApSoutheast3RegionID: "951798379941", + endpoints.ApSoutheast4RegionID: "106583098589", + endpoints.CaCentral1RegionID: "469771592824", + endpoints.CaWest1RegionID: "190319476487", + endpoints.CnNorth1RegionID: "390948362332", + endpoints.CnNorthwest1RegionID: "387376663083", + endpoints.EuCentral1RegionID: "813361260812", + endpoints.EuCentral2RegionID: "680994064768", + endpoints.EuNorth1RegionID: "669576153137", + endpoints.EuSouth1RegionID: "257386234256", + endpoints.EuSouth2RegionID: "104374241257", + endpoints.EuWest1RegionID: "685385470294", + endpoints.EuWest2RegionID: "644912444149", + endpoints.EuWest3RegionID: "749696950732", + endpoints.IlCentral1RegionID: "898809789911", + endpoints.MeCentral1RegionID: "272398656194", + endpoints.MeSouth1RegionID: "249704162688", + endpoints.SaEast1RegionID: "855470959533", + endpoints.UsEast1RegionID: "811284229777", + endpoints.UsEast2RegionID: "825641698319", + endpoints.UsGovEast1RegionID: "237065988967", + endpoints.UsGovWest1RegionID: "226302683700", + endpoints.UsIsoEast1RegionID: "490574956308", + endpoints.UsIsobEast1RegionID: "765400339828", + endpoints.UsWest1RegionID: "632365934929", + endpoints.UsWest2RegionID: "433757028032", } // https://github.com/aws/sagemaker-python-sdk/blob/master/src/sagemaker/image_uri_config/clarify.json var prebuiltECRImageIDByRegion_clarify = map[string]string{ - names.AFSouth1RegionID: "811711786498", - names.APEast1RegionID: "098760798382", - names.APNortheast1RegionID: "377024640650", - names.APNortheast2RegionID: "263625296855", - names.APNortheast3RegionID: "912233562940", - names.APSouth1RegionID: "452307495513", - names.APSoutheast1RegionID: "834264404009", - names.APSoutheast2RegionID: "007051062584", - names.APSoutheast3RegionID: "705930551576", - names.CACentral1RegionID: "675030665977", - names.CNNorth1RegionID: "122526803553", - names.CNNorthwest1RegionID: "122578899357", - names.EUCentral1RegionID: "017069133835", - names.EUNorth1RegionID: "763603941244", - names.EUSouth1RegionID: "638885417683", - names.EUWest1RegionID: "131013547314", - names.EUWest2RegionID: "440796970383", - names.EUWest3RegionID: "341593696636", - names.MESouth1RegionID: "835444307964", - names.SAEast1RegionID: "520018980103", - names.USEast1RegionID: "205585389593", - names.USEast2RegionID: "211330385671", - names.USGovWest1RegionID: "598674086554", - names.USWest1RegionID: "740489534195", - names.USWest2RegionID: "306415355426", + endpoints.AfSouth1RegionID: "811711786498", + endpoints.ApEast1RegionID: "098760798382", + endpoints.ApNortheast1RegionID: "377024640650", + endpoints.ApNortheast2RegionID: "263625296855", + endpoints.ApNortheast3RegionID: "912233562940", + endpoints.ApSouth1RegionID: "452307495513", + endpoints.ApSoutheast1RegionID: "834264404009", + endpoints.ApSoutheast2RegionID: "007051062584", + endpoints.ApSoutheast3RegionID: "705930551576", + endpoints.CaCentral1RegionID: "675030665977", + endpoints.CnNorth1RegionID: "122526803553", + endpoints.CnNorthwest1RegionID: "122578899357", + endpoints.EuCentral1RegionID: "017069133835", + endpoints.EuNorth1RegionID: "763603941244", + endpoints.EuSouth1RegionID: "638885417683", + endpoints.EuWest1RegionID: "131013547314", + endpoints.EuWest2RegionID: "440796970383", + endpoints.EuWest3RegionID: "341593696636", + endpoints.MeSouth1RegionID: "835444307964", + endpoints.SaEast1RegionID: "520018980103", + endpoints.UsEast1RegionID: "205585389593", + endpoints.UsEast2RegionID: "211330385671", + endpoints.UsGovWest1RegionID: "598674086554", + endpoints.UsWest1RegionID: "740489534195", + endpoints.UsWest2RegionID: "306415355426", } // https://github.com/aws/sagemaker-python-sdk/blob/master/src/sagemaker/image_uri_config/data-wrangler.json var prebuiltECRImageIDByRegion_dataWrangler = map[string]string{ - names.AFSouth1RegionID: "143210264188", - names.APEast1RegionID: "707077482487", - names.APNortheast1RegionID: "649008135260", - names.APNortheast2RegionID: "131546521161", - names.APNortheast3RegionID: "913387583493", - names.APSouth1RegionID: "089933028263", - names.APSoutheast1RegionID: "119527597002", - names.APSoutheast2RegionID: "422173101802", - names.CACentral1RegionID: "557239378090", - names.CNNorth1RegionID: "245909111842", - names.CNNorthwest1RegionID: "249157047649", - names.EUCentral1RegionID: "024640144536", - names.EUNorth1RegionID: "054986407534", - names.EUSouth1RegionID: "488287956546", - names.EUWest1RegionID: "245179582081", - names.EUWest2RegionID: "894491911112", - names.EUWest3RegionID: "807237891255", - names.ILCentral1RegionID: "406833011540", - names.MESouth1RegionID: "376037874950", - names.SAEast1RegionID: "424196993095", - names.USEast1RegionID: "663277389841", - names.USEast2RegionID: "415577184552", - names.USWest1RegionID: "926135532090", - names.USWest2RegionID: "174368400705", + endpoints.AfSouth1RegionID: "143210264188", + endpoints.ApEast1RegionID: "707077482487", + endpoints.ApNortheast1RegionID: "649008135260", + endpoints.ApNortheast2RegionID: "131546521161", + endpoints.ApNortheast3RegionID: "913387583493", + endpoints.ApSouth1RegionID: "089933028263", + endpoints.ApSoutheast1RegionID: "119527597002", + endpoints.ApSoutheast2RegionID: "422173101802", + endpoints.CaCentral1RegionID: "557239378090", + endpoints.CnNorth1RegionID: "245909111842", + endpoints.CnNorthwest1RegionID: "249157047649", + endpoints.EuCentral1RegionID: "024640144536", + endpoints.EuNorth1RegionID: "054986407534", + endpoints.EuSouth1RegionID: "488287956546", + endpoints.EuWest1RegionID: "245179582081", + endpoints.EuWest2RegionID: "894491911112", + endpoints.EuWest3RegionID: "807237891255", + endpoints.IlCentral1RegionID: "406833011540", + endpoints.MeSouth1RegionID: "376037874950", + endpoints.SaEast1RegionID: "424196993095", + endpoints.UsEast1RegionID: "663277389841", + endpoints.UsEast2RegionID: "415577184552", + endpoints.UsWest1RegionID: "926135532090", + endpoints.UsWest2RegionID: "174368400705", } // https://github.com/aws/sagemaker-python-sdk/blob/master/src/sagemaker/image_uri_config/debugger.json var prebuiltECRImageIDByRegion_debugger = map[string]string{ - names.AFSouth1RegionID: "314341159256", - names.APEast1RegionID: "199566480951", - names.APNortheast1RegionID: "430734990657", - names.APNortheast2RegionID: "578805364391", - names.APNortheast3RegionID: "479947661362", - names.APSouth1RegionID: "904829902805", - names.APSoutheast1RegionID: "972752614525", - names.APSoutheast2RegionID: "184798709955", - names.CACentral1RegionID: "519511493484", - names.CNNorth1RegionID: "618459771430", - names.CNNorthwest1RegionID: "658757709296", - names.EUCentral1RegionID: "482524230118", - names.EUNorth1RegionID: "314864569078", - names.EUSouth1RegionID: "563282790590", - names.EUWest1RegionID: "929884845733", - names.EUWest2RegionID: "250201462417", - names.EUWest3RegionID: "447278800020", - names.MESouth1RegionID: "986000313247", - names.SAEast1RegionID: "818342061345", - names.USEast1RegionID: "503895931360", - names.USEast2RegionID: "915447279597", - names.USGovWest1RegionID: "515509971035", - names.USWest1RegionID: "685455198987", - names.USWest2RegionID: "895741380848", + endpoints.AfSouth1RegionID: "314341159256", + endpoints.ApEast1RegionID: "199566480951", + endpoints.ApNortheast1RegionID: "430734990657", + endpoints.ApNortheast2RegionID: "578805364391", + endpoints.ApNortheast3RegionID: "479947661362", + endpoints.ApSouth1RegionID: "904829902805", + endpoints.ApSoutheast1RegionID: "972752614525", + endpoints.ApSoutheast2RegionID: "184798709955", + endpoints.CaCentral1RegionID: "519511493484", + endpoints.CnNorth1RegionID: "618459771430", + endpoints.CnNorthwest1RegionID: "658757709296", + endpoints.EuCentral1RegionID: "482524230118", + endpoints.EuNorth1RegionID: "314864569078", + endpoints.EuSouth1RegionID: "563282790590", + endpoints.EuWest1RegionID: "929884845733", + endpoints.EuWest2RegionID: "250201462417", + endpoints.EuWest3RegionID: "447278800020", + endpoints.MeSouth1RegionID: "986000313247", + endpoints.SaEast1RegionID: "818342061345", + endpoints.UsEast1RegionID: "503895931360", + endpoints.UsEast2RegionID: "915447279597", + endpoints.UsGovWest1RegionID: "515509971035", + endpoints.UsWest1RegionID: "685455198987", + endpoints.UsWest2RegionID: "895741380848", } // https://github.com/aws/sagemaker-python-sdk/blob/master/src/sagemaker/image_uri_config/inferentia-mxnet.json @@ -322,33 +323,33 @@ var prebuiltECRImageIDByRegion_debugger = map[string]string{ // https://github.com/aws/sagemaker-python-sdk/blob/master/src/sagemaker/image_uri_config/xgboost-neo.json var prebuiltECRImageIDByRegion_inferentiaNeo = map[string]string{ - names.AFSouth1RegionID: "774647643957", - names.APEast1RegionID: "110948597952", - names.APNortheast1RegionID: "941853720454", - names.APNortheast2RegionID: "151534178276", - names.APNortheast3RegionID: "925152966179", - names.APSouth1RegionID: "763008648453", - names.APSoutheast1RegionID: "324986816169", - names.APSoutheast2RegionID: "355873309152", - names.CACentral1RegionID: "464438896020", - names.CNNorth1RegionID: "472730292857", - names.CNNorthwest1RegionID: "474822919863", - names.EUCentral1RegionID: "746233611703", - names.EUNorth1RegionID: "601324751636", - names.EUSouth1RegionID: "966458181534", - names.EUWest1RegionID: "802834080501", - names.EUWest2RegionID: "205493899709", - names.EUWest3RegionID: "254080097072", - names.ILCentral1RegionID: "275950707576", - names.MESouth1RegionID: "836785723513", - names.SAEast1RegionID: "756306329178", - names.USEast1RegionID: "785573368785", - names.USEast2RegionID: "007439368137", - names.USGovWest1RegionID: "263933020539", - names.USISOEast1RegionID: "167761179201", - names.USISOBEast1RegionID: "406031935815", - names.USWest1RegionID: "710691900526", - names.USWest2RegionID: "301217895009", + endpoints.AfSouth1RegionID: "774647643957", + endpoints.ApEast1RegionID: "110948597952", + endpoints.ApNortheast1RegionID: "941853720454", + endpoints.ApNortheast2RegionID: "151534178276", + endpoints.ApNortheast3RegionID: "925152966179", + endpoints.ApSouth1RegionID: "763008648453", + endpoints.ApSoutheast1RegionID: "324986816169", + endpoints.ApSoutheast2RegionID: "355873309152", + endpoints.CaCentral1RegionID: "464438896020", + endpoints.CnNorth1RegionID: "472730292857", + endpoints.CnNorthwest1RegionID: "474822919863", + endpoints.EuCentral1RegionID: "746233611703", + endpoints.EuNorth1RegionID: "601324751636", + endpoints.EuSouth1RegionID: "966458181534", + endpoints.EuWest1RegionID: "802834080501", + endpoints.EuWest2RegionID: "205493899709", + endpoints.EuWest3RegionID: "254080097072", + endpoints.IlCentral1RegionID: "275950707576", + endpoints.MeSouth1RegionID: "836785723513", + endpoints.SaEast1RegionID: "756306329178", + endpoints.UsEast1RegionID: "785573368785", + endpoints.UsEast2RegionID: "007439368137", + endpoints.UsGovWest1RegionID: "263933020539", + endpoints.UsIsoEast1RegionID: "167761179201", + endpoints.UsIsobEast1RegionID: "406031935815", + endpoints.UsWest1RegionID: "710691900526", + endpoints.UsWest2RegionID: "301217895009", } // https://github.com/aws/sagemaker-python-sdk/blob/master/src/sagemaker/image_uri_config/chainer.json @@ -359,31 +360,31 @@ var prebuiltECRImageIDByRegion_inferentiaNeo = map[string]string{ // https://github.com/aws/sagemaker-python-sdk/blob/master/src/sagemaker/image_uri_config/tensorflow.json var prebuiltECRImageIDByRegion_SageMakerCustom = map[string]string{ // nosemgrep:ci.sagemaker-in-var-name - names.AFSouth1RegionID: "313743910680", - names.APEast1RegionID: "057415533634", - names.APNortheast1RegionID: "520713654638", - names.APNortheast2RegionID: "520713654638", - names.APSouth1RegionID: "520713654638", - names.APSoutheast1RegionID: "520713654638", - names.APSoutheast2RegionID: "520713654638", - names.CACentral1RegionID: "520713654638", - names.CNNorth1RegionID: "422961961927", - names.CNNorthwest1RegionID: "423003514399", - names.EUCentral1RegionID: "520713654638", - names.EUNorth1RegionID: "520713654638", - names.EUSouth1RegionID: "048378556238", - names.EUWest1RegionID: "520713654638", - names.EUWest2RegionID: "520713654638", - names.EUWest3RegionID: "520713654638", - names.MESouth1RegionID: "724002660598", - names.SAEast1RegionID: "520713654638", - names.USEast1RegionID: "520713654638", - names.USEast2RegionID: "520713654638", - names.USGovWest1RegionID: "246785580436", - names.USISOEast1RegionID: "744548109606", - names.USISOBEast1RegionID: "453391408702", - names.USWest1RegionID: "520713654638", - names.USWest2RegionID: "520713654638", + endpoints.AfSouth1RegionID: "313743910680", + endpoints.ApEast1RegionID: "057415533634", + endpoints.ApNortheast1RegionID: "520713654638", + endpoints.ApNortheast2RegionID: "520713654638", + endpoints.ApSouth1RegionID: "520713654638", + endpoints.ApSoutheast1RegionID: "520713654638", + endpoints.ApSoutheast2RegionID: "520713654638", + endpoints.CaCentral1RegionID: "520713654638", + endpoints.CnNorth1RegionID: "422961961927", + endpoints.CnNorthwest1RegionID: "423003514399", + endpoints.EuCentral1RegionID: "520713654638", + endpoints.EuNorth1RegionID: "520713654638", + endpoints.EuSouth1RegionID: "048378556238", + endpoints.EuWest1RegionID: "520713654638", + endpoints.EuWest2RegionID: "520713654638", + endpoints.EuWest3RegionID: "520713654638", + endpoints.MeSouth1RegionID: "724002660598", + endpoints.SaEast1RegionID: "520713654638", + endpoints.UsEast1RegionID: "520713654638", + endpoints.UsEast2RegionID: "520713654638", + endpoints.UsGovWest1RegionID: "246785580436", + endpoints.UsIsoEast1RegionID: "744548109606", + endpoints.UsIsobEast1RegionID: "453391408702", + endpoints.UsWest1RegionID: "520713654638", + endpoints.UsWest2RegionID: "520713654638", } // https://github.com/aws/sagemaker-python-sdk/blob/master/src/sagemaker/image_uri_config/ray-pytorch.json @@ -391,137 +392,137 @@ var prebuiltECRImageIDByRegion_SageMakerCustom = map[string]string{ // nosemgrep // https://github.com/aws/sagemaker-python-sdk/blob/master/src/sagemaker/image_uri_config/vw.json var prebuiltECRImageIDByRegion_SageMakerRL = map[string]string{ // nosemgrep:ci.sagemaker-in-var-name - names.APNortheast1RegionID: "462105765813", - names.APNortheast2RegionID: "462105765813", - names.APSouth1RegionID: "462105765813", - names.APSoutheast1RegionID: "462105765813", - names.APSoutheast2RegionID: "462105765813", - names.CACentral1RegionID: "462105765813", - names.EUCentral1RegionID: "462105765813", - names.EUWest1RegionID: "462105765813", - names.EUWest2RegionID: "462105765813", - names.USEast1RegionID: "462105765813", - names.USEast2RegionID: "462105765813", - names.USWest1RegionID: "462105765813", - names.USWest2RegionID: "462105765813", + endpoints.ApNortheast1RegionID: "462105765813", + endpoints.ApNortheast2RegionID: "462105765813", + endpoints.ApSouth1RegionID: "462105765813", + endpoints.ApSoutheast1RegionID: "462105765813", + endpoints.ApSoutheast2RegionID: "462105765813", + endpoints.CaCentral1RegionID: "462105765813", + endpoints.EuCentral1RegionID: "462105765813", + endpoints.EuWest1RegionID: "462105765813", + endpoints.EuWest2RegionID: "462105765813", + endpoints.UsEast1RegionID: "462105765813", + endpoints.UsEast2RegionID: "462105765813", + endpoints.UsWest1RegionID: "462105765813", + endpoints.UsWest2RegionID: "462105765813", } // https://github.com/aws/sagemaker-python-sdk/blob/master/src/sagemaker/image_uri_config/spark.json var prebuiltECRImageIDByRegion_spark = map[string]string{ - names.AFSouth1RegionID: "309385258863", - names.APEast1RegionID: "732049463269", - names.APNortheast1RegionID: "411782140378", - names.APNortheast2RegionID: "860869212795", - names.APNortheast3RegionID: "102471314380", - names.APSouth1RegionID: "105495057255", - names.APSouth2RegionID: "873151114052", - names.APSoutheast1RegionID: "759080221371", - names.APSoutheast2RegionID: "440695851116", - names.APSoutheast3RegionID: "800295151634", - names.APSoutheast4RegionID: "819679513684", - names.CACentral1RegionID: "446299261295", - names.CAWest1RegionID: "000907499111", - names.CNNorth1RegionID: "671472414489", - names.CNNorthwest1RegionID: "844356804704", - names.EUCentral1RegionID: "906073651304", - names.EUCentral2RegionID: "142351485170", - names.EUNorth1RegionID: "330188676905", - names.EUSouth1RegionID: "753923664805", - names.EUSouth2RegionID: "833944533722", - names.EUWest1RegionID: "571004829621", - names.EUWest2RegionID: "836651553127", - names.EUWest3RegionID: "136845547031", - names.ILCentral1RegionID: "408426139102", - names.MECentral1RegionID: "395420993607", - names.MESouth1RegionID: "750251592176", - names.SAEast1RegionID: "737130764395", - names.USEast1RegionID: "173754725891", - names.USEast2RegionID: "314815235551", - names.USGovEast1RegionID: "260923028637", - names.USGovWest1RegionID: "271483468897", - names.USWest1RegionID: "667973535471", - names.USWest2RegionID: "153931337802", + endpoints.AfSouth1RegionID: "309385258863", + endpoints.ApEast1RegionID: "732049463269", + endpoints.ApNortheast1RegionID: "411782140378", + endpoints.ApNortheast2RegionID: "860869212795", + endpoints.ApNortheast3RegionID: "102471314380", + endpoints.ApSouth1RegionID: "105495057255", + endpoints.ApSouth2RegionID: "873151114052", + endpoints.ApSoutheast1RegionID: "759080221371", + endpoints.ApSoutheast2RegionID: "440695851116", + endpoints.ApSoutheast3RegionID: "800295151634", + endpoints.ApSoutheast4RegionID: "819679513684", + endpoints.CaCentral1RegionID: "446299261295", + endpoints.CaWest1RegionID: "000907499111", + endpoints.CnNorth1RegionID: "671472414489", + endpoints.CnNorthwest1RegionID: "844356804704", + endpoints.EuCentral1RegionID: "906073651304", + endpoints.EuCentral2RegionID: "142351485170", + endpoints.EuNorth1RegionID: "330188676905", + endpoints.EuSouth1RegionID: "753923664805", + endpoints.EuSouth2RegionID: "833944533722", + endpoints.EuWest1RegionID: "571004829621", + endpoints.EuWest2RegionID: "836651553127", + endpoints.EuWest3RegionID: "136845547031", + endpoints.IlCentral1RegionID: "408426139102", + endpoints.MeCentral1RegionID: "395420993607", + endpoints.MeSouth1RegionID: "750251592176", + endpoints.SaEast1RegionID: "737130764395", + endpoints.UsEast1RegionID: "173754725891", + endpoints.UsEast2RegionID: "314815235551", + endpoints.UsGovEast1RegionID: "260923028637", + endpoints.UsGovWest1RegionID: "271483468897", + endpoints.UsWest1RegionID: "667973535471", + endpoints.UsWest2RegionID: "153931337802", } // https://github.com/aws/sagemaker-python-sdk/blob/master/src/sagemaker/image_uri_config/sagemaker-base-python.json var prebuiltECRImageIDByRegion_SageMakerBasePython = map[string]string{ // nosemgrep:ci.sagemaker-in-var-name - names.AFSouth1RegionID: "559312083959", - names.APEast1RegionID: "493642496378", - names.APNortheast1RegionID: "102112518831", - names.APNortheast2RegionID: "806072073708", - names.APNortheast3RegionID: "792733760839", - names.APSouth1RegionID: "394103062818", - names.APSoutheast1RegionID: "492261229750", - names.APSoutheast2RegionID: "452832661640", - names.APSoutheast3RegionID: "276181064229", - names.CACentral1RegionID: "310906938811", - names.CNNorth1RegionID: "390048526115", - names.CNNorthwest1RegionID: "390780980154", - names.EUCentral1RegionID: "936697816551", - names.EUNorth1RegionID: "243637512696", - names.EUSouth1RegionID: "592751261982", - names.EUSouth2RegionID: "127363102723", - names.EUWest1RegionID: "470317259841", - names.EUWest2RegionID: "712779665605", - names.EUWest3RegionID: "615547856133", - names.ILCentral1RegionID: "380164790875", - names.MECentral1RegionID: "103105715889", - names.MESouth1RegionID: "117516905037", - names.SAEast1RegionID: "782484402741", - names.USEast1RegionID: "081325390199", - names.USEast2RegionID: "429704687514", - names.USGovEast1RegionID: "107072934176", - names.USGovWest1RegionID: "107173498710", - names.USWest1RegionID: "742091327244", - names.USWest2RegionID: "236514542706", + endpoints.AfSouth1RegionID: "559312083959", + endpoints.ApEast1RegionID: "493642496378", + endpoints.ApNortheast1RegionID: "102112518831", + endpoints.ApNortheast2RegionID: "806072073708", + endpoints.ApNortheast3RegionID: "792733760839", + endpoints.ApSouth1RegionID: "394103062818", + endpoints.ApSoutheast1RegionID: "492261229750", + endpoints.ApSoutheast2RegionID: "452832661640", + endpoints.ApSoutheast3RegionID: "276181064229", + endpoints.CaCentral1RegionID: "310906938811", + endpoints.CnNorth1RegionID: "390048526115", + endpoints.CnNorthwest1RegionID: "390780980154", + endpoints.EuCentral1RegionID: "936697816551", + endpoints.EuNorth1RegionID: "243637512696", + endpoints.EuSouth1RegionID: "592751261982", + endpoints.EuSouth2RegionID: "127363102723", + endpoints.EuWest1RegionID: "470317259841", + endpoints.EuWest2RegionID: "712779665605", + endpoints.EuWest3RegionID: "615547856133", + endpoints.IlCentral1RegionID: "380164790875", + endpoints.MeCentral1RegionID: "103105715889", + endpoints.MeSouth1RegionID: "117516905037", + endpoints.SaEast1RegionID: "782484402741", + endpoints.UsEast1RegionID: "081325390199", + endpoints.UsEast2RegionID: "429704687514", + endpoints.UsGovEast1RegionID: "107072934176", + endpoints.UsGovWest1RegionID: "107173498710", + endpoints.UsWest1RegionID: "742091327244", + endpoints.UsWest2RegionID: "236514542706", } // https://github.com/aws/sagemaker-python-sdk/blob/master/src/sagemaker/image_uri_config/sagemaker-geospatial.json var prebuiltECRImageIDByRegion_SageMakerGeospatial = map[string]string{ // nosemgrep:ci.sagemaker-in-var-name - names.USWest2RegionID: "081189585635", + endpoints.UsWest2RegionID: "081189585635", } // https://github.com/aws/sagemaker-python-sdk/blob/master/src/sagemaker/image_uri_config/forecasting-deepar.json var prebuiltECRImageIDByRegion_deepAR = map[string]string{ - names.AFSouth1RegionID: "455444449433", - names.APEast1RegionID: "286214385809", - names.APNortheast1RegionID: "633353088612", - names.APNortheast2RegionID: "204372634319", - names.APNortheast3RegionID: "867004704886", - names.APSouth1RegionID: "991648021394", - names.APSouth2RegionID: "628508329040", - names.APSoutheast1RegionID: "475088953585", - names.APSoutheast2RegionID: "514117268639", - names.APSoutheast3RegionID: "951798379941", - names.APSoutheast4RegionID: "106583098589", - names.CACentral1RegionID: "469771592824", - names.CAWest1RegionID: "190319476487", - names.CNNorth1RegionID: "390948362332", - names.CNNorthwest1RegionID: "387376663083", - names.EUCentral1RegionID: "495149712605", - names.EUCentral2RegionID: "680994064768", - names.EUNorth1RegionID: "669576153137", - names.EUSouth1RegionID: "257386234256", - names.EUSouth2RegionID: "104374241257", - names.EUWest1RegionID: "224300973850", - names.EUWest2RegionID: "644912444149", - names.EUWest3RegionID: "749696950732", - names.ILCentral1RegionID: "898809789911", - names.MECentral1RegionID: "272398656194", - names.MESouth1RegionID: "249704162688", - names.SAEast1RegionID: "855470959533", - names.USEast1RegionID: "522234722520", - names.USEast2RegionID: "566113047672", - names.USGovEast1RegionID: "237065988967", - names.USGovWest1RegionID: "226302683700", - names.USISOEast1RegionID: "490574956308", - names.USISOBEast1RegionID: "765400339828", - names.USWest1RegionID: "632365934929", - names.USWest2RegionID: "156387875391", + endpoints.AfSouth1RegionID: "455444449433", + endpoints.ApEast1RegionID: "286214385809", + endpoints.ApNortheast1RegionID: "633353088612", + endpoints.ApNortheast2RegionID: "204372634319", + endpoints.ApNortheast3RegionID: "867004704886", + endpoints.ApSouth1RegionID: "991648021394", + endpoints.ApSouth2RegionID: "628508329040", + endpoints.ApSoutheast1RegionID: "475088953585", + endpoints.ApSoutheast2RegionID: "514117268639", + endpoints.ApSoutheast3RegionID: "951798379941", + endpoints.ApSoutheast4RegionID: "106583098589", + endpoints.CaCentral1RegionID: "469771592824", + endpoints.CaWest1RegionID: "190319476487", + endpoints.CnNorth1RegionID: "390948362332", + endpoints.CnNorthwest1RegionID: "387376663083", + endpoints.EuCentral1RegionID: "495149712605", + endpoints.EuCentral2RegionID: "680994064768", + endpoints.EuNorth1RegionID: "669576153137", + endpoints.EuSouth1RegionID: "257386234256", + endpoints.EuSouth2RegionID: "104374241257", + endpoints.EuWest1RegionID: "224300973850", + endpoints.EuWest2RegionID: "644912444149", + endpoints.EuWest3RegionID: "749696950732", + endpoints.IlCentral1RegionID: "898809789911", + endpoints.MeCentral1RegionID: "272398656194", + endpoints.MeSouth1RegionID: "249704162688", + endpoints.SaEast1RegionID: "855470959533", + endpoints.UsEast1RegionID: "522234722520", + endpoints.UsEast2RegionID: "566113047672", + endpoints.UsGovEast1RegionID: "237065988967", + endpoints.UsGovWest1RegionID: "226302683700", + endpoints.UsIsoEast1RegionID: "490574956308", + endpoints.UsIsobEast1RegionID: "765400339828", + endpoints.UsWest1RegionID: "632365934929", + endpoints.UsWest2RegionID: "156387875391", } // https://github.com/aws/sagemaker-python-sdk/blob/master/src/sagemaker/image_uri_config/factorization-machines.json @@ -532,62 +533,62 @@ var prebuiltECRImageIDByRegion_deepAR = map[string]string{ // https://github.com/aws/sagemaker-python-sdk/blob/master/src/sagemaker/image_uri_config/pca.json var prebuiltECRImageIDByRegion_factorMachines = map[string]string{ - names.AFSouth1RegionID: "455444449433", - names.APEast1RegionID: "286214385809", - names.APNortheast1RegionID: "351501993468", - names.APNortheast2RegionID: "835164637446", - names.APNortheast3RegionID: "867004704886", - names.APSouth1RegionID: "991648021394", - names.APSouth2RegionID: "628508329040", - names.APSoutheast1RegionID: "475088953585", - names.APSoutheast2RegionID: "712309505854", - names.APSoutheast3RegionID: "951798379941", - names.APSoutheast4RegionID: "106583098589", - names.CACentral1RegionID: "469771592824", - names.CAWest1RegionID: "190319476487", - names.CNNorth1RegionID: "390948362332", - names.CNNorthwest1RegionID: "387376663083", - names.EUCentral1RegionID: "664544806723", - names.EUCentral2RegionID: "680994064768", - names.EUNorth1RegionID: "669576153137", - names.EUSouth1RegionID: "257386234256", - names.EUSouth2RegionID: "104374241257", - names.EUWest1RegionID: "438346466558", - names.EUWest2RegionID: "644912444149", - names.EUWest3RegionID: "749696950732", - names.ILCentral1RegionID: "898809789911", - names.MECentral1RegionID: "272398656194", - names.MESouth1RegionID: "249704162688", - names.SAEast1RegionID: "855470959533", - names.USEast1RegionID: "382416733822", - names.USEast2RegionID: "404615174143", - names.USGovEast1RegionID: "237065988967", - names.USGovWest1RegionID: "226302683700", - names.USISOEast1RegionID: "490574956308", - names.USISOBEast1RegionID: "765400339828", - names.USWest1RegionID: "632365934929", - names.USWest2RegionID: "174872318107", + endpoints.AfSouth1RegionID: "455444449433", + endpoints.ApEast1RegionID: "286214385809", + endpoints.ApNortheast1RegionID: "351501993468", + endpoints.ApNortheast2RegionID: "835164637446", + endpoints.ApNortheast3RegionID: "867004704886", + endpoints.ApSouth1RegionID: "991648021394", + endpoints.ApSouth2RegionID: "628508329040", + endpoints.ApSoutheast1RegionID: "475088953585", + endpoints.ApSoutheast2RegionID: "712309505854", + endpoints.ApSoutheast3RegionID: "951798379941", + endpoints.ApSoutheast4RegionID: "106583098589", + endpoints.CaCentral1RegionID: "469771592824", + endpoints.CaWest1RegionID: "190319476487", + endpoints.CnNorth1RegionID: "390948362332", + endpoints.CnNorthwest1RegionID: "387376663083", + endpoints.EuCentral1RegionID: "664544806723", + endpoints.EuCentral2RegionID: "680994064768", + endpoints.EuNorth1RegionID: "669576153137", + endpoints.EuSouth1RegionID: "257386234256", + endpoints.EuSouth2RegionID: "104374241257", + endpoints.EuWest1RegionID: "438346466558", + endpoints.EuWest2RegionID: "644912444149", + endpoints.EuWest3RegionID: "749696950732", + endpoints.IlCentral1RegionID: "898809789911", + endpoints.MeCentral1RegionID: "272398656194", + endpoints.MeSouth1RegionID: "249704162688", + endpoints.SaEast1RegionID: "855470959533", + endpoints.UsEast1RegionID: "382416733822", + endpoints.UsEast2RegionID: "404615174143", + endpoints.UsGovEast1RegionID: "237065988967", + endpoints.UsGovWest1RegionID: "226302683700", + endpoints.UsIsoEast1RegionID: "490574956308", + endpoints.UsIsobEast1RegionID: "765400339828", + endpoints.UsWest1RegionID: "632365934929", + endpoints.UsWest2RegionID: "174872318107", } // https://github.com/aws/sagemaker-python-sdk/blob/master/src/sagemaker/image_uri_config/lda.json var prebuiltECRImageIDByRegion_lda = map[string]string{ - names.APNortheast1RegionID: "258307448986", - names.APNortheast2RegionID: "293181348795", - names.APSouth1RegionID: "991648021394", - names.APSoutheast1RegionID: "475088953585", - names.APSoutheast2RegionID: "297031611018", - names.CACentral1RegionID: "469771592824", - names.EUCentral1RegionID: "353608530281", - names.EUWest1RegionID: "999678624901", - names.EUWest2RegionID: "644912444149", - names.USEast1RegionID: "766337827248", - names.USEast2RegionID: "999911452149", - names.USGovWest1RegionID: "226302683700", - names.USISOEast1RegionID: "490574956308", - names.USISOBEast1RegionID: "765400339828", - names.USWest1RegionID: "632365934929", - names.USWest2RegionID: "266724342769", + endpoints.ApNortheast1RegionID: "258307448986", + endpoints.ApNortheast2RegionID: "293181348795", + endpoints.ApSouth1RegionID: "991648021394", + endpoints.ApSoutheast1RegionID: "475088953585", + endpoints.ApSoutheast2RegionID: "297031611018", + endpoints.CaCentral1RegionID: "469771592824", + endpoints.EuCentral1RegionID: "353608530281", + endpoints.EuWest1RegionID: "999678624901", + endpoints.EuWest2RegionID: "644912444149", + endpoints.UsEast1RegionID: "766337827248", + endpoints.UsEast2RegionID: "999911452149", + endpoints.UsGovWest1RegionID: "226302683700", + endpoints.UsIsoEast1RegionID: "490574956308", + endpoints.UsIsobEast1RegionID: "765400339828", + endpoints.UsWest1RegionID: "632365934929", + endpoints.UsWest2RegionID: "266724342769", } // https://github.com/aws/sagemaker-python-sdk/blob/master/src/sagemaker/image_uri_config/xgboost.json @@ -597,41 +598,41 @@ var prebuiltECRImageIDByRegion_lda = map[string]string{ // https://github.com/aws/sagemaker-python-sdk/blob/master/src/sagemaker/image_uri_config/sklearn.json var prebuiltECRImageIDByRegion_XGBoost = map[string]string{ - names.AFSouth1RegionID: "510948584623", - names.APEast1RegionID: "651117190479", - names.APNortheast1RegionID: "354813040037", - names.APNortheast2RegionID: "366743142698", - names.APNortheast3RegionID: "867004704886", - names.APSouth1RegionID: "720646828776", - names.APSouth2RegionID: "628508329040", - names.APSoutheast1RegionID: "121021644041", - names.APSoutheast2RegionID: "783357654285", - names.APSoutheast3RegionID: "951798379941", - names.APSoutheast4RegionID: "106583098589", - names.CACentral1RegionID: "341280168497", - names.CAWest1RegionID: "190319476487", - names.CNNorth1RegionID: "450853457545", - names.CNNorthwest1RegionID: "451049120500", - names.EUCentral1RegionID: "492215442770", - names.EUCentral2RegionID: "680994064768", - names.EUNorth1RegionID: "662702820516", - names.EUSouth1RegionID: "978288397137", - names.EUSouth2RegionID: "104374241257", - names.EUWest1RegionID: "141502667606", - names.EUWest2RegionID: "764974769150", - names.EUWest3RegionID: "659782779980", - names.ILCentral1RegionID: "898809789911", - names.MECentral1RegionID: "272398656194", - names.MESouth1RegionID: "801668240914", - names.SAEast1RegionID: "737474898029", - names.USEast1RegionID: "683313688378", - names.USEast2RegionID: "257758044811", - names.USGovEast1RegionID: "237065988967", - names.USGovWest1RegionID: "414596584902", - names.USISOEast1RegionID: "833128469047", - names.USISOBEast1RegionID: "281123927165", - names.USWest1RegionID: "746614075791", - names.USWest2RegionID: "246618743249", + endpoints.AfSouth1RegionID: "510948584623", + endpoints.ApEast1RegionID: "651117190479", + endpoints.ApNortheast1RegionID: "354813040037", + endpoints.ApNortheast2RegionID: "366743142698", + endpoints.ApNortheast3RegionID: "867004704886", + endpoints.ApSouth1RegionID: "720646828776", + endpoints.ApSouth2RegionID: "628508329040", + endpoints.ApSoutheast1RegionID: "121021644041", + endpoints.ApSoutheast2RegionID: "783357654285", + endpoints.ApSoutheast3RegionID: "951798379941", + endpoints.ApSoutheast4RegionID: "106583098589", + endpoints.CaCentral1RegionID: "341280168497", + endpoints.CaWest1RegionID: "190319476487", + endpoints.CnNorth1RegionID: "450853457545", + endpoints.CnNorthwest1RegionID: "451049120500", + endpoints.EuCentral1RegionID: "492215442770", + endpoints.EuCentral2RegionID: "680994064768", + endpoints.EuNorth1RegionID: "662702820516", + endpoints.EuSouth1RegionID: "978288397137", + endpoints.EuSouth2RegionID: "104374241257", + endpoints.EuWest1RegionID: "141502667606", + endpoints.EuWest2RegionID: "764974769150", + endpoints.EuWest3RegionID: "659782779980", + endpoints.IlCentral1RegionID: "898809789911", + endpoints.MeCentral1RegionID: "272398656194", + endpoints.MeSouth1RegionID: "801668240914", + endpoints.SaEast1RegionID: "737474898029", + endpoints.UsEast1RegionID: "683313688378", + endpoints.UsEast2RegionID: "257758044811", + endpoints.UsGovEast1RegionID: "237065988967", + endpoints.UsGovWest1RegionID: "414596584902", + endpoints.UsIsoEast1RegionID: "833128469047", + endpoints.UsIsobEast1RegionID: "281123927165", + endpoints.UsWest1RegionID: "746614075791", + endpoints.UsWest2RegionID: "246618743249", } // https://github.com/aws/deep-learning-containers/blob/master/available_images.md @@ -649,73 +650,73 @@ var prebuiltECRImageIDByRegion_XGBoost = map[string]string{ // https://github.com/aws/sagemaker-python-sdk/blob/master/src/sagemaker/image_uri_config/huggingface-llm.json var prebuiltECRImageIDByRegion_deepLearning = map[string]string{ - names.AFSouth1RegionID: "626614931356", - names.APEast1RegionID: "871362719292", - names.APNortheast1RegionID: "763104351884", - names.APNortheast2RegionID: "763104351884", - names.APNortheast3RegionID: "364406365360", - names.APSouth1RegionID: "763104351884", - names.APSouth2RegionID: "772153158452", - names.APSoutheast1RegionID: "763104351884", - names.APSoutheast2RegionID: "763104351884", - names.APSoutheast3RegionID: "907027046896", - names.APSoutheast4RegionID: "457447274322", - names.CACentral1RegionID: "763104351884", - names.CAWest1RegionID: "204538143572", - names.CNNorth1RegionID: "727897471807", - names.CNNorthwest1RegionID: "727897471807", - names.EUCentral1RegionID: "763104351884", - names.EUCentral2RegionID: "380420809688", - names.EUNorth1RegionID: "763104351884", - names.EUWest1RegionID: "763104351884", - names.EUWest2RegionID: "763104351884", - names.EUWest3RegionID: "763104351884", - names.EUSouth1RegionID: "692866216735", - names.EUSouth2RegionID: "503227376785", - names.ILCentral1RegionID: "780543022126", - names.MECentral1RegionID: "914824155844", - names.MESouth1RegionID: "217643126080", - names.SAEast1RegionID: "763104351884", - names.USEast1RegionID: "763104351884", - names.USEast2RegionID: "763104351884", - names.USWest1RegionID: "763104351884", - names.USWest2RegionID: "763104351884", - names.USGovEast1RegionID: "446045086412", - names.USGovWest1RegionID: "442386744353", - names.USISOEast1RegionID: "886529160074", - names.USISOBEast1RegionID: "094389454867", + endpoints.AfSouth1RegionID: "626614931356", + endpoints.ApEast1RegionID: "871362719292", + endpoints.ApNortheast1RegionID: "763104351884", + endpoints.ApNortheast2RegionID: "763104351884", + endpoints.ApNortheast3RegionID: "364406365360", + endpoints.ApSouth1RegionID: "763104351884", + endpoints.ApSouth2RegionID: "772153158452", + endpoints.ApSoutheast1RegionID: "763104351884", + endpoints.ApSoutheast2RegionID: "763104351884", + endpoints.ApSoutheast3RegionID: "907027046896", + endpoints.ApSoutheast4RegionID: "457447274322", + endpoints.CaCentral1RegionID: "763104351884", + endpoints.CaWest1RegionID: "204538143572", + endpoints.CnNorth1RegionID: "727897471807", + endpoints.CnNorthwest1RegionID: "727897471807", + endpoints.EuCentral1RegionID: "763104351884", + endpoints.EuCentral2RegionID: "380420809688", + endpoints.EuNorth1RegionID: "763104351884", + endpoints.EuWest1RegionID: "763104351884", + endpoints.EuWest2RegionID: "763104351884", + endpoints.EuWest3RegionID: "763104351884", + endpoints.EuSouth1RegionID: "692866216735", + endpoints.EuSouth2RegionID: "503227376785", + endpoints.IlCentral1RegionID: "780543022126", + endpoints.MeCentral1RegionID: "914824155844", + endpoints.MeSouth1RegionID: "217643126080", + endpoints.SaEast1RegionID: "763104351884", + endpoints.UsEast1RegionID: "763104351884", + endpoints.UsEast2RegionID: "763104351884", + endpoints.UsWest1RegionID: "763104351884", + endpoints.UsWest2RegionID: "763104351884", + endpoints.UsGovEast1RegionID: "446045086412", + endpoints.UsGovWest1RegionID: "442386744353", + endpoints.UsIsoEast1RegionID: "886529160074", + endpoints.UsIsobEast1RegionID: "094389454867", } // https://github.com/aws/sagemaker-python-sdk/blob/master/src/sagemaker/image_uri_config/model-monitor.json var prebuiltECRImageIDByRegion_modelMonitor = map[string]string{ - names.AFSouth1RegionID: "875698925577", - names.APEast1RegionID: "001633400207", - names.APNortheast1RegionID: "574779866223", - names.APNortheast2RegionID: "709848358524", - names.APNortheast3RegionID: "990339680094", - names.APSouth1RegionID: "126357580389", - names.APSoutheast1RegionID: "245545462676", - names.APSoutheast2RegionID: "563025443158", - names.APSoutheast3RegionID: "669540362728", - names.CACentral1RegionID: "536280801234", - names.CNNorth1RegionID: "453000072557", - names.CNNorthwest1RegionID: "453252182341", - names.EUCentral1RegionID: "048819808253", - names.EUNorth1RegionID: "895015795356", - names.EUSouth1RegionID: "933208885752", - names.EUSouth2RegionID: "437450045455", - names.EUWest1RegionID: "468650794304", - names.EUWest2RegionID: "749857270468", - names.EUWest3RegionID: "680080141114", - names.ILCentral1RegionID: "843974653677", - names.MECentral1RegionID: "588750061953", - names.MESouth1RegionID: "607024016150", - names.SAEast1RegionID: "539772159869", - names.USEast1RegionID: "156813124566", - names.USEast2RegionID: "777275614652", - names.USWest1RegionID: "890145073186", - names.USWest2RegionID: "159807026194", + endpoints.AfSouth1RegionID: "875698925577", + endpoints.ApEast1RegionID: "001633400207", + endpoints.ApNortheast1RegionID: "574779866223", + endpoints.ApNortheast2RegionID: "709848358524", + endpoints.ApNortheast3RegionID: "990339680094", + endpoints.ApSouth1RegionID: "126357580389", + endpoints.ApSoutheast1RegionID: "245545462676", + endpoints.ApSoutheast2RegionID: "563025443158", + endpoints.ApSoutheast3RegionID: "669540362728", + endpoints.CaCentral1RegionID: "536280801234", + endpoints.CnNorth1RegionID: "453000072557", + endpoints.CnNorthwest1RegionID: "453252182341", + endpoints.EuCentral1RegionID: "048819808253", + endpoints.EuNorth1RegionID: "895015795356", + endpoints.EuSouth1RegionID: "933208885752", + endpoints.EuSouth2RegionID: "437450045455", + endpoints.EuWest1RegionID: "468650794304", + endpoints.EuWest2RegionID: "749857270468", + endpoints.EuWest3RegionID: "680080141114", + endpoints.IlCentral1RegionID: "843974653677", + endpoints.MeCentral1RegionID: "588750061953", + endpoints.MeSouth1RegionID: "607024016150", + endpoints.SaEast1RegionID: "539772159869", + endpoints.UsEast1RegionID: "156813124566", + endpoints.UsEast2RegionID: "777275614652", + endpoints.UsWest1RegionID: "890145073186", + endpoints.UsWest2RegionID: "159807026194", } // @SDKDataSource("aws_sagemaker_prebuilt_ecr_image", name="Prebuilt ECR Image") @@ -842,7 +843,7 @@ func dataSourcePrebuiltECRImage() *schema.Resource { func dataSourcePrebuiltECRImageRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics - region := meta.(*conns.AWSClient).Region + region := meta.(*conns.AWSClient).Region(ctx) if v, ok := d.GetOk(names.AttrRegion); ok { region = v.(string) } diff --git a/internal/service/sagemaker/project_test.go b/internal/service/sagemaker/project_test.go index 5ef14eaf34eb..0870d136d58f 100644 --- a/internal/service/sagemaker/project_test.go +++ b/internal/service/sagemaker/project_test.go @@ -36,7 +36,7 @@ func TestAccSageMakerProject_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckProjectExists(ctx, resourceName, &mpg), resource.TestCheckResourceAttr(resourceName, "project_name", rName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "sagemaker", fmt.Sprintf("project/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "sagemaker", fmt.Sprintf("project/%s", rName)), resource.TestCheckResourceAttr(resourceName, "service_catalog_provisioning_details.#", "1"), resource.TestCheckResourceAttrPair(resourceName, "service_catalog_provisioning_details.0.product_id", "aws_servicecatalog_product.test", names.AttrID), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), diff --git a/internal/service/sagemaker/service_endpoints_gen_test.go b/internal/service/sagemaker/service_endpoints_gen_test.go index 9aed3fb23031..a6a89855b338 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/sagemaker/servicecatalog_portfolio_status.go b/internal/service/sagemaker/servicecatalog_portfolio_status.go index 646cc5bb9f24..af1c17f1af51 100644 --- a/internal/service/sagemaker/servicecatalog_portfolio_status.go +++ b/internal/service/sagemaker/servicecatalog_portfolio_status.go @@ -54,7 +54,7 @@ func resourceServicecatalogPortfolioStatusPut(ctx context.Context, d *schema.Res return sdkdiag.AppendErrorf(diags, "setting SageMaker Servicecatalog Portfolio Status: %s", err) } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) return append(diags, resourceServicecatalogPortfolioStatusRead(ctx, d, meta)...) } diff --git a/internal/service/sagemaker/space_test.go b/internal/service/sagemaker/space_test.go index e6f71f0c4333..bfd211d2863a 100644 --- a/internal/service/sagemaker/space_test.go +++ b/internal/service/sagemaker/space_test.go @@ -42,7 +42,7 @@ func testAccSpace_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "space_settings.#", "0"), resource.TestCheckResourceAttr(resourceName, "space_sharing_settings.#", "0"), resource.TestCheckResourceAttr(resourceName, "ownership_settings.#", "0"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "sagemaker", regexache.MustCompile(`space/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "sagemaker", regexache.MustCompile(`space/.+`)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttrSet(resourceName, "home_efs_file_system_uid"), ), diff --git a/internal/service/sagemaker/studio_lifecycle_config_test.go b/internal/service/sagemaker/studio_lifecycle_config_test.go index c43cef1df2b3..4912b45f1750 100644 --- a/internal/service/sagemaker/studio_lifecycle_config_test.go +++ b/internal/service/sagemaker/studio_lifecycle_config_test.go @@ -36,7 +36,7 @@ func TestAccSageMakerStudioLifecycleConfig_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckStudioLifecycleExistsConfig(ctx, resourceName, &config), resource.TestCheckResourceAttr(resourceName, "studio_lifecycle_config_name", rName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "sagemaker", fmt.Sprintf("studio-lifecycle-config/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "sagemaker", fmt.Sprintf("studio-lifecycle-config/%s", rName)), resource.TestCheckResourceAttr(resourceName, "studio_lifecycle_config_app_type", "JupyterServer"), resource.TestCheckResourceAttrSet(resourceName, "studio_lifecycle_config_content"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), diff --git a/internal/service/sagemaker/user_profile_test.go b/internal/service/sagemaker/user_profile_test.go index fc2a5b9aefba..1d8fe4acfdd2 100644 --- a/internal/service/sagemaker/user_profile_test.go +++ b/internal/service/sagemaker/user_profile_test.go @@ -40,7 +40,7 @@ func testAccUserProfile_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "user_profile_name", rName), resource.TestCheckResourceAttrPair(resourceName, "domain_id", "aws_sagemaker_domain.test", names.AttrID), resource.TestCheckResourceAttr(resourceName, "user_settings.#", "0"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "sagemaker", regexache.MustCompile(`user-profile/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "sagemaker", regexache.MustCompile(`user-profile/.+`)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttrSet(resourceName, "home_efs_file_system_uid"), ), diff --git a/internal/service/sagemaker/workforce_test.go b/internal/service/sagemaker/workforce_test.go index d7a70180bf21..2288867d7d14 100644 --- a/internal/service/sagemaker/workforce_test.go +++ b/internal/service/sagemaker/workforce_test.go @@ -37,7 +37,7 @@ func testAccWorkforce_cognitoConfig(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckWorkforceExists(ctx, resourceName, &workforce), resource.TestCheckResourceAttr(resourceName, "workforce_name", rName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "sagemaker", regexache.MustCompile(`workforce/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "sagemaker", regexache.MustCompile(`workforce/.+`)), resource.TestCheckResourceAttr(resourceName, "cognito_config.#", "1"), resource.TestCheckResourceAttrPair(resourceName, "cognito_config.0.client_id", "aws_cognito_user_pool_client.test", names.AttrID), resource.TestCheckResourceAttrPair(resourceName, "cognito_config.0.user_pool", "aws_cognito_user_pool.test", names.AttrID), @@ -76,7 +76,7 @@ func testAccWorkforce_oidcConfig(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckWorkforceExists(ctx, resourceName, &workforce), resource.TestCheckResourceAttr(resourceName, "workforce_name", rName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "sagemaker", regexache.MustCompile(`workforce/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "sagemaker", regexache.MustCompile(`workforce/.+`)), resource.TestCheckResourceAttr(resourceName, "cognito_config.#", "0"), resource.TestCheckResourceAttr(resourceName, "oidc_config.#", "1"), resource.TestCheckResourceAttr(resourceName, "oidc_config.0.authorization_endpoint", endpoint1), @@ -103,7 +103,7 @@ func testAccWorkforce_oidcConfig(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckWorkforceExists(ctx, resourceName, &workforce), resource.TestCheckResourceAttr(resourceName, "workforce_name", rName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "sagemaker", regexache.MustCompile(`workforce/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "sagemaker", regexache.MustCompile(`workforce/.+`)), resource.TestCheckResourceAttr(resourceName, "cognito_config.#", "0"), resource.TestCheckResourceAttr(resourceName, "oidc_config.#", "1"), resource.TestCheckResourceAttr(resourceName, "oidc_config.0.authorization_endpoint", endpoint2), @@ -142,7 +142,7 @@ func testAccWorkforce_oidcConfig_full(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckWorkforceExists(ctx, resourceName, &workforce), resource.TestCheckResourceAttr(resourceName, "workforce_name", rName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "sagemaker", regexache.MustCompile(`workforce/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "sagemaker", regexache.MustCompile(`workforce/.+`)), resource.TestCheckResourceAttr(resourceName, "cognito_config.#", "0"), resource.TestCheckResourceAttr(resourceName, "oidc_config.#", "1"), resource.TestCheckResourceAttr(resourceName, "oidc_config.0.authorization_endpoint", endpoint1), @@ -172,7 +172,7 @@ func testAccWorkforce_oidcConfig_full(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckWorkforceExists(ctx, resourceName, &workforce), resource.TestCheckResourceAttr(resourceName, "workforce_name", rName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "sagemaker", regexache.MustCompile(`workforce/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "sagemaker", regexache.MustCompile(`workforce/.+`)), resource.TestCheckResourceAttr(resourceName, "cognito_config.#", "0"), resource.TestCheckResourceAttr(resourceName, "oidc_config.#", "1"), resource.TestCheckResourceAttr(resourceName, "oidc_config.0.authorization_endpoint", endpoint2), diff --git a/internal/service/sagemaker/workteam_test.go b/internal/service/sagemaker/workteam_test.go index 16d0f0e3184e..b31664114f35 100644 --- a/internal/service/sagemaker/workteam_test.go +++ b/internal/service/sagemaker/workteam_test.go @@ -37,7 +37,7 @@ func testAccWorkteam_cognitoConfig(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckWorkteamExists(ctx, resourceName, &workteam), resource.TestCheckResourceAttr(resourceName, "workteam_name", rName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "sagemaker", regexache.MustCompile(`workteam/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "sagemaker", regexache.MustCompile(`workteam/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, rName), resource.TestCheckResourceAttr(resourceName, "member_definition.#", "1"), resource.TestCheckResourceAttr(resourceName, "member_definition.0.cognito_member_definition.#", "1"), @@ -59,7 +59,7 @@ func testAccWorkteam_cognitoConfig(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckWorkteamExists(ctx, resourceName, &workteam), resource.TestCheckResourceAttr(resourceName, "workteam_name", rName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "sagemaker", regexache.MustCompile(`workteam/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "sagemaker", regexache.MustCompile(`workteam/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, rName), resource.TestCheckResourceAttr(resourceName, "member_definition.#", "2"), resource.TestCheckResourceAttr(resourceName, "member_definition.0.cognito_member_definition.#", "1"), @@ -78,7 +78,7 @@ func testAccWorkteam_cognitoConfig(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckWorkteamExists(ctx, resourceName, &workteam), resource.TestCheckResourceAttr(resourceName, "workteam_name", rName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "sagemaker", regexache.MustCompile(`workteam/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "sagemaker", regexache.MustCompile(`workteam/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, rName), resource.TestCheckResourceAttr(resourceName, "member_definition.#", "1"), resource.TestCheckResourceAttr(resourceName, "member_definition.0.cognito_member_definition.#", "1"), @@ -109,7 +109,7 @@ func testAccWorkteam_cognitoOmitWorkforceName(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckWorkteamExists(ctx, resourceName, &workteam), resource.TestCheckResourceAttr(resourceName, "workteam_name", rName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "sagemaker", regexache.MustCompile(`workteam/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "sagemaker", regexache.MustCompile(`workteam/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, rName), resource.TestCheckResourceAttr(resourceName, "member_definition.#", "1"), resource.TestCheckResourceAttr(resourceName, "member_definition.0.cognito_member_definition.#", "1"), @@ -141,7 +141,7 @@ func testAccWorkteam_oidcConfig(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckWorkteamExists(ctx, resourceName, &workteam), resource.TestCheckResourceAttr(resourceName, "workteam_name", rName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "sagemaker", regexache.MustCompile(`workteam/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "sagemaker", regexache.MustCompile(`workteam/.+`)), resource.TestCheckResourceAttr(resourceName, "member_definition.#", "1"), resource.TestCheckResourceAttr(resourceName, "member_definition.0.oidc_member_definition.#", "1"), resource.TestCheckResourceAttr(resourceName, "member_definition.0.oidc_member_definition.0.groups.#", "1"), @@ -159,7 +159,7 @@ func testAccWorkteam_oidcConfig(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckWorkteamExists(ctx, resourceName, &workteam), resource.TestCheckResourceAttr(resourceName, "workteam_name", rName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "sagemaker", regexache.MustCompile(`workteam/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "sagemaker", regexache.MustCompile(`workteam/.+`)), resource.TestCheckResourceAttr(resourceName, "member_definition.#", "1"), resource.TestCheckResourceAttr(resourceName, "member_definition.0.oidc_member_definition.#", "1"), resource.TestCheckResourceAttr(resourceName, "member_definition.0.oidc_member_definition.0.groups.#", "2"), @@ -172,7 +172,7 @@ func testAccWorkteam_oidcConfig(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckWorkteamExists(ctx, resourceName, &workteam), resource.TestCheckResourceAttr(resourceName, "workteam_name", rName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "sagemaker", regexache.MustCompile(`workteam/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "sagemaker", regexache.MustCompile(`workteam/.+`)), resource.TestCheckResourceAttr(resourceName, "member_definition.#", "1"), resource.TestCheckResourceAttr(resourceName, "member_definition.0.oidc_member_definition.#", "1"), resource.TestCheckResourceAttr(resourceName, "member_definition.0.oidc_member_definition.0.groups.#", "1"), @@ -246,7 +246,7 @@ func testAccWorkteam_notificationConfig(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckWorkteamExists(ctx, resourceName, &workteam), resource.TestCheckResourceAttr(resourceName, "workteam_name", rName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "sagemaker", regexache.MustCompile(`workteam/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "sagemaker", regexache.MustCompile(`workteam/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, rName), resource.TestCheckResourceAttr(resourceName, "notification_configuration.#", "1"), resource.TestCheckResourceAttrPair(resourceName, "notification_configuration.0.notification_topic_arn", "aws_sns_topic.test", names.AttrARN), @@ -263,7 +263,7 @@ func testAccWorkteam_notificationConfig(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckWorkteamExists(ctx, resourceName, &workteam), resource.TestCheckResourceAttr(resourceName, "workteam_name", rName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "sagemaker", regexache.MustCompile(`workteam/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "sagemaker", regexache.MustCompile(`workteam/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, rName), resource.TestCheckResourceAttr(resourceName, "notification_configuration.#", "1"), ), @@ -273,7 +273,7 @@ func testAccWorkteam_notificationConfig(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckWorkteamExists(ctx, resourceName, &workteam), resource.TestCheckResourceAttr(resourceName, "workteam_name", rName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "sagemaker", regexache.MustCompile(`workteam/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "sagemaker", regexache.MustCompile(`workteam/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, rName), resource.TestCheckResourceAttr(resourceName, "notification_configuration.#", "1"), resource.TestCheckResourceAttrPair(resourceName, "notification_configuration.0.notification_topic_arn", "aws_sns_topic.test", names.AttrARN), @@ -300,7 +300,7 @@ func testAccWorkteam_workerAccessConfiguration(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckWorkteamExists(ctx, resourceName, &workteam), resource.TestCheckResourceAttr(resourceName, "workteam_name", rName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "sagemaker", regexache.MustCompile(`workteam/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "sagemaker", regexache.MustCompile(`workteam/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, rName), resource.TestCheckResourceAttr(resourceName, "worker_access_configuration.#", "1"), resource.TestCheckResourceAttr(resourceName, "worker_access_configuration.0.s3_presign.#", "1"), @@ -319,7 +319,7 @@ func testAccWorkteam_workerAccessConfiguration(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckWorkteamExists(ctx, resourceName, &workteam), resource.TestCheckResourceAttr(resourceName, "workteam_name", rName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "sagemaker", regexache.MustCompile(`workteam/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "sagemaker", regexache.MustCompile(`workteam/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, rName), resource.TestCheckResourceAttr(resourceName, "worker_access_configuration.#", "1"), resource.TestCheckResourceAttr(resourceName, "worker_access_configuration.0.s3_presign.#", "1"), diff --git a/internal/service/scheduler/schedule_group_test.go b/internal/service/scheduler/schedule_group_test.go index fb60d67eee76..9443bb9f4284 100644 --- a/internal/service/scheduler/schedule_group_test.go +++ b/internal/service/scheduler/schedule_group_test.go @@ -46,7 +46,7 @@ func TestAccSchedulerScheduleGroup_basic(t *testing.T) { Config: testAccScheduleGroupConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckScheduleGroupExists(ctx, resourceName, &scheduleGroup), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "scheduler", regexache.MustCompile(regexp.QuoteMeta(`schedule-group/`+rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "scheduler", regexache.MustCompile(regexp.QuoteMeta(`schedule-group/`+rName))), resource.TestCheckResourceAttrWith(resourceName, names.AttrCreationDate, func(actual string) error { expect := scheduleGroup.CreationDate.Format(time.RFC3339) if actual != expect { diff --git a/internal/service/scheduler/schedule_test.go b/internal/service/scheduler/schedule_test.go index c915c9079f9b..0db89a8da9fe 100644 --- a/internal/service/scheduler/schedule_test.go +++ b/internal/service/scheduler/schedule_test.go @@ -200,7 +200,7 @@ func TestAccSchedulerSchedule_basic(t *testing.T) { Config: testAccScheduleConfig_basic(name), Check: resource.ComposeTestCheckFunc( testAccCheckScheduleExists(ctx, t, resourceName, &schedule), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "scheduler", regexache.MustCompile(regexp.QuoteMeta(`schedule/default/`+name))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "scheduler", regexache.MustCompile(regexp.QuoteMeta(`schedule/default/`+name))), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), resource.TestCheckResourceAttr(resourceName, "end_date", ""), resource.TestCheckResourceAttr(resourceName, "flexible_time_window.0.maximum_window_in_minutes", "0"), diff --git a/internal/service/scheduler/service_endpoints_gen_test.go b/internal/service/scheduler/service_endpoints_gen_test.go index a6b5ed0cd10a..832f47689912 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/discoverer_test.go b/internal/service/schemas/discoverer_test.go index 4b03507f7510..0d035c39f107 100644 --- a/internal/service/schemas/discoverer_test.go +++ b/internal/service/schemas/discoverer_test.go @@ -35,7 +35,7 @@ func TestAccSchemasDiscoverer_basic(t *testing.T) { Config: testAccDiscovererConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckDiscovererExists(ctx, resourceName, &v), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "schemas", fmt.Sprintf("discoverer/events-event-bus-%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "schemas", fmt.Sprintf("discoverer/events-event-bus-%s", rName)), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), diff --git a/internal/service/schemas/registry_policy_test.go b/internal/service/schemas/registry_policy_test.go index 551a9ffa2f5b..d3a59177aff1 100644 --- a/internal/service/schemas/registry_policy_test.go +++ b/internal/service/schemas/registry_policy_test.go @@ -175,7 +175,7 @@ func testAccCheckRegistryPolicy(ctx context.Context, name string, expectedSid st return func(s *terraform.State) error { partition := acctest.Partition() region := acctest.Region() - account_id := acctest.AccountID() + account_id := acctest.AccountID(ctx) rs, ok := s.RootModule().Resources[name] if !ok { diff --git a/internal/service/schemas/registry_test.go b/internal/service/schemas/registry_test.go index 34a0267cc747..25c21b99f72d 100644 --- a/internal/service/schemas/registry_test.go +++ b/internal/service/schemas/registry_test.go @@ -35,7 +35,7 @@ func TestAccSchemasRegistry_basic(t *testing.T) { Config: testAccRegistryConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckRegistryExists(ctx, resourceName, &v), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "schemas", fmt.Sprintf("registry/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "schemas", fmt.Sprintf("registry/%s", rName)), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), diff --git a/internal/service/schemas/schema_test.go b/internal/service/schemas/schema_test.go index b410fbf34917..ff9d14c8fc37 100644 --- a/internal/service/schemas/schema_test.go +++ b/internal/service/schemas/schema_test.go @@ -109,7 +109,7 @@ func TestAccSchemasSchema_openAPI3(t *testing.T) { Config: testAccSchemaConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckSchemaExists(ctx, resourceName, &v), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "schemas", fmt.Sprintf("schema/%s/%s", rName, rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "schemas", fmt.Sprintf("schema/%s/%s", rName, rName)), resource.TestCheckResourceAttrSet(resourceName, names.AttrContent), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), resource.TestCheckResourceAttrSet(resourceName, "last_modified"), @@ -146,7 +146,7 @@ func TestAccSchemasSchema_jsonSchemaDraftv4(t *testing.T) { Config: testAccSchemaConfig_jsonSchema(rName), Check: resource.ComposeTestCheckFunc( testAccCheckSchemaExists(ctx, resourceName, &v), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "schemas", fmt.Sprintf("schema/%s/%s", rName, rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "schemas", fmt.Sprintf("schema/%s/%s", rName, rName)), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), resource.TestCheckResourceAttr(resourceName, names.AttrContent, testAccJSONSchemaContent), resource.TestCheckResourceAttrSet(resourceName, "last_modified"), diff --git a/internal/service/schemas/service_endpoints_gen_test.go b/internal/service/schemas/service_endpoints_gen_test.go index 7d72eb7e8df2..1ef015fab9c9 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/secret_test.go b/internal/service/secretsmanager/secret_test.go index 006bbd9ab83c..b4ce1fefc2a9 100644 --- a/internal/service/secretsmanager/secret_test.go +++ b/internal/service/secretsmanager/secret_test.go @@ -39,7 +39,7 @@ func TestAccSecretsManagerSecret_basic(t *testing.T) { Config: testAccSecretConfig_name(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckSecretExists(ctx, resourceName, &secret), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "secretsmanager", regexache.MustCompile(fmt.Sprintf("secret:%s-[[:alnum:]]+$", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "secretsmanager", regexache.MustCompile(fmt.Sprintf("secret:%s-[[:alnum:]]+$", rName))), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), resource.TestCheckResourceAttr(resourceName, "force_overwrite_replica_secret", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, names.AttrKMSKeyID, ""), diff --git a/internal/service/secretsmanager/secrets_data_source.go b/internal/service/secretsmanager/secrets_data_source.go index 3a9102c56b48..477fc561bede 100644 --- a/internal/service/secretsmanager/secrets_data_source.go +++ b/internal/service/secretsmanager/secrets_data_source.go @@ -63,7 +63,7 @@ func dataSourceSecretsRead(ctx context.Context, d *schema.ResourceData, meta int } } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) d.Set(names.AttrARNs, tfslices.ApplyToAll(results, func(v types.SecretListEntry) string { return aws.ToString(v.ARN) })) d.Set(names.AttrNames, tfslices.ApplyToAll(results, func(v types.SecretListEntry) string { return aws.ToString(v.Name) })) diff --git a/internal/service/secretsmanager/service_endpoints_gen_test.go b/internal/service/secretsmanager/service_endpoints_gen_test.go index 5381fd429417..a678e411d31f 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/account.go b/internal/service/securityhub/account.go index 733f1372d33c..b3c28c9b4503 100644 --- a/internal/service/securityhub/account.go +++ b/internal/service/securityhub/account.go @@ -95,7 +95,7 @@ func resourceAccountCreate(ctx context.Context, d *schema.ResourceData, meta int return sdkdiag.AppendErrorf(diags, "creating Security Hub Account: %s", err) } - d.SetId(meta.(*conns.AWSClient).AccountID) + d.SetId(meta.(*conns.AWSClient).AccountID(ctx)) autoEnableControls := d.Get("auto_enable_controls").(bool) inputU := &securityhub.UpdateSecurityHubConfigurationInput{ diff --git a/internal/service/securityhub/action_target_test.go b/internal/service/securityhub/action_target_test.go index bbe9971b1acd..2d9313b9735e 100644 --- a/internal/service/securityhub/action_target_test.go +++ b/internal/service/securityhub/action_target_test.go @@ -31,7 +31,7 @@ func testAccActionTarget_basic(t *testing.T) { Config: testAccActionTargetConfig_identifier("testaction"), Check: resource.ComposeTestCheckFunc( testAccCheckActionTargetExists(ctx, resourceName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "securityhub", "action/custom/testaction"), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "securityhub", "action/custom/testaction"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "This is a test custom action"), resource.TestCheckResourceAttr(resourceName, names.AttrIdentifier, "testaction"), resource.TestCheckResourceAttr(resourceName, names.AttrName, "Test action"), diff --git a/internal/service/securityhub/automation_rule_test.go b/internal/service/securityhub/automation_rule_test.go index b150e8b1c0fb..43ac7126ef7f 100644 --- a/internal/service/securityhub/automation_rule_test.go +++ b/internal/service/securityhub/automation_rule_test.go @@ -72,7 +72,7 @@ func testAccAutomationRule_full(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "actions.0.finding_fields_update.0.note.0.updated_by", "sechub-automation"), resource.TestCheckResourceAttr(resourceName, "actions.0.finding_fields_update.0.related_findings.#", "1"), resource.TestCheckResourceAttr(resourceName, "actions.0.finding_fields_update.0.related_findings.0.id", rName), - acctest.MatchResourceAttrRegionalARN(resourceName, "actions.0.finding_fields_update.0.related_findings.0.product_arn", "securityhub", regexache.MustCompile("product/aws/inspector")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, "actions.0.finding_fields_update.0.related_findings.0.product_arn", "securityhub", regexache.MustCompile("product/aws/inspector")), resource.TestCheckResourceAttr(resourceName, "actions.0.finding_fields_update.0.severity.#", "1"), resource.TestCheckResourceAttr(resourceName, "actions.0.finding_fields_update.0.severity.0.label", string(types.SeverityLabelCritical)), resource.TestCheckResourceAttr(resourceName, "actions.0.finding_fields_update.0.severity.0.product", "0"), @@ -98,7 +98,7 @@ func testAccAutomationRule_full(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "actions.0.finding_fields_update.0.note.0.updated_by", "sechub-automation"), resource.TestCheckResourceAttr(resourceName, "actions.0.finding_fields_update.0.related_findings.#", "1"), resource.TestCheckResourceAttr(resourceName, "actions.0.finding_fields_update.0.related_findings.0.id", rName), - acctest.MatchResourceAttrRegionalARN(resourceName, "actions.0.finding_fields_update.0.related_findings.0.product_arn", "securityhub", regexache.MustCompile("product/aws/inspector")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, "actions.0.finding_fields_update.0.related_findings.0.product_arn", "securityhub", regexache.MustCompile("product/aws/inspector")), resource.TestCheckResourceAttr(resourceName, "actions.0.finding_fields_update.0.severity.#", "1"), resource.TestCheckResourceAttr(resourceName, "actions.0.finding_fields_update.0.severity.0.label", string(types.SeverityLabelLow)), resource.TestCheckResourceAttr(resourceName, "actions.0.finding_fields_update.0.severity.0.product", "15.5"), diff --git a/internal/service/securityhub/finding_aggregator_test.go b/internal/service/securityhub/finding_aggregator_test.go index 472989af87c6..e6e3d91e7316 100644 --- a/internal/service/securityhub/finding_aggregator_test.go +++ b/internal/service/securityhub/finding_aggregator_test.go @@ -8,6 +8,7 @@ import ( "fmt" "testing" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-plugin-testing/terraform" "github.com/hashicorp/terraform-provider-aws/internal/acctest" @@ -145,7 +146,7 @@ resource "aws_securityhub_finding_aggregator" "test_aggregator" { depends_on = [aws_securityhub_account.example] } -`, names.EUWest1RegionID, names.EUWest2RegionID, names.USEast1RegionID) +`, endpoints.EuWest1RegionID, endpoints.EuWest2RegionID, endpoints.UsEast1RegionID) } func testAccFindingAggregatorConfig_allRegionsExceptSpecified() string { @@ -158,5 +159,5 @@ resource "aws_securityhub_finding_aggregator" "test_aggregator" { depends_on = [aws_securityhub_account.example] } -`, names.EUWest1RegionID, names.EUWest2RegionID) +`, endpoints.EuWest1RegionID, endpoints.EuWest2RegionID) } diff --git a/internal/service/securityhub/insight_test.go b/internal/service/securityhub/insight_test.go index d990a50a593f..025a85a0a52a 100644 --- a/internal/service/securityhub/insight_test.go +++ b/internal/service/securityhub/insight_test.go @@ -36,7 +36,7 @@ func testAccInsight_basic(t *testing.T) { Config: testAccInsightConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckInsightExists(ctx, resourceName), - testAccCheckInsightARN(resourceName), + testAccCheckInsightARN(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "filters.#", "1"), resource.TestCheckResourceAttr(resourceName, "filters.0.aws_account_id.#", "1"), @@ -303,7 +303,7 @@ func testAccInsight_Name(t *testing.T) { Config: testAccInsightConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckInsightExists(ctx, resourceName), - testAccCheckInsightARN(resourceName), + testAccCheckInsightARN(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), ), }, @@ -311,7 +311,7 @@ func testAccInsight_Name(t *testing.T) { Config: testAccInsightConfig_basic(rNameUpdated), Check: resource.ComposeTestCheckFunc( testAccCheckInsightExists(ctx, resourceName), - testAccCheckInsightARN(resourceName), + testAccCheckInsightARN(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, names.AttrName, rNameUpdated), ), }, @@ -495,9 +495,9 @@ func testAccCheckInsightExists(ctx context.Context, n string) resource.TestCheck // testAccCheckInsightARN checks the computed ARN value // and accounts for differences in SecurityHub on GovCloud where the partition portion // of the ARN is still "aws" while other services utilize the "aws-us-gov" partition -func testAccCheckInsightARN(resourceName string) resource.TestCheckFunc { +func testAccCheckInsightARN(ctx context.Context, resourceName string) resource.TestCheckFunc { return func(s *terraform.State) error { - expectedArn := fmt.Sprintf(`^arn:aws[^:]*:securityhub:%s:%s:insight/%s/custom/.+$`, acctest.Region(), acctest.AccountID(), acctest.AccountID()) + expectedArn := fmt.Sprintf(`^arn:aws[^:]*:securityhub:%s:%s:insight/%s/custom/.+$`, acctest.Region(), acctest.AccountID(ctx), acctest.AccountID(ctx)) //lintignore:AWSAT001 return resource.TestMatchResourceAttr(resourceName, names.AttrARN, regexache.MustCompile(expectedArn))(s) } diff --git a/internal/service/securityhub/invite_accepter.go b/internal/service/securityhub/invite_accepter.go index 5afe4ef68b07..82d3a65ffa9d 100644 --- a/internal/service/securityhub/invite_accepter.go +++ b/internal/service/securityhub/invite_accepter.go @@ -70,7 +70,7 @@ func resourceInviteAccepterCreate(ctx context.Context, d *schema.ResourceData, m return sdkdiag.AppendErrorf(diags, "accepting Security Hub Invitation (%s): %s", invitationID, err) } - d.SetId(meta.(*conns.AWSClient).AccountID) + d.SetId(meta.(*conns.AWSClient).AccountID(ctx)) return append(diags, resourceInviteAccepterRead(ctx, d, meta)...) } diff --git a/internal/service/securityhub/organization_admin_account_test.go b/internal/service/securityhub/organization_admin_account_test.go index 341e5c00cedb..ab1591261546 100644 --- a/internal/service/securityhub/organization_admin_account_test.go +++ b/internal/service/securityhub/organization_admin_account_test.go @@ -34,7 +34,7 @@ func testAccOrganizationAdminAccount_basic(t *testing.T) { Config: testAccOrganizationAdminAccountConfig_self(), Check: resource.ComposeTestCheckFunc( testAccCheckOrganizationAdminAccountExists(ctx, resourceName), - acctest.CheckResourceAttrAccountID(resourceName, "admin_account_id"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "admin_account_id"), ), }, { diff --git a/internal/service/securityhub/organization_configuration.go b/internal/service/securityhub/organization_configuration.go index 305e2a25fbf9..d6c647559d36 100644 --- a/internal/service/securityhub/organization_configuration.go +++ b/internal/service/securityhub/organization_configuration.go @@ -102,7 +102,7 @@ func resourceOrganizationConfigurationUpdate(ctx context.Context, d *schema.Reso } if d.IsNewResource() { - d.SetId(meta.(*conns.AWSClient).AccountID) + d.SetId(meta.(*conns.AWSClient).AccountID(ctx)) } configurationType := types.OrganizationConfigurationConfigurationTypeLocal diff --git a/internal/service/securityhub/product_subscription_test.go b/internal/service/securityhub/product_subscription_test.go index c0e3df09c4d9..d1e60d89e1de 100644 --- a/internal/service/securityhub/product_subscription_test.go +++ b/internal/service/securityhub/product_subscription_test.go @@ -48,7 +48,7 @@ func testAccProductSubscription_basic(t *testing.T) { Partition: acctest.Partition(), Service: "securityhub", Region: acctest.Region(), - AccountID: acctest.AccountID(), + AccountID: acctest.AccountID(ctx), Resource: "product-subscription/aws/guardduty", }.String() input := &securityhub.DisableImportFindingsForProductInput{ diff --git a/internal/service/securityhub/service_endpoints_gen_test.go b/internal/service/securityhub/service_endpoints_gen_test.go index 5048484f7517..a5016a78224d 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/securityhub/standards_control_associations_data_source.go b/internal/service/securityhub/standards_control_associations_data_source.go index 27f342a986a8..8db0af538753 100644 --- a/internal/service/securityhub/standards_control_associations_data_source.go +++ b/internal/service/securityhub/standards_control_associations_data_source.go @@ -74,7 +74,7 @@ func (d *standardsControlAssociationsDataSource) Read(ctx context.Context, reque return } - data.ID = types.StringValue(d.Meta().Region) + data.ID = types.StringValue(d.Meta().Region(ctx)) response.Diagnostics.Append(fwflex.Flatten(ctx, out, &data.StandardsControlAssociations)...) response.Diagnostics.Append(response.State.Set(ctx, &data)...) } diff --git a/internal/service/securitylake/aws_log_source_test.go b/internal/service/securitylake/aws_log_source_test.go index b7a6468f9f94..7c225eebe049 100644 --- a/internal/service/securitylake/aws_log_source_test.go +++ b/internal/service/securitylake/aws_log_source_test.go @@ -41,9 +41,9 @@ func testAccAWSLogSource_basic(t *testing.T) { testAccCheckAWSLogSourceExists(ctx, resourceName, &logSource), resource.TestCheckResourceAttr(resourceName, "source.#", "1"), resource.TestCheckResourceAttrSet(resourceName, "source.0.accounts.#"), - acctest.CheckResourceAttrAccountID(resourceName, "source.0.accounts.0"), + acctest.CheckResourceAttrAccountID(ctx, resourceName, "source.0.accounts.0"), func(s *terraform.State) error { - return resource.TestCheckTypeSetElemAttr(resourceName, "source.0.accounts.*", acctest.AccountID())(s) + return resource.TestCheckTypeSetElemAttr(resourceName, "source.0.accounts.*", acctest.AccountID(ctx))(s) }, resource.TestCheckResourceAttr(resourceName, "source.0.regions.#", "1"), resource.TestCheckTypeSetElemAttr(resourceName, "source.0.regions.*", acctest.Region()), diff --git a/internal/service/securitylake/custom_log_source_test.go b/internal/service/securitylake/custom_log_source_test.go index 9fc30ef0db9a..7f7e79068e6c 100644 --- a/internal/service/securitylake/custom_log_source_test.go +++ b/internal/service/securitylake/custom_log_source_test.go @@ -43,9 +43,9 @@ func testAccCustomLogSource_basic(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckCustomLogSourceExists(ctx, resourceName, &customLogSource), resource.TestCheckResourceAttr(resourceName, "attributes.#", "1"), - acctest.CheckResourceAttrRegionalARN(resourceName, "attributes.0.crawler_arn", "glue", fmt.Sprintf("crawler/%s", rName)), - acctest.CheckResourceAttrRegionalARN(resourceName, "attributes.0.database_arn", "glue", fmt.Sprintf("database/amazon_security_lake_glue_db_%s", strings.Replace(acctest.Region(), "-", "_", -1))), - acctest.CheckResourceAttrRegionalARN(resourceName, "attributes.0.table_arn", "glue", fmt.Sprintf("table/amazon_security_lake_table_%s_ext_%s", strings.Replace(acctest.Region(), "-", "_", -1), strings.Replace(rName, "-", "_", -1))), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, "attributes.0.crawler_arn", "glue", fmt.Sprintf("crawler/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, "attributes.0.database_arn", "glue", fmt.Sprintf("database/amazon_security_lake_glue_db_%s", strings.Replace(acctest.Region(), "-", "_", -1))), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, "attributes.0.table_arn", "glue", fmt.Sprintf("table/amazon_security_lake_table_%s_ext_%s", strings.Replace(acctest.Region(), "-", "_", -1), strings.Replace(rName, "-", "_", -1))), resource.TestCheckResourceAttr(resourceName, "configuration.#", "1"), resource.TestCheckResourceAttr(resourceName, "configuration.0.crawler_configuration.#", "1"), resource.TestCheckResourceAttrPair(resourceName, "configuration.0.crawler_configuration.0.role_arn", "aws_iam_role.test", names.AttrARN), @@ -54,7 +54,7 @@ func testAccCustomLogSource_basic(t *testing.T) { resource.TestCheckNoResourceAttr(resourceName, "event_classes"), resource.TestCheckResourceAttr(resourceName, "provider_details.#", "1"), resource.TestMatchResourceAttr(resourceName, "provider_details.0.location", regexache.MustCompile(fmt.Sprintf(`^s3://aws-security-data-lake-%s-[a-z0-9]{30}/ext/%s/$`, acctest.Region(), rName))), - acctest.CheckResourceAttrGlobalARN(resourceName, "provider_details.0.role_arn", "iam", fmt.Sprintf("role/AmazonSecurityLake-Provider-%s-%s", rName, acctest.Region())), + acctest.CheckResourceAttrGlobalARN(ctx, resourceName, "provider_details.0.role_arn", "iam", fmt.Sprintf("role/AmazonSecurityLake-Provider-%s-%s", rName, acctest.Region())), resource.TestCheckResourceAttr(resourceName, "source_name", rName), resource.TestCheckNoResourceAttr(resourceName, "source_version"), ), diff --git a/internal/service/securitylake/data_lake.go b/internal/service/securitylake/data_lake.go index 2a36dacdc97d..43fdbadef0f9 100644 --- a/internal/service/securitylake/data_lake.go +++ b/internal/service/securitylake/data_lake.go @@ -270,7 +270,7 @@ func (r *dataLakeResource) Read(ctx context.Context, request resource.ReadReques // Transparent tagging fails with "ResourceNotFoundException: The request failed because the specified resource doesn't exist." // if the data lake's AWS Region isn't the configured one. - if region := configuration.Region.ValueString(); region != r.Meta().Region { + if region := configuration.Region.ValueString(); region != r.Meta().Region(ctx) { if tags, err := listTags(ctx, conn, data.ID.ValueString(), func(o *securitylake.Options) { o.Region = region }); err == nil { setTagsOut(ctx, Tags(tags)) } diff --git a/internal/service/securitylake/service_endpoints_gen_test.go b/internal/service/securitylake/service_endpoints_gen_test.go index 47e5b8fa9045..a025c31ebfa6 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/securitylake/subscriber_notification_test.go b/internal/service/securitylake/subscriber_notification_test.go index 8d6fb2d10deb..e69220ec2035 100644 --- a/internal/service/securitylake/subscriber_notification_test.go +++ b/internal/service/securitylake/subscriber_notification_test.go @@ -48,7 +48,7 @@ func testAccSubscriberNotification_sqs_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "configuration.0.sqs_notification_configuration.#", "1"), resource.TestCheckResourceAttrPair(resourceName, "endpoint_id", resourceName, "subscriber_endpoint"), func(s *terraform.State) error { - return acctest.CheckResourceAttrRegionalARN(resourceName, "subscriber_endpoint", "sqs", fmt.Sprintf("AmazonSecurityLake-%s-Main-Queue", aws.ToString(subscriber.SubscriberId)))(s) + return acctest.CheckResourceAttrRegionalARN(ctx, resourceName, "subscriber_endpoint", "sqs", fmt.Sprintf("AmazonSecurityLake-%s-Main-Queue", aws.ToString(subscriber.SubscriberId)))(s) }, ), }, diff --git a/internal/service/securitylake/subscriber_test.go b/internal/service/securitylake/subscriber_test.go index e8daab58ba76..853327793fa8 100644 --- a/internal/service/securitylake/subscriber_test.go +++ b/internal/service/securitylake/subscriber_test.go @@ -49,12 +49,12 @@ func testAccSubscriber_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "access_type", "S3"), func(s *terraform.State) error { id := aws.ToString(subscriber.SubscriberId) - return acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "securitylake", fmt.Sprintf("subscriber/%s", id))(s) + return acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "securitylake", fmt.Sprintf("subscriber/%s", id))(s) }, resource.TestCheckResourceAttr(resourceName, "resource_share_arn", ""), func(s *terraform.State) error { id := aws.ToString(subscriber.SubscriberId) - return acctest.CheckResourceAttrGlobalARN(resourceName, names.AttrRoleARN, "iam", fmt.Sprintf("role/AmazonSecurityLake-%s", id))(s) + return acctest.CheckResourceAttrGlobalARN(ctx, resourceName, names.AttrRoleARN, "iam", fmt.Sprintf("role/AmazonSecurityLake-%s", id))(s) }, acctest.MatchResourceAttrGlobalARNNoAccount(resourceName, "s3_bucket_arn", "s3", regexache.MustCompile(fmt.Sprintf(`aws-security-data-lake-%s-[a-z0-9]{30}$`, acctest.Region()))), resource.TestCheckResourceAttrSet(resourceName, names.AttrID), diff --git a/internal/service/serverlessrepo/cloudformation_stack_test.go b/internal/service/serverlessrepo/cloudformation_stack_test.go index db024f0f35b8..efb401d572d4 100644 --- a/internal/service/serverlessrepo/cloudformation_stack_test.go +++ b/internal/service/serverlessrepo/cloudformation_stack_test.go @@ -315,10 +315,10 @@ func testAccCloudFormationStackNameImportStateIdFunc(resourceName string) resour } func testAccCloudFormationApplicationID() string { - arnRegion := names.USEast1RegionID + arnRegion := endpoints.UsEast1RegionID arnAccountID := "297356227824" if acctest.Partition() == endpoints.AwsUsGovPartitionID { - arnRegion = names.USGovWest1RegionID + arnRegion = endpoints.UsGovWest1RegionID arnAccountID = "023102451235" } diff --git a/internal/service/serverlessrepo/service_endpoints_gen_test.go b/internal/service/serverlessrepo/service_endpoints_gen_test.go index 0221d9496a6f..13a395f0a39a 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/organizations_access.go b/internal/service/servicecatalog/organizations_access.go index 2a6953c16adc..63c2cb70a237 100644 --- a/internal/service/servicecatalog/organizations_access.go +++ b/internal/service/servicecatalog/organizations_access.go @@ -42,7 +42,7 @@ func resourceOrganizationsAccessCreate(ctx context.Context, d *schema.ResourceDa var diags diag.Diagnostics conn := meta.(*conns.AWSClient).ServiceCatalogClient(ctx) - d.SetId(meta.(*conns.AWSClient).AccountID) + d.SetId(meta.(*conns.AWSClient).AccountID(ctx)) // During create, if enabled = "true", then Enable Access and vice versa // During delete, the opposite diff --git a/internal/service/servicecatalog/portfolio_test.go b/internal/service/servicecatalog/portfolio_test.go index 923f29305215..e307a2175a6c 100644 --- a/internal/service/servicecatalog/portfolio_test.go +++ b/internal/service/servicecatalog/portfolio_test.go @@ -36,7 +36,7 @@ func TestAccServiceCatalogPortfolio_basic(t *testing.T) { Config: testAccPortfolioConfig_basic(name), Check: resource.ComposeTestCheckFunc( testAccCheckPortfolioExists(ctx, resourceName, &dpo), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "catalog", regexache.MustCompile(`portfolio/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "catalog", regexache.MustCompile(`portfolio/.+`)), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedTime), resource.TestCheckResourceAttr(resourceName, names.AttrName, name), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "test-2"), diff --git a/internal/service/servicecatalog/product_test.go b/internal/service/servicecatalog/product_test.go index 72482520125e..f513e1f6a6d7 100644 --- a/internal/service/servicecatalog/product_test.go +++ b/internal/service/servicecatalog/product_test.go @@ -44,7 +44,7 @@ func TestAccServiceCatalogProduct_basic(t *testing.T) { Config: testAccProductConfig_basic(rName, "beskrivning", "supportbeskrivning", domain, acctest.DefaultEmailAddress), Check: resource.ComposeTestCheckFunc( testAccCheckProductExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "catalog", regexache.MustCompile(`product/prod-.*`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "catalog", regexache.MustCompile(`product/prod-.*`)), resource.TestCheckResourceAttr(resourceName, "accept_language", tfservicecatalog.AcceptLanguageEnglish), acctest.CheckResourceAttrRFC3339(resourceName, names.AttrCreatedTime), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "beskrivning"), @@ -162,12 +162,12 @@ func TestAccServiceCatalogProduct_physicalID(t *testing.T) { Config: testAccProductConfig_physicalID(rName, domain, acctest.DefaultEmailAddress), Check: resource.ComposeTestCheckFunc( testAccCheckProductExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "catalog", regexache.MustCompile(`product/prod-.*`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "catalog", regexache.MustCompile(`product/prod-.*`)), resource.TestCheckResourceAttr(resourceName, "provisioning_artifact_parameters.#", "1"), resource.TestCheckResourceAttr(resourceName, "provisioning_artifact_parameters.0.description", "artefaktbeskrivning"), resource.TestCheckResourceAttr(resourceName, "provisioning_artifact_parameters.0.name", rName), resource.TestCheckResourceAttrSet(resourceName, "provisioning_artifact_parameters.0.template_physical_id"), - acctest.MatchResourceAttrRegionalARN( + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, "provisioning_artifact_parameters.0.template_physical_id", "cloudformation", diff --git a/internal/service/servicecatalog/provisioned_product_test.go b/internal/service/servicecatalog/provisioned_product_test.go index 730365d1aee9..3e7a837675cc 100644 --- a/internal/service/servicecatalog/provisioned_product_test.go +++ b/internal/service/servicecatalog/provisioned_product_test.go @@ -40,7 +40,7 @@ func TestAccServiceCatalogProvisionedProduct_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckProvisionedProductExists(ctx, resourceName, &pprod), resource.TestCheckResourceAttr(resourceName, "accept_language", tfservicecatalog.AcceptLanguageEnglish), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "servicecatalog", regexache.MustCompile(fmt.Sprintf(`stack/%s/pp-.*`, rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "servicecatalog", regexache.MustCompile(fmt.Sprintf(`stack/%s/pp-.*`, rName))), acctest.CheckResourceAttrRFC3339(resourceName, names.AttrCreatedTime), resource.TestCheckResourceAttrSet(resourceName, "last_provisioning_record_id"), resource.TestCheckResourceAttrSet(resourceName, "last_record_id"), @@ -106,7 +106,7 @@ func TestAccServiceCatalogProvisionedProduct_update(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckProvisionedProductExists(ctx, resourceName, &pprod), resource.TestCheckResourceAttr(resourceName, "accept_language", tfservicecatalog.AcceptLanguageEnglish), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "servicecatalog", regexache.MustCompile(fmt.Sprintf(`stack/%s/pp-.*`, rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "servicecatalog", regexache.MustCompile(fmt.Sprintf(`stack/%s/pp-.*`, rName))), acctest.CheckResourceAttrRFC3339(resourceName, names.AttrCreatedTime), resource.TestCheckResourceAttrSet(resourceName, "last_provisioning_record_id"), resource.TestCheckResourceAttrSet(resourceName, "last_record_id"), diff --git a/internal/service/servicecatalog/service_endpoints_gen_test.go b/internal/service/servicecatalog/service_endpoints_gen_test.go index bf5ffc3d0fa7..e0eabae23248 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/application_data_source_test.go b/internal/service/servicecatalogappregistry/application_data_source_test.go index 9b987b6f2b2e..c4e399f4447c 100644 --- a/internal/service/servicecatalogappregistry/application_data_source_test.go +++ b/internal/service/servicecatalogappregistry/application_data_source_test.go @@ -34,7 +34,7 @@ func TestAccServiceCatalogAppRegistryApplicationDataSource_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrPair(dataSourceName, names.AttrID, applicationResourceName, names.AttrID), resource.TestCheckResourceAttr(dataSourceName, names.AttrName, rName), - acctest.MatchResourceAttrRegionalARN(dataSourceName, names.AttrARN, "servicecatalog", regexache.MustCompile(`/applications/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, dataSourceName, names.AttrARN, "servicecatalog", regexache.MustCompile(`/applications/.+$`)), ), }, }, diff --git a/internal/service/servicecatalogappregistry/application_test.go b/internal/service/servicecatalogappregistry/application_test.go index e71b201cd894..d95269b900dd 100644 --- a/internal/service/servicecatalogappregistry/application_test.go +++ b/internal/service/servicecatalogappregistry/application_test.go @@ -40,7 +40,7 @@ func TestAccServiceCatalogAppRegistryApplication_basic(t *testing.T) { Config: testAccApplicationConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckApplicationExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "servicecatalog", regexache.MustCompile(`/applications/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "servicecatalog", regexache.MustCompile(`/applications/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), ), }, diff --git a/internal/service/servicecatalogappregistry/service_endpoints_gen_test.go b/internal/service/servicecatalogappregistry/service_endpoints_gen_test.go index fcf3b29af89e..b09df78fb4ba 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/http_namespace_test.go b/internal/service/servicediscovery/http_namespace_test.go index cb0f5aed3f25..c9dc8d10c012 100644 --- a/internal/service/servicediscovery/http_namespace_test.go +++ b/internal/service/servicediscovery/http_namespace_test.go @@ -38,7 +38,7 @@ func TestAccServiceDiscoveryHTTPNamespace_basic(t *testing.T) { Config: testAccHTTPNamespaceConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckHTTPNamespaceExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "servicediscovery", regexache.MustCompile(`namespace/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "servicediscovery", regexache.MustCompile(`namespace/.+`)), resource.TestCheckResourceAttrSet(resourceName, names.AttrARN), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), diff --git a/internal/service/servicediscovery/private_dns_namespace_test.go b/internal/service/servicediscovery/private_dns_namespace_test.go index 16e09334d21b..c68ec7e22409 100644 --- a/internal/service/servicediscovery/private_dns_namespace_test.go +++ b/internal/service/servicediscovery/private_dns_namespace_test.go @@ -39,7 +39,7 @@ func TestAccServiceDiscoveryPrivateDNSNamespace_basic(t *testing.T) { Config: testAccPrivateDNSNamespaceConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckPrivateDNSNamespaceExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "servicediscovery", regexache.MustCompile(`namespace/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "servicediscovery", regexache.MustCompile(`namespace/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), resource.TestCheckResourceAttrSet(resourceName, "hosted_zone"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), diff --git a/internal/service/servicediscovery/public_dns_namespace_test.go b/internal/service/servicediscovery/public_dns_namespace_test.go index d50d42a02d1f..3445a19ed227 100644 --- a/internal/service/servicediscovery/public_dns_namespace_test.go +++ b/internal/service/servicediscovery/public_dns_namespace_test.go @@ -38,7 +38,7 @@ func TestAccServiceDiscoveryPublicDNSNamespace_basic(t *testing.T) { Config: testAccPublicDNSNamespaceConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckPublicDNSNamespaceExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "servicediscovery", regexache.MustCompile(`namespace/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "servicediscovery", regexache.MustCompile(`namespace/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), resource.TestCheckResourceAttrSet(resourceName, "hosted_zone"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), diff --git a/internal/service/servicediscovery/service_endpoints_gen_test.go b/internal/service/servicediscovery/service_endpoints_gen_test.go index 286d5b863a1c..49dd5a4ca8b7 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/servicediscovery/service_test.go b/internal/service/servicediscovery/service_test.go index e7557b987226..a633a5f79a3e 100644 --- a/internal/service/servicediscovery/service_test.go +++ b/internal/service/servicediscovery/service_test.go @@ -38,7 +38,7 @@ func TestAccServiceDiscoveryService_private(t *testing.T) { Config: testAccServiceConfig_private(rName, 1), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckServiceExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "servicediscovery", regexache.MustCompile(`service/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "servicediscovery", regexache.MustCompile(`service/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), resource.TestCheckResourceAttr(resourceName, "dns_config.#", "1"), resource.TestCheckResourceAttr(resourceName, "dns_config.0.dns_records.#", "1"), @@ -63,7 +63,7 @@ func TestAccServiceDiscoveryService_private(t *testing.T) { Config: testAccServiceConfig_privateUpdate(rName, 1), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckServiceExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "servicediscovery", regexache.MustCompile(`service/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "servicediscovery", regexache.MustCompile(`service/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "test"), resource.TestCheckResourceAttr(resourceName, "dns_config.#", "1"), resource.TestCheckResourceAttr(resourceName, "dns_config.0.dns_records.#", "2"), @@ -102,7 +102,7 @@ func TestAccServiceDiscoveryService_public(t *testing.T) { Config: testAccServiceConfig_public(rName, 5, "/path"), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckServiceExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "servicediscovery", regexache.MustCompile(`service/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "servicediscovery", regexache.MustCompile(`service/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "test"), resource.TestCheckResourceAttr(resourceName, "dns_config.#", "1"), resource.TestCheckResourceAttr(resourceName, "dns_config.0.routing_policy", "WEIGHTED"), @@ -124,7 +124,7 @@ func TestAccServiceDiscoveryService_public(t *testing.T) { Config: testAccServiceConfig_public(rName, 3, "/updated-path"), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckServiceExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "servicediscovery", regexache.MustCompile(`service/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "servicediscovery", regexache.MustCompile(`service/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "test"), resource.TestCheckResourceAttr(resourceName, "dns_config.#", "1"), resource.TestCheckResourceAttr(resourceName, "health_check_config.#", "1"), @@ -139,7 +139,7 @@ func TestAccServiceDiscoveryService_public(t *testing.T) { Config: testAccServiceConfig_publicUpdateNoHealthCheck(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckServiceExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "servicediscovery", regexache.MustCompile(`service/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "servicediscovery", regexache.MustCompile(`service/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), resource.TestCheckResourceAttr(resourceName, "dns_config.#", "1"), resource.TestCheckResourceAttr(resourceName, "health_check_config.#", "0"), @@ -169,7 +169,7 @@ func TestAccServiceDiscoveryService_private_http(t *testing.T) { Config: testAccServiceConfig_private_http(rName), Check: resource.ComposeTestCheckFunc( testAccCheckServiceExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "servicediscovery", regexache.MustCompile(`service/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "servicediscovery", regexache.MustCompile(`service/.+`)), resource.TestCheckResourceAttrSet(resourceName, "namespace_id"), resource.TestCheckResourceAttr(resourceName, names.AttrType, "HTTP"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), @@ -203,7 +203,7 @@ func TestAccServiceDiscoveryService_http(t *testing.T) { Config: testAccServiceConfig_http(rName), Check: resource.ComposeTestCheckFunc( testAccCheckServiceExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "servicediscovery", regexache.MustCompile(`service/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "servicediscovery", regexache.MustCompile(`service/.+`)), resource.TestCheckResourceAttrSet(resourceName, "namespace_id"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), diff --git a/internal/service/servicequotas/service_endpoints_gen_test.go b/internal/service/servicequotas/service_endpoints_gen_test.go index e7ce9f9441c6..afe671df6719 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/servicequotas/service_quota_data_source_test.go b/internal/service/servicequotas/service_quota_data_source_test.go index d000af762469..665203a7ca12 100644 --- a/internal/service/servicequotas/service_quota_data_source_test.go +++ b/internal/service/servicequotas/service_quota_data_source_test.go @@ -30,7 +30,7 @@ func TestAccServiceQuotasServiceQuotaDataSource_quotaCode(t *testing.T) { Config: testAccServiceQuotaDataSourceConfig_code(setQuotaServiceCode, setQuotaQuotaCode), Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttr(dataSourceName, "adjustable", acctest.CtTrue), - acctest.CheckResourceAttrRegionalARN(dataSourceName, names.AttrARN, "servicequotas", fmt.Sprintf("%s/%s", setQuotaServiceCode, setQuotaQuotaCode)), + acctest.CheckResourceAttrRegionalARN(ctx, dataSourceName, names.AttrARN, "servicequotas", fmt.Sprintf("%s/%s", setQuotaServiceCode, setQuotaQuotaCode)), resource.TestCheckResourceAttr(dataSourceName, names.AttrDefaultValue, "5"), resource.TestCheckResourceAttr(dataSourceName, "global_quota", acctest.CtFalse), resource.TestCheckResourceAttr(dataSourceName, "quota_code", setQuotaQuotaCode), @@ -94,7 +94,7 @@ func TestAccServiceQuotasServiceQuotaDataSource_quotaCode_hasUsageMetric(t *test { Config: testAccServiceQuotaDataSourceConfig_code(hasUsageMetricServiceCode, hasUsageMetricQuotaCode), Check: resource.ComposeAggregateTestCheckFunc( - acctest.CheckResourceAttrRegionalARN(dataSourceName, names.AttrARN, "servicequotas", fmt.Sprintf("%s/%s", hasUsageMetricServiceCode, hasUsageMetricQuotaCode)), + acctest.CheckResourceAttrRegionalARN(ctx, dataSourceName, names.AttrARN, "servicequotas", fmt.Sprintf("%s/%s", hasUsageMetricServiceCode, hasUsageMetricQuotaCode)), resource.TestCheckResourceAttr(dataSourceName, "adjustable", acctest.CtTrue), resource.TestCheckResourceAttr(dataSourceName, names.AttrDefaultValue, "500"), resource.TestCheckResourceAttr(dataSourceName, "global_quota", acctest.CtFalse), @@ -155,7 +155,7 @@ func TestAccServiceQuotasServiceQuotaDataSource_quotaName(t *testing.T) { Config: testAccServiceQuotaDataSourceConfig_name("vpc", setQuotaQuotaName), Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttr(dataSourceName, "adjustable", acctest.CtTrue), - acctest.CheckResourceAttrRegionalARN(dataSourceName, names.AttrARN, "servicequotas", fmt.Sprintf("%s/%s", setQuotaServiceCode, setQuotaQuotaCode)), + acctest.CheckResourceAttrRegionalARN(ctx, dataSourceName, names.AttrARN, "servicequotas", fmt.Sprintf("%s/%s", setQuotaServiceCode, setQuotaQuotaCode)), resource.TestCheckResourceAttr(dataSourceName, names.AttrDefaultValue, "5"), resource.TestCheckResourceAttr(dataSourceName, "global_quota", acctest.CtFalse), resource.TestCheckResourceAttr(dataSourceName, "quota_code", setQuotaQuotaCode), @@ -219,7 +219,7 @@ func TestAccServiceQuotasServiceQuotaDataSource_quotaName_hasUsageMetric(t *test { Config: testAccServiceQuotaDataSourceConfig_name(hasUsageMetricServiceCode, hasUsageMetricQuotaName), Check: resource.ComposeAggregateTestCheckFunc( - acctest.CheckResourceAttrRegionalARN(dataSourceName, names.AttrARN, "servicequotas", fmt.Sprintf("%s/%s", hasUsageMetricServiceCode, hasUsageMetricQuotaCode)), + acctest.CheckResourceAttrRegionalARN(ctx, dataSourceName, names.AttrARN, "servicequotas", fmt.Sprintf("%s/%s", hasUsageMetricServiceCode, hasUsageMetricQuotaCode)), resource.TestCheckResourceAttr(dataSourceName, "adjustable", acctest.CtTrue), resource.TestCheckResourceAttr(dataSourceName, names.AttrDefaultValue, "500"), resource.TestCheckResourceAttr(dataSourceName, "global_quota", acctest.CtFalse), diff --git a/internal/service/servicequotas/template_association.go b/internal/service/servicequotas/template_association.go index eb10a83402a3..e62f15cd890d 100644 --- a/internal/service/servicequotas/template_association.go +++ b/internal/service/servicequotas/template_association.go @@ -58,7 +58,7 @@ func (r *resourceTemplateAssociation) Create(ctx context.Context, req resource.C return } - plan.ID = types.StringValue(r.Meta().AccountID) + plan.ID = types.StringValue(r.Meta().AccountID(ctx)) _, err := conn.AssociateServiceQuotaTemplate(ctx, &servicequotas.AssociateServiceQuotaTemplateInput{}) if err != nil { diff --git a/internal/service/servicequotas/template_association_test.go b/internal/service/servicequotas/template_association_test.go index d003b713a048..7180b780533a 100644 --- a/internal/service/servicequotas/template_association_test.go +++ b/internal/service/servicequotas/template_association_test.go @@ -11,6 +11,7 @@ import ( "github.com/aws/aws-sdk-go-v2/service/servicequotas" "github.com/aws/aws-sdk-go-v2/service/servicequotas/types" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-plugin-testing/terraform" "github.com/hashicorp/terraform-provider-aws/internal/acctest" @@ -27,7 +28,7 @@ func testAccTemplateAssociation_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckRegion(t, names.USEast1RegionID) + acctest.PreCheckRegion(t, endpoints.UsEast1RegionID) acctest.PreCheckPartitionHasService(t, names.ServiceQuotasEndpointID) testAccPreCheckTemplate(ctx, t) }, @@ -58,7 +59,7 @@ func testAccTemplateAssociation_disappears(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckRegion(t, names.USEast1RegionID) + acctest.PreCheckRegion(t, endpoints.UsEast1RegionID) acctest.PreCheckPartitionHasService(t, names.ServiceQuotasEndpointID) testAccPreCheckTemplate(ctx, t) }, @@ -85,7 +86,7 @@ func testAccTemplateAssociation_skipDestroy(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckRegion(t, names.USEast1RegionID) + acctest.PreCheckRegion(t, endpoints.UsEast1RegionID) acctest.PreCheckPartitionHasService(t, names.ServiceQuotasEndpointID) testAccPreCheckTemplate(ctx, t) }, diff --git a/internal/service/servicequotas/template_test.go b/internal/service/servicequotas/template_test.go index 2f6a9c409b8c..dce3ea598733 100644 --- a/internal/service/servicequotas/template_test.go +++ b/internal/service/servicequotas/template_test.go @@ -11,6 +11,7 @@ import ( "github.com/aws/aws-sdk-go-v2/service/servicequotas" "github.com/aws/aws-sdk-go-v2/service/servicequotas/types" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-plugin-testing/terraform" "github.com/hashicorp/terraform-provider-aws/internal/acctest" @@ -44,7 +45,7 @@ func testAccTemplate_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckRegion(t, names.USEast1RegionID) + acctest.PreCheckRegion(t, endpoints.UsEast1RegionID) acctest.PreCheckPartitionHasService(t, names.ServiceQuotasEndpointID) testAccPreCheckTemplate(ctx, t) }, @@ -79,7 +80,7 @@ func testAccTemplate_disappears(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckRegion(t, names.USEast1RegionID) + acctest.PreCheckRegion(t, endpoints.UsEast1RegionID) acctest.PreCheckPartitionHasService(t, names.ServiceQuotasEndpointID) testAccPreCheckTemplate(ctx, t) }, @@ -108,7 +109,7 @@ func testAccTemplate_value(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckRegion(t, names.USEast1RegionID) + acctest.PreCheckRegion(t, endpoints.UsEast1RegionID) acctest.PreCheckPartitionHasService(t, names.ServiceQuotasEndpointID) testAccPreCheckTemplate(ctx, t) }, diff --git a/internal/service/servicequotas/templates_data_source_test.go b/internal/service/servicequotas/templates_data_source_test.go index d2cbe36c8ba8..f8c9c7f9652a 100644 --- a/internal/service/servicequotas/templates_data_source_test.go +++ b/internal/service/servicequotas/templates_data_source_test.go @@ -6,6 +6,7 @@ package servicequotas_test import ( "testing" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-provider-aws/internal/acctest" "github.com/hashicorp/terraform-provider-aws/names" @@ -19,7 +20,7 @@ func testAccTemplatesDataSource_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckRegion(t, names.USEast1RegionID) + acctest.PreCheckRegion(t, endpoints.UsEast1RegionID) acctest.PreCheckPartitionHasService(t, names.ServiceQuotasEndpointID) testAccPreCheckTemplate(ctx, t) }, diff --git a/internal/service/ses/active_receipt_rule_set.go b/internal/service/ses/active_receipt_rule_set.go index 023bc3e924d5..1a35b0113fba 100644 --- a/internal/service/ses/active_receipt_rule_set.go +++ b/internal/service/ses/active_receipt_rule_set.go @@ -88,8 +88,8 @@ func resourceActiveReceiptRuleSetRead(ctx context.Context, d *schema.ResourceDat arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "ses", - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("receipt-rule-set/%s", d.Id()), }.String() d.Set(names.AttrARN, arn) @@ -134,8 +134,8 @@ func resourceActiveReceiptRuleSetImport(ctx context.Context, d *schema.ResourceD arnValue := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "ses", - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("receipt-rule-set/%s", d.Id()), }.String() d.Set(names.AttrARN, arnValue) diff --git a/internal/service/ses/active_receipt_rule_set_data_source.go b/internal/service/ses/active_receipt_rule_set_data_source.go index 4eef919c8dcf..6357d2b48bd7 100644 --- a/internal/service/ses/active_receipt_rule_set_data_source.go +++ b/internal/service/ses/active_receipt_rule_set_data_source.go @@ -49,8 +49,8 @@ func dataSourceActiveReceiptRuleSetRead(ctx context.Context, d *schema.ResourceD arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "ses", - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("receipt-rule-set/%s", name), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/ses/active_receipt_rule_set_data_source_test.go b/internal/service/ses/active_receipt_rule_set_data_source_test.go index 87ef29447aa3..395b97d8109e 100644 --- a/internal/service/ses/active_receipt_rule_set_data_source_test.go +++ b/internal/service/ses/active_receipt_rule_set_data_source_test.go @@ -36,7 +36,7 @@ func testAccActiveReceiptRuleSetDataSource_basic(t *testing.T) { Config: testAccActiveReceiptRuleSetDataSourceConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckActiveReceiptRuleSetExists(ctx, resourceName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "ses", fmt.Sprintf("receipt-rule-set/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ses", fmt.Sprintf("receipt-rule-set/%s", rName)), ), }, }, diff --git a/internal/service/ses/active_receipt_rule_set_test.go b/internal/service/ses/active_receipt_rule_set_test.go index e1df766936ed..9e8b6222aa7b 100644 --- a/internal/service/ses/active_receipt_rule_set_test.go +++ b/internal/service/ses/active_receipt_rule_set_test.go @@ -56,7 +56,7 @@ func testAccActiveReceiptRuleSet_basic(t *testing.T) { Config: testAccActiveReceiptRuleSetConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckActiveReceiptRuleSetExists(ctx, resourceName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "ses", fmt.Sprintf("receipt-rule-set/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ses", fmt.Sprintf("receipt-rule-set/%s", rName)), ), }, { diff --git a/internal/service/ses/configuration_set.go b/internal/service/ses/configuration_set.go index 3e8e0b0f3c33..46c231fea802 100644 --- a/internal/service/ses/configuration_set.go +++ b/internal/service/ses/configuration_set.go @@ -198,8 +198,8 @@ func resourceConfigurationSetRead(ctx context.Context, d *schema.ResourceData, m arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "ses", - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("configuration-set/%s", d.Id()), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/ses/configuration_set_test.go b/internal/service/ses/configuration_set_test.go index ed7036f08d7f..ec395bfba851 100644 --- a/internal/service/ses/configuration_set_test.go +++ b/internal/service/ses/configuration_set_test.go @@ -37,7 +37,7 @@ func TestAccSESConfigurationSet_basic(t *testing.T) { Config: testAccConfigurationSetConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckConfigurationSetExists(ctx, resourceName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "ses", fmt.Sprintf("configuration-set/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ses", fmt.Sprintf("configuration-set/%s", rName)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "delivery_options.#", "0"), resource.TestCheckResourceAttr(resourceName, "tracking_options.#", "0"), diff --git a/internal/service/ses/domain_identity.go b/internal/service/ses/domain_identity.go index c4ace7609ed3..491b3d92b44c 100644 --- a/internal/service/ses/domain_identity.go +++ b/internal/service/ses/domain_identity.go @@ -89,8 +89,8 @@ func resourceDomainIdentityRead(ctx context.Context, d *schema.ResourceData, met arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "ses", - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("identity/%s", d.Id()), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/ses/domain_identity_data_source.go b/internal/service/ses/domain_identity_data_source.go index a6d192a03e6e..89d4d280ab3b 100644 --- a/internal/service/ses/domain_identity_data_source.go +++ b/internal/service/ses/domain_identity_data_source.go @@ -55,8 +55,8 @@ func dataSourceDomainIdentityRead(ctx context.Context, d *schema.ResourceData, m arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "ses", - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("identity/%s", domainName), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/ses/domain_identity_verification.go b/internal/service/ses/domain_identity_verification.go index 65f291829e39..17e052820836 100644 --- a/internal/service/ses/domain_identity_verification.go +++ b/internal/service/ses/domain_identity_verification.go @@ -99,8 +99,8 @@ func resourceDomainIdentityVerificationRead(ctx context.Context, d *schema.Resou arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "ses", - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("identity/%s", d.Id()), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/ses/email_identity.go b/internal/service/ses/email_identity.go index c3427851ba79..88771610499b 100644 --- a/internal/service/ses/email_identity.go +++ b/internal/service/ses/email_identity.go @@ -87,9 +87,9 @@ func resourceEmailIdentityRead(ctx context.Context, d *schema.ResourceData, meta } arn := arn.ARN{ - AccountID: meta.(*conns.AWSClient).AccountID, + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Partition: meta.(*conns.AWSClient).Partition(ctx), - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), Resource: fmt.Sprintf("identity/%s", d.Id()), Service: "ses", }.String() diff --git a/internal/service/ses/email_identity_data_source.go b/internal/service/ses/email_identity_data_source.go index 4f9fccfeb5fc..b04c801ab277 100644 --- a/internal/service/ses/email_identity_data_source.go +++ b/internal/service/ses/email_identity_data_source.go @@ -50,9 +50,9 @@ func dataSourceEmailIdentityRead(ctx context.Context, d *schema.ResourceData, me d.SetId(email) arn := arn.ARN{ - AccountID: meta.(*conns.AWSClient).AccountID, + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Partition: meta.(*conns.AWSClient).Partition(ctx), - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), Resource: fmt.Sprintf("identity/%s", email), Service: "ses", }.String() diff --git a/internal/service/ses/email_identity_data_source_test.go b/internal/service/ses/email_identity_data_source_test.go index 9bedeea26bcf..511af93fc220 100644 --- a/internal/service/ses/email_identity_data_source_test.go +++ b/internal/service/ses/email_identity_data_source_test.go @@ -28,7 +28,7 @@ func testAccEmailIdentityDataSource_basic(t *testing.T) { { Config: testAccEmailIdentityDataDourceConfig_source(email), Check: resource.ComposeTestCheckFunc( - acctest.MatchResourceAttrRegionalARN("data.aws_ses_email_identity.test", names.AttrARN, "ses", regexache.MustCompile(fmt.Sprintf("identity/%s$", regexp.QuoteMeta(email)))), + acctest.MatchResourceAttrRegionalARN(ctx, "data.aws_ses_email_identity.test", names.AttrARN, "ses", regexache.MustCompile(fmt.Sprintf("identity/%s$", regexp.QuoteMeta(email)))), ), }, }, @@ -48,7 +48,7 @@ func testAccEmailIdentityDataSource_trailingPeriod(t *testing.T) { { Config: testAccEmailIdentityDataDourceConfig_source(email), Check: resource.ComposeTestCheckFunc( - acctest.MatchResourceAttrRegionalARN("data.aws_ses_email_identity.test", names.AttrARN, "ses", regexache.MustCompile(fmt.Sprintf("identity/%s$", regexp.QuoteMeta(strings.TrimSuffix(email, "."))))), + acctest.MatchResourceAttrRegionalARN(ctx, "data.aws_ses_email_identity.test", names.AttrARN, "ses", regexache.MustCompile(fmt.Sprintf("identity/%s$", regexp.QuoteMeta(strings.TrimSuffix(email, "."))))), ), }, }, diff --git a/internal/service/ses/email_identity_test.go b/internal/service/ses/email_identity_test.go index 1b9b00fd7022..b0b505f55958 100644 --- a/internal/service/ses/email_identity_test.go +++ b/internal/service/ses/email_identity_test.go @@ -49,7 +49,7 @@ func testAccEmailIdentity_basic(t *testing.T) { Config: testAccEmailIdentityConfig_basic(email), Check: resource.ComposeTestCheckFunc( testAccCheckEmailIdentityExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ses", regexache.MustCompile(fmt.Sprintf("identity/%s$", regexp.QuoteMeta(email)))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ses", regexache.MustCompile(fmt.Sprintf("identity/%s$", regexp.QuoteMeta(email)))), ), }, { @@ -99,7 +99,7 @@ func testAccEmailIdentity_trailingPeriod(t *testing.T) { Config: testAccEmailIdentityConfig_basic(email), Check: resource.ComposeTestCheckFunc( testAccCheckEmailIdentityExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ses", regexache.MustCompile(fmt.Sprintf("identity/%s$", regexp.QuoteMeta(strings.TrimSuffix(email, "."))))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ses", regexache.MustCompile(fmt.Sprintf("identity/%s$", regexp.QuoteMeta(strings.TrimSuffix(email, "."))))), ), }, { diff --git a/internal/service/ses/event_destination.go b/internal/service/ses/event_destination.go index 83bb0d08f4d3..26543d8b2698 100644 --- a/internal/service/ses/event_destination.go +++ b/internal/service/ses/event_destination.go @@ -211,8 +211,8 @@ func resourceEventDestinationRead(ctx context.Context, d *schema.ResourceData, m arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "ses", - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("configuration-set/%s:event-destination/%s", configurationSetName, d.Id()), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/ses/receipt_filter.go b/internal/service/ses/receipt_filter.go index 19d3906e37c0..5582003d3f56 100644 --- a/internal/service/ses/receipt_filter.go +++ b/internal/service/ses/receipt_filter.go @@ -115,8 +115,8 @@ func resourceReceiptFilterRead(ctx context.Context, d *schema.ResourceData, meta arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "ses", - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("receipt-filter/%s", d.Id()), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/ses/receipt_filter_test.go b/internal/service/ses/receipt_filter_test.go index 59477907062d..eca0b9954a51 100644 --- a/internal/service/ses/receipt_filter_test.go +++ b/internal/service/ses/receipt_filter_test.go @@ -33,7 +33,7 @@ func TestAccSESReceiptFilter_basic(t *testing.T) { Config: testAccReceiptFilterConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckReceiptFilterExists(ctx, resourceName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "ses", fmt.Sprintf("receipt-filter/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ses", fmt.Sprintf("receipt-filter/%s", rName)), resource.TestCheckResourceAttr(resourceName, "cidr", "10.10.10.10"), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, names.AttrPolicy, "Block"), diff --git a/internal/service/ses/receipt_rule.go b/internal/service/ses/receipt_rule.go index e6d04690ab33..e30585d32f00 100644 --- a/internal/service/ses/receipt_rule.go +++ b/internal/service/ses/receipt_rule.go @@ -338,8 +338,8 @@ func resourceReceiptRuleRead(ctx context.Context, d *schema.ResourceData, meta i arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "ses", - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("receipt-rule-set/%s:receipt-rule/%s", ruleSetName, d.Id()), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/ses/receipt_rule_set.go b/internal/service/ses/receipt_rule_set.go index 12038f058be2..d11eba9115ee 100644 --- a/internal/service/ses/receipt_rule_set.go +++ b/internal/service/ses/receipt_rule_set.go @@ -89,8 +89,8 @@ func resourceReceiptRuleSetRead(ctx context.Context, d *schema.ResourceData, met arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "ses", - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("receipt-rule-set/%s", name), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/ses/receipt_rule_set_test.go b/internal/service/ses/receipt_rule_set_test.go index 224c7318c424..922398c00c03 100644 --- a/internal/service/ses/receipt_rule_set_test.go +++ b/internal/service/ses/receipt_rule_set_test.go @@ -34,7 +34,7 @@ func TestAccSESReceiptRuleSet_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckReceiptRuleSetExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, "rule_set_name", rName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "ses", fmt.Sprintf("receipt-rule-set/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ses", fmt.Sprintf("receipt-rule-set/%s", rName)), ), }, { diff --git a/internal/service/ses/receipt_rule_test.go b/internal/service/ses/receipt_rule_test.go index 1f5c45fe5faa..98401c3c9943 100644 --- a/internal/service/ses/receipt_rule_test.go +++ b/internal/service/ses/receipt_rule_test.go @@ -44,7 +44,7 @@ func TestAccSESReceiptRule_basic(t *testing.T) { testAccCheckReceiptRuleExists(ctx, resourceName, &rule), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "rule_set_name", rName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "ses", fmt.Sprintf("receipt-rule-set/%s:receipt-rule/%s", rName, rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ses", fmt.Sprintf("receipt-rule-set/%s:receipt-rule/%s", rName, rName)), resource.TestCheckResourceAttr(resourceName, "add_header_action.#", "0"), resource.TestCheckResourceAttr(resourceName, "bounce_action.#", "0"), resource.TestCheckResourceAttr(resourceName, "lambda_action.#", "0"), diff --git a/internal/service/ses/service_endpoints_gen_test.go b/internal/service/ses/service_endpoints_gen_test.go index 0e5de43ae240..2003c94a17d6 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/ses/template.go b/internal/service/ses/template.go index 8a044896b21e..ba0bf7c063ad 100644 --- a/internal/service/ses/template.go +++ b/internal/service/ses/template.go @@ -118,8 +118,8 @@ func resourceTemplateRead(ctx context.Context, d *schema.ResourceData, meta inte arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "ses", - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("template/%s", d.Id()), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/ses/template_test.go b/internal/service/ses/template_test.go index b6644e88180c..b530d284c326 100644 --- a/internal/service/ses/template_test.go +++ b/internal/service/ses/template_test.go @@ -66,7 +66,7 @@ func TestAccSESTemplate_update(t *testing.T) { Config: testAccTemplateConfig_resourceBasic1(rName), Check: resource.ComposeTestCheckFunc( testAccCheckTemplateExists(ctx, resourceName, &template), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "ses", fmt.Sprintf("template/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ses", fmt.Sprintf("template/%s", rName)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "html", "html"), resource.TestCheckResourceAttr(resourceName, "subject", "subject"), diff --git a/internal/service/sesv2/account_suppression_attributes.go b/internal/service/sesv2/account_suppression_attributes.go index 564fabfef288..66a36d246819 100644 --- a/internal/service/sesv2/account_suppression_attributes.go +++ b/internal/service/sesv2/account_suppression_attributes.go @@ -59,7 +59,7 @@ func (r *accountSuppressionAttributesResource) Create(ctx context.Context, reque conn := r.Meta().SESV2Client(ctx) - id := r.Meta().AccountID + id := r.Meta().AccountID(ctx) input := &sesv2.PutAccountSuppressionAttributesInput{} response.Diagnostics.Append(fwflex.Expand(ctx, data, input)...) if response.Diagnostics.HasError() { diff --git a/internal/service/sesv2/configuration_set_test.go b/internal/service/sesv2/configuration_set_test.go index db44853d3a1a..dc4f16e2f4e6 100644 --- a/internal/service/sesv2/configuration_set_test.go +++ b/internal/service/sesv2/configuration_set_test.go @@ -36,7 +36,7 @@ func TestAccSESV2ConfigurationSet_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckConfigurationSetExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, "configuration_set_name", rName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ses", regexache.MustCompile(`configuration-set/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ses", regexache.MustCompile(`configuration-set/.+`)), ), }, { diff --git a/internal/service/sesv2/contact_list.go b/internal/service/sesv2/contact_list.go index a89faa09deb4..719becc6ce82 100644 --- a/internal/service/sesv2/contact_list.go +++ b/internal/service/sesv2/contact_list.go @@ -150,8 +150,8 @@ func resourceContactListRead(ctx context.Context, d *schema.ResourceData, meta i arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "ses", - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("contact-list/%s", d.Id()), }.String() diff --git a/internal/service/sesv2/dedicated_ip_pool_data_source_test.go b/internal/service/sesv2/dedicated_ip_pool_data_source_test.go index c33860580fa8..6118ab8e6d09 100644 --- a/internal/service/sesv2/dedicated_ip_pool_data_source_test.go +++ b/internal/service/sesv2/dedicated_ip_pool_data_source_test.go @@ -33,7 +33,7 @@ func TestAccSESV2DedicatedIPPoolDataSource_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckDedicatedIPPoolExists(ctx, dataSourceName), resource.TestCheckResourceAttr(dataSourceName, "pool_name", rName), - acctest.MatchResourceAttrRegionalARN(dataSourceName, names.AttrARN, "ses", regexache.MustCompile(`dedicated-ip-pool/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, dataSourceName, names.AttrARN, "ses", regexache.MustCompile(`dedicated-ip-pool/.+`)), ), }, }, diff --git a/internal/service/sesv2/dedicated_ip_pool_test.go b/internal/service/sesv2/dedicated_ip_pool_test.go index 4dac0aa35714..556246b5a496 100644 --- a/internal/service/sesv2/dedicated_ip_pool_test.go +++ b/internal/service/sesv2/dedicated_ip_pool_test.go @@ -37,7 +37,7 @@ func TestAccSESV2DedicatedIPPool_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckDedicatedIPPoolExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, "pool_name", rName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ses", regexache.MustCompile(`dedicated-ip-pool/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ses", regexache.MustCompile(`dedicated-ip-pool/.+`)), ), }, { diff --git a/internal/service/sesv2/email_identity_test.go b/internal/service/sesv2/email_identity_test.go index 510d85c36e4e..495b84386a45 100644 --- a/internal/service/sesv2/email_identity_test.go +++ b/internal/service/sesv2/email_identity_test.go @@ -37,7 +37,7 @@ func TestAccSESV2EmailIdentity_basic_emailAddress(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckEmailIdentityExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, "email_identity", rName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ses", regexache.MustCompile(`identity/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ses", regexache.MustCompile(`identity/.+`)), resource.TestCheckResourceAttr(resourceName, "dkim_signing_attributes.#", "1"), resource.TestCheckResourceAttr(resourceName, "dkim_signing_attributes.0.current_signing_key_length", ""), resource.TestCheckResourceAttr(resourceName, "dkim_signing_attributes.0.last_key_generation_timestamp", ""), @@ -74,7 +74,7 @@ func TestAccSESV2EmailIdentity_basic_domain(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckEmailIdentityExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, "email_identity", rName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ses", regexache.MustCompile(`identity/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ses", regexache.MustCompile(`identity/.+`)), resource.TestCheckResourceAttr(resourceName, "dkim_signing_attributes.#", "1"), resource.TestCheckResourceAttr(resourceName, "dkim_signing_attributes.0.current_signing_key_length", "RSA_2048_BIT"), acctest.CheckResourceAttrRFC3339(resourceName, "dkim_signing_attributes.0.last_key_generation_timestamp"), diff --git a/internal/service/sesv2/service_endpoints_gen_test.go b/internal/service/sesv2/service_endpoints_gen_test.go index 32c34eadf7d9..c5c901c9b4b8 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/alias_test.go b/internal/service/sfn/alias_test.go index 1a42ca5bceb9..9d64c57a7ad7 100644 --- a/internal/service/sfn/alias_test.go +++ b/internal/service/sfn/alias_test.go @@ -45,7 +45,7 @@ func TestAccSFNAlias_basic(t *testing.T) { testAccCheckAliasAttributes(&alias), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreationDate), resource.TestCheckResourceAttr(resourceName, names.AttrName, aliasName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "states", functionArnResourcePart), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "states", functionArnResourcePart), ), }, { diff --git a/internal/service/sfn/service_endpoints_gen_test.go b/internal/service/sfn/service_endpoints_gen_test.go index b597f73a0f42..8929acbae156 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/sfn/state_machine_test.go b/internal/service/sfn/state_machine_test.go index 0834cab547ce..96add1c278cd 100644 --- a/internal/service/sfn/state_machine_test.go +++ b/internal/service/sfn/state_machine_test.go @@ -41,7 +41,7 @@ func TestAccSFNStateMachine_createUpdate(t *testing.T) { Config: testAccStateMachineConfig_basic(rName, 5), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckExists(ctx, resourceName, &sm), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "states", fmt.Sprintf("stateMachine:%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "states", fmt.Sprintf("stateMachine:%s", rName)), resource.TestCheckResourceAttr(resourceName, names.AttrStatus, string(awstypes.StateMachineStatusActive)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, names.AttrNamePrefix, ""), @@ -71,7 +71,7 @@ func TestAccSFNStateMachine_createUpdate(t *testing.T) { Config: testAccStateMachineConfig_basic(rName, 10), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckExists(ctx, resourceName, &sm), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "states", fmt.Sprintf("stateMachine:%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "states", fmt.Sprintf("stateMachine:%s", rName)), resource.TestCheckResourceAttr(resourceName, names.AttrStatus, string(awstypes.StateMachineStatusActive)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreationDate), diff --git a/internal/service/shield/drt_access_role_arn_association.go b/internal/service/shield/drt_access_role_arn_association.go index cb681b6daf3f..17315a9fb5c2 100644 --- a/internal/service/shield/drt_access_role_arn_association.go +++ b/internal/service/shield/drt_access_role_arn_association.go @@ -89,7 +89,7 @@ func (r *resourceDRTAccessRoleARNAssociation) Create(ctx context.Context, reques } // Set values for unknowns. - data.ID = types.StringValue(r.Meta().AccountID) + data.ID = types.StringValue(r.Meta().AccountID(ctx)) _, err = tfresource.RetryWhenNotFound(ctx, r.CreateTimeout(ctx, data.Timeouts), func() (interface{}, error) { return findDRTRoleARNAssociation(ctx, conn, roleARN) diff --git a/internal/service/shield/proactive_engagement.go b/internal/service/shield/proactive_engagement.go index 6b4e03b70349..3e796bd539a2 100644 --- a/internal/service/shield/proactive_engagement.go +++ b/internal/service/shield/proactive_engagement.go @@ -109,7 +109,7 @@ func (r *proactiveEngagementResource) Create(ctx context.Context, request resour } // Set values for unknowns. - data.ID = types.StringValue(r.Meta().AccountID) + data.ID = types.StringValue(r.Meta().AccountID(ctx)) response.Diagnostics.Append(updateEmergencyContactSettings(ctx, conn, &data)...) if response.Diagnostics.HasError() { diff --git a/internal/service/shield/protection_data_source_test.go b/internal/service/shield/protection_data_source_test.go index ec50cf9e937d..c324f80fd04a 100644 --- a/internal/service/shield/protection_data_source_test.go +++ b/internal/service/shield/protection_data_source_test.go @@ -37,7 +37,7 @@ func TestAccShieldProtectionDataSource_basic(t *testing.T) { resource.TestCheckResourceAttrPair(dataSourceName, names.AttrName, protectionResourceName, names.AttrName), resource.TestCheckResourceAttrPair(dataSourceName, "protection_id", protectionResourceName, names.AttrID), resource.TestCheckResourceAttrPair(dataSourceName, names.AttrResourceARN, protectionResourceName, names.AttrResourceARN), - acctest.MatchResourceAttrGlobalARN(dataSourceName, "protection_arn", "shield", regexache.MustCompile(`protection/.+$`)), + acctest.MatchResourceAttrGlobalARN(ctx, dataSourceName, "protection_arn", "shield", regexache.MustCompile(`protection/.+$`)), ), }, { @@ -46,7 +46,7 @@ func TestAccShieldProtectionDataSource_basic(t *testing.T) { resource.TestCheckResourceAttrPair(dataSourceName, names.AttrName, protectionResourceName, names.AttrName), resource.TestCheckResourceAttrPair(dataSourceName, "protection_id", protectionResourceName, names.AttrID), resource.TestCheckResourceAttrPair(dataSourceName, names.AttrResourceARN, protectionResourceName, names.AttrResourceARN), - acctest.MatchResourceAttrGlobalARN(dataSourceName, "protection_arn", "shield", regexache.MustCompile(`protection/.+$`)), + acctest.MatchResourceAttrGlobalARN(ctx, dataSourceName, "protection_arn", "shield", regexache.MustCompile(`protection/.+$`)), ), }, }, diff --git a/internal/service/shield/protection_group_test.go b/internal/service/shield/protection_group_test.go index a8348c574e41..869e6f3c508f 100644 --- a/internal/service/shield/protection_group_test.go +++ b/internal/service/shield/protection_group_test.go @@ -148,7 +148,7 @@ func TestAccShieldProtectionGroup_members(t *testing.T) { testAccCheckProtectionGroupExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, "pattern", string(awstypes.ProtectionGroupPatternArbitrary)), resource.TestCheckResourceAttr(resourceName, "members.#", "1"), - acctest.MatchResourceAttrRegionalARN(resourceName, "members.0", "ec2", regexache.MustCompile(`eip-allocation/eipalloc-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, "members.0", "ec2", regexache.MustCompile(`eip-allocation/eipalloc-.+`)), ), }, { diff --git a/internal/service/shield/service_endpoints_gen_test.go b/internal/service/shield/service_endpoints_gen_test.go index e253983b2b3e..fb38f536e3d1 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/shield/service_package.go b/internal/service/shield/service_package.go index 8b57023f53ab..ec470a9ec7b7 100644 --- a/internal/service/shield/service_package.go +++ b/internal/service/shield/service_package.go @@ -23,12 +23,12 @@ func (p *servicePackage) NewClient(ctx context.Context, config map[string]any) ( func(o *shield.Options) { // Force "global" services to correct Regions. if config["partition"].(string) == endpoints.AwsPartitionID { - if cfg.Region != names.USEast1RegionID { + if cfg.Region != endpoints.UsEast1RegionID { tflog.Info(ctx, "overriding region", map[string]any{ "original_region": cfg.Region, - "override_region": names.USEast1RegionID, + "override_region": endpoints.UsEast1RegionID, }) - o.Region = names.USEast1RegionID + o.Region = endpoints.UsEast1RegionID } } }, diff --git a/internal/service/shield/subscription.go b/internal/service/shield/subscription.go index d2e1a5169e4a..90c09af282e5 100644 --- a/internal/service/shield/subscription.go +++ b/internal/service/shield/subscription.go @@ -67,7 +67,7 @@ func (r *resourceSubscription) Create(ctx context.Context, req resource.CreateRe if resp.Diagnostics.HasError() { return } - plan.ID = types.StringValue(r.Meta().AccountID) + plan.ID = types.StringValue(r.Meta().AccountID(ctx)) if plan.AutoRenew.Equal(types.StringValue(string(awstypes.AutoRenewDisabled))) { resp.Diagnostics.AddError( diff --git a/internal/service/shield/sweep.go b/internal/service/shield/sweep.go index 55cc0ad6baac..d944f172e56c 100644 --- a/internal/service/shield/sweep.go +++ b/internal/service/shield/sweep.go @@ -100,7 +100,7 @@ func sweepDRTAccessRoleARNAssociations(region string) error { if v := aws.ToString(output.RoleArn); v != "" { log.Printf("[INFO] Deleting Shield DRT Role ARN Association: %s", v) sweepResources = append(sweepResources, framework.NewSweepResource(newDRTAccessRoleARNAssociationResource, client, - framework.NewAttribute(names.AttrID, client.AccountID), + framework.NewAttribute(names.AttrID, client.AccountID(ctx)), )) } @@ -137,7 +137,7 @@ func sweepProactiveEngagements(region string) error { if output.Subscription.ProactiveEngagementStatus != "" { log.Printf("[INFO] Deleting Shield Proactive Engagement") sweepResources = append(sweepResources, framework.NewSweepResource(newProactiveEngagementResource, client, - framework.NewAttribute(names.AttrID, client.AccountID), + framework.NewAttribute(names.AttrID, client.AccountID(ctx)), )) } diff --git a/internal/service/signer/service_endpoints_gen_test.go b/internal/service/signer/service_endpoints_gen_test.go index 1417f066054d..b05fdec70811 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/platform_application_test.go b/internal/service/sns/platform_application_test.go index 7c77dd9acade..8407d4ae53c0 100644 --- a/internal/service/sns/platform_application_test.go +++ b/internal/service/sns/platform_application_test.go @@ -191,7 +191,7 @@ func TestAccSNSPlatformApplication_GCM_basic(t *testing.T) { testAccCheckPlatformApplicationExists(ctx, resourceName), resource.TestCheckNoResourceAttr(resourceName, "apple_platform_bundle_id"), resource.TestCheckNoResourceAttr(resourceName, "apple_platform_team_id"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "sns", fmt.Sprintf("app/GCM/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "sns", fmt.Sprintf("app/GCM/%s", rName)), resource.TestCheckNoResourceAttr(resourceName, "event_delivery_failure_topic_arn"), resource.TestCheckNoResourceAttr(resourceName, "event_endpoint_created_topic_arn"), resource.TestCheckNoResourceAttr(resourceName, "event_endpoint_deleted_topic_arn"), @@ -259,7 +259,7 @@ func TestAccSNSPlatformApplication_GCM_allAttributes(t *testing.T) { testAccCheckPlatformApplicationExists(ctx, resourceName), resource.TestCheckNoResourceAttr(resourceName, "apple_platform_bundle_id"), resource.TestCheckNoResourceAttr(resourceName, "apple_platform_team_id"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "sns", fmt.Sprintf("app/GCM/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "sns", fmt.Sprintf("app/GCM/%s", rName)), resource.TestCheckResourceAttrPair(resourceName, "event_delivery_failure_topic_arn", topic0ResourceName, names.AttrARN), resource.TestCheckResourceAttrPair(resourceName, "event_endpoint_created_topic_arn", topic1ResourceName, names.AttrARN), resource.TestCheckResourceAttrPair(resourceName, "event_endpoint_deleted_topic_arn", topic0ResourceName, names.AttrARN), @@ -283,7 +283,7 @@ func TestAccSNSPlatformApplication_GCM_allAttributes(t *testing.T) { testAccCheckPlatformApplicationExists(ctx, resourceName), resource.TestCheckNoResourceAttr(resourceName, "apple_platform_bundle_id"), resource.TestCheckNoResourceAttr(resourceName, "apple_platform_team_id"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "sns", fmt.Sprintf("app/GCM/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "sns", fmt.Sprintf("app/GCM/%s", rName)), resource.TestCheckResourceAttrPair(resourceName, "event_delivery_failure_topic_arn", topic1ResourceName, names.AttrARN), resource.TestCheckResourceAttrPair(resourceName, "event_endpoint_created_topic_arn", topic0ResourceName, names.AttrARN), resource.TestCheckResourceAttrPair(resourceName, "event_endpoint_deleted_topic_arn", topic1ResourceName, names.AttrARN), @@ -322,7 +322,7 @@ func TestAccSNSPlatformApplication_basic(t *testing.T) { Config: testAccPlatformApplicationConfig_basic(name, platform), Check: resource.ComposeTestCheckFunc( testAccCheckPlatformApplicationExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "sns", regexache.MustCompile(fmt.Sprintf("app/%s/%s$", platform.Name, name))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "sns", regexache.MustCompile(fmt.Sprintf("app/%s/%s$", platform.Name, name))), resource.TestCheckResourceAttr(resourceName, names.AttrName, name), resource.TestCheckResourceAttr(resourceName, "platform", platform.Name), resource.TestCheckResourceAttrSet(resourceName, "platform_credential"), diff --git a/internal/service/sns/service_endpoints_gen_test.go b/internal/service/sns/service_endpoints_gen_test.go index 029dbe90783f..307754c9c256 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/sns/topic_policy_test.go b/internal/service/sns/topic_policy_test.go index b23f51a57ea9..4b092986da2f 100644 --- a/internal/service/sns/topic_policy_test.go +++ b/internal/service/sns/topic_policy_test.go @@ -36,7 +36,7 @@ func TestAccSNSTopicPolicy_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckTopicExists(ctx, "aws_sns_topic.test", &attributes), resource.TestCheckResourceAttrPair(resourceName, names.AttrARN, "aws_sns_topic.test", names.AttrARN), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwner), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwner), resource.TestMatchResourceAttr(resourceName, names.AttrPolicy, regexache.MustCompile(fmt.Sprintf("\"Sid\":\"%[1]s\"", rName))), ), }, @@ -151,7 +151,7 @@ func TestAccSNSTopicPolicy_ignoreEquivalent(t *testing.T) { testAccCheckTopicExists(ctx, "aws_sns_topic.test", &attributes), resource.TestCheckResourceAttrPair(resourceName, names.AttrARN, "aws_sns_topic.test", names.AttrARN), resource.TestMatchResourceAttr(resourceName, names.AttrPolicy, regexache.MustCompile(fmt.Sprintf("\"Sid\":\"%[1]s\"", rName))), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwner), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwner), ), }, { diff --git a/internal/service/sns/topic_subscription_test.go b/internal/service/sns/topic_subscription_test.go index 6a40cd4dfa1e..9b18b8c3b715 100644 --- a/internal/service/sns/topic_subscription_test.go +++ b/internal/service/sns/topic_subscription_test.go @@ -87,7 +87,7 @@ func TestAccSNSTopicSubscription_basic(t *testing.T) { Config: testAccTopicSubscriptionConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckTopicSubscriptionExists(ctx, resourceName, &attributes), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "sns", regexache.MustCompile(fmt.Sprintf("%s:.+", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "sns", regexache.MustCompile(fmt.Sprintf("%s:.+", rName))), resource.TestCheckResourceAttr(resourceName, "confirmation_timeout_in_minutes", "1"), resource.TestCheckResourceAttr(resourceName, "confirmation_was_authenticated", acctest.CtTrue), resource.TestCheckResourceAttr(resourceName, "delivery_policy", ""), @@ -95,7 +95,7 @@ func TestAccSNSTopicSubscription_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "endpoint_auto_confirms", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "filter_policy", ""), resource.TestCheckResourceAttr(resourceName, "filter_policy_scope", ""), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwnerID), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwnerID), resource.TestCheckResourceAttr(resourceName, "pending_confirmation", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, names.AttrProtocol, "sqs"), resource.TestCheckResourceAttr(resourceName, "raw_message_delivery", acctest.CtFalse), @@ -438,7 +438,7 @@ func TestAccSNSTopicSubscription_redrivePolicy(t *testing.T) { Config: testAccTopicSubscriptionConfig_redrivePolicy(rName, dlqName), Check: resource.ComposeTestCheckFunc( testAccCheckTopicSubscriptionExists(ctx, resourceName, &attributes), - testAccCheckTopicSubscriptionRedrivePolicyAttribute(&attributes, dlqName), + testAccCheckTopicSubscriptionRedrivePolicyAttribute(ctx, &attributes, dlqName), ), }, { @@ -455,7 +455,7 @@ func TestAccSNSTopicSubscription_redrivePolicy(t *testing.T) { Config: testAccTopicSubscriptionConfig_redrivePolicy(rName, updatedDlqName), Check: resource.ComposeTestCheckFunc( testAccCheckTopicSubscriptionExists(ctx, resourceName, &attributes), - testAccCheckTopicSubscriptionRedrivePolicyAttribute(&attributes, updatedDlqName), + testAccCheckTopicSubscriptionRedrivePolicyAttribute(ctx, &attributes, updatedDlqName), ), }, { @@ -605,7 +605,7 @@ func TestAccSNSTopicSubscription_email(t *testing.T) { Config: testAccTopicSubscriptionConfig_email(rName, acctest.DefaultEmailAddress), Check: resource.ComposeTestCheckFunc( testAccCheckTopicSubscriptionExists(ctx, resourceName, &attributes), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "sns", regexache.MustCompile(fmt.Sprintf("%s:.+", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "sns", regexache.MustCompile(fmt.Sprintf("%s:.+", rName))), resource.TestCheckResourceAttr(resourceName, "confirmation_was_authenticated", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "delivery_policy", ""), resource.TestCheckResourceAttr(resourceName, names.AttrEndpoint, acctest.DefaultEmailAddress), @@ -636,7 +636,7 @@ func TestAccSNSTopicSubscription_firehose(t *testing.T) { Config: testAccTopicSubscriptionConfig_firehose(rName), Check: resource.ComposeTestCheckFunc( testAccCheckTopicSubscriptionExists(ctx, resourceName, &attributes), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "sns", regexache.MustCompile(fmt.Sprintf("%s:.+", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "sns", regexache.MustCompile(fmt.Sprintf("%s:.+", rName))), resource.TestCheckResourceAttr(resourceName, "delivery_policy", ""), resource.TestCheckResourceAttrPair(resourceName, names.AttrEndpoint, "aws_kinesis_firehose_delivery_stream.test_stream", names.AttrARN), resource.TestCheckResourceAttr(resourceName, "filter_policy", ""), @@ -770,7 +770,7 @@ func testAccCheckTopicSubscriptionDeliveryPolicyAttribute(attributes *map[string } } -func testAccCheckTopicSubscriptionRedrivePolicyAttribute(attributes *map[string]string, expectedRedrivePolicyResource string) resource.TestCheckFunc { +func testAccCheckTopicSubscriptionRedrivePolicyAttribute(ctx context.Context, attributes *map[string]string, expectedRedrivePolicyResource string) resource.TestCheckFunc { return func(s *terraform.State) error { apiRedrivePolicyJSONString, ok := (*attributes)["RedrivePolicy"] @@ -785,7 +785,7 @@ func testAccCheckTopicSubscriptionRedrivePolicyAttribute(attributes *map[string] expectedRedrivePolicy := tfsns.TopicSubscriptionRedrivePolicy{ DeadLetterTargetArn: arn.ARN{ - AccountID: acctest.AccountID(), + AccountID: acctest.AccountID(ctx), Partition: acctest.Partition(), Region: acctest.Region(), Resource: expectedRedrivePolicyResource, diff --git a/internal/service/sns/topic_test.go b/internal/service/sns/topic_test.go index 81a75d6c4edf..81d286c8e940 100644 --- a/internal/service/sns/topic_test.go +++ b/internal/service/sns/topic_test.go @@ -54,7 +54,7 @@ func TestAccSNSTopic_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "application_success_feedback_role_arn", ""), resource.TestCheckResourceAttr(resourceName, "application_success_feedback_sample_rate", "0"), resource.TestCheckResourceAttr(resourceName, "archive_policy", ""), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "sns", regexache.MustCompile(`terraform-.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "sns", regexache.MustCompile(`terraform-.+$`)), resource.TestCheckResourceAttr(resourceName, "beginning_archive_time", ""), resource.TestCheckResourceAttr(resourceName, "content_based_deduplication", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "delivery_policy", ""), @@ -72,7 +72,7 @@ func TestAccSNSTopic_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "lambda_success_feedback_sample_rate", "0"), acctest.CheckResourceAttrNameGenerated(resourceName, names.AttrName), resource.TestCheckResourceAttr(resourceName, names.AttrNamePrefix, "terraform-"), - acctest.CheckResourceAttrAccountID(resourceName, names.AttrOwner), + acctest.CheckResourceAttrAccountID(ctx, resourceName, names.AttrOwner), resource.TestCheckResourceAttrSet(resourceName, names.AttrPolicy), resource.TestCheckResourceAttr(resourceName, "signature_version", "0"), resource.TestCheckResourceAttr(resourceName, "sqs_failure_feedback_role_arn", ""), @@ -133,7 +133,7 @@ func TestAccSNSTopic_name(t *testing.T) { Config: testAccTopicConfig_name(rName), Check: resource.ComposeTestCheckFunc( testAccCheckTopicExists(ctx, resourceName, &attributes), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "sns", rName), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "sns", rName), resource.TestCheckResourceAttr(resourceName, "fifo_topic", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), ), @@ -163,7 +163,7 @@ func TestAccSNSTopic_namePrefix(t *testing.T) { Config: testAccTopicConfig_namePrefix(rName), Check: resource.ComposeTestCheckFunc( testAccCheckTopicExists(ctx, resourceName, &attributes), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "sns", regexache.MustCompile(fmt.Sprintf(`%s.+$`, rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "sns", regexache.MustCompile(fmt.Sprintf(`%s.+$`, rName))), acctest.CheckResourceAttrNameFromPrefix(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, names.AttrNamePrefix, rName), resource.TestCheckResourceAttr(resourceName, "fifo_topic", acctest.CtFalse), diff --git a/internal/service/sqs/queue_test.go b/internal/service/sqs/queue_test.go index 90d386f5e406..ccb7747d54b9 100644 --- a/internal/service/sqs/queue_test.go +++ b/internal/service/sqs/queue_test.go @@ -108,7 +108,7 @@ func TestAccSQSQueue_basic(t *testing.T) { Config: testAccQueueConfig_name(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckQueueExists(ctx, resourceName, &queueAttributes), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "sqs", rName), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "sqs", rName), resource.TestCheckResourceAttr(resourceName, "content_based_deduplication", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "deduplication_scope", ""), resource.TestCheckResourceAttr(resourceName, "delay_seconds", strconv.Itoa(tfsqs.DefaultQueueDelaySeconds)), @@ -297,7 +297,7 @@ func TestAccSQSQueue_update(t *testing.T) { Config: testAccQueueConfig_name(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckQueueExists(ctx, resourceName, &queueAttributes), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "sqs", rName), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "sqs", rName), resource.TestCheckResourceAttr(resourceName, "content_based_deduplication", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "deduplication_scope", ""), resource.TestCheckResourceAttr(resourceName, "delay_seconds", strconv.Itoa(tfsqs.DefaultQueueDelaySeconds)), @@ -319,7 +319,7 @@ func TestAccSQSQueue_update(t *testing.T) { Config: testAccQueueConfig_updated(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckQueueExists(ctx, resourceName, &queueAttributes), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "sqs", rName), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "sqs", rName), resource.TestCheckResourceAttr(resourceName, "content_based_deduplication", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, "deduplication_scope", ""), resource.TestCheckResourceAttr(resourceName, "delay_seconds", "90"), @@ -379,7 +379,7 @@ func TestAccSQSQueue_Policy_basic(t *testing.T) { Config: testAccQueueConfig_policy(rName), Check: resource.ComposeTestCheckFunc( testAccCheckQueueExists(ctx, resourceName, &queueAttributes), - testAccCheckQueuePolicyAttribute(&queueAttributes, rName, expectedPolicy), + testAccCheckQueuePolicyAttribute(ctx, &queueAttributes, rName, expectedPolicy), resource.TestCheckResourceAttr(resourceName, "delay_seconds", "90"), resource.TestCheckResourceAttr(resourceName, "max_message_size", "2048"), resource.TestCheckResourceAttr(resourceName, "message_retention_seconds", "86400"), @@ -433,7 +433,7 @@ func TestAccSQSQueue_Policy_ignoreEquivalent(t *testing.T) { Config: testAccQueueConfig_policyEquivalent(rName), Check: resource.ComposeTestCheckFunc( testAccCheckQueueExists(ctx, resourceName, &queueAttributes), - testAccCheckQueuePolicyAttribute(&queueAttributes, rName, expectedPolicy), + testAccCheckQueuePolicyAttribute(ctx, &queueAttributes, rName, expectedPolicy), resource.TestCheckResourceAttr(resourceName, "delay_seconds", "90"), resource.TestCheckResourceAttr(resourceName, "max_message_size", "2048"), resource.TestCheckResourceAttr(resourceName, "message_retention_seconds", "86400"), @@ -820,9 +820,9 @@ func TestAccSQSQueue_defaultKMSDataKeyReusePeriodSeconds(t *testing.T) { }) } -func testAccCheckQueuePolicyAttribute(queueAttributes *map[types.QueueAttributeName]string, rName, policyTemplate string) resource.TestCheckFunc { +func testAccCheckQueuePolicyAttribute(ctx context.Context, queueAttributes *map[types.QueueAttributeName]string, rName, policyTemplate string) resource.TestCheckFunc { return func(s *terraform.State) error { - expectedPolicy := fmt.Sprintf(policyTemplate, acctest.Partition(), acctest.Region(), acctest.AccountID(), rName) + expectedPolicy := fmt.Sprintf(policyTemplate, acctest.Partition(), acctest.Region(), acctest.AccountID(ctx), rName) var actualPolicyText string for key, value := range *queueAttributes { diff --git a/internal/service/sqs/queues_data_source.go b/internal/service/sqs/queues_data_source.go index e90b9d617a37..81568cba48fb 100644 --- a/internal/service/sqs/queues_data_source.go +++ b/internal/service/sqs/queues_data_source.go @@ -55,7 +55,7 @@ func dataSourceQueuesRead(ctx context.Context, d *schema.ResourceData, meta inte queueURLs = append(queueURLs, page.QueueUrls...) } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) d.Set("queue_urls", queueURLs) return diags diff --git a/internal/service/sqs/service_endpoints_gen_test.go b/internal/service/sqs/service_endpoints_gen_test.go index 0ff8978e1911..c177070ccd30 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/association.go b/internal/service/ssm/association.go index fd491082a2cb..7a5f7acff183 100644 --- a/internal/service/ssm/association.go +++ b/internal/service/ssm/association.go @@ -279,8 +279,8 @@ func resourceAssociationRead(ctx context.Context, d *schema.ResourceData, meta i arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "ssm", - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: "association/" + aws.ToString(association.AssociationId), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/ssm/association_test.go b/internal/service/ssm/association_test.go index 15228fc4567f..8a9436d39c4b 100644 --- a/internal/service/ssm/association_test.go +++ b/internal/service/ssm/association_test.go @@ -34,7 +34,7 @@ func TestAccSSMAssociation_basic(t *testing.T) { Config: testAccAssociationConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckAssociationExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ssm", regexache.MustCompile(`association/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ssm", regexache.MustCompile(`association/.+`)), resource.TestCheckResourceAttr(resourceName, "apply_only_at_cron_interval", acctest.CtFalse), resource.TestCheckResourceAttrPair(resourceName, names.AttrInstanceID, "aws_instance.test", names.AttrID), resource.TestCheckResourceAttr(resourceName, "output_location.#", "0"), diff --git a/internal/service/ssm/document_test.go b/internal/service/ssm/document_test.go index 0dd5e787192e..7774fb24da98 100644 --- a/internal/service/ssm/document_test.go +++ b/internal/service/ssm/document_test.go @@ -37,7 +37,7 @@ func TestAccSSMDocument_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckDocumentExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, "document_format", "JSON"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "ssm", fmt.Sprintf("document/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ssm", fmt.Sprintf("document/%s", rName)), acctest.CheckResourceAttrRFC3339(resourceName, names.AttrCreatedDate), resource.TestCheckResourceAttrSet(resourceName, "document_version"), resource.TestCheckResourceAttr(resourceName, "version_name", ""), @@ -387,7 +387,7 @@ func TestAccSSMDocument_automation(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckDocumentExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, "document_type", "Automation"), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "ssm", fmt.Sprintf("automation-definition/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ssm", fmt.Sprintf("automation-definition/%s", rName)), ), }, { diff --git a/internal/service/ssm/instances_data_source.go b/internal/service/ssm/instances_data_source.go index 7149a57f96fe..be87f3d64dd5 100644 --- a/internal/service/ssm/instances_data_source.go +++ b/internal/service/ssm/instances_data_source.go @@ -73,7 +73,7 @@ func dataSourceInstancesRead(ctx context.Context, d *schema.ResourceData, meta i output = append(output, page.InstanceInformationList...) } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) d.Set(names.AttrIDs, tfslices.ApplyToAll(output, func(v awstypes.InstanceInformation) string { return aws.ToString(v.InstanceId) })) diff --git a/internal/service/ssm/maintenance_window_task.go b/internal/service/ssm/maintenance_window_task.go index 809b208834e1..a40b3ef51208 100644 --- a/internal/service/ssm/maintenance_window_task.go +++ b/internal/service/ssm/maintenance_window_task.go @@ -399,8 +399,8 @@ func resourceMaintenanceWindowTaskRead(ctx context.Context, d *schema.ResourceDa arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "ssm", - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: "windowtask/" + windowTaskID, }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/ssm/maintenance_window_task_test.go b/internal/service/ssm/maintenance_window_task_test.go index 0f64a4e362ad..1c264d3cad31 100644 --- a/internal/service/ssm/maintenance_window_task_test.go +++ b/internal/service/ssm/maintenance_window_task_test.go @@ -37,7 +37,7 @@ func TestAccSSMMaintenanceWindowTask_basic(t *testing.T) { Config: testAccMaintenanceWindowTaskConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckMaintenanceWindowTaskExists(ctx, resourceName, &before), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ssm", regexache.MustCompile(`windowtask/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ssm", regexache.MustCompile(`windowtask/.+`)), resource.TestCheckResourceAttrSet(resourceName, "window_task_id"), resource.TestCheckResourceAttrPair(resourceName, "window_id", "aws_ssm_maintenance_window.test", names.AttrID), resource.TestCheckResourceAttr(resourceName, "targets.#", "1"), diff --git a/internal/service/ssm/maintenance_windows_data_source.go b/internal/service/ssm/maintenance_windows_data_source.go index 4686bd43e10f..81605dd3f197 100644 --- a/internal/service/ssm/maintenance_windows_data_source.go +++ b/internal/service/ssm/maintenance_windows_data_source.go @@ -72,7 +72,7 @@ func dataMaintenanceWindowsRead(ctx context.Context, d *schema.ResourceData, met output = append(output, page.WindowIdentities...) } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) d.Set(names.AttrIDs, tfslices.ApplyToAll(output, func(v awstypes.MaintenanceWindowIdentity) string { return aws.ToString(v.WindowId) })) diff --git a/internal/service/ssm/parameter_test.go b/internal/service/ssm/parameter_test.go index d71e413f22e3..899b2ffabc53 100644 --- a/internal/service/ssm/parameter_test.go +++ b/internal/service/ssm/parameter_test.go @@ -41,7 +41,7 @@ func TestAccSSMParameter_basic(t *testing.T) { Config: testAccParameterConfig_basic(name, "String", "test2"), Check: resource.ComposeTestCheckFunc( testAccCheckParameterExists(ctx, resourceName, ¶m), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "ssm", fmt.Sprintf("parameter/%s", name)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ssm", fmt.Sprintf("parameter/%s", name)), resource.TestCheckResourceAttr(resourceName, names.AttrValue, "test2"), resource.TestCheckResourceAttr(resourceName, names.AttrType, "String"), resource.TestCheckResourceAttr(resourceName, "tier", string(awstypes.ParameterTierStandard)), @@ -90,7 +90,7 @@ func TestAccSSMParameter_multiple(t *testing.T) { Config: testAccParameterConfig_multiple(rName, "String", "test2"), Check: resource.ComposeTestCheckFunc( testAccCheckParameterExists(ctx, resourceName, ¶m), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "ssm", fmt.Sprintf("parameter/%s-1", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ssm", fmt.Sprintf("parameter/%s-1", rName)), resource.TestCheckResourceAttr(resourceName, names.AttrValue, "test2"), resource.TestCheckResourceAttr(resourceName, names.AttrType, "String"), resource.TestCheckResourceAttr(resourceName, "tier", string(awstypes.ParameterTierStandard)), @@ -765,7 +765,7 @@ func TestAccSSMParameter_fullPath(t *testing.T) { Config: testAccParameterConfig_basic(name, "String", "test2"), Check: resource.ComposeTestCheckFunc( testAccCheckParameterExists(ctx, resourceName, ¶m), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "ssm", fmt.Sprintf("parameter%s", name)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ssm", fmt.Sprintf("parameter%s", name)), resource.TestCheckResourceAttr(resourceName, names.AttrValue, "test2"), resource.TestCheckResourceAttr(resourceName, names.AttrType, "String"), ), diff --git a/internal/service/ssm/patch_baseline.go b/internal/service/ssm/patch_baseline.go index 03d46f88b2d1..77ebcf1fdc6c 100644 --- a/internal/service/ssm/patch_baseline.go +++ b/internal/service/ssm/patch_baseline.go @@ -329,9 +329,9 @@ func resourcePatchBaselineRead(ctx context.Context, d *schema.ResourceData, meta d.Set("approved_patches_enable_non_security", output.ApprovedPatchesEnableNonSecurity) arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), Service: "ssm", - AccountID: meta.(*conns.AWSClient).AccountID, + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: "patchbaseline/" + strings.TrimPrefix(d.Id(), "/"), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/ssm/patch_baseline_test.go b/internal/service/ssm/patch_baseline_test.go index 63da26292059..ed27ddee2de2 100644 --- a/internal/service/ssm/patch_baseline_test.go +++ b/internal/service/ssm/patch_baseline_test.go @@ -47,7 +47,7 @@ func TestAccSSMPatchBaseline_basic(t *testing.T) { }, Check: resource.ComposeTestCheckFunc( testAccCheckPatchBaselineExists(ctx, resourceName, &before), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ssm", regexache.MustCompile(`patchbaseline/pb-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ssm", regexache.MustCompile(`patchbaseline/pb-.+`)), resource.TestCheckResourceAttr(resourceName, "approved_patches.#", "1"), resource.TestCheckTypeSetElemAttr(resourceName, "approved_patches.*", "KB123456"), resource.TestCheckResourceAttr(resourceName, names.AttrName, fmt.Sprintf("patch-baseline-%s", name)), @@ -81,7 +81,7 @@ func TestAccSSMPatchBaseline_basic(t *testing.T) { }, Check: resource.ComposeTestCheckFunc( testAccCheckPatchBaselineExists(ctx, resourceName, &after), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ssm", regexache.MustCompile(`patchbaseline/pb-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ssm", regexache.MustCompile(`patchbaseline/pb-.+`)), resource.TestCheckResourceAttr(resourceName, "approved_patches.#", "2"), resource.TestCheckTypeSetElemAttr(resourceName, "approved_patches.*", "KB123456"), resource.TestCheckTypeSetElemAttr(resourceName, "approved_patches.*", "KB456789"), diff --git a/internal/service/ssm/service_endpoints_gen_test.go b/internal/service/ssm/service_endpoints_gen_test.go index 146052a71c54..f9d303ea2f88 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/contact_channel_test.go b/internal/service/ssmcontacts/contact_channel_test.go index 672b7a2cd3bd..e4add97e5a4e 100644 --- a/internal/service/ssmcontacts/contact_channel_test.go +++ b/internal/service/ssmcontacts/contact_channel_test.go @@ -52,7 +52,7 @@ func testAccContactChannel_basic(t *testing.T) { resource.TestCheckResourceAttr(channelResourceName, names.AttrName, rName), resource.TestCheckResourceAttr(channelResourceName, names.AttrType, "EMAIL"), resource.TestCheckResourceAttrPair(channelResourceName, "contact_id", contactResourceName, names.AttrARN), - acctest.MatchResourceAttrRegionalARN(channelResourceName, names.AttrARN, "ssm-contacts", regexache.MustCompile("contact-channel/test-contact-for-"+rName+"/.")), + acctest.MatchResourceAttrRegionalARN(ctx, channelResourceName, names.AttrARN, "ssm-contacts", regexache.MustCompile("contact-channel/test-contact-for-"+rName+"/.")), ), }, { diff --git a/internal/service/ssmcontacts/contact_test.go b/internal/service/ssmcontacts/contact_test.go index 8af1ce96473a..9a5f0b92aa57 100644 --- a/internal/service/ssmcontacts/contact_test.go +++ b/internal/service/ssmcontacts/contact_test.go @@ -47,7 +47,7 @@ func testAccContact_basic(t *testing.T) { testAccCheckContactExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, names.AttrAlias, rName), resource.TestCheckResourceAttr(resourceName, names.AttrType, "PERSONAL"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ssm-contacts", regexache.MustCompile(`contact/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ssm-contacts", regexache.MustCompile(`contact/.+$`)), ), }, { diff --git a/internal/service/ssmcontacts/plan_test.go b/internal/service/ssmcontacts/plan_test.go index 1191231ce568..13ff41b9e55e 100644 --- a/internal/service/ssmcontacts/plan_test.go +++ b/internal/service/ssmcontacts/plan_test.go @@ -49,7 +49,7 @@ func testAccPlan_basic(t *testing.T) { testAccCheckPlanExists(ctx, planResourceName), resource.TestCheckResourceAttr(planResourceName, "stage.#", "1"), resource.TestCheckResourceAttr(planResourceName, "stage.0.duration_in_minutes", "1"), - acctest.CheckResourceAttrRegionalARN( + acctest.CheckResourceAttrRegionalARN(ctx, planResourceName, "contact_id", "ssm-contacts", @@ -317,7 +317,7 @@ func testAccPlan_updateTargets(t *testing.T) { "stage.0.target.0.contact_target_info.0.is_essential", acctest.CtFalse, ), - acctest.CheckResourceAttrRegionalARN( + acctest.CheckResourceAttrRegionalARN(ctx, planResourceName, "stage.0.target.0.contact_target_info.0.contact_id", "ssm-contacts", @@ -341,7 +341,7 @@ func testAccPlan_updateTargets(t *testing.T) { "stage.0.target.0.contact_target_info.0.is_essential", acctest.CtFalse, ), - acctest.CheckResourceAttrRegionalARN( + acctest.CheckResourceAttrRegionalARN(ctx, planResourceName, "stage.0.target.0.contact_target_info.0.contact_id", "ssm-contacts", @@ -352,7 +352,7 @@ func testAccPlan_updateTargets(t *testing.T) { "stage.0.target.1.contact_target_info.0.is_essential", acctest.CtTrue, ), - acctest.CheckResourceAttrRegionalARN( + acctest.CheckResourceAttrRegionalARN(ctx, planResourceName, "stage.0.target.1.contact_target_info.0.contact_id", "ssm-contacts", @@ -376,7 +376,7 @@ func testAccPlan_updateTargets(t *testing.T) { "stage.0.target.0.contact_target_info.0.is_essential", acctest.CtFalse, ), - acctest.CheckResourceAttrRegionalARN( + acctest.CheckResourceAttrRegionalARN(ctx, planResourceName, "stage.0.target.0.contact_target_info.0.contact_id", "ssm-contacts", @@ -425,7 +425,7 @@ func testAccPlan_updateContactTargetInfo(t *testing.T) { "stage.0.target.0.contact_target_info.0.is_essential", acctest.CtFalse, ), - acctest.CheckResourceAttrRegionalARN( + acctest.CheckResourceAttrRegionalARN(ctx, planResourceName, "stage.0.target.0.contact_target_info.0.contact_id", "ssm-contacts", @@ -449,7 +449,7 @@ func testAccPlan_updateContactTargetInfo(t *testing.T) { "stage.0.target.0.contact_target_info.0.is_essential", acctest.CtTrue, ), - acctest.CheckResourceAttrRegionalARN( + acctest.CheckResourceAttrRegionalARN(ctx, planResourceName, "stage.0.target.0.contact_target_info.0.contact_id", "ssm-contacts", diff --git a/internal/service/ssmcontacts/rotation_test.go b/internal/service/ssmcontacts/rotation_test.go index f54b544cd6b1..363bafe33638 100644 --- a/internal/service/ssmcontacts/rotation_test.go +++ b/internal/service/ssmcontacts/rotation_test.go @@ -57,7 +57,7 @@ func testAccRotation_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "recurrence.0.daily_settings.0.hour_of_day", "1"), resource.TestCheckResourceAttr(resourceName, "recurrence.0.daily_settings.0.minute_of_hour", "0"), resource.TestCheckResourceAttr(resourceName, "contact_ids.#", "1"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "ssm-contacts", regexache.MustCompile(`rotation/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "ssm-contacts", regexache.MustCompile(`rotation/.+$`)), ), }, { diff --git a/internal/service/ssmcontacts/service_endpoints_gen_test.go b/internal/service/ssmcontacts/service_endpoints_gen_test.go index 4c86b3777473..a2eac6f33c5f 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/replication_set_data_source_test.go b/internal/service/ssmincidents/replication_set_data_source_test.go index f33bb20bfbd2..a4d6a1497160 100644 --- a/internal/service/ssmincidents/replication_set_data_source_test.go +++ b/internal/service/ssmincidents/replication_set_data_source_test.go @@ -46,7 +46,7 @@ func testAccReplicationSetDataSource_basic(t *testing.T) { resource.TestCheckTypeSetElemAttrPair(resourceName, "region.0.status", dataSourceName, "region.0.status"), resource.TestCheckTypeSetElemAttrPair(resourceName, "region.0.status_message", dataSourceName, "region.0.status_message"), - acctest.MatchResourceAttrGlobalARN(dataSourceName, names.AttrARN, "ssm-incidents", regexache.MustCompile(`replication-set/.+$`)), + acctest.MatchResourceAttrGlobalARN(ctx, dataSourceName, names.AttrARN, "ssm-incidents", regexache.MustCompile(`replication-set/.+$`)), ), }, }, diff --git a/internal/service/ssmincidents/replication_set_test.go b/internal/service/ssmincidents/replication_set_test.go index ffa11f3220d2..cd6e1dd61531 100644 --- a/internal/service/ssmincidents/replication_set_test.go +++ b/internal/service/ssmincidents/replication_set_test.go @@ -55,7 +55,7 @@ func testAccReplicationSet_basic(t *testing.T) { names.AttrName: region2, names.AttrKMSKeyARN: "DefaultKey", }), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "ssm-incidents", regexache.MustCompile(`replication-set/.+$`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "ssm-incidents", regexache.MustCompile(`replication-set/.+$`)), ), }, { @@ -97,7 +97,7 @@ func testAccReplicationSet_updateRegionsWithoutCMK(t *testing.T) { names.AttrKMSKeyARN: "DefaultKey", }), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "ssm-incidents", regexache.MustCompile(`replication-set/.+$`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "ssm-incidents", regexache.MustCompile(`replication-set/.+$`)), ), }, { @@ -120,7 +120,7 @@ func testAccReplicationSet_updateRegionsWithoutCMK(t *testing.T) { names.AttrKMSKeyARN: "DefaultKey", }), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "ssm-incidents", regexache.MustCompile(`replication-set/.+$`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "ssm-incidents", regexache.MustCompile(`replication-set/.+$`)), ), }, { @@ -139,7 +139,7 @@ func testAccReplicationSet_updateRegionsWithoutCMK(t *testing.T) { names.AttrKMSKeyARN: "DefaultKey", }), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "ssm-incidents", regexache.MustCompile(`replication-set/.+$`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "ssm-incidents", regexache.MustCompile(`replication-set/.+$`)), ), }, { @@ -178,7 +178,7 @@ func testAccReplicationSet_updateRegionsWithCMK(t *testing.T) { resource.TestCheckTypeSetElemNestedAttrs(resourceName, "region.*", map[string]string{ names.AttrName: acctest.Region(), }), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "ssm-incidents", regexache.MustCompile(`replication-set/.+$`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "ssm-incidents", regexache.MustCompile(`replication-set/.+$`)), ), }, { @@ -198,7 +198,7 @@ func testAccReplicationSet_updateRegionsWithCMK(t *testing.T) { resource.TestCheckTypeSetElemNestedAttrs(resourceName, "region.*", map[string]string{ names.AttrName: acctest.AlternateRegion(), }), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "ssm-incidents", regexache.MustCompile(`replication-set/.+$`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "ssm-incidents", regexache.MustCompile(`replication-set/.+$`)), ), }, { @@ -215,7 +215,7 @@ func testAccReplicationSet_updateRegionsWithCMK(t *testing.T) { resource.TestCheckTypeSetElemNestedAttrs(resourceName, "region.*", map[string]string{ names.AttrName: acctest.Region(), }), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "ssm-incidents", regexache.MustCompile(`replication-set/.+$`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "ssm-incidents", regexache.MustCompile(`replication-set/.+$`)), ), }, { @@ -272,7 +272,7 @@ func testAccReplicationSet_updateTags(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "tags."+rKey1, rVal1Ini), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsAllPercent, "2"), resource.TestCheckResourceAttr(resourceName, "tags_all."+rProviderKey1, rProviderVal1Ini), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "ssm-incidents", regexache.MustCompile(`replication-set/.+$`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "ssm-incidents", regexache.MustCompile(`replication-set/.+$`)), ), }, { @@ -291,7 +291,7 @@ func testAccReplicationSet_updateTags(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "tags."+rKey1, rVal1Updated), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsAllPercent, "2"), resource.TestCheckResourceAttr(resourceName, "tags_all."+rProviderKey1, rProviderVal1Upd), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "ssm-incidents", regexache.MustCompile(`replication-set/.+$`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "ssm-incidents", regexache.MustCompile(`replication-set/.+$`)), ), }, { @@ -312,7 +312,7 @@ func testAccReplicationSet_updateTags(t *testing.T) { resource.TestCheckResourceAttr(resourceName, acctest.CtTagsAllPercent, "4"), resource.TestCheckResourceAttr(resourceName, "tags_all."+rProviderKey2, rProviderVal2), resource.TestCheckResourceAttr(resourceName, "tags_all."+rProviderKey3, rProviderVal3), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "ssm-incidents", regexache.MustCompile(`replication-set/.+$`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "ssm-incidents", regexache.MustCompile(`replication-set/.+$`)), ), }, { @@ -350,7 +350,7 @@ func testAccReplicationSet_updateEmptyTags(t *testing.T) { testAccCheckReplicationSetExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "1"), resource.TestCheckResourceAttr(resourceName, "tags."+rKey1, ""), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "ssm-incidents", regexache.MustCompile(`replication-set/.+$`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "ssm-incidents", regexache.MustCompile(`replication-set/.+$`)), ), }, { @@ -365,7 +365,7 @@ func testAccReplicationSet_updateEmptyTags(t *testing.T) { resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "2"), resource.TestCheckResourceAttr(resourceName, "tags."+rKey1, ""), resource.TestCheckResourceAttr(resourceName, "tags."+rKey2, ""), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "ssm-incidents", regexache.MustCompile(`replication-set/.+$`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "ssm-incidents", regexache.MustCompile(`replication-set/.+$`)), ), }, { @@ -379,7 +379,7 @@ func testAccReplicationSet_updateEmptyTags(t *testing.T) { testAccCheckReplicationSetExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "1"), resource.TestCheckResourceAttr(resourceName, "tags."+rKey1, ""), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "ssm-incidents", regexache.MustCompile(`replication-set/.+$`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "ssm-incidents", regexache.MustCompile(`replication-set/.+$`)), ), }, }, diff --git a/internal/service/ssmincidents/response_plan_data_source_test.go b/internal/service/ssmincidents/response_plan_data_source_test.go index 341d23824061..48b466c7308a 100644 --- a/internal/service/ssmincidents/response_plan_data_source_test.go +++ b/internal/service/ssmincidents/response_plan_data_source_test.go @@ -175,7 +175,7 @@ func testAccResponsePlanDataSource_basic(t *testing.T) { resource.TestCheckResourceAttrPair(resourceName, "tags.a", dataSourceName, "tags.a"), resource.TestCheckResourceAttrPair(resourceName, "tags.b", dataSourceName, "tags.b"), - acctest.MatchResourceAttrGlobalARN(dataSourceName, names.AttrARN, "ssm-incidents", regexache.MustCompile(`response-plan/.+$`)), + acctest.MatchResourceAttrGlobalARN(ctx, dataSourceName, names.AttrARN, "ssm-incidents", regexache.MustCompile(`response-plan/.+$`)), ), }, }, diff --git a/internal/service/ssmincidents/response_plan_test.go b/internal/service/ssmincidents/response_plan_test.go index b45c448b6060..537f59678f65 100644 --- a/internal/service/ssmincidents/response_plan_test.go +++ b/internal/service/ssmincidents/response_plan_test.go @@ -48,7 +48,7 @@ func testAccResponsePlan_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "incident_template.0.title", rTitle), resource.TestCheckResourceAttr(resourceName, "incident_template.0.impact", "3"), - acctest.CheckResourceAttrGlobalARN(resourceName, names.AttrARN, "ssm-incidents", fmt.Sprintf("response-plan/%s", rName)), + acctest.CheckResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "ssm-incidents", fmt.Sprintf("response-plan/%s", rName)), ), }, { @@ -100,7 +100,7 @@ func testAccResponsePlan_updateRequiredFields(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "incident_template.0.title", iniTitle), resource.TestCheckResourceAttr(resourceName, "incident_template.0.impact", "1"), - acctest.CheckResourceAttrGlobalARN(resourceName, names.AttrARN, "ssm-incidents", fmt.Sprintf("response-plan/%s", iniName)), + acctest.CheckResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "ssm-incidents", fmt.Sprintf("response-plan/%s", iniName)), ), }, { @@ -117,7 +117,7 @@ func testAccResponsePlan_updateRequiredFields(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "incident_template.0.title", updTitle), resource.TestCheckResourceAttr(resourceName, "incident_template.0.impact", updImpact), - acctest.CheckResourceAttrGlobalARN(resourceName, names.AttrARN, "ssm-incidents", fmt.Sprintf("response-plan/%s", iniName)), + acctest.CheckResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "ssm-incidents", fmt.Sprintf("response-plan/%s", iniName)), ), }, { @@ -134,7 +134,7 @@ func testAccResponsePlan_updateRequiredFields(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "incident_template.0.title", updTitle), resource.TestCheckResourceAttr(resourceName, "incident_template.0.impact", updImpact), - acctest.CheckResourceAttrGlobalARN(resourceName, names.AttrARN, "ssm-incidents", fmt.Sprintf("response-plan/%s", updName)), + acctest.CheckResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "ssm-incidents", fmt.Sprintf("response-plan/%s", updName)), ), }, { diff --git a/internal/service/ssmincidents/service_endpoints_gen_test.go b/internal/service/ssmincidents/service_endpoints_gen_test.go index 0c1b1781e5d9..a3386dac68a0 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/ssmincidents/sweep.go b/internal/service/ssmincidents/sweep.go index 2d576700d28f..80f3759fc806 100644 --- a/internal/service/ssmincidents/sweep.go +++ b/internal/service/ssmincidents/sweep.go @@ -8,10 +8,10 @@ import ( "log" "github.com/aws/aws-sdk-go-v2/service/ssmincidents" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-provider-aws/internal/sweep" "github.com/hashicorp/terraform-provider-aws/internal/sweep/awsv2" - "github.com/hashicorp/terraform-provider-aws/names" ) func RegisterSweepers() { @@ -23,7 +23,7 @@ func RegisterSweepers() { func sweepReplicationSets(region string) error { ctx := sweep.Context(region) - if region == names.USWest1RegionID { + if region == endpoints.UsWest1RegionID { log.Printf("[WARN] Skipping SSMIncidents Replication Sets sweep for region: %s", region) return nil } diff --git a/internal/service/ssmquicksetup/configuration_manager_test.go b/internal/service/ssmquicksetup/configuration_manager_test.go index a9fd7151362f..67b19135600d 100644 --- a/internal/service/ssmquicksetup/configuration_manager_test.go +++ b/internal/service/ssmquicksetup/configuration_manager_test.go @@ -51,7 +51,7 @@ func TestAccSSMQuickSetupConfigurationManager_basic(t *testing.T) { resource.TestCheckTypeSetElemNestedAttrs(resourceName, "configuration_definition.*", map[string]string{ names.AttrType: "AWSQuickSetupType-PatchPolicy", }), - acctest.MatchResourceAttrRegionalARN(resourceName, "manager_arn", "ssm-quicksetup", regexache.MustCompile(`configuration-manager/+.`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, "manager_arn", "ssm-quicksetup", regexache.MustCompile(`configuration-manager/+.`)), ), }, { diff --git a/internal/service/ssmquicksetup/service_endpoints_gen_test.go b/internal/service/ssmquicksetup/service_endpoints_gen_test.go index 4f3517929573..d96cab74acf7 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 be0cfe0fa7e8..92641d00724b 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 d5d40e5c62df..721a424de6c7 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/application_providers_data_source.go b/internal/service/ssoadmin/application_providers_data_source.go index 3c9ed351bba3..34b4ccea41ba 100644 --- a/internal/service/ssoadmin/application_providers_data_source.go +++ b/internal/service/ssoadmin/application_providers_data_source.go @@ -81,7 +81,7 @@ func (d *dataSourceApplicationProviders) Read(ctx context.Context, req datasourc if resp.Diagnostics.HasError() { return } - data.ID = types.StringValue(d.Meta().Region) + data.ID = types.StringValue(d.Meta().Region(ctx)) paginator := ssoadmin.NewListApplicationProvidersPaginator(conn, &ssoadmin.ListApplicationProvidersInput{}) var apiObjects []awstypes.ApplicationProvider diff --git a/internal/service/ssoadmin/application_test.go b/internal/service/ssoadmin/application_test.go index 47a6a83a173e..0ff6ec6b805f 100644 --- a/internal/service/ssoadmin/application_test.go +++ b/internal/service/ssoadmin/application_test.go @@ -49,7 +49,7 @@ func TestAccSSOAdminApplication_basic(t *testing.T) { testAccCheckApplicationExists(ctx, resourceName, &application), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "application_provider_arn", testAccApplicationProviderARN), - acctest.MatchResourceAttrGlobalARN(resourceName, "application_arn", "sso", regexache.MustCompile(`application/.+$`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, "application_arn", "sso", regexache.MustCompile(`application/.+$`)), ), }, { diff --git a/internal/service/ssoadmin/instances_data_source.go b/internal/service/ssoadmin/instances_data_source.go index e1eab45335c9..50b7588106b6 100644 --- a/internal/service/ssoadmin/instances_data_source.go +++ b/internal/service/ssoadmin/instances_data_source.go @@ -53,7 +53,7 @@ func dataSourceInstancesRead(ctx context.Context, d *schema.ResourceData, meta i arns = append(arns, aws.ToString(v.InstanceArn)) } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) d.Set(names.AttrARNs, arns) d.Set("identity_store_ids", identityStoreIDs) diff --git a/internal/service/ssoadmin/service_endpoints_gen_test.go b/internal/service/ssoadmin/service_endpoints_gen_test.go index 0cd8bcb969a0..457846bff5e2 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/ssoadmin/sweep.go b/internal/service/ssoadmin/sweep.go index 705a7f5c0680..0d1ac540dd5e 100644 --- a/internal/service/ssoadmin/sweep.go +++ b/internal/service/ssoadmin/sweep.go @@ -92,7 +92,7 @@ func sweepAccountAssignments(region string) error { for _, permissionSetArn := range permissionSetArns { input := &ssoadmin.ListAccountAssignmentsInput{ - AccountId: aws.String(client.AccountID), + AccountId: aws.String(client.AccountID(ctx)), InstanceArn: aws.String(instanceArn), PermissionSetArn: aws.String(permissionSetArn), } diff --git a/internal/service/storagegateway/cached_iscsi_volume_test.go b/internal/service/storagegateway/cached_iscsi_volume_test.go index d4935397fc79..5de345476166 100644 --- a/internal/service/storagegateway/cached_iscsi_volume_test.go +++ b/internal/service/storagegateway/cached_iscsi_volume_test.go @@ -94,17 +94,17 @@ func TestAccStorageGatewayCachediSCSIVolume_basic(t *testing.T) { Config: testAccCachediSCSIVolumeConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckCachediSCSIVolumeExists(ctx, resourceName, &cachedIscsiVolume), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "storagegateway", regexache.MustCompile(`gateway/sgw-.+/volume/vol-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "storagegateway", regexache.MustCompile(`gateway/sgw-.+/volume/vol-.+`)), resource.TestCheckResourceAttr(resourceName, "chap_enabled", acctest.CtFalse), - acctest.MatchResourceAttrRegionalARN(resourceName, "gateway_arn", "storagegateway", regexache.MustCompile(`gateway/sgw-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, "gateway_arn", "storagegateway", regexache.MustCompile(`gateway/sgw-.+`)), resource.TestCheckResourceAttr(resourceName, "lun_number", "0"), resource.TestMatchResourceAttr(resourceName, names.AttrNetworkInterfaceID, regexache.MustCompile(`^\d+\.\d+\.\d+\.\d+$`)), resource.TestMatchResourceAttr(resourceName, "network_interface_port", regexache.MustCompile(`^\d+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrSnapshotID, ""), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrTargetARN, "storagegateway", regexache.MustCompile(fmt.Sprintf(`gateway/sgw-.+/target/iqn.1997-05.com.amazon:%s`, rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrTargetARN, "storagegateway", regexache.MustCompile(fmt.Sprintf(`gateway/sgw-.+/target/iqn.1997-05.com.amazon:%s`, rName))), resource.TestCheckResourceAttr(resourceName, "target_name", rName), resource.TestMatchResourceAttr(resourceName, "volume_id", regexache.MustCompile(`^vol-.+$`)), - acctest.MatchResourceAttrRegionalARN(resourceName, "volume_arn", "storagegateway", regexache.MustCompile(`gateway/sgw-.+/volume/vol-.`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, "volume_arn", "storagegateway", regexache.MustCompile(`gateway/sgw-.+/volume/vol-.`)), resource.TestCheckResourceAttr(resourceName, "volume_size_in_bytes", "5368709120"), resource.TestCheckResourceAttr(resourceName, "kms_encrypted", acctest.CtFalse), ), @@ -164,7 +164,7 @@ func TestAccStorageGatewayCachediSCSIVolume_tags(t *testing.T) { Config: testAccCachediSCSIVolumeConfig_tags1(rName, acctest.CtKey1, acctest.CtValue1), Check: resource.ComposeTestCheckFunc( testAccCheckCachediSCSIVolumeExists(ctx, resourceName, &cachedIscsiVolume), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "storagegateway", regexache.MustCompile(`gateway/sgw-.+/volume/vol-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "storagegateway", regexache.MustCompile(`gateway/sgw-.+/volume/vol-.+`)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "1"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsKey1, acctest.CtValue1), ), @@ -178,7 +178,7 @@ func TestAccStorageGatewayCachediSCSIVolume_tags(t *testing.T) { Config: testAccCachediSCSIVolumeConfig_tags2(rName, acctest.CtKey1, acctest.CtValue1Updated, acctest.CtKey2, acctest.CtValue2), Check: resource.ComposeTestCheckFunc( testAccCheckCachediSCSIVolumeExists(ctx, resourceName, &cachedIscsiVolume), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "storagegateway", regexache.MustCompile(`gateway/sgw-.+/volume/vol-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "storagegateway", regexache.MustCompile(`gateway/sgw-.+/volume/vol-.+`)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "2"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsKey1, acctest.CtValue1Updated), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsKey2, acctest.CtValue2), @@ -188,7 +188,7 @@ func TestAccStorageGatewayCachediSCSIVolume_tags(t *testing.T) { Config: testAccCachediSCSIVolumeConfig_tags1(rName, acctest.CtKey2, acctest.CtValue2), Check: resource.ComposeTestCheckFunc( testAccCheckCachediSCSIVolumeExists(ctx, resourceName, &cachedIscsiVolume), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "storagegateway", regexache.MustCompile(`gateway/sgw-.+/volume/vol-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "storagegateway", regexache.MustCompile(`gateway/sgw-.+/volume/vol-.+`)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "1"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsKey2, acctest.CtValue2), ), @@ -213,17 +213,17 @@ func TestAccStorageGatewayCachediSCSIVolume_snapshotID(t *testing.T) { Config: testAccCachediSCSIVolumeConfig_snapshotID(rName), Check: resource.ComposeTestCheckFunc( testAccCheckCachediSCSIVolumeExists(ctx, resourceName, &cachedIscsiVolume), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "storagegateway", regexache.MustCompile(`gateway/sgw-.+/volume/vol-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "storagegateway", regexache.MustCompile(`gateway/sgw-.+/volume/vol-.+`)), resource.TestCheckResourceAttr(resourceName, "chap_enabled", acctest.CtFalse), - acctest.MatchResourceAttrRegionalARN(resourceName, "gateway_arn", "storagegateway", regexache.MustCompile(`gateway/sgw-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, "gateway_arn", "storagegateway", regexache.MustCompile(`gateway/sgw-.+`)), resource.TestCheckResourceAttr(resourceName, "lun_number", "0"), resource.TestMatchResourceAttr(resourceName, names.AttrNetworkInterfaceID, regexache.MustCompile(`^\d+\.\d+\.\d+\.\d+$`)), resource.TestMatchResourceAttr(resourceName, "network_interface_port", regexache.MustCompile(`^\d+$`)), resource.TestMatchResourceAttr(resourceName, names.AttrSnapshotID, regexache.MustCompile(`^snap-.+$`)), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrTargetARN, "storagegateway", regexache.MustCompile(fmt.Sprintf(`gateway/sgw-.+/target/iqn.1997-05.com.amazon:%s`, rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrTargetARN, "storagegateway", regexache.MustCompile(fmt.Sprintf(`gateway/sgw-.+/target/iqn.1997-05.com.amazon:%s`, rName))), resource.TestCheckResourceAttr(resourceName, "target_name", rName), resource.TestMatchResourceAttr(resourceName, "volume_id", regexache.MustCompile(`^vol-.+$`)), - acctest.MatchResourceAttrRegionalARN(resourceName, "volume_arn", "storagegateway", regexache.MustCompile(`gateway/sgw-.+/volume/vol-.`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, "volume_arn", "storagegateway", regexache.MustCompile(`gateway/sgw-.+/volume/vol-.`)), resource.TestCheckResourceAttr(resourceName, "volume_size_in_bytes", "5368709120"), ), }, @@ -253,16 +253,16 @@ func TestAccStorageGatewayCachediSCSIVolume_sourceVolumeARN(t *testing.T) { Config: testAccCachediSCSIVolumeConfig_sourceARN(rName), Check: resource.ComposeTestCheckFunc( testAccCheckCachediSCSIVolumeExists(ctx, resourceName, &cachedIscsiVolume), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "storagegateway", regexache.MustCompile(`gateway/sgw-.+/volume/vol-.+`)), - acctest.MatchResourceAttrRegionalARN(resourceName, "gateway_arn", "storagegateway", regexache.MustCompile(`gateway/sgw-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "storagegateway", regexache.MustCompile(`gateway/sgw-.+/volume/vol-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, "gateway_arn", "storagegateway", regexache.MustCompile(`gateway/sgw-.+`)), resource.TestMatchResourceAttr(resourceName, names.AttrNetworkInterfaceID, regexache.MustCompile(`^\d+\.\d+\.\d+\.\d+$`)), resource.TestMatchResourceAttr(resourceName, "network_interface_port", regexache.MustCompile(`^\d+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrSnapshotID, ""), - acctest.MatchResourceAttrRegionalARN(resourceName, "source_volume_arn", "storagegateway", regexache.MustCompile(`gateway/sgw-.+/volume/vol-.+`)), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrTargetARN, "storagegateway", regexache.MustCompile(fmt.Sprintf(`gateway/sgw-.+/target/iqn.1997-05.com.amazon:%s`, rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, "source_volume_arn", "storagegateway", regexache.MustCompile(`gateway/sgw-.+/volume/vol-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrTargetARN, "storagegateway", regexache.MustCompile(fmt.Sprintf(`gateway/sgw-.+/target/iqn.1997-05.com.amazon:%s`, rName))), resource.TestCheckResourceAttr(resourceName, "target_name", rName), resource.TestMatchResourceAttr(resourceName, "volume_id", regexache.MustCompile(`^vol-.+$`)), - acctest.MatchResourceAttrRegionalARN(resourceName, "volume_arn", "storagegateway", regexache.MustCompile(`gateway/sgw-.+/volume/vol-.`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, "volume_arn", "storagegateway", regexache.MustCompile(`gateway/sgw-.+/volume/vol-.`)), resource.TestCheckResourceAttr(resourceName, "volume_size_in_bytes", "1073741824"), ), }, diff --git a/internal/service/storagegateway/file_system_association_test.go b/internal/service/storagegateway/file_system_association_test.go index a19a5aa3f1ae..e8add6349d25 100644 --- a/internal/service/storagegateway/file_system_association_test.go +++ b/internal/service/storagegateway/file_system_association_test.go @@ -41,7 +41,7 @@ func TestAccStorageGatewayFileSystemAssociation_basic(t *testing.T) { Config: testAccFileSystemAssociationConfig_required(rName, domainName, username), Check: resource.ComposeTestCheckFunc( testAccCheckFileSystemAssociationExists(ctx, resourceName, &fileSystemAssociation), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "storagegateway", regexache.MustCompile(`fs-association/fsa-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "storagegateway", regexache.MustCompile(`fs-association/fsa-.+`)), resource.TestCheckResourceAttrPair(resourceName, "gateway_arn", gatewayResourceName, names.AttrARN), resource.TestCheckResourceAttrPair(resourceName, "location_arn", fsxResourceName, names.AttrARN), resource.TestCheckResourceAttr(resourceName, names.AttrUsername, username), @@ -77,7 +77,7 @@ func TestAccStorageGatewayFileSystemAssociation_tags(t *testing.T) { Config: testAccFileSystemAssociationConfig_tags1(rName, domainName, username, acctest.CtKey1, acctest.CtValue1), Check: resource.ComposeTestCheckFunc( testAccCheckFileSystemAssociationExists(ctx, resourceName, &fileSystemAssociation), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "storagegateway", regexache.MustCompile(`fs-association/fsa-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "storagegateway", regexache.MustCompile(`fs-association/fsa-.+`)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "1"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsKey1, acctest.CtValue1), ), @@ -92,7 +92,7 @@ func TestAccStorageGatewayFileSystemAssociation_tags(t *testing.T) { Config: testAccFileSystemAssociationConfig_tags2(rName, domainName, username, acctest.CtKey1, acctest.CtValue1Updated, acctest.CtKey2, acctest.CtValue2), Check: resource.ComposeTestCheckFunc( testAccCheckFileSystemAssociationExists(ctx, resourceName, &fileSystemAssociation), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "storagegateway", regexache.MustCompile(`fs-association/fsa-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "storagegateway", regexache.MustCompile(`fs-association/fsa-.+`)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "2"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsKey1, acctest.CtValue1Updated), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsKey2, acctest.CtValue2), @@ -102,7 +102,7 @@ func TestAccStorageGatewayFileSystemAssociation_tags(t *testing.T) { Config: testAccFileSystemAssociationConfig_tags1(rName, domainName, username, acctest.CtKey2, acctest.CtValue2), Check: resource.ComposeTestCheckFunc( testAccCheckFileSystemAssociationExists(ctx, resourceName, &fileSystemAssociation), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "storagegateway", regexache.MustCompile(`fs-association/fsa-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "storagegateway", regexache.MustCompile(`fs-association/fsa-.+`)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "1"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsKey2, acctest.CtValue2), ), diff --git a/internal/service/storagegateway/gateway.go b/internal/service/storagegateway/gateway.go index f3f52957fa91..081490a117b9 100644 --- a/internal/service/storagegateway/gateway.go +++ b/internal/service/storagegateway/gateway.go @@ -278,7 +278,7 @@ func resourceGatewayCreate(ctx context.Context, d *schema.ResourceData, meta int var diags diag.Diagnostics conn := meta.(*conns.AWSClient).StorageGatewayClient(ctx) - region := meta.(*conns.AWSClient).Region + region := meta.(*conns.AWSClient).Region(ctx) activationKey := d.Get("activation_key").(string) // Perform one time fetch of activation key from gateway IP address. diff --git a/internal/service/storagegateway/gateway_test.go b/internal/service/storagegateway/gateway_test.go index 3824582f1dd4..d099f8afc05a 100644 --- a/internal/service/storagegateway/gateway_test.go +++ b/internal/service/storagegateway/gateway_test.go @@ -37,7 +37,7 @@ func TestAccStorageGatewayGateway_GatewayType_cached(t *testing.T) { Config: testAccGatewayConfig_typeCached(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckGatewayExists(ctx, resourceName, &gateway), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "storagegateway", regexache.MustCompile(`gateway/sgw-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "storagegateway", regexache.MustCompile(`gateway/sgw-.+`)), resource.TestCheckResourceAttrPair(resourceName, "ec2_instance_id", "aws_instance.test", names.AttrID), resource.TestCheckResourceAttr(resourceName, names.AttrEndpointType, "STANDARD"), resource.TestCheckResourceAttrSet(resourceName, "gateway_id"), @@ -80,7 +80,7 @@ func TestAccStorageGatewayGateway_GatewayType_fileFSxSMB(t *testing.T) { Config: testAccGatewayConfig_typeFileFSxSMB(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckGatewayExists(ctx, resourceName, &gateway), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "storagegateway", regexache.MustCompile(`gateway/sgw-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "storagegateway", regexache.MustCompile(`gateway/sgw-.+`)), resource.TestCheckResourceAttrPair(resourceName, "ec2_instance_id", "aws_instance.test", names.AttrID), resource.TestCheckResourceAttr(resourceName, names.AttrEndpointType, "STANDARD"), resource.TestCheckResourceAttrSet(resourceName, "gateway_id"), @@ -123,7 +123,7 @@ func TestAccStorageGatewayGateway_GatewayType_fileS3(t *testing.T) { Config: testAccGatewayConfig_typeFileS3(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckGatewayExists(ctx, resourceName, &gateway), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "storagegateway", regexache.MustCompile(`gateway/sgw-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "storagegateway", regexache.MustCompile(`gateway/sgw-.+`)), resource.TestCheckResourceAttrPair(resourceName, "ec2_instance_id", "aws_instance.test", names.AttrID), resource.TestCheckResourceAttr(resourceName, names.AttrEndpointType, "STANDARD"), resource.TestCheckResourceAttrSet(resourceName, "gateway_id"), @@ -166,7 +166,7 @@ func TestAccStorageGatewayGateway_GatewayType_stored(t *testing.T) { Config: testAccGatewayConfig_typeStored(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckGatewayExists(ctx, resourceName, &gateway), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "storagegateway", regexache.MustCompile(`gateway/sgw-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "storagegateway", regexache.MustCompile(`gateway/sgw-.+`)), resource.TestCheckResourceAttrPair(resourceName, "ec2_instance_id", "aws_instance.test", names.AttrID), resource.TestCheckResourceAttr(resourceName, names.AttrEndpointType, "STANDARD"), resource.TestCheckResourceAttrSet(resourceName, "gateway_id"), @@ -209,7 +209,7 @@ func TestAccStorageGatewayGateway_GatewayType_vtl(t *testing.T) { Config: testAccGatewayConfig_typeVtl(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckGatewayExists(ctx, resourceName, &gateway), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "storagegateway", regexache.MustCompile(`gateway/sgw-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "storagegateway", regexache.MustCompile(`gateway/sgw-.+`)), resource.TestCheckResourceAttrPair(resourceName, "ec2_instance_id", "aws_instance.test", names.AttrID), resource.TestCheckResourceAttr(resourceName, names.AttrEndpointType, "STANDARD"), resource.TestCheckResourceAttrSet(resourceName, "gateway_id"), @@ -250,7 +250,7 @@ func TestAccStorageGatewayGateway_tags(t *testing.T) { Config: testAccGatewayConfig_tags1(rName, acctest.CtKey1, acctest.CtValue1), Check: resource.ComposeTestCheckFunc( testAccCheckGatewayExists(ctx, resourceName, &gateway), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "storagegateway", regexache.MustCompile(`gateway/sgw-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "storagegateway", regexache.MustCompile(`gateway/sgw-.+`)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "1"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsKey1, acctest.CtValue1), ), diff --git a/internal/service/storagegateway/nfs_file_share_test.go b/internal/service/storagegateway/nfs_file_share_test.go index 6ea855a1ec17..12726f747a29 100644 --- a/internal/service/storagegateway/nfs_file_share_test.go +++ b/internal/service/storagegateway/nfs_file_share_test.go @@ -39,7 +39,7 @@ func TestAccStorageGatewayNFSFileShare_basic(t *testing.T) { Config: testAccNFSFileShareConfig_required(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckNFSFileShareExists(ctx, resourceName, &nfsFileShare), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "storagegateway", regexache.MustCompile(`share/share-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "storagegateway", regexache.MustCompile(`share/share-.+`)), resource.TestCheckResourceAttr(resourceName, "bucket_region", ""), resource.TestCheckResourceAttr(resourceName, "cache_attributes.#", "0"), resource.TestCheckResourceAttr(resourceName, "client_list.#", "1"), @@ -126,7 +126,7 @@ func TestAccStorageGatewayNFSFileShare_tags(t *testing.T) { Config: testAccNFSFileShareConfig_tags1(rName, acctest.CtKey1, acctest.CtValue1), Check: resource.ComposeTestCheckFunc( testAccCheckNFSFileShareExists(ctx, resourceName, &nfsFileShare), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "storagegateway", regexache.MustCompile(`share/share-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "storagegateway", regexache.MustCompile(`share/share-.+`)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "1"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsKey1, acctest.CtValue1), ), @@ -140,7 +140,7 @@ func TestAccStorageGatewayNFSFileShare_tags(t *testing.T) { Config: testAccNFSFileShareConfig_tags2(rName, acctest.CtKey1, acctest.CtValue1Updated, acctest.CtKey2, acctest.CtValue2), Check: resource.ComposeTestCheckFunc( testAccCheckNFSFileShareExists(ctx, resourceName, &nfsFileShare), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "storagegateway", regexache.MustCompile(`share/share-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "storagegateway", regexache.MustCompile(`share/share-.+`)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "2"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsKey1, acctest.CtValue1Updated), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsKey2, acctest.CtValue2), @@ -150,7 +150,7 @@ func TestAccStorageGatewayNFSFileShare_tags(t *testing.T) { Config: testAccNFSFileShareConfig_tags1(rName, acctest.CtKey2, acctest.CtValue2), Check: resource.ComposeTestCheckFunc( testAccCheckNFSFileShareExists(ctx, resourceName, &nfsFileShare), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "storagegateway", regexache.MustCompile(`share/share-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "storagegateway", regexache.MustCompile(`share/share-.+`)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "1"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsKey2, acctest.CtValue2), ), diff --git a/internal/service/storagegateway/service_endpoints_gen_test.go b/internal/service/storagegateway/service_endpoints_gen_test.go index 14833be2cba4..258bf8510269 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/storagegateway/smb_file_share_test.go b/internal/service/storagegateway/smb_file_share_test.go index 2f274cc853b1..44204eeeede5 100644 --- a/internal/service/storagegateway/smb_file_share_test.go +++ b/internal/service/storagegateway/smb_file_share_test.go @@ -40,7 +40,7 @@ func TestAccStorageGatewaySMBFileShare_Authentication_activeDirectory(t *testing Config: testAccSMBFileShareConfig_authenticationActiveDirectory(rName, domainName), Check: resource.ComposeTestCheckFunc( testAccCheckSMBFileShareExists(ctx, resourceName, &smbFileShare), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "storagegateway", regexache.MustCompile(`share/share-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "storagegateway", regexache.MustCompile(`share/share-.+`)), resource.TestCheckResourceAttr(resourceName, "authentication", "ActiveDirectory"), resource.TestCheckResourceAttr(resourceName, "default_storage_class", "S3_STANDARD"), resource.TestMatchResourceAttr(resourceName, "fileshare_id", regexache.MustCompile(`^share-`)), @@ -91,7 +91,7 @@ func TestAccStorageGatewaySMBFileShare_Authentication_guestAccess(t *testing.T) Check: resource.ComposeTestCheckFunc( testAccCheckSMBFileShareExists(ctx, resourceName, &smbFileShare), resource.TestCheckResourceAttr(resourceName, "admin_user_list.#", "0"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "storagegateway", regexache.MustCompile(`share/share-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "storagegateway", regexache.MustCompile(`share/share-.+`)), resource.TestCheckResourceAttr(resourceName, "authentication", "GuestAccess"), resource.TestCheckResourceAttr(resourceName, "cache_attributes.#", "0"), resource.TestCheckResourceAttr(resourceName, "case_sensitivity", "ClientSpecified"), diff --git a/internal/service/storagegateway/stored_iscsi_volume_test.go b/internal/service/storagegateway/stored_iscsi_volume_test.go index a8c8b4b851ff..39c3f0a9022c 100644 --- a/internal/service/storagegateway/stored_iscsi_volume_test.go +++ b/internal/service/storagegateway/stored_iscsi_volume_test.go @@ -38,14 +38,14 @@ func TestAccStorageGatewayStorediSCSIVolume_basic(t *testing.T) { testAccCheckStorediSCSIVolumeExists(ctx, resourceName, &storedIscsiVolume), resource.TestCheckResourceAttr(resourceName, "preserve_existing_data", acctest.CtFalse), resource.TestCheckResourceAttrPair(resourceName, "disk_id", "data.aws_storagegateway_local_disk.test", names.AttrID), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "storagegateway", regexache.MustCompile(`gateway/sgw-.+/volume/vol-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "storagegateway", regexache.MustCompile(`gateway/sgw-.+/volume/vol-.+`)), resource.TestCheckResourceAttr(resourceName, "chap_enabled", acctest.CtFalse), resource.TestCheckResourceAttrPair(resourceName, "gateway_arn", "aws_storagegateway_gateway.test", names.AttrARN), resource.TestCheckResourceAttr(resourceName, "lun_number", "0"), resource.TestCheckResourceAttrPair(resourceName, names.AttrNetworkInterfaceID, "aws_instance.test", "private_ip"), resource.TestMatchResourceAttr(resourceName, "network_interface_port", regexache.MustCompile(`^\d+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrSnapshotID, ""), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrTargetARN, "storagegateway", regexache.MustCompile(fmt.Sprintf(`gateway/sgw-.+/target/iqn.1997-05.com.amazon:%s`, rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrTargetARN, "storagegateway", regexache.MustCompile(fmt.Sprintf(`gateway/sgw-.+/target/iqn.1997-05.com.amazon:%s`, rName))), resource.TestCheckResourceAttr(resourceName, "target_name", rName), resource.TestMatchResourceAttr(resourceName, "volume_id", regexache.MustCompile(`^vol-+`)), resource.TestCheckResourceAttr(resourceName, "volume_size_in_bytes", "10737418240"), @@ -108,7 +108,7 @@ func TestAccStorageGatewayStorediSCSIVolume_tags(t *testing.T) { Config: testAccStorediSCSIVolumeConfig_tags1(rName, acctest.CtKey1, acctest.CtValue1), Check: resource.ComposeTestCheckFunc( testAccCheckStorediSCSIVolumeExists(ctx, resourceName, &storedIscsiVolume), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "storagegateway", regexache.MustCompile(`gateway/sgw-.+/volume/vol-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "storagegateway", regexache.MustCompile(`gateway/sgw-.+/volume/vol-.+`)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "1"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsKey1, acctest.CtValue1), ), @@ -122,7 +122,7 @@ func TestAccStorageGatewayStorediSCSIVolume_tags(t *testing.T) { Config: testAccStorediSCSIVolumeConfig_tags2(rName, acctest.CtKey1, acctest.CtValue1Updated, acctest.CtKey2, acctest.CtValue2), Check: resource.ComposeTestCheckFunc( testAccCheckStorediSCSIVolumeExists(ctx, resourceName, &storedIscsiVolume), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "storagegateway", regexache.MustCompile(`gateway/sgw-.+/volume/vol-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "storagegateway", regexache.MustCompile(`gateway/sgw-.+/volume/vol-.+`)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "2"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsKey1, acctest.CtValue1Updated), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsKey2, acctest.CtValue2), @@ -132,7 +132,7 @@ func TestAccStorageGatewayStorediSCSIVolume_tags(t *testing.T) { Config: testAccStorediSCSIVolumeConfig_tags1(rName, acctest.CtKey2, acctest.CtValue2), Check: resource.ComposeTestCheckFunc( testAccCheckStorediSCSIVolumeExists(ctx, resourceName, &storedIscsiVolume), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "storagegateway", regexache.MustCompile(`gateway/sgw-.+/volume/vol-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "storagegateway", regexache.MustCompile(`gateway/sgw-.+/volume/vol-.+`)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "1"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsKey2, acctest.CtValue2), ), @@ -157,14 +157,14 @@ func TestAccStorageGatewayStorediSCSIVolume_snapshotID(t *testing.T) { Config: testAccStorediSCSIVolumeConfig_snapshotID(rName), Check: resource.ComposeTestCheckFunc( testAccCheckStorediSCSIVolumeExists(ctx, resourceName, &storedIscsiVolume), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "storagegateway", regexache.MustCompile(`gateway/sgw-.+/volume/vol-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "storagegateway", regexache.MustCompile(`gateway/sgw-.+/volume/vol-.+`)), resource.TestCheckResourceAttr(resourceName, "chap_enabled", acctest.CtFalse), resource.TestCheckResourceAttrPair(resourceName, "gateway_arn", "aws_storagegateway_gateway.test", names.AttrARN), resource.TestCheckResourceAttr(resourceName, "lun_number", "0"), resource.TestCheckResourceAttrPair(resourceName, names.AttrNetworkInterfaceID, "aws_instance.test", "private_ip"), resource.TestMatchResourceAttr(resourceName, "network_interface_port", regexache.MustCompile(`^\d+$`)), resource.TestCheckResourceAttrPair(resourceName, names.AttrSnapshotID, "aws_ebs_snapshot.test", names.AttrID), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrTargetARN, "storagegateway", regexache.MustCompile(fmt.Sprintf(`gateway/sgw-.+/target/iqn.1997-05.com.amazon:%s`, rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrTargetARN, "storagegateway", regexache.MustCompile(fmt.Sprintf(`gateway/sgw-.+/target/iqn.1997-05.com.amazon:%s`, rName))), resource.TestCheckResourceAttr(resourceName, "target_name", rName), resource.TestMatchResourceAttr(resourceName, "volume_id", regexache.MustCompile(`^vol-+`)), resource.TestCheckResourceAttr(resourceName, "volume_size_in_bytes", "10737418240"), diff --git a/internal/service/storagegateway/tape_pool_test.go b/internal/service/storagegateway/tape_pool_test.go index 3e52ac8fdab3..a826ac4147c2 100644 --- a/internal/service/storagegateway/tape_pool_test.go +++ b/internal/service/storagegateway/tape_pool_test.go @@ -36,7 +36,7 @@ func TestAccStorageGatewayTapePool_basic(t *testing.T) { Config: testAccTapePoolConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckTapePoolExists(ctx, resourceName, &TapePool), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "storagegateway", regexache.MustCompile(`tapepool/pool-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "storagegateway", regexache.MustCompile(`tapepool/pool-.+`)), resource.TestCheckResourceAttr(resourceName, "pool_name", rName), resource.TestCheckResourceAttr(resourceName, names.AttrStorageClass, "GLACIER"), resource.TestCheckResourceAttr(resourceName, "retention_lock_type", "NONE"), @@ -68,7 +68,7 @@ func TestAccStorageGatewayTapePool_retention(t *testing.T) { Config: testAccTapePoolConfig_retention(rName), Check: resource.ComposeTestCheckFunc( testAccCheckTapePoolExists(ctx, resourceName, &TapePool), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "storagegateway", regexache.MustCompile(`tapepool/pool-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "storagegateway", regexache.MustCompile(`tapepool/pool-.+`)), resource.TestCheckResourceAttr(resourceName, "pool_name", rName), resource.TestCheckResourceAttr(resourceName, names.AttrStorageClass, "GLACIER"), resource.TestCheckResourceAttr(resourceName, "retention_lock_type", "GOVERNANCE"), diff --git a/internal/service/sts/caller_identity_data_source_test.go b/internal/service/sts/caller_identity_data_source_test.go index f32cb0e19d4a..931fb6e97c14 100644 --- a/internal/service/sts/caller_identity_data_source_test.go +++ b/internal/service/sts/caller_identity_data_source_test.go @@ -16,6 +16,7 @@ import ( func TestAccSTSCallerIdentityDataSource_basic(t *testing.T) { ctx := acctest.Context(t) + resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, names.STSServiceID), @@ -24,7 +25,7 @@ func TestAccSTSCallerIdentityDataSource_basic(t *testing.T) { { Config: testAccCallerIdentityConfig_basic, Check: resource.ComposeTestCheckFunc( - acctest.CheckCallerIdentityAccountID("data.aws_caller_identity.current"), + acctest.CheckCallerIdentityAccountID(ctx, "data.aws_caller_identity.current"), ), }, }, @@ -52,7 +53,7 @@ func TestAccSTSCallerIdentityDataSource_alternateRegion(t *testing.T) { { Config: testAccCallerIdentityConfig_alternateRegion(defaultRegion, alternateRegion), Check: resource.ComposeTestCheckFunc( - acctest.CheckCallerIdentityAccountID("data.aws_caller_identity.current"), + acctest.CheckCallerIdentityAccountID(ctx, "data.aws_caller_identity.current"), ), }, }, diff --git a/internal/service/sts/service_endpoints_gen_test.go b/internal/service/sts/service_endpoints_gen_test.go index d7a759d0ff78..575629852b2e 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/domain_test.go b/internal/service/swf/domain_test.go index bdf4a701aa10..ed11fb78011b 100644 --- a/internal/service/swf/domain_test.go +++ b/internal/service/swf/domain_test.go @@ -49,7 +49,7 @@ func TestAccSWFDomain_basic(t *testing.T) { Config: testAccDomainConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckDomainExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "swf", regexache.MustCompile(`/domain/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "swf", regexache.MustCompile(`/domain/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, names.AttrNamePrefix, ""), diff --git a/internal/service/swf/service_endpoints_gen_test.go b/internal/service/swf/service_endpoints_gen_test.go index 3770ef7dce33..b875e94201fd 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/canary.go b/internal/service/synthetics/canary.go index a28d326e8635..e015574319c1 100644 --- a/internal/service/synthetics/canary.go +++ b/internal/service/synthetics/canary.go @@ -380,8 +380,8 @@ func resourceCanaryRead(ctx context.Context, d *schema.ResourceData, meta interf canaryArn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "synthetics", - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: fmt.Sprintf("canary:%s", aws.ToString(canary.Name)), }.String() d.Set(names.AttrARN, canaryArn) diff --git a/internal/service/synthetics/canary_test.go b/internal/service/synthetics/canary_test.go index 5048d6681721..319bbfae5276 100644 --- a/internal/service/synthetics/canary_test.go +++ b/internal/service/synthetics/canary_test.go @@ -37,7 +37,7 @@ func TestAccSyntheticsCanary_basic(t *testing.T) { Config: testAccCanaryConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckCanaryExists(ctx, resourceName, &conf1), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "synthetics", regexache.MustCompile(`canary:.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "synthetics", regexache.MustCompile(`canary:.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttrPair(resourceName, "runtime_version", runtimeVersionDataSourceName, "version_name"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), @@ -49,8 +49,8 @@ func TestAccSyntheticsCanary_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "vpc_config.#", "0"), resource.TestCheckResourceAttr(resourceName, "schedule.0.duration_in_seconds", "0"), resource.TestCheckResourceAttr(resourceName, "schedule.0.expression", "rate(0 hour)"), - acctest.MatchResourceAttrRegionalARN(resourceName, "engine_arn", "lambda", regexache.MustCompile(fmt.Sprintf(`function:cwsyn-%s.+`, rName))), - acctest.MatchResourceAttrRegionalARN(resourceName, "source_location_arn", "lambda", regexache.MustCompile(fmt.Sprintf(`layer:cwsyn-%s.+`, rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, "engine_arn", "lambda", regexache.MustCompile(fmt.Sprintf(`function:cwsyn-%s.+`, rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, "source_location_arn", "lambda", regexache.MustCompile(fmt.Sprintf(`layer:cwsyn-%s.+`, rName))), resource.TestCheckResourceAttrPair(resourceName, names.AttrExecutionRoleARN, "aws_iam_role.test", names.AttrARN), resource.TestCheckResourceAttr(resourceName, "artifact_s3_location", fmt.Sprintf("%s/", rName)), resource.TestCheckResourceAttr(resourceName, "timeline.#", "1"), @@ -69,7 +69,7 @@ func TestAccSyntheticsCanary_basic(t *testing.T) { Config: testAccCanaryConfig_zipUpdated(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckCanaryExists(ctx, resourceName, &conf2), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "synthetics", regexache.MustCompile(`canary:.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "synthetics", regexache.MustCompile(`canary:.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttrPair(resourceName, "runtime_version", runtimeVersionDataSourceName, "version_name"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), @@ -81,8 +81,8 @@ func TestAccSyntheticsCanary_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "vpc_config.#", "0"), resource.TestCheckResourceAttr(resourceName, "schedule.0.duration_in_seconds", "0"), resource.TestCheckResourceAttr(resourceName, "schedule.0.expression", "rate(0 hour)"), - acctest.MatchResourceAttrRegionalARN(resourceName, "engine_arn", "lambda", regexache.MustCompile(fmt.Sprintf(`function:cwsyn-%s.+`, rName))), - acctest.MatchResourceAttrRegionalARN(resourceName, "source_location_arn", "lambda", regexache.MustCompile(fmt.Sprintf(`layer:cwsyn-%s.+`, rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, "engine_arn", "lambda", regexache.MustCompile(fmt.Sprintf(`function:cwsyn-%s.+`, rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, "source_location_arn", "lambda", regexache.MustCompile(fmt.Sprintf(`layer:cwsyn-%s.+`, rName))), resource.TestCheckResourceAttrPair(resourceName, names.AttrExecutionRoleARN, "aws_iam_role.test", names.AttrARN), resource.TestCheckResourceAttr(resourceName, "artifact_s3_location", fmt.Sprintf("%s/test/", rName)), resource.TestCheckResourceAttr(resourceName, "timeline.#", "1"), @@ -326,7 +326,7 @@ func TestAccSyntheticsCanary_s3(t *testing.T) { Config: testAccCanaryConfig_basicS3Code(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckCanaryExists(ctx, resourceName, &conf), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "synthetics", regexache.MustCompile(`canary:.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "synthetics", regexache.MustCompile(`canary:.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttrPair(resourceName, "runtime_version", runtimeVersionDataSourceName, "version_name"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), @@ -339,8 +339,8 @@ func TestAccSyntheticsCanary_s3(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "vpc_config.#", "0"), resource.TestCheckResourceAttr(resourceName, "schedule.0.duration_in_seconds", "0"), resource.TestCheckResourceAttr(resourceName, "schedule.0.expression", "rate(0 hour)"), - acctest.MatchResourceAttrRegionalARN(resourceName, "engine_arn", "lambda", regexache.MustCompile(fmt.Sprintf(`function:cwsyn-%s.+`, rName))), - acctest.MatchResourceAttrRegionalARN(resourceName, "source_location_arn", "lambda", regexache.MustCompile(fmt.Sprintf(`layer:cwsyn-%s.+`, rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, "engine_arn", "lambda", regexache.MustCompile(fmt.Sprintf(`function:cwsyn-%s.+`, rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, "source_location_arn", "lambda", regexache.MustCompile(fmt.Sprintf(`layer:cwsyn-%s.+`, rName))), resource.TestCheckResourceAttrPair(resourceName, names.AttrExecutionRoleARN, "aws_iam_role.test", names.AttrARN), resource.TestCheckResourceAttr(resourceName, "artifact_s3_location", fmt.Sprintf("%s/", rName)), ), diff --git a/internal/service/synthetics/group_association_test.go b/internal/service/synthetics/group_association_test.go index f761b9fa371f..25b1549278f1 100644 --- a/internal/service/synthetics/group_association_test.go +++ b/internal/service/synthetics/group_association_test.go @@ -36,8 +36,8 @@ func TestAccSyntheticsGroupAssociation_basic(t *testing.T) { Config: testAccGroupAssociationConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckGroupAssociationExists(ctx, resourceName, &groupSummary), - acctest.MatchResourceAttrRegionalARN(resourceName, "canary_arn", "synthetics", regexache.MustCompile(`canary:.+`)), - acctest.MatchResourceAttrRegionalARN(resourceName, "group_arn", "synthetics", regexache.MustCompile(`group:.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, "canary_arn", "synthetics", regexache.MustCompile(`canary:.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, "group_arn", "synthetics", regexache.MustCompile(`group:.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrGroupName, rName), resource.TestCheckResourceAttrSet(resourceName, "group_id"), ), diff --git a/internal/service/synthetics/group_test.go b/internal/service/synthetics/group_test.go index acd6affa55a2..b8c0d7cccc59 100644 --- a/internal/service/synthetics/group_test.go +++ b/internal/service/synthetics/group_test.go @@ -36,7 +36,7 @@ func TestAccSyntheticsGroup_basic(t *testing.T) { Config: testAccGroupConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckGroupExists(ctx, resourceName, &group), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "synthetics", regexache.MustCompile(`group:.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "synthetics", regexache.MustCompile(`group:.+`)), resource.TestCheckResourceAttrSet(resourceName, "group_id"), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), ), diff --git a/internal/service/synthetics/runtime_versions_data_source.go b/internal/service/synthetics/runtime_versions_data_source.go index 3de433a5c74b..02ce4afd5aa0 100644 --- a/internal/service/synthetics/runtime_versions_data_source.go +++ b/internal/service/synthetics/runtime_versions_data_source.go @@ -83,7 +83,7 @@ func (d *dataSourceRuntimeVersions) Read(ctx context.Context, req datasource.Rea return } - data.ID = flex.StringValueToFramework(ctx, d.Meta().Region) + data.ID = flex.StringValueToFramework(ctx, d.Meta().Region(ctx)) resp.Diagnostics.Append(flex.Flatten(ctx, out, &data.RuntimeVersions)...) resp.Diagnostics.Append(resp.State.Set(ctx, &data)...) } diff --git a/internal/service/synthetics/service_endpoints_gen_test.go b/internal/service/synthetics/service_endpoints_gen_test.go index 197e0e958c14..ca753d947fb5 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 4c737598da7f..c5aea02bcbbd 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/db_instance_test.go b/internal/service/timestreaminfluxdb/db_instance_test.go index 03c3a793d9dd..4ff170fafadf 100644 --- a/internal/service/timestreaminfluxdb/db_instance_test.go +++ b/internal/service/timestreaminfluxdb/db_instance_test.go @@ -47,7 +47,7 @@ func TestAccTimestreamInfluxDBDBInstance_basic(t *testing.T) { Config: testAccDBInstanceConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckDBInstanceExists(ctx, resourceName, &dbInstance), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "timestream-influxdb", regexache.MustCompile(`db-instance/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "timestream-influxdb", regexache.MustCompile(`db-instance/.+$`)), resource.TestCheckResourceAttrSet(resourceName, names.AttrAvailabilityZone), resource.TestCheckResourceAttr(resourceName, "db_storage_type", string(awstypes.DbStorageTypeInfluxIoIncludedT1)), resource.TestCheckResourceAttr(resourceName, "deployment_type", string(awstypes.DeploymentTypeSingleAz)), diff --git a/internal/service/timestreaminfluxdb/service_endpoints_gen_test.go b/internal/service/timestreaminfluxdb/service_endpoints_gen_test.go index e09334e09a89..343dd9f8e2fd 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/timestreamwrite/database_data_source_test.go b/internal/service/timestreamwrite/database_data_source_test.go index b9de6657c049..7d1cee74bcee 100644 --- a/internal/service/timestreamwrite/database_data_source_test.go +++ b/internal/service/timestreamwrite/database_data_source_test.go @@ -90,7 +90,7 @@ func TestAccTimestreamWriteDatabaseDataSource_updateKMSKey(t *testing.T) { Config: testAccDatabaseDataSourceConfig_basic(rDatabaseName), Check: resource.ComposeTestCheckFunc( testAccCheckDatabaseExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(dataSourceName, names.AttrKMSKeyID, "kms", regexache.MustCompile(`key/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, dataSourceName, names.AttrKMSKeyID, "kms", regexache.MustCompile(`key/.+`)), ), }, { @@ -104,7 +104,7 @@ func TestAccTimestreamWriteDatabaseDataSource_updateKMSKey(t *testing.T) { Config: testAccDatabaseDataSourceConfig_basic(rDatabaseName), Check: resource.ComposeTestCheckFunc( testAccCheckDatabaseExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(dataSourceName, names.AttrKMSKeyID, "kms", regexache.MustCompile(`key/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, dataSourceName, names.AttrKMSKeyID, "kms", regexache.MustCompile(`key/.+`)), ), }, }, diff --git a/internal/service/timestreamwrite/database_test.go b/internal/service/timestreamwrite/database_test.go index d0a05ccc18ba..b5648d6dcf41 100644 --- a/internal/service/timestreamwrite/database_test.go +++ b/internal/service/timestreamwrite/database_test.go @@ -35,9 +35,9 @@ func TestAccTimestreamWriteDatabase_basic(t *testing.T) { Config: testAccDatabaseConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckDatabaseExists(ctx, resourceName), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "timestream", fmt.Sprintf("database/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "timestream", fmt.Sprintf("database/%s", rName)), resource.TestCheckResourceAttr(resourceName, names.AttrDatabaseName, rName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrKMSKeyID, "kms", regexache.MustCompile(`key/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrKMSKeyID, "kms", regexache.MustCompile(`key/.+`)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), ), }, @@ -118,7 +118,7 @@ func TestAccTimestreamWriteDatabase_updateKMSKey(t *testing.T) { Config: testAccDatabaseConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckDatabaseExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrKMSKeyID, "kms", regexache.MustCompile(`key/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrKMSKeyID, "kms", regexache.MustCompile(`key/.+`)), ), }, { @@ -137,7 +137,7 @@ func TestAccTimestreamWriteDatabase_updateKMSKey(t *testing.T) { Config: testAccDatabaseConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckDatabaseExists(ctx, resourceName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrKMSKeyID, "kms", regexache.MustCompile(`key/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrKMSKeyID, "kms", regexache.MustCompile(`key/.+`)), ), }, }, diff --git a/internal/service/timestreamwrite/table_test.go b/internal/service/timestreamwrite/table_test.go index 76098e5202ff..0117bb79784c 100644 --- a/internal/service/timestreamwrite/table_test.go +++ b/internal/service/timestreamwrite/table_test.go @@ -38,7 +38,7 @@ func TestAccTimestreamWriteTable_basic(t *testing.T) { Config: testAccTableConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckTableExists(ctx, resourceName, &table), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "timestream", fmt.Sprintf("database/%[1]s/table/%[1]s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "timestream", fmt.Sprintf("database/%[1]s/table/%[1]s", rName)), resource.TestCheckResourceAttrPair(resourceName, names.AttrDatabaseName, dbResourceName, names.AttrDatabaseName), resource.TestCheckResourceAttr(resourceName, "magnetic_store_write_properties.#", "1"), resource.TestCheckResourceAttr(resourceName, "magnetic_store_write_properties.0.enable_magnetic_store_writes", acctest.CtFalse), diff --git a/internal/service/transcribe/language_model.go b/internal/service/transcribe/language_model.go index 71231766130e..eb17d36c8861 100644 --- a/internal/service/transcribe/language_model.go +++ b/internal/service/transcribe/language_model.go @@ -166,10 +166,10 @@ func resourceLanguageModelRead(ctx context.Context, d *schema.ResourceData, meta } arn := arn.ARN{ - AccountID: meta.(*conns.AWSClient).AccountID, + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "transcribe", - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), Resource: fmt.Sprintf("language-model/%s", d.Id()), }.String() diff --git a/internal/service/transcribe/medical_vocabulary.go b/internal/service/transcribe/medical_vocabulary.go index 99e575dfc0b3..4052d0ea8119 100644 --- a/internal/service/transcribe/medical_vocabulary.go +++ b/internal/service/transcribe/medical_vocabulary.go @@ -126,10 +126,10 @@ func resourceMedicalVocabularyRead(ctx context.Context, d *schema.ResourceData, } arn := arn.ARN{ - AccountID: meta.(*conns.AWSClient).AccountID, + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "transcribe", - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), Resource: fmt.Sprintf("medical-vocabulary/%s", d.Id()), }.String() diff --git a/internal/service/transcribe/service_endpoints_gen_test.go b/internal/service/transcribe/service_endpoints_gen_test.go index 20ce4111b727..7264758710ec 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/transcribe/vocabulary.go b/internal/service/transcribe/vocabulary.go index 2d75aa354145..ef0086856f87 100644 --- a/internal/service/transcribe/vocabulary.go +++ b/internal/service/transcribe/vocabulary.go @@ -145,10 +145,10 @@ func resourceVocabularyRead(ctx context.Context, d *schema.ResourceData, meta in } arn := arn.ARN{ - AccountID: meta.(*conns.AWSClient).AccountID, + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "transcribe", - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), Resource: fmt.Sprintf("vocabulary/%s", d.Id()), }.String() diff --git a/internal/service/transcribe/vocabulary_filter.go b/internal/service/transcribe/vocabulary_filter.go index f37045ca829c..4188608f21b6 100644 --- a/internal/service/transcribe/vocabulary_filter.go +++ b/internal/service/transcribe/vocabulary_filter.go @@ -143,10 +143,10 @@ func resourceVocabularyFilterRead(ctx context.Context, d *schema.ResourceData, m } arn := arn.ARN{ - AccountID: meta.(*conns.AWSClient).AccountID, + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "transcribe", - Region: meta.(*conns.AWSClient).Region, + Region: meta.(*conns.AWSClient).Region(ctx), Resource: fmt.Sprintf("vocabulary-filter/%s", d.Id()), }.String() diff --git a/internal/service/transfer/server_test.go b/internal/service/transfer/server_test.go index e0d9089a9138..cbf73b4d122e 100644 --- a/internal/service/transfer/server_test.go +++ b/internal/service/transfer/server_test.go @@ -51,7 +51,7 @@ func testAccServer_basic(t *testing.T) { Config: testAccServerConfig_basic, Check: resource.ComposeAggregateTestCheckFunc( testAccCheckServerExists(ctx, resourceName, &conf), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "transfer", regexache.MustCompile(`server/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "transfer", regexache.MustCompile(`server/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrCertificate, ""), acctest.MatchResourceAttrRegionalHostname(resourceName, names.AttrEndpoint, "server.transfer", regexache.MustCompile(`s-[0-9a-z]+`)), resource.TestCheckResourceAttr(resourceName, "endpoint_details.#", "0"), @@ -91,7 +91,7 @@ func testAccServer_basic(t *testing.T) { Config: testAccServerConfig_updated(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckServerExists(ctx, resourceName, &conf), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "transfer", regexache.MustCompile(`server/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "transfer", regexache.MustCompile(`server/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrCertificate, ""), resource.TestCheckResourceAttr(resourceName, names.AttrDomain, "S3"), acctest.MatchResourceAttrRegionalHostname(resourceName, names.AttrEndpoint, "server.transfer", regexache.MustCompile(`s-[0-9a-z]+`)), diff --git a/internal/service/transfer/service_endpoints_gen_test.go b/internal/service/transfer/service_endpoints_gen_test.go index 703702f3ed49..b06fbada8786 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/transfer/user_test.go b/internal/service/transfer/user_test.go index ad413d547798..a83549244717 100644 --- a/internal/service/transfer/user_test.go +++ b/internal/service/transfer/user_test.go @@ -36,7 +36,7 @@ func testAccUser_basic(t *testing.T) { Config: testAccUserConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckUserExists(ctx, resourceName, &conf), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "transfer", regexache.MustCompile(`user/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "transfer", regexache.MustCompile(`user/.+`)), resource.TestCheckResourceAttr(resourceName, "posix_profile.#", "0"), resource.TestCheckResourceAttrPair(resourceName, names.AttrRole, "aws_iam_role.test", names.AttrARN), resource.TestCheckResourceAttrPair(resourceName, "server_id", "aws_transfer_server.test", names.AttrID), diff --git a/internal/service/transfer/workflow_test.go b/internal/service/transfer/workflow_test.go index e77a6a91672b..d43b11788882 100644 --- a/internal/service/transfer/workflow_test.go +++ b/internal/service/transfer/workflow_test.go @@ -36,7 +36,7 @@ func TestAccTransferWorkflow_basic(t *testing.T) { Config: testAccWorkflowConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckWorkflowExists(ctx, resourceName, &conf), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "transfer", regexache.MustCompile(`workflow/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "transfer", regexache.MustCompile(`workflow/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), resource.TestCheckResourceAttr(resourceName, "on_exception_steps.#", "0"), resource.TestCheckResourceAttr(resourceName, "steps.#", "1"), @@ -76,7 +76,7 @@ func TestAccTransferWorkflow_onExceptionSteps(t *testing.T) { Config: testAccWorkflowConfig_onExceptionSteps(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckWorkflowExists(ctx, resourceName, &conf), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "transfer", regexache.MustCompile(`workflow/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "transfer", regexache.MustCompile(`workflow/.+`)), resource.TestCheckResourceAttr(resourceName, "on_exception_steps.#", "1"), resource.TestCheckResourceAttr(resourceName, "on_exception_steps.0.copy_step_details.#", "0"), resource.TestCheckResourceAttr(resourceName, "on_exception_steps.0.custom_step_details.#", "0"), @@ -221,7 +221,7 @@ func TestAccTransferWorkflow_allSteps(t *testing.T) { Config: testAccWorkflowConfig_allSteps(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckWorkflowExists(ctx, resourceName, &conf), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "transfer", regexache.MustCompile(`workflow/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "transfer", regexache.MustCompile(`workflow/.+`)), resource.TestCheckResourceAttr(resourceName, "on_exception_steps.#", "0"), resource.TestCheckResourceAttr(resourceName, "steps.#", "5"), resource.TestCheckResourceAttr(resourceName, "steps.0.copy_step_details.#", "1"), diff --git a/internal/service/verifiedpermissions/policy_store_test.go b/internal/service/verifiedpermissions/policy_store_test.go index 239125e3f6b8..7baf6a809172 100644 --- a/internal/service/verifiedpermissions/policy_store_test.go +++ b/internal/service/verifiedpermissions/policy_store_test.go @@ -46,7 +46,7 @@ func TestAccVerifiedPermissionsPolicyStore_basic(t *testing.T) { testAccCheckPolicyStoreExists(ctx, resourceName, &policystore), resource.TestCheckResourceAttr(resourceName, "validation_settings.0.mode", "OFF"), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "Terraform acceptance test"), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "verifiedpermissions", regexache.MustCompile(`policy-store/.+$`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "verifiedpermissions", regexache.MustCompile(`policy-store/.+$`)), ), }, { diff --git a/internal/service/verifiedpermissions/service_endpoints_gen_test.go b/internal/service/verifiedpermissions/service_endpoints_gen_test.go index fb87621a74e5..e7d767882d23 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/access_log_subscription_test.go b/internal/service/vpclattice/access_log_subscription_test.go index c9aa8e9a1654..436609b972d5 100644 --- a/internal/service/vpclattice/access_log_subscription_test.go +++ b/internal/service/vpclattice/access_log_subscription_test.go @@ -91,7 +91,7 @@ func TestAccVPCLatticeAccessLogSubscription_basic(t *testing.T) { Config: testAccAccessLogSubscriptionConfig_basicS3(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckAccessLogSubscriptionExists(ctx, resourceName, &accesslogsubscription), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, names.VPCLatticeEndpointID, regexache.MustCompile(`accesslogsubscription/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, names.VPCLatticeEndpointID, regexache.MustCompile(`accesslogsubscription/.+$`)), resource.TestCheckResourceAttrPair(resourceName, names.AttrDestinationARN, s3BucketResourceName, names.AttrARN), resource.TestCheckResourceAttrPair(resourceName, names.AttrResourceARN, serviceNetworkResourceName, names.AttrARN), resource.TestCheckResourceAttrPair(resourceName, "resource_identifier", serviceNetworkResourceName, names.AttrID), diff --git a/internal/service/vpclattice/listener_data_source_test.go b/internal/service/vpclattice/listener_data_source_test.go index 0c705a990486..8ae7c0f4b968 100644 --- a/internal/service/vpclattice/listener_data_source_test.go +++ b/internal/service/vpclattice/listener_data_source_test.go @@ -38,7 +38,7 @@ func TestAccVPCLatticeListenerDataSource_basic(t *testing.T) { resource.TestCheckResourceAttr(dataSourceName, names.AttrName, rName), resource.TestCheckResourceAttr(dataSourceName, names.AttrProtocol, "HTTP"), resource.TestCheckResourceAttr(dataSourceName, "default_action.0.fixed_response.0.status_code", "404"), - acctest.MatchResourceAttrRegionalARN(dataSourceName, names.AttrARN, "vpc-lattice", regexache.MustCompile(`service/svc-.*/listener/listener-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, dataSourceName, names.AttrARN, "vpc-lattice", regexache.MustCompile(`service/svc-.*/listener/listener-.+`)), ), }, }, @@ -69,7 +69,7 @@ func TestAccVPCLatticeListenerDataSource_tags(t *testing.T) { Config: testAccListenerDataSourceConfig_one_tag(rName, tag_name, tag_value), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttr(dataSourceName, "tags.tag0", "value0"), - acctest.MatchResourceAttrRegionalARN(dataSourceName, names.AttrARN, "vpc-lattice", regexache.MustCompile(`service/svc-.*/listener/listener-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, dataSourceName, names.AttrARN, "vpc-lattice", regexache.MustCompile(`service/svc-.*/listener/listener-.+`)), ), }, }, @@ -105,7 +105,7 @@ func TestAccVPCLatticeListenerDataSource_forwardMultiTargetGroupHTTP(t *testing. resource.TestCheckResourceAttr(dataSourceName, "default_action.0.forward.0.target_groups.0.weight", "80"), resource.TestCheckResourceAttrPair(dataSourceName, "default_action.0.forward.0.target_groups.1.target_group_identifier", targetGroup1ResourceName, names.AttrID), resource.TestCheckResourceAttr(dataSourceName, "default_action.0.forward.0.target_groups.1.weight", "20"), - acctest.MatchResourceAttrRegionalARN(dataSourceName, names.AttrARN, "vpc-lattice", regexache.MustCompile(`service/svc-.*/listener/listener-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, dataSourceName, names.AttrARN, "vpc-lattice", regexache.MustCompile(`service/svc-.*/listener/listener-.+`)), ), }, }, diff --git a/internal/service/vpclattice/listener_rule_test.go b/internal/service/vpclattice/listener_rule_test.go index aa883590145c..66bbeb37e24c 100644 --- a/internal/service/vpclattice/listener_rule_test.go +++ b/internal/service/vpclattice/listener_rule_test.go @@ -44,7 +44,7 @@ func TestAccVPCLatticeListenerRule_basic(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckListenerRuleExists(ctx, resourceName, &listenerRule), resource.TestCheckResourceAttr(resourceName, names.AttrPriority, "20"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "vpc-lattice", regexache.MustCompile(`service/svc-.*/listener/listener-.*/rule/rule.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "vpc-lattice", regexache.MustCompile(`service/svc-.*/listener/listener-.*/rule/rule.+`)), ), }, { diff --git a/internal/service/vpclattice/listener_test.go b/internal/service/vpclattice/listener_test.go index 2a1213ba6874..f1af1aa1b9d2 100644 --- a/internal/service/vpclattice/listener_test.go +++ b/internal/service/vpclattice/listener_test.go @@ -50,7 +50,7 @@ func TestAccVPCLatticeListener_defaultActionUpdate(t *testing.T) { resource.TestCheckResourceAttr(resourceName, names.AttrProtocol, "HTTPS"), resource.TestCheckResourceAttrPair(resourceName, "service_identifier", serviceName, names.AttrID), resource.TestCheckResourceAttr(resourceName, "default_action.0.fixed_response.0.status_code", "404"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "vpc-lattice", regexache.MustCompile(`service/svc-.*/listener/listener-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "vpc-lattice", regexache.MustCompile(`service/svc-.*/listener/listener-.+`)), ), }, { @@ -63,7 +63,7 @@ func TestAccVPCLatticeListener_defaultActionUpdate(t *testing.T) { resource.TestCheckResourceAttrPair(resourceName, "service_identifier", serviceName, names.AttrID), resource.TestCheckResourceAttrPair(resourceName, "default_action.0.forward.0.target_groups.0.target_group_identifier", targetGroupResourceName, names.AttrID), resource.TestCheckResourceAttr(resourceName, "default_action.0.forward.0.target_groups.0.weight", "100"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "vpc-lattice", regexache.MustCompile(`service/svc-.*/listener/listener-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "vpc-lattice", regexache.MustCompile(`service/svc-.*/listener/listener-.+`)), ), }, { @@ -102,7 +102,7 @@ func TestAccVPCLatticeListener_fixedResponseHTTP(t *testing.T) { resource.TestCheckResourceAttr(resourceName, names.AttrProtocol, "HTTP"), resource.TestCheckResourceAttrPair(resourceName, "service_identifier", serviceName, names.AttrID), resource.TestCheckResourceAttr(resourceName, "default_action.0.fixed_response.0.status_code", "404"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "vpc-lattice", regexache.MustCompile(`service/svc-.*/listener/listener-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "vpc-lattice", regexache.MustCompile(`service/svc-.*/listener/listener-.+`)), ), }, { @@ -141,7 +141,7 @@ func TestAccVPCLatticeListener_fixedResponseHTTPS(t *testing.T) { resource.TestCheckResourceAttr(resourceName, names.AttrProtocol, "HTTPS"), resource.TestCheckResourceAttrPair(resourceName, "service_identifier", serviceName, names.AttrID), resource.TestCheckResourceAttr(resourceName, "default_action.0.fixed_response.0.status_code", "404"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "vpc-lattice", regexache.MustCompile(`service/svc-.*/listener/listener-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "vpc-lattice", regexache.MustCompile(`service/svc-.*/listener/listener-.+`)), ), }, { @@ -182,7 +182,7 @@ func TestAccVPCLatticeListener_forwardTLSPassthrough(t *testing.T) { resource.TestCheckResourceAttrPair(resourceName, "service_identifier", serviceName, names.AttrID), resource.TestCheckResourceAttrPair(resourceName, "default_action.0.forward.0.target_groups.0.target_group_identifier", targetGroupResourceName, names.AttrID), resource.TestCheckResourceAttr(resourceName, "default_action.0.forward.0.target_groups.0.weight", "80"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "vpc-lattice", regexache.MustCompile(`service\/svc-.*\/listener\/listener-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "vpc-lattice", regexache.MustCompile(`service\/svc-.*\/listener\/listener-.+`)), ), }, { @@ -223,7 +223,7 @@ func TestAccVPCLatticeListener_forwardHTTPTargetGroup(t *testing.T) { resource.TestCheckResourceAttrPair(resourceName, "service_identifier", serviceName, names.AttrID), resource.TestCheckResourceAttrPair(resourceName, "default_action.0.forward.0.target_groups.0.target_group_identifier", targetGroupResourceName, names.AttrID), resource.TestCheckResourceAttr(resourceName, "default_action.0.forward.0.target_groups.0.weight", "100"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "vpc-lattice", regexache.MustCompile(`service\/svc-.*\/listener\/listener-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "vpc-lattice", regexache.MustCompile(`service\/svc-.*\/listener\/listener-.+`)), ), }, { @@ -264,7 +264,7 @@ func TestAccVPCLatticeListener_forwardHTTPTargetGroupCustomPort(t *testing.T) { resource.TestCheckResourceAttrPair(resourceName, "service_identifier", serviceName, names.AttrID), resource.TestCheckResourceAttrPair(resourceName, "default_action.0.forward.0.target_groups.0.target_group_identifier", targetGroupResourceName, names.AttrID), resource.TestCheckResourceAttr(resourceName, "default_action.0.forward.0.target_groups.0.weight", "100"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "vpc-lattice", regexache.MustCompile(`service\/svc-.*\/listener\/listener-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "vpc-lattice", regexache.MustCompile(`service\/svc-.*\/listener\/listener-.+`)), ), }, { @@ -306,7 +306,7 @@ func TestAccVPCLatticeListener_forwardHTTPSTargetGroupARN(t *testing.T) { resource.TestCheckResourceAttrPair(resourceName, "service_identifier", serviceName, names.AttrID), resource.TestCheckResourceAttrPair(resourceName, "default_action.0.forward.0.target_groups.0.target_group_identifier", targetGroupResourceName, names.AttrID), resource.TestCheckResourceAttr(resourceName, "default_action.0.forward.0.target_groups.0.weight", "100"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "vpc-lattice", regexache.MustCompile(`service\/svc-.*\/listener\/listener-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "vpc-lattice", regexache.MustCompile(`service\/svc-.*\/listener\/listener-.+`)), ), }, { @@ -348,7 +348,7 @@ func TestAccVPCLatticeListener_forwardHTTPSTargetGroupCustomPort(t *testing.T) { resource.TestCheckResourceAttrPair(resourceName, "service_identifier", serviceName, names.AttrID), resource.TestCheckResourceAttrPair(resourceName, "default_action.0.forward.0.target_groups.0.target_group_identifier", targetGroupResourceName, names.AttrID), resource.TestCheckResourceAttr(resourceName, "default_action.0.forward.0.target_groups.0.weight", "100"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "vpc-lattice", regexache.MustCompile(`service\/svc-.*\/listener\/listener-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "vpc-lattice", regexache.MustCompile(`service\/svc-.*\/listener\/listener-.+`)), ), }, { @@ -393,7 +393,7 @@ func TestAccVPCLatticeListener_forwardHTTPMultipleTargetGroups(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "default_action.0.forward.0.target_groups.0.weight", "80"), resource.TestCheckResourceAttrPair(resourceName, "default_action.0.forward.0.target_groups.1.target_group_identifier", targetGroup1ResourceName, names.AttrID), resource.TestCheckResourceAttr(resourceName, "default_action.0.forward.0.target_groups.1.weight", "20"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "vpc-lattice", regexache.MustCompile(`service\/svc-.*\/listener\/listener-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "vpc-lattice", regexache.MustCompile(`service\/svc-.*\/listener\/listener-.+`)), ), }, { @@ -460,7 +460,7 @@ func TestAccVPCLatticeListener_tags(t *testing.T) { testAccCheckListenerExists(ctx, resourceName, &listener), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "1"), resource.TestCheckResourceAttr(resourceName, "tags.key0", "value0"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "vpc-lattice", regexache.MustCompile(`service\/svc-.*\/listener\/listener-.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "vpc-lattice", regexache.MustCompile(`service\/svc-.*\/listener\/listener-.+`)), ), }, { diff --git a/internal/service/vpclattice/service_data_source.go b/internal/service/vpclattice/service_data_source.go index 818e4d7a2db9..640925a5d831 100644 --- a/internal/service/vpclattice/service_data_source.go +++ b/internal/service/vpclattice/service_data_source.go @@ -136,7 +136,7 @@ func dataSourceServiceRead(ctx context.Context, d *schema.ResourceData, meta int return sdkdiag.AppendFromErr(diags, err) } - if parsedARN.AccountID == meta.(*conns.AWSClient).AccountID { + if parsedARN.AccountID == meta.(*conns.AWSClient).AccountID(ctx) { tags, err := listTags(ctx, conn, serviceARN) if err != nil { diff --git a/internal/service/vpclattice/service_endpoints_gen_test.go b/internal/service/vpclattice/service_endpoints_gen_test.go index d3eca3831934..5ddc26051263 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/vpclattice/service_network_data_source.go b/internal/service/vpclattice/service_network_data_source.go index e225bbee8039..38c8dbf00a00 100644 --- a/internal/service/vpclattice/service_network_data_source.go +++ b/internal/service/vpclattice/service_network_data_source.go @@ -90,7 +90,7 @@ func dataSourceServiceNetworkRead(ctx context.Context, d *schema.ResourceData, m return sdkdiag.AppendFromErr(diags, err) } - if parsedARN.AccountID == meta.(*conns.AWSClient).AccountID { + if parsedARN.AccountID == meta.(*conns.AWSClient).AccountID(ctx) { tags, err := listTags(ctx, conn, serviceNetworkARN) if err != nil { diff --git a/internal/service/vpclattice/service_network_service_association_test.go b/internal/service/vpclattice/service_network_service_association_test.go index 467f2cd70c8d..76d82c286360 100644 --- a/internal/service/vpclattice/service_network_service_association_test.go +++ b/internal/service/vpclattice/service_network_service_association_test.go @@ -43,7 +43,7 @@ func TestAccVPCLatticeServiceNetworkServiceAssociation_basic(t *testing.T) { Config: testAccServiceNetworkServiceAssociationConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckServiceNetworkServiceAssociationExists(ctx, resourceName, &servicenetworkasc), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "vpc-lattice", regexache.MustCompile("servicenetworkserviceassociation/.+$")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "vpc-lattice", regexache.MustCompile("servicenetworkserviceassociation/.+$")), ), }, { @@ -76,7 +76,7 @@ func TestAccVPCLatticeServiceNetworkServiceAssociation_arn(t *testing.T) { Config: testAccServiceNetworkServiceAssociationConfig_arn(rName), Check: resource.ComposeTestCheckFunc( testAccCheckServiceNetworkServiceAssociationExists(ctx, resourceName, &servicenetworkasc), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "vpc-lattice", regexache.MustCompile("servicenetworkserviceassociation/.+$")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "vpc-lattice", regexache.MustCompile("servicenetworkserviceassociation/.+$")), ), }, { diff --git a/internal/service/vpclattice/service_network_test.go b/internal/service/vpclattice/service_network_test.go index 511c3abc1d74..a666a36223fb 100644 --- a/internal/service/vpclattice/service_network_test.go +++ b/internal/service/vpclattice/service_network_test.go @@ -111,7 +111,7 @@ func TestAccVPCLatticeServiceNetwork_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckServiceNetworkExists(ctx, resourceName, &servicenetwork), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "vpc-lattice", regexache.MustCompile("servicenetwork/.+$")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "vpc-lattice", regexache.MustCompile("servicenetwork/.+$")), ), }, { @@ -173,7 +173,7 @@ func TestAccVPCLatticeServiceNetwork_full(t *testing.T) { testAccCheckServiceNetworkExists(ctx, resourceName, &servicenetwork), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "auth_type", "AWS_IAM"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "vpc-lattice", regexache.MustCompile("servicenetwork/.+$")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "vpc-lattice", regexache.MustCompile("servicenetwork/.+$")), ), }, { diff --git a/internal/service/vpclattice/service_network_vpc_association_test.go b/internal/service/vpclattice/service_network_vpc_association_test.go index 1bdf9ad6eced..5796ee4ccc9b 100644 --- a/internal/service/vpclattice/service_network_vpc_association_test.go +++ b/internal/service/vpclattice/service_network_vpc_association_test.go @@ -43,7 +43,7 @@ func TestAccVPCLatticeServiceNetworkVPCAssociation_basic(t *testing.T) { Config: testAccServiceNetworkVPCAssociationConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckServiceNetworkVPCAssociationExists(ctx, resourceName, &servicenetworkvpcasc), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "vpc-lattice", regexache.MustCompile("servicenetworkvpcassociation/.+$")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "vpc-lattice", regexache.MustCompile("servicenetworkvpcassociation/.+$")), ), }, { @@ -76,7 +76,7 @@ func TestAccVPCLatticeServiceNetworkVPCAssociation_arn(t *testing.T) { Config: testAccServiceNetworkVPCAssociationConfig_arn(rName), Check: resource.ComposeTestCheckFunc( testAccCheckServiceNetworkVPCAssociationExists(ctx, resourceName, &servicenetworkvpcasc), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "vpc-lattice", regexache.MustCompile("servicenetworkvpcassociation/.+$")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "vpc-lattice", regexache.MustCompile("servicenetworkvpcassociation/.+$")), resource.TestCheckResourceAttrSet(resourceName, "service_network_identifier"), ), }, @@ -139,7 +139,7 @@ func TestAccVPCLatticeServiceNetworkVPCAssociation_full(t *testing.T) { Config: testAccServiceNetworkVPCAssociationConfig_full(rName), Check: resource.ComposeTestCheckFunc( testAccCheckServiceNetworkVPCAssociationExists(ctx, resourceName, &servicenetworkvpcasc), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "vpc-lattice", regexache.MustCompile("servicenetworkvpcassociation/.+$")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "vpc-lattice", regexache.MustCompile("servicenetworkvpcassociation/.+$")), resource.TestCheckResourceAttrSet(resourceName, "service_network_identifier"), resource.TestCheckResourceAttrSet(resourceName, "vpc_identifier"), resource.TestCheckResourceAttr(resourceName, "security_group_ids.#", "1"), diff --git a/internal/service/vpclattice/service_test.go b/internal/service/vpclattice/service_test.go index 8efc2070aa11..adde558b212a 100644 --- a/internal/service/vpclattice/service_test.go +++ b/internal/service/vpclattice/service_test.go @@ -44,7 +44,7 @@ func TestAccVPCLatticeService_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckServiceExists(ctx, resourceName, &service), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "vpc-lattice", regexache.MustCompile("service/.+$")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "vpc-lattice", regexache.MustCompile("service/.+$")), ), }, { @@ -109,7 +109,7 @@ func TestAccVPCLatticeService_full(t *testing.T) { resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "auth_type", "AWS_IAM"), resource.TestCheckResourceAttr(resourceName, "custom_domain_name", "example.com"), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "vpc-lattice", regexache.MustCompile("service/.+$")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "vpc-lattice", regexache.MustCompile("service/.+$")), ), }, { diff --git a/internal/service/vpclattice/target_group_test.go b/internal/service/vpclattice/target_group_test.go index 756a886e49c9..ea5bef0d4ff2 100644 --- a/internal/service/vpclattice/target_group_test.go +++ b/internal/service/vpclattice/target_group_test.go @@ -43,7 +43,7 @@ func TestAccVPCLatticeTargetGroup_basic(t *testing.T) { Config: testAccTargetGroupConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckTargetGroupExists(ctx, resourceName, &targetGroup), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "vpc-lattice", regexache.MustCompile("targetgroup/.+$")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "vpc-lattice", regexache.MustCompile("targetgroup/.+$")), resource.TestCheckResourceAttr(resourceName, "config.#", "1"), resource.TestCheckResourceAttr(resourceName, "config.0.health_check.#", "1"), resource.TestCheckResourceAttr(resourceName, "config.0.health_check.0.enabled", acctest.CtTrue), @@ -171,7 +171,7 @@ func TestAccVPCLatticeTargetGroup_lambda(t *testing.T) { Config: testAccTargetGroupConfig_lambda(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckTargetGroupExists(ctx, resourceName, &targetGroup), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "vpc-lattice", regexache.MustCompile("targetgroup/.+$")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "vpc-lattice", regexache.MustCompile("targetgroup/.+$")), resource.TestCheckResourceAttr(resourceName, "config.#", "1"), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, names.AttrStatus, "ACTIVE"), @@ -208,7 +208,7 @@ func TestAccVPCLatticeTargetGroup_lambdaEventStructureVersion(t *testing.T) { Config: testAccTargetGroupConfig_lambdaEventStructureVersion(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckTargetGroupExists(ctx, resourceName, &targetGroup), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "vpc-lattice", regexache.MustCompile("targetgroup/.+$")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "vpc-lattice", regexache.MustCompile("targetgroup/.+$")), resource.TestCheckResourceAttr(resourceName, "config.#", "1"), resource.TestCheckResourceAttr(resourceName, "config.0.lambda_event_structure_version", "V2"), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), @@ -245,7 +245,7 @@ func TestAccVPCLatticeTargetGroup_ip(t *testing.T) { Config: testAccTargetGroupConfig_ip(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckTargetGroupExists(ctx, resourceName, &targetGroup), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "vpc-lattice", regexache.MustCompile("targetgroup/.+$")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "vpc-lattice", regexache.MustCompile("targetgroup/.+$")), resource.TestCheckResourceAttr(resourceName, "config.#", "1"), resource.TestCheckResourceAttr(resourceName, "config.0.health_check.#", "1"), resource.TestCheckResourceAttr(resourceName, "config.0.health_check.0.enabled", acctest.CtTrue), @@ -278,7 +278,7 @@ func TestAccVPCLatticeTargetGroup_ip(t *testing.T) { Config: testAccTargetGroupConfig_ipUpdated(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckTargetGroupExists(ctx, resourceName, &targetGroup), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "vpc-lattice", regexache.MustCompile("targetgroup/.+$")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "vpc-lattice", regexache.MustCompile("targetgroup/.+$")), resource.TestCheckResourceAttr(resourceName, "config.#", "1"), resource.TestCheckResourceAttr(resourceName, "config.0.health_check.#", "1"), resource.TestCheckResourceAttr(resourceName, "config.0.health_check.0.enabled", acctest.CtTrue), @@ -326,7 +326,7 @@ func TestAccVPCLatticeTargetGroup_alb(t *testing.T) { Config: testAccTargetGroupConfig_alb(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckTargetGroupExists(ctx, resourceName, &targetGroup), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "vpc-lattice", regexache.MustCompile("targetgroup/.+$")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "vpc-lattice", regexache.MustCompile("targetgroup/.+$")), resource.TestCheckResourceAttr(resourceName, "config.#", "1"), resource.TestCheckResourceAttr(resourceName, "config.0.health_check.#", "0"), resource.TestCheckResourceAttr(resourceName, "config.0.ip_address_type", ""), diff --git a/internal/service/waf/geo_match_set.go b/internal/service/waf/geo_match_set.go index 120edac868f1..aeed84d89d31 100644 --- a/internal/service/waf/geo_match_set.go +++ b/internal/service/waf/geo_match_set.go @@ -106,7 +106,7 @@ func resourceGeoMatchSetRead(ctx context.Context, d *schema.ResourceData, meta i arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "waf", - AccountID: meta.(*conns.AWSClient).AccountID, + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: "geomatchset/" + d.Id(), } d.Set(names.AttrARN, arn.String()) diff --git a/internal/service/waf/geo_match_set_test.go b/internal/service/waf/geo_match_set_test.go index 1a7d51177e39..0a8c74537fb3 100644 --- a/internal/service/waf/geo_match_set_test.go +++ b/internal/service/waf/geo_match_set_test.go @@ -36,7 +36,7 @@ func TestAccWAFGeoMatchSet_basic(t *testing.T) { Config: testAccGeoMatchSetConfig_basic(geoMatchSet), Check: resource.ComposeTestCheckFunc( testAccCheckGeoMatchSetExists(ctx, resourceName, &v), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "waf", regexache.MustCompile(`geomatchset/.+`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "waf", regexache.MustCompile(`geomatchset/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, geoMatchSet), resource.TestCheckResourceAttr(resourceName, "geo_match_constraint.#", "2"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "geo_match_constraint.*", map[string]string{ diff --git a/internal/service/waf/ipset.go b/internal/service/waf/ipset.go index cf0af6a96f8e..e8745a011cce 100644 --- a/internal/service/waf/ipset.go +++ b/internal/service/waf/ipset.go @@ -116,7 +116,7 @@ func resourceIPSetRead(ctx context.Context, d *schema.ResourceData, meta interfa arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "waf", - AccountID: meta.(*conns.AWSClient).AccountID, + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: "ipset/" + d.Id(), } d.Set(names.AttrARN, arn.String()) diff --git a/internal/service/waf/ipset_test.go b/internal/service/waf/ipset_test.go index 46760d09a260..d980197ec801 100644 --- a/internal/service/waf/ipset_test.go +++ b/internal/service/waf/ipset_test.go @@ -43,7 +43,7 @@ func TestAccWAFIPSet_basic(t *testing.T) { names.AttrType: "IPV4", names.AttrValue: "192.0.7.0/24", }), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "waf", regexache.MustCompile("ipset/.+$")), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "waf", regexache.MustCompile("ipset/.+$")), ), }, { diff --git a/internal/service/waf/rate_based_rule.go b/internal/service/waf/rate_based_rule.go index bb9ac9ed2c84..86e2deb6bd83 100644 --- a/internal/service/waf/rate_based_rule.go +++ b/internal/service/waf/rate_based_rule.go @@ -157,7 +157,7 @@ func resourceRateBasedRuleRead(ctx context.Context, d *schema.ResourceData, meta arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "waf", - AccountID: meta.(*conns.AWSClient).AccountID, + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: "ratebasedrule/" + d.Id(), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/waf/rate_based_rule_test.go b/internal/service/waf/rate_based_rule_test.go index 04dc7b2af814..1efe1de981e9 100644 --- a/internal/service/waf/rate_based_rule_test.go +++ b/internal/service/waf/rate_based_rule_test.go @@ -56,7 +56,7 @@ func testAccWAFRateBasedRule_basic(t *testing.T) { Config: testAccRateBasedRuleConfig_basic(wafRuleName), Check: resource.ComposeTestCheckFunc( testAccCheckRateBasedRuleExists(ctx, resourceName, &v), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "waf", regexache.MustCompile(`ratebasedrule/.+`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "waf", regexache.MustCompile(`ratebasedrule/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, wafRuleName), resource.TestCheckResourceAttr(resourceName, "predicates.#", "1"), resource.TestCheckResourceAttr(resourceName, names.AttrMetricName, wafRuleName), @@ -281,7 +281,7 @@ func testAccWAFRateBasedRule_tags(t *testing.T) { Config: testAccRateBasedRuleConfig_tags1(ruleName, acctest.CtKey1, acctest.CtValue1), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckRateBasedRuleExists(ctx, resourceName, &rule), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "waf", regexache.MustCompile(`ratebasedrule/.+`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "waf", regexache.MustCompile(`ratebasedrule/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, ruleName), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "1"), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsKey1, acctest.CtValue1), diff --git a/internal/service/waf/regex_match_set.go b/internal/service/waf/regex_match_set.go index 567782034ee0..ea29e519e2b5 100644 --- a/internal/service/waf/regex_match_set.go +++ b/internal/service/waf/regex_match_set.go @@ -130,7 +130,7 @@ func resourceRegexMatchSetRead(ctx context.Context, d *schema.ResourceData, meta arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "waf", - AccountID: meta.(*conns.AWSClient).AccountID, + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: "regexmatchset/" + d.Id(), } d.Set(names.AttrARN, arn.String()) diff --git a/internal/service/waf/regex_match_set_test.go b/internal/service/waf/regex_match_set_test.go index 963748ae1c0d..cf5549a5adbe 100644 --- a/internal/service/waf/regex_match_set_test.go +++ b/internal/service/waf/regex_match_set_test.go @@ -62,7 +62,7 @@ func testAccRegexMatchSet_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckRegexMatchSetExists(ctx, resourceName, &matchSet), testAccCheckRegexPatternSetExists(ctx, "aws_waf_regex_pattern_set.test", &patternSet), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "waf", regexache.MustCompile(`regexmatchset/.+`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "waf", regexache.MustCompile(`regexmatchset/.+`)), computeRegexMatchSetTuple(&patternSet, &fieldToMatch, "NONE", &idx), resource.TestCheckResourceAttr(resourceName, names.AttrName, matchSetName), resource.TestCheckResourceAttr(resourceName, "regex_match_tuple.#", "1"), diff --git a/internal/service/waf/regex_pattern_set.go b/internal/service/waf/regex_pattern_set.go index fcede9e747a0..fa95ef18ca45 100644 --- a/internal/service/waf/regex_pattern_set.go +++ b/internal/service/waf/regex_pattern_set.go @@ -96,7 +96,7 @@ func resourceRegexPatternSetRead(ctx context.Context, d *schema.ResourceData, me arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "waf", - AccountID: meta.(*conns.AWSClient).AccountID, + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: "regexpatternset/" + d.Id(), } d.Set(names.AttrARN, arn.String()) diff --git a/internal/service/waf/regex_pattern_set_test.go b/internal/service/waf/regex_pattern_set_test.go index 9db5028a9862..0b3ce7a20316 100644 --- a/internal/service/waf/regex_pattern_set_test.go +++ b/internal/service/waf/regex_pattern_set_test.go @@ -51,7 +51,7 @@ func testAccRegexPatternSet_basic(t *testing.T) { Config: testAccRegexPatternSetConfig_basic(patternSetName), Check: resource.ComposeTestCheckFunc( testAccCheckRegexPatternSetExists(ctx, resourceName, &v), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "waf", regexache.MustCompile(`regexpatternset/.+`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "waf", regexache.MustCompile(`regexpatternset/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, patternSetName), resource.TestCheckResourceAttr(resourceName, "regex_pattern_strings.#", "2"), resource.TestCheckTypeSetElemAttr(resourceName, "regex_pattern_strings.*", "one"), diff --git a/internal/service/waf/rule.go b/internal/service/waf/rule.go index fe47ca0aeb0d..692fd70b46ce 100644 --- a/internal/service/waf/rule.go +++ b/internal/service/waf/rule.go @@ -149,7 +149,7 @@ func resourceRuleRead(ctx context.Context, d *schema.ResourceData, meta interfac arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "waf", - AccountID: meta.(*conns.AWSClient).AccountID, + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: "rule/" + d.Id(), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/waf/rule_group.go b/internal/service/waf/rule_group.go index bc03bf1d42c0..7988bbca0e06 100644 --- a/internal/service/waf/rule_group.go +++ b/internal/service/waf/rule_group.go @@ -168,7 +168,7 @@ func resourceRuleGroupRead(ctx context.Context, d *schema.ResourceData, meta int arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "waf", - AccountID: meta.(*conns.AWSClient).AccountID, + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: "rulegroup/" + d.Id(), }.String() d.Set(names.AttrARN, arn) diff --git a/internal/service/waf/rule_group_test.go b/internal/service/waf/rule_group_test.go index 4cffc1e6e580..fabc0a9e69a4 100644 --- a/internal/service/waf/rule_group_test.go +++ b/internal/service/waf/rule_group_test.go @@ -51,7 +51,7 @@ func TestAccWAFRuleGroup_basic(t *testing.T) { names.AttrPriority: "50", names.AttrType: string(awstypes.WafRuleTypeRegular), }), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "waf", regexache.MustCompile(`rulegroup/.+`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "waf", regexache.MustCompile(`rulegroup/.+`)), ), }, { diff --git a/internal/service/waf/rule_test.go b/internal/service/waf/rule_test.go index c27568f74c6c..70280c422269 100644 --- a/internal/service/waf/rule_test.go +++ b/internal/service/waf/rule_test.go @@ -39,7 +39,7 @@ func TestAccWAFRule_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, names.AttrName, wafRuleName), resource.TestCheckResourceAttr(resourceName, "predicates.#", "1"), resource.TestCheckResourceAttr(resourceName, names.AttrMetricName, wafRuleName), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "waf", regexache.MustCompile(`rule/.+`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "waf", regexache.MustCompile(`rule/.+`)), ), }, { diff --git a/internal/service/waf/service_endpoints_gen_test.go b/internal/service/waf/service_endpoints_gen_test.go index 9d3d5d968b29..d240a73737f3 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/waf/size_constraint_set.go b/internal/service/waf/size_constraint_set.go index 6f6a0338a724..129f78c85ac5 100644 --- a/internal/service/waf/size_constraint_set.go +++ b/internal/service/waf/size_constraint_set.go @@ -127,7 +127,7 @@ func resourceSizeConstraintSetRead(ctx context.Context, d *schema.ResourceData, arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "waf", - AccountID: meta.(*conns.AWSClient).AccountID, + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: "sizeconstraintset/" + d.Id(), } d.Set(names.AttrARN, arn.String()) diff --git a/internal/service/waf/size_constraint_set_test.go b/internal/service/waf/size_constraint_set_test.go index a3efa84f765b..f053e9463a48 100644 --- a/internal/service/waf/size_constraint_set_test.go +++ b/internal/service/waf/size_constraint_set_test.go @@ -36,7 +36,7 @@ func TestAccWAFSizeConstraintSet_basic(t *testing.T) { Config: testAccSizeConstraintSetConfig_basic(sizeConstraintSet), Check: resource.ComposeTestCheckFunc( testAccCheckSizeConstraintSetExists(ctx, resourceName, &v), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "waf", regexache.MustCompile(`sizeconstraintset/.+`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "waf", regexache.MustCompile(`sizeconstraintset/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, sizeConstraintSet), resource.TestCheckResourceAttr(resourceName, "size_constraints.#", "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "size_constraints.*", map[string]string{ diff --git a/internal/service/waf/web_acl.go b/internal/service/waf/web_acl.go index 882637698d62..f178fc71ac56 100644 --- a/internal/service/waf/web_acl.go +++ b/internal/service/waf/web_acl.go @@ -189,7 +189,7 @@ func resourceWebACLCreate(ctx context.Context, d *schema.ResourceData, meta inte arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "waf", - AccountID: meta.(*conns.AWSClient).AccountID, + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: "webacl/" + d.Id(), }.String() input := &waf.PutLoggingConfigurationInput{ diff --git a/internal/service/waf/web_acl_test.go b/internal/service/waf/web_acl_test.go index f7993bfb1938..5dda7c01ad2f 100644 --- a/internal/service/waf/web_acl_test.go +++ b/internal/service/waf/web_acl_test.go @@ -10,6 +10,7 @@ import ( "github.com/YakDriver/regexache" awstypes "github.com/aws/aws-sdk-go-v2/service/waf/types" + "github.com/hashicorp/aws-sdk-go-base/v2/endpoints" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-plugin-testing/terraform" @@ -42,7 +43,7 @@ func TestAccWAFWebACL_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), resource.TestCheckResourceAttr(resourceName, "rules.#", "0"), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "waf", regexache.MustCompile(`webacl/.+`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "waf", regexache.MustCompile(`webacl/.+`)), ), }, { @@ -193,7 +194,7 @@ func TestAccWAFWebACL_logging(t *testing.T) { PreCheck: func() { acctest.PreCheck(ctx, t) testAccPreCheck(ctx, t) - acctest.PreCheckRegion(t, names.USEast1RegionID) + acctest.PreCheckRegion(t, endpoints.UsEast1RegionID) }, ErrorCheck: acctest.ErrorCheck(t, names.WAFServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, diff --git a/internal/service/waf/xss_match_set.go b/internal/service/waf/xss_match_set.go index 01706e73924d..2e332d87ca40 100644 --- a/internal/service/waf/xss_match_set.go +++ b/internal/service/waf/xss_match_set.go @@ -128,7 +128,7 @@ func resourceXSSMatchSetRead(ctx context.Context, d *schema.ResourceData, meta i arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "waf", - AccountID: meta.(*conns.AWSClient).AccountID, + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: "xssmatchset/" + d.Id(), } d.Set(names.AttrARN, arn.String()) diff --git a/internal/service/waf/xss_match_set_test.go b/internal/service/waf/xss_match_set_test.go index 86e3382afa3e..de19c871b34a 100644 --- a/internal/service/waf/xss_match_set_test.go +++ b/internal/service/waf/xss_match_set_test.go @@ -36,7 +36,7 @@ func TestAccWAFXSSMatchSet_basic(t *testing.T) { Config: testAccXSSMatchSetConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckXSSMatchSetExists(ctx, resourceName, &v), - acctest.MatchResourceAttrGlobalARN(resourceName, names.AttrARN, "waf", regexache.MustCompile(`xssmatchset/.+`)), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, names.AttrARN, "waf", regexache.MustCompile(`xssmatchset/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "xss_match_tuples.#", "2"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "xss_match_tuples.*", map[string]string{ diff --git a/internal/service/wafregional/byte_match_set.go b/internal/service/wafregional/byte_match_set.go index 2c285ed84bf5..2e5681e64e81 100644 --- a/internal/service/wafregional/byte_match_set.go +++ b/internal/service/wafregional/byte_match_set.go @@ -83,7 +83,7 @@ func resourceByteMatchSet() *schema.Resource { func resourceByteMatchSetCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics conn := meta.(*conns.AWSClient).WAFRegionalClient(ctx) - region := meta.(*conns.AWSClient).Region + region := meta.(*conns.AWSClient).Region(ctx) name := d.Get(names.AttrName).(string) output, err := newRetryer(conn, region).RetryWithToken(ctx, func(token *string) (interface{}, error) { @@ -131,7 +131,7 @@ func resourceByteMatchSetRead(ctx context.Context, d *schema.ResourceData, meta func resourceByteMatchSetUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics conn := meta.(*conns.AWSClient).WAFRegionalClient(ctx) - region := meta.(*conns.AWSClient).Region + region := meta.(*conns.AWSClient).Region(ctx) if d.HasChange("byte_match_tuples") { o, n := d.GetChange("byte_match_tuples") @@ -147,7 +147,7 @@ func resourceByteMatchSetUpdate(ctx context.Context, d *schema.ResourceData, met func resourceByteMatchSetDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics conn := meta.(*conns.AWSClient).WAFRegionalClient(ctx) - region := meta.(*conns.AWSClient).Region + region := meta.(*conns.AWSClient).Region(ctx) if oldT := d.Get("byte_match_tuples").(*schema.Set).List(); len(oldT) > 0 { var newT []interface{} diff --git a/internal/service/wafregional/geo_match_set.go b/internal/service/wafregional/geo_match_set.go index 655936aabe04..a7842ad4d38a 100644 --- a/internal/service/wafregional/geo_match_set.go +++ b/internal/service/wafregional/geo_match_set.go @@ -62,7 +62,7 @@ func resourceGeoMatchSet() *schema.Resource { func resourceGeoMatchSetCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics conn := meta.(*conns.AWSClient).WAFRegionalClient(ctx) - region := meta.(*conns.AWSClient).Region + region := meta.(*conns.AWSClient).Region(ctx) name := d.Get(names.AttrName).(string) outputRaw, err := newRetryer(conn, region).RetryWithToken(ctx, func(token *string) (interface{}, error) { @@ -110,7 +110,7 @@ func resourceGeoMatchSetRead(ctx context.Context, d *schema.ResourceData, meta i func resourceGeoMatchSetUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics conn := meta.(*conns.AWSClient).WAFRegionalClient(ctx) - region := meta.(*conns.AWSClient).Region + region := meta.(*conns.AWSClient).Region(ctx) if d.HasChange("geo_match_constraint") { o, n := d.GetChange("geo_match_constraint") @@ -126,7 +126,7 @@ func resourceGeoMatchSetUpdate(ctx context.Context, d *schema.ResourceData, meta func resourceGeoMatchSetDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics conn := meta.(*conns.AWSClient).WAFRegionalClient(ctx) - region := meta.(*conns.AWSClient).Region + region := meta.(*conns.AWSClient).Region(ctx) if oldConstraints := d.Get("geo_match_constraint").(*schema.Set).List(); len(oldConstraints) > 0 { var newConstraints []interface{} diff --git a/internal/service/wafregional/ipset.go b/internal/service/wafregional/ipset.go index 922cbde5d7cd..a43bd89c82ae 100644 --- a/internal/service/wafregional/ipset.go +++ b/internal/service/wafregional/ipset.go @@ -67,7 +67,7 @@ func resourceIPSet() *schema.Resource { func resourceIPSetCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics conn := meta.(*conns.AWSClient).WAFRegionalClient(ctx) - region := meta.(*conns.AWSClient).Region + region := meta.(*conns.AWSClient).Region(ctx) name := d.Get(names.AttrName).(string) output, err := newRetryer(conn, region).RetryWithToken(ctx, func(token *string) (interface{}, error) { @@ -107,8 +107,8 @@ func resourceIPSetRead(ctx context.Context, d *schema.ResourceData, meta interfa arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "waf-regional", - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: "ipset/" + d.Id(), } d.Set(names.AttrARN, arn.String()) @@ -123,7 +123,7 @@ func resourceIPSetRead(ctx context.Context, d *schema.ResourceData, meta interfa func resourceIPSetUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics conn := meta.(*conns.AWSClient).WAFRegionalClient(ctx) - region := meta.(*conns.AWSClient).Region + region := meta.(*conns.AWSClient).Region(ctx) if d.HasChange("ip_set_descriptor") { o, n := d.GetChange("ip_set_descriptor") @@ -139,7 +139,7 @@ func resourceIPSetUpdate(ctx context.Context, d *schema.ResourceData, meta inter func resourceIPSetDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics conn := meta.(*conns.AWSClient).WAFRegionalClient(ctx) - region := meta.(*conns.AWSClient).Region + region := meta.(*conns.AWSClient).Region(ctx) if oldD := d.Get("ip_set_descriptor").(*schema.Set).List(); len(oldD) > 0 { var newD []interface{} diff --git a/internal/service/wafregional/ipset_test.go b/internal/service/wafregional/ipset_test.go index 2117cd4c124b..409d54996fe4 100644 --- a/internal/service/wafregional/ipset_test.go +++ b/internal/service/wafregional/ipset_test.go @@ -43,7 +43,7 @@ func TestAccWAFRegionalIPSet_basic(t *testing.T) { names.AttrType: "IPV4", names.AttrValue: "192.0.7.0/24", }), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "waf-regional", regexache.MustCompile("ipset/.+$")), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "waf-regional", regexache.MustCompile("ipset/.+$")), ), }, { diff --git a/internal/service/wafregional/rate_based_rule.go b/internal/service/wafregional/rate_based_rule.go index cd0d2546860d..457f325d7142 100644 --- a/internal/service/wafregional/rate_based_rule.go +++ b/internal/service/wafregional/rate_based_rule.go @@ -97,7 +97,7 @@ func resourceRateBasedRule() *schema.Resource { func resourceRateBasedRuleCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics conn := meta.(*conns.AWSClient).WAFRegionalClient(ctx) - region := meta.(*conns.AWSClient).Region + region := meta.(*conns.AWSClient).Region(ctx) name := d.Get(names.AttrName).(string) outputRaw, err := newRetryer(conn, region).RetryWithToken(ctx, func(token *string) (interface{}, error) { @@ -159,8 +159,8 @@ func resourceRateBasedRuleRead(ctx context.Context, d *schema.ResourceData, meta arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "waf-regional", - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: "ratebasedrule/" + d.Id(), }.String() d.Set(names.AttrARN, arn) @@ -178,7 +178,7 @@ func resourceRateBasedRuleRead(ctx context.Context, d *schema.ResourceData, meta func resourceRateBasedRuleUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics conn := meta.(*conns.AWSClient).WAFRegionalClient(ctx) - region := meta.(*conns.AWSClient).Region + region := meta.(*conns.AWSClient).Region(ctx) if d.HasChanges("predicate", "rate_limit") { o, n := d.GetChange("predicate") @@ -194,7 +194,7 @@ func resourceRateBasedRuleUpdate(ctx context.Context, d *schema.ResourceData, me func resourceRateBasedRuleDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics conn := meta.(*conns.AWSClient).WAFRegionalClient(ctx) - region := meta.(*conns.AWSClient).Region + region := meta.(*conns.AWSClient).Region(ctx) if oldPredicates := d.Get("predicate").(*schema.Set).List(); len(oldPredicates) > 0 { var newPredicates []interface{} diff --git a/internal/service/wafregional/rate_based_rule_test.go b/internal/service/wafregional/rate_based_rule_test.go index a186f4e5eaba..90201ad7488f 100644 --- a/internal/service/wafregional/rate_based_rule_test.go +++ b/internal/service/wafregional/rate_based_rule_test.go @@ -35,7 +35,7 @@ func TestAccWAFRegionalRateBasedRule_basic(t *testing.T) { Config: testAccRateBasedRuleConfig_basic(wafRuleName), Check: resource.ComposeTestCheckFunc( testAccCheckRateBasedRuleExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "waf-regional", regexache.MustCompile(`ratebasedrule/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "waf-regional", regexache.MustCompile(`ratebasedrule/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, wafRuleName), resource.TestCheckResourceAttr(resourceName, "predicate.#", "1"), resource.TestCheckResourceAttr(resourceName, names.AttrMetricName, wafRuleName), diff --git a/internal/service/wafregional/regex_match_set.go b/internal/service/wafregional/regex_match_set.go index 43381ef64c50..a8806fa9b308 100644 --- a/internal/service/wafregional/regex_match_set.go +++ b/internal/service/wafregional/regex_match_set.go @@ -86,7 +86,7 @@ func resourceRegexMatchSet() *schema.Resource { func resourceRegexMatchSetCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics conn := meta.(*conns.AWSClient).WAFRegionalClient(ctx) - region := meta.(*conns.AWSClient).Region + region := meta.(*conns.AWSClient).Region(ctx) name := d.Get(names.AttrName).(string) outputRaw, err := newRetryer(conn, region).RetryWithToken(ctx, func(token *string) (interface{}, error) { @@ -134,7 +134,7 @@ func resourceRegexMatchSetRead(ctx context.Context, d *schema.ResourceData, meta func resourceRegexMatchSetUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics conn := meta.(*conns.AWSClient).WAFRegionalClient(ctx) - region := meta.(*conns.AWSClient).Region + region := meta.(*conns.AWSClient).Region(ctx) if d.HasChange("regex_match_tuple") { o, n := d.GetChange("regex_match_tuple") @@ -150,7 +150,7 @@ func resourceRegexMatchSetUpdate(ctx context.Context, d *schema.ResourceData, me func resourceRegexMatchSetDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics conn := meta.(*conns.AWSClient).WAFRegionalClient(ctx) - region := meta.(*conns.AWSClient).Region + region := meta.(*conns.AWSClient).Region(ctx) if oldT := d.Get("regex_match_tuple").(*schema.Set).List(); len(oldT) > 0 { var newT []interface{} diff --git a/internal/service/wafregional/regex_pattern_set.go b/internal/service/wafregional/regex_pattern_set.go index 8739cce9a096..08adf651ed0d 100644 --- a/internal/service/wafregional/regex_pattern_set.go +++ b/internal/service/wafregional/regex_pattern_set.go @@ -52,7 +52,7 @@ func resourceRegexPatternSet() *schema.Resource { func resourceRegexPatternSetCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics conn := meta.(*conns.AWSClient).WAFRegionalClient(ctx) - region := meta.(*conns.AWSClient).Region + region := meta.(*conns.AWSClient).Region(ctx) name := d.Get(names.AttrName).(string) outputRaw, err := newRetryer(conn, region).RetryWithToken(ctx, func(token *string) (interface{}, error) { @@ -98,7 +98,7 @@ func resourceRegexPatternSetRead(ctx context.Context, d *schema.ResourceData, me func resourceRegexPatternSetUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics conn := meta.(*conns.AWSClient).WAFRegionalClient(ctx) - region := meta.(*conns.AWSClient).Region + region := meta.(*conns.AWSClient).Region(ctx) if d.HasChange("regex_pattern_strings") { o, n := d.GetChange("regex_pattern_strings") @@ -114,7 +114,7 @@ func resourceRegexPatternSetUpdate(ctx context.Context, d *schema.ResourceData, func resourceRegexPatternSetDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics conn := meta.(*conns.AWSClient).WAFRegionalClient(ctx) - region := meta.(*conns.AWSClient).Region + region := meta.(*conns.AWSClient).Region(ctx) if oldPatterns := d.Get("regex_pattern_strings").(*schema.Set).List(); len(oldPatterns) > 0 { var newPatterns []interface{} diff --git a/internal/service/wafregional/rule.go b/internal/service/wafregional/rule.go index c6169f86fa95..782fb39b6c66 100644 --- a/internal/service/wafregional/rule.go +++ b/internal/service/wafregional/rule.go @@ -87,7 +87,7 @@ func resourceRule() *schema.Resource { func resourceRuleCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics conn := meta.(*conns.AWSClient).WAFRegionalClient(ctx) - region := meta.(*conns.AWSClient).Region + region := meta.(*conns.AWSClient).Region(ctx) name := d.Get(names.AttrName).(string) outputRaw, err := newRetryer(conn, region).RetryWithToken(ctx, func(token *string) (interface{}, error) { @@ -136,8 +136,8 @@ func resourceRuleRead(ctx context.Context, d *schema.ResourceData, meta interfac arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "waf-regional", - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: "rule/" + d.Id(), }.String() d.Set(names.AttrARN, arn) @@ -153,7 +153,7 @@ func resourceRuleRead(ctx context.Context, d *schema.ResourceData, meta interfac func resourceRuleUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics conn := meta.(*conns.AWSClient).WAFRegionalClient(ctx) - region := meta.(*conns.AWSClient).Region + region := meta.(*conns.AWSClient).Region(ctx) if d.HasChange("predicate") { o, n := d.GetChange("predicate") @@ -169,7 +169,7 @@ func resourceRuleUpdate(ctx context.Context, d *schema.ResourceData, meta interf func resourceRuleDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics conn := meta.(*conns.AWSClient).WAFRegionalClient(ctx) - region := meta.(*conns.AWSClient).Region + region := meta.(*conns.AWSClient).Region(ctx) if oldPredicates := d.Get("predicate").(*schema.Set).List(); len(oldPredicates) > 0 { var newPredicates []interface{} diff --git a/internal/service/wafregional/rule_group.go b/internal/service/wafregional/rule_group.go index 4fa127edb199..9a004bcdc183 100644 --- a/internal/service/wafregional/rule_group.go +++ b/internal/service/wafregional/rule_group.go @@ -98,7 +98,7 @@ func resourceRuleGroup() *schema.Resource { func resourceRuleGroupCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics conn := meta.(*conns.AWSClient).WAFRegionalClient(ctx) - region := meta.(*conns.AWSClient).Region + region := meta.(*conns.AWSClient).Region(ctx) name := d.Get(names.AttrName).(string) outputRaw, err := newRetryer(conn, region).RetryWithToken(ctx, func(token *string) (interface{}, error) { @@ -169,8 +169,8 @@ func resourceRuleGroupRead(ctx context.Context, d *schema.ResourceData, meta int arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "waf-regional", - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: "rulegroup/" + d.Id(), }.String() d.Set(names.AttrARN, arn) @@ -183,7 +183,7 @@ func resourceRuleGroupRead(ctx context.Context, d *schema.ResourceData, meta int func resourceRuleGroupUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics conn := meta.(*conns.AWSClient).WAFRegionalClient(ctx) - region := meta.(*conns.AWSClient).Region + region := meta.(*conns.AWSClient).Region(ctx) if d.HasChange("activated_rule") { o, n := d.GetChange("activated_rule") @@ -199,7 +199,7 @@ func resourceRuleGroupUpdate(ctx context.Context, d *schema.ResourceData, meta i func resourceRuleGroupDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics conn := meta.(*conns.AWSClient).WAFRegionalClient(ctx) - region := meta.(*conns.AWSClient).Region + region := meta.(*conns.AWSClient).Region(ctx) if oldRules := d.Get("activated_rule").(*schema.Set).List(); len(oldRules) > 0 { noRules := []interface{}{} diff --git a/internal/service/wafregional/rule_group_test.go b/internal/service/wafregional/rule_group_test.go index 299bd8547382..178486d78c1b 100644 --- a/internal/service/wafregional/rule_group_test.go +++ b/internal/service/wafregional/rule_group_test.go @@ -42,7 +42,7 @@ func TestAccWAFRegionalRuleGroup_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckRuleExists(ctx, "aws_wafregional_rule.test", &rule), testAccCheckRuleGroupExists(ctx, resourceName, &group), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "waf-regional", regexache.MustCompile(`rulegroup/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "waf-regional", regexache.MustCompile(`rulegroup/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, groupName), resource.TestCheckResourceAttr(resourceName, "activated_rule.#", "1"), resource.TestCheckResourceAttr(resourceName, names.AttrMetricName, groupName), diff --git a/internal/service/wafregional/rule_test.go b/internal/service/wafregional/rule_test.go index 247ba4fccec6..e500d5a68899 100644 --- a/internal/service/wafregional/rule_test.go +++ b/internal/service/wafregional/rule_test.go @@ -37,7 +37,7 @@ func TestAccWAFRegionalRule_basic(t *testing.T) { Config: testAccRuleConfig_basic(wafRuleName), Check: resource.ComposeTestCheckFunc( testAccCheckRuleExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "waf-regional", regexache.MustCompile(`rule/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "waf-regional", regexache.MustCompile(`rule/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, wafRuleName), resource.TestCheckResourceAttr(resourceName, "predicate.#", "1"), resource.TestCheckResourceAttr(resourceName, names.AttrMetricName, wafRuleName), diff --git a/internal/service/wafregional/service_endpoints_gen_test.go b/internal/service/wafregional/service_endpoints_gen_test.go index 91cdb80f6792..d2ce9e1fc8d0 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/wafregional/size_constraint_set.go b/internal/service/wafregional/size_constraint_set.go index c4a40e753bef..a99762fd22fb 100644 --- a/internal/service/wafregional/size_constraint_set.go +++ b/internal/service/wafregional/size_constraint_set.go @@ -87,7 +87,7 @@ func resourceSizeConstraintSet() *schema.Resource { func resourceSizeConstraintSetCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics conn := meta.(*conns.AWSClient).WAFRegionalClient(ctx) - region := meta.(*conns.AWSClient).Region + region := meta.(*conns.AWSClient).Region(ctx) name := d.Get(names.AttrName).(string) output, err := newRetryer(conn, region).RetryWithToken(ctx, func(token *string) (interface{}, error) { @@ -135,7 +135,7 @@ func resourceSizeConstraintSetRead(ctx context.Context, d *schema.ResourceData, func resourceSizeConstraintSetUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics conn := meta.(*conns.AWSClient).WAFRegionalClient(ctx) - region := meta.(*conns.AWSClient).Region + region := meta.(*conns.AWSClient).Region(ctx) if d.HasChange("size_constraints") { o, n := d.GetChange("size_constraints") @@ -151,7 +151,7 @@ func resourceSizeConstraintSetUpdate(ctx context.Context, d *schema.ResourceData func resourceSizeConstraintSetDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics conn := meta.(*conns.AWSClient).WAFRegionalClient(ctx) - region := meta.(*conns.AWSClient).Region + region := meta.(*conns.AWSClient).Region(ctx) if oldConstraints := d.Get("size_constraints").(*schema.Set).List(); len(oldConstraints) > 0 { noConstraints := []interface{}{} diff --git a/internal/service/wafregional/sql_injection_match_set.go b/internal/service/wafregional/sql_injection_match_set.go index 67c1f26d9aa7..0544fe568238 100644 --- a/internal/service/wafregional/sql_injection_match_set.go +++ b/internal/service/wafregional/sql_injection_match_set.go @@ -83,7 +83,7 @@ func resourceSQLInjectionMatchSet() *schema.Resource { func resourceSQLInjectionMatchSetCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics conn := meta.(*conns.AWSClient).WAFRegionalClient(ctx) - region := meta.(*conns.AWSClient).Region + region := meta.(*conns.AWSClient).Region(ctx) name := d.Get(names.AttrName).(string) output, err := newRetryer(conn, region).RetryWithToken(ctx, func(token *string) (interface{}, error) { @@ -131,7 +131,7 @@ func resourceSQLInjectionMatchSetRead(ctx context.Context, d *schema.ResourceDat func resourceSQLInjectionMatchSetUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics conn := meta.(*conns.AWSClient).WAFRegionalClient(ctx) - region := meta.(*conns.AWSClient).Region + region := meta.(*conns.AWSClient).Region(ctx) if d.HasChange("sql_injection_match_tuple") { o, n := d.GetChange("sql_injection_match_tuple") @@ -147,7 +147,7 @@ func resourceSQLInjectionMatchSetUpdate(ctx context.Context, d *schema.ResourceD func resourceSQLInjectionMatchSetDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics conn := meta.(*conns.AWSClient).WAFRegionalClient(ctx) - region := meta.(*conns.AWSClient).Region + region := meta.(*conns.AWSClient).Region(ctx) if oldTuples := d.Get("sql_injection_match_tuple").(*schema.Set).List(); len(oldTuples) > 0 { noTuples := []interface{}{} diff --git a/internal/service/wafregional/web_acl.go b/internal/service/wafregional/web_acl.go index 6b25700fb3ac..3db76af7cb2d 100644 --- a/internal/service/wafregional/web_acl.go +++ b/internal/service/wafregional/web_acl.go @@ -167,7 +167,7 @@ func resourceWebACL() *schema.Resource { func resourceWebACLCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics conn := meta.(*conns.AWSClient).WAFRegionalClient(ctx) - region := meta.(*conns.AWSClient).Region + region := meta.(*conns.AWSClient).Region(ctx) name := d.Get(names.AttrName).(string) output, err := newRetryer(conn, region).RetryWithToken(ctx, func(token *string) (interface{}, error) { @@ -192,8 +192,8 @@ func resourceWebACLCreate(ctx context.Context, d *schema.ResourceData, meta inte arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "waf-regional", - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: "webacl/" + d.Id(), }.String() @@ -247,8 +247,8 @@ func resourceWebACLRead(ctx context.Context, d *schema.ResourceData, meta interf arn := arn.ARN{ Partition: meta.(*conns.AWSClient).Partition(ctx), Service: "waf-regional", - Region: meta.(*conns.AWSClient).Region, - AccountID: meta.(*conns.AWSClient).AccountID, + Region: meta.(*conns.AWSClient).Region(ctx), + AccountID: meta.(*conns.AWSClient).AccountID(ctx), Resource: "webacl/" + d.Id(), }.String() d.Set(names.AttrARN, arn) @@ -286,7 +286,7 @@ func resourceWebACLRead(ctx context.Context, d *schema.ResourceData, meta interf func resourceWebACLUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics conn := meta.(*conns.AWSClient).WAFRegionalClient(ctx) - region := meta.(*conns.AWSClient).Region + region := meta.(*conns.AWSClient).Region(ctx) if d.HasChanges(names.AttrDefaultAction, names.AttrRule) { o, n := d.GetChange(names.AttrRule) @@ -338,7 +338,7 @@ func resourceWebACLUpdate(ctx context.Context, d *schema.ResourceData, meta inte func resourceWebACLDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics conn := meta.(*conns.AWSClient).WAFRegionalClient(ctx) - region := meta.(*conns.AWSClient).Region + region := meta.(*conns.AWSClient).Region(ctx) if rules := d.Get(names.AttrRule).(*schema.Set).List(); len(rules) > 0 { _, err := newRetryer(conn, region).RetryWithToken(ctx, func(token *string) (interface{}, error) { diff --git a/internal/service/wafregional/web_acl_test.go b/internal/service/wafregional/web_acl_test.go index 4f36a192db63..6c1f90aa820e 100644 --- a/internal/service/wafregional/web_acl_test.go +++ b/internal/service/wafregional/web_acl_test.go @@ -37,7 +37,7 @@ func TestAccWAFRegionalWebACL_basic(t *testing.T) { Config: testAccWebACLConfig_basic(wafAclName), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "waf-regional", regexache.MustCompile(`webacl/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "waf-regional", regexache.MustCompile(`webacl/.+`)), resource.TestCheckResourceAttr(resourceName, "default_action.#", "1"), resource.TestCheckResourceAttr(resourceName, "default_action.0.type", "ALLOW"), resource.TestCheckResourceAttr(resourceName, names.AttrName, wafAclName), diff --git a/internal/service/wafregional/xss_match_set.go b/internal/service/wafregional/xss_match_set.go index 28c9ec2acab9..91b8d581283f 100644 --- a/internal/service/wafregional/xss_match_set.go +++ b/internal/service/wafregional/xss_match_set.go @@ -78,7 +78,7 @@ func resourceXSSMatchSet() *schema.Resource { func resourceXSSMatchSetCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics conn := meta.(*conns.AWSClient).WAFRegionalClient(ctx) - region := meta.(*conns.AWSClient).Region + region := meta.(*conns.AWSClient).Region(ctx) name := d.Get(names.AttrName).(string) output, err := newRetryer(conn, region).RetryWithToken(ctx, func(token *string) (interface{}, error) { @@ -132,7 +132,7 @@ func resourceXSSMatchSetRead(ctx context.Context, d *schema.ResourceData, meta i func resourceXSSMatchSetUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics conn := meta.(*conns.AWSClient).WAFRegionalClient(ctx) - region := meta.(*conns.AWSClient).Region + region := meta.(*conns.AWSClient).Region(ctx) if d.HasChange("xss_match_tuple") { o, n := d.GetChange("xss_match_tuple") @@ -148,7 +148,7 @@ func resourceXSSMatchSetUpdate(ctx context.Context, d *schema.ResourceData, meta func resourceXSSMatchSetDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics conn := meta.(*conns.AWSClient).WAFRegionalClient(ctx) - region := meta.(*conns.AWSClient).Region + region := meta.(*conns.AWSClient).Region(ctx) if oldT := d.Get("xss_match_tuple").(*schema.Set).List(); len(oldT) > 0 { var newT []interface{} diff --git a/internal/service/wafv2/ip_set_data_source_test.go b/internal/service/wafv2/ip_set_data_source_test.go index 7a687d65bc84..efb224d88d52 100644 --- a/internal/service/wafv2/ip_set_data_source_test.go +++ b/internal/service/wafv2/ip_set_data_source_test.go @@ -34,7 +34,7 @@ func TestAccWAFV2IPSetDataSource_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrPair(datasourceName, "addresses", resourceName, "addresses"), resource.TestCheckResourceAttrPair(datasourceName, names.AttrARN, resourceName, names.AttrARN), - acctest.MatchResourceAttrRegionalARN(datasourceName, names.AttrARN, "wafv2", regexache.MustCompile(fmt.Sprintf("regional/ipset/%v/.+$", name))), + acctest.MatchResourceAttrRegionalARN(ctx, datasourceName, names.AttrARN, "wafv2", regexache.MustCompile(fmt.Sprintf("regional/ipset/%v/.+$", name))), resource.TestCheckResourceAttrPair(datasourceName, names.AttrDescription, resourceName, names.AttrDescription), resource.TestCheckResourceAttrPair(datasourceName, names.AttrID, resourceName, names.AttrID), resource.TestCheckResourceAttrPair(datasourceName, "ip_address_version", resourceName, "ip_address_version"), diff --git a/internal/service/wafv2/ip_set_test.go b/internal/service/wafv2/ip_set_test.go index 30cac94b0da4..d41aa5e19e6c 100644 --- a/internal/service/wafv2/ip_set_test.go +++ b/internal/service/wafv2/ip_set_test.go @@ -36,7 +36,7 @@ func TestAccWAFV2IPSet_basic(t *testing.T) { Config: testAccIPSetConfig_basic(ipSetName), Check: resource.ComposeTestCheckFunc( testAccCheckIPSetExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/ipset/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/ipset/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, ipSetName), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ipSetName), resource.TestCheckResourceAttr(resourceName, names.AttrScope, string(awstypes.ScopeRegional)), @@ -51,7 +51,7 @@ func TestAccWAFV2IPSet_basic(t *testing.T) { Config: testAccIPSetConfig_update(ipSetName), Check: resource.ComposeTestCheckFunc( testAccCheckIPSetExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/ipset/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/ipset/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, ipSetName), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "Updated"), resource.TestCheckResourceAttr(resourceName, names.AttrScope, string(awstypes.ScopeRegional)), @@ -109,7 +109,7 @@ func TestAccWAFV2IPSet_ipv6(t *testing.T) { Config: testAccIPSetConfig_v6(ipSetName), Check: resource.ComposeTestCheckFunc( testAccCheckIPSetExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/ipset/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/ipset/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, ipSetName), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ipSetName), resource.TestCheckResourceAttr(resourceName, names.AttrScope, string(awstypes.ScopeRegional)), @@ -146,7 +146,7 @@ func TestAccWAFV2IPSet_minimal(t *testing.T) { Config: testAccIPSetConfig_minimal(ipSetName), Check: resource.ComposeTestCheckFunc( testAccCheckIPSetExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/ipset/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/ipset/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, ipSetName), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), resource.TestCheckResourceAttr(resourceName, names.AttrScope, string(awstypes.ScopeRegional)), @@ -181,7 +181,7 @@ func TestAccWAFV2IPSet_changeNameForceNew(t *testing.T) { Config: testAccIPSetConfig_basic(ipSetName), Check: resource.ComposeTestCheckFunc( testAccCheckIPSetExists(ctx, resourceName, &before), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/ipset/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/ipset/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, ipSetName), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ipSetName), resource.TestCheckResourceAttr(resourceName, names.AttrScope, string(awstypes.ScopeRegional)), @@ -193,7 +193,7 @@ func TestAccWAFV2IPSet_changeNameForceNew(t *testing.T) { Config: testAccIPSetConfig_basic(ipSetNewName), Check: resource.ComposeTestCheckFunc( testAccCheckIPSetExists(ctx, resourceName, &after), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/ipset/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/ipset/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, ipSetNewName), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ipSetNewName), resource.TestCheckResourceAttr(resourceName, names.AttrScope, string(awstypes.ScopeRegional)), @@ -244,7 +244,7 @@ func TestAccWAFV2IPSet_tags(t *testing.T) { Config: testAccIPSetConfig_oneTag(ipSetName, "Tag1", "Value1"), Check: resource.ComposeTestCheckFunc( testAccCheckIPSetExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/ipset/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/ipset/.+$`)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "1"), resource.TestCheckResourceAttr(resourceName, "tags.Tag1", "Value1"), ), @@ -259,7 +259,7 @@ func TestAccWAFV2IPSet_tags(t *testing.T) { Config: testAccIPSetConfig_twoTags(ipSetName, "Tag1", "Value1Updated", "Tag2", "Value2"), Check: resource.ComposeTestCheckFunc( testAccCheckIPSetExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/ipset/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/ipset/.+$`)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "2"), resource.TestCheckResourceAttr(resourceName, "tags.Tag1", "Value1Updated"), resource.TestCheckResourceAttr(resourceName, "tags.Tag2", "Value2"), @@ -269,7 +269,7 @@ func TestAccWAFV2IPSet_tags(t *testing.T) { Config: testAccIPSetConfig_oneTag(ipSetName, "Tag2", "Value2"), Check: resource.ComposeTestCheckFunc( testAccCheckIPSetExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/ipset/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/ipset/.+$`)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "1"), resource.TestCheckResourceAttr(resourceName, "tags.Tag2", "Value2"), ), @@ -294,7 +294,7 @@ func TestAccWAFV2IPSet_large(t *testing.T) { Config: testAccIPSetConfig_large(ipSetName), Check: resource.ComposeTestCheckFunc( testAccCheckIPSetExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/ipset/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/ipset/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, ipSetName), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ipSetName), resource.TestCheckResourceAttr(resourceName, names.AttrScope, string(awstypes.ScopeRegional)), diff --git a/internal/service/wafv2/regex_pattern_set_data_source_test.go b/internal/service/wafv2/regex_pattern_set_data_source_test.go index d11832b5dfb2..8fc1e7f08f02 100644 --- a/internal/service/wafv2/regex_pattern_set_data_source_test.go +++ b/internal/service/wafv2/regex_pattern_set_data_source_test.go @@ -33,7 +33,7 @@ func TestAccWAFV2RegexPatternSetDataSource_basic(t *testing.T) { Config: testAccRegexPatternSetDataSourceConfig_name(name), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrPair(datasourceName, names.AttrARN, resourceName, names.AttrARN), - acctest.MatchResourceAttrRegionalARN(datasourceName, names.AttrARN, "wafv2", regexache.MustCompile(fmt.Sprintf("regional/regexpatternset/%v/.+$", name))), + acctest.MatchResourceAttrRegionalARN(ctx, datasourceName, names.AttrARN, "wafv2", regexache.MustCompile(fmt.Sprintf("regional/regexpatternset/%v/.+$", name))), resource.TestCheckResourceAttrPair(datasourceName, names.AttrDescription, resourceName, names.AttrDescription), resource.TestCheckResourceAttrPair(datasourceName, names.AttrID, resourceName, names.AttrID), resource.TestCheckResourceAttrPair(datasourceName, names.AttrName, resourceName, names.AttrName), diff --git a/internal/service/wafv2/regex_pattern_set_test.go b/internal/service/wafv2/regex_pattern_set_test.go index 87e7460842a2..aeed5af21606 100644 --- a/internal/service/wafv2/regex_pattern_set_test.go +++ b/internal/service/wafv2/regex_pattern_set_test.go @@ -36,7 +36,7 @@ func TestAccWAFV2RegexPatternSet_basic(t *testing.T) { Config: testAccRegexPatternSetConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckRegexPatternSetExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/regexpatternset/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/regexpatternset/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, rName), resource.TestCheckResourceAttr(resourceName, names.AttrScope, string(awstypes.ScopeRegional)), @@ -54,7 +54,7 @@ func TestAccWAFV2RegexPatternSet_basic(t *testing.T) { Config: testAccRegexPatternSetConfig_update(rName), Check: resource.ComposeTestCheckFunc( testAccCheckRegexPatternSetExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/regexpatternset/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/regexpatternset/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "Updated"), resource.TestCheckResourceAttr(resourceName, names.AttrScope, string(awstypes.ScopeRegional)), @@ -121,7 +121,7 @@ func TestAccWAFV2RegexPatternSet_minimal(t *testing.T) { Config: testAccRegexPatternSetConfig_minimal(rName), Check: resource.ComposeTestCheckFunc( testAccCheckRegexPatternSetExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/regexpatternset/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/regexpatternset/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), resource.TestCheckResourceAttr(resourceName, names.AttrScope, string(awstypes.ScopeRegional)), @@ -149,7 +149,7 @@ func TestAccWAFV2RegexPatternSet_changeNameForceNew(t *testing.T) { Config: testAccRegexPatternSetConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckRegexPatternSetExists(ctx, resourceName, &before), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/regexpatternset/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/regexpatternset/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, rName), resource.TestCheckResourceAttr(resourceName, names.AttrScope, string(awstypes.ScopeRegional)), @@ -160,7 +160,7 @@ func TestAccWAFV2RegexPatternSet_changeNameForceNew(t *testing.T) { Config: testAccRegexPatternSetConfig_basic(rNewName), Check: resource.ComposeTestCheckFunc( testAccCheckRegexPatternSetExists(ctx, resourceName, &after), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/regexpatternset/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/regexpatternset/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, rNewName), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, rNewName), resource.TestCheckResourceAttr(resourceName, names.AttrScope, string(awstypes.ScopeRegional)), @@ -187,7 +187,7 @@ func TestAccWAFV2RegexPatternSet_tags(t *testing.T) { Config: testAccRegexPatternSetConfig_oneTag(rName, "Tag1", "Value1"), Check: resource.ComposeTestCheckFunc( testAccCheckRegexPatternSetExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/regexpatternset/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/regexpatternset/.+$`)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "1"), resource.TestCheckResourceAttr(resourceName, "tags.Tag1", "Value1"), ), @@ -202,7 +202,7 @@ func TestAccWAFV2RegexPatternSet_tags(t *testing.T) { Config: testAccRegexPatternSetConfig_twoTags(rName, "Tag1", "Value1Updated", "Tag2", "Value2"), Check: resource.ComposeTestCheckFunc( testAccCheckRegexPatternSetExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/regexpatternset/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/regexpatternset/.+$`)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "2"), resource.TestCheckResourceAttr(resourceName, "tags.Tag1", "Value1Updated"), resource.TestCheckResourceAttr(resourceName, "tags.Tag2", "Value2"), @@ -212,7 +212,7 @@ func TestAccWAFV2RegexPatternSet_tags(t *testing.T) { Config: testAccRegexPatternSetConfig_oneTag(rName, "Tag2", "Value2"), Check: resource.ComposeTestCheckFunc( testAccCheckRegexPatternSetExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/regexpatternset/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/regexpatternset/.+$`)), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "1"), resource.TestCheckResourceAttr(resourceName, "tags.Tag2", "Value2"), ), diff --git a/internal/service/wafv2/rule_group_data_source_test.go b/internal/service/wafv2/rule_group_data_source_test.go index 1181ef31ca35..29175d3b2388 100644 --- a/internal/service/wafv2/rule_group_data_source_test.go +++ b/internal/service/wafv2/rule_group_data_source_test.go @@ -33,7 +33,7 @@ func TestAccWAFV2RuleGroupDataSource_basic(t *testing.T) { Config: testAccRuleGroupDataSourceConfig_name(name), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrPair(datasourceName, names.AttrARN, resourceName, names.AttrARN), - acctest.MatchResourceAttrRegionalARN(datasourceName, names.AttrARN, "wafv2", regexache.MustCompile(fmt.Sprintf("regional/rulegroup/%v/.+$", name))), + acctest.MatchResourceAttrRegionalARN(ctx, datasourceName, names.AttrARN, "wafv2", regexache.MustCompile(fmt.Sprintf("regional/rulegroup/%v/.+$", name))), resource.TestCheckResourceAttrPair(datasourceName, names.AttrDescription, resourceName, names.AttrDescription), resource.TestCheckResourceAttrPair(datasourceName, names.AttrID, resourceName, names.AttrID), resource.TestCheckResourceAttrPair(datasourceName, names.AttrName, resourceName, names.AttrName), diff --git a/internal/service/wafv2/rule_group_test.go b/internal/service/wafv2/rule_group_test.go index e7c5e95914c6..e2479e7ca87a 100644 --- a/internal/service/wafv2/rule_group_test.go +++ b/internal/service/wafv2/rule_group_test.go @@ -39,7 +39,7 @@ func TestAccWAFV2RuleGroup_basic(t *testing.T) { Config: testAccRuleGroupConfig_basic(ruleGroupName), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, "capacity", "2"), resource.TestCheckResourceAttr(resourceName, names.AttrName, ruleGroupName), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ruleGroupName), @@ -136,7 +136,7 @@ func TestAccWAFV2RuleGroup_updateRule(t *testing.T) { Config: testAccRuleGroupConfig_basic(ruleGroupName), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, "capacity", "2"), resource.TestCheckResourceAttr(resourceName, names.AttrName, ruleGroupName), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ruleGroupName), @@ -153,7 +153,7 @@ func TestAccWAFV2RuleGroup_updateRule(t *testing.T) { Config: testAccRuleGroupConfig_basicUpdate(ruleGroupName), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, "capacity", "50"), resource.TestCheckResourceAttr(resourceName, names.AttrName, ruleGroupName), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "Updated"), @@ -206,7 +206,7 @@ func TestAccWAFV2RuleGroup_updateRuleProperties(t *testing.T) { Config: testAccRuleGroupConfig_basicUpdate(ruleGroupName), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, "capacity", "50"), resource.TestCheckResourceAttr(resourceName, names.AttrName, ruleGroupName), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "Updated"), @@ -240,7 +240,7 @@ func TestAccWAFV2RuleGroup_updateRuleProperties(t *testing.T) { Config: testAccRuleGroupConfig_updateMultiples(ruleGroupName, "rule-1", ruleName2, 1, 2), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, "capacity", "50"), resource.TestCheckResourceAttr(resourceName, names.AttrName, ruleGroupName), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "Updated"), @@ -304,7 +304,7 @@ func TestAccWAFV2RuleGroup_updateRuleProperties(t *testing.T) { Config: testAccRuleGroupConfig_updateMultiples(ruleGroupName, "rule-1", "updated", 5, 10), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, "capacity", "50"), resource.TestCheckResourceAttr(resourceName, names.AttrName, ruleGroupName), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "Updated"), @@ -389,7 +389,7 @@ func TestAccWAFV2RuleGroup_byteMatchStatement(t *testing.T) { Config: testAccRuleGroupConfig_byteMatchStatement(ruleGroupName), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ "statement.#": "1", @@ -412,7 +412,7 @@ func TestAccWAFV2RuleGroup_byteMatchStatement(t *testing.T) { Config: testAccRuleGroupConfig_byteMatchStatementUpdate(ruleGroupName), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ "statement.#": "1", @@ -453,7 +453,7 @@ func TestAccWAFV2RuleGroup_ByteMatchStatement_fieldToMatch(t *testing.T) { Config: testAccRuleGroupConfig_byteMatchStatementFieldToMatchAllQueryArguments(ruleGroupName), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ "statement.#": "1", @@ -478,7 +478,7 @@ func TestAccWAFV2RuleGroup_ByteMatchStatement_fieldToMatch(t *testing.T) { Config: testAccRuleGroupConfig_byteMatchStatementFieldToMatchBody(ruleGroupName), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ "statement.#": "1", @@ -503,7 +503,7 @@ func TestAccWAFV2RuleGroup_ByteMatchStatement_fieldToMatch(t *testing.T) { Config: testAccRuleGroupConfig_byteMatchStatementFieldToMatchCookies(ruleGroupName), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ "statement.#": "1", @@ -533,7 +533,7 @@ func TestAccWAFV2RuleGroup_ByteMatchStatement_fieldToMatch(t *testing.T) { Config: testAccRuleGroupConfig_byteMatchStatementFieldToMatchJSONBody(ruleGroupName), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ "statement.#": "1", @@ -554,7 +554,7 @@ func TestAccWAFV2RuleGroup_ByteMatchStatement_fieldToMatch(t *testing.T) { Config: testAccRuleGroupConfig_byteMatchStatementFieldToMatchHeaderOrder(ruleGroupName), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ "statement.#": "1", @@ -580,7 +580,7 @@ func TestAccWAFV2RuleGroup_ByteMatchStatement_fieldToMatch(t *testing.T) { Config: testAccRuleGroupConfig_byteMatchStatementFieldToMatchHeadersMatchPatternAll(ruleGroupName), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ "statement.#": "1", @@ -611,7 +611,7 @@ func TestAccWAFV2RuleGroup_ByteMatchStatement_fieldToMatch(t *testing.T) { Config: testAccRuleGroupConfig_byteMatchStatementFieldToMatchHeadersMatchPatternIncludedHeaders(ruleGroupName), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ "statement.#": "1", @@ -644,7 +644,7 @@ func TestAccWAFV2RuleGroup_ByteMatchStatement_fieldToMatch(t *testing.T) { Config: testAccRuleGroupConfig_byteMatchStatementFieldToMatchHeadersMatchPatternExcludedHeaders(ruleGroupName), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ "statement.#": "1", @@ -681,7 +681,7 @@ func TestAccWAFV2RuleGroup_ByteMatchStatement_fieldToMatch(t *testing.T) { Config: testAccRuleGroupConfig_byteMatchStatementFieldToMatchMethod(ruleGroupName), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ "statement.#": "1", @@ -706,7 +706,7 @@ func TestAccWAFV2RuleGroup_ByteMatchStatement_fieldToMatch(t *testing.T) { Config: testAccRuleGroupConfig_byteMatchStatementFieldToMatchQueryString(ruleGroupName), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ "statement.#": "1", @@ -731,7 +731,7 @@ func TestAccWAFV2RuleGroup_ByteMatchStatement_fieldToMatch(t *testing.T) { Config: testAccRuleGroupConfig_byteMatchStatementFieldToMatchSingleHeader(ruleGroupName), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ "statement.#": "1", @@ -757,7 +757,7 @@ func TestAccWAFV2RuleGroup_ByteMatchStatement_fieldToMatch(t *testing.T) { Config: testAccRuleGroupConfig_byteMatchStatementFieldToMatchSingleQueryArgument(ruleGroupName), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ "statement.#": "1", @@ -783,7 +783,7 @@ func TestAccWAFV2RuleGroup_ByteMatchStatement_fieldToMatch(t *testing.T) { Config: testAccRuleGroupConfig_byteMatchStatementFieldToMatchURIPath(ruleGroupName), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ "statement.#": "1", @@ -831,7 +831,7 @@ func TestAccWAFV2RuleGroup_changeNameForceNew(t *testing.T) { Config: testAccRuleGroupConfig_basic(ruleGroupName), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &before), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, "capacity", "2"), resource.TestCheckResourceAttr(resourceName, names.AttrName, ruleGroupName), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ruleGroupName), @@ -847,7 +847,7 @@ func TestAccWAFV2RuleGroup_changeNameForceNew(t *testing.T) { Config: testAccRuleGroupConfig_basic(ruleGroupNewName), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &after), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, "capacity", "2"), resource.TestCheckResourceAttr(resourceName, names.AttrName, ruleGroupNewName), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ruleGroupNewName), @@ -879,7 +879,7 @@ func TestAccWAFV2RuleGroup_changeCapacityForceNew(t *testing.T) { Config: testAccRuleGroupConfig_basic(ruleGroupName), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &before), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, "capacity", "2"), resource.TestCheckResourceAttr(resourceName, names.AttrName, ruleGroupName), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ruleGroupName), @@ -895,7 +895,7 @@ func TestAccWAFV2RuleGroup_changeCapacityForceNew(t *testing.T) { Config: testAccRuleGroupConfig_updateCapacity(ruleGroupName), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &after), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, "capacity", "3"), resource.TestCheckResourceAttr(resourceName, names.AttrName, ruleGroupName), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ruleGroupName), @@ -927,7 +927,7 @@ func TestAccWAFV2RuleGroup_changeMetricNameForceNew(t *testing.T) { Config: testAccRuleGroupConfig_basic(ruleGroupName), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &before), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, "capacity", "2"), resource.TestCheckResourceAttr(resourceName, names.AttrName, ruleGroupName), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ruleGroupName), @@ -943,7 +943,7 @@ func TestAccWAFV2RuleGroup_changeMetricNameForceNew(t *testing.T) { Config: testAccRuleGroupConfig_updateMetricName(ruleGroupName), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &after), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, "capacity", "2"), resource.TestCheckResourceAttr(resourceName, names.AttrName, ruleGroupName), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ruleGroupName), @@ -999,7 +999,7 @@ func TestAccWAFV2RuleGroup_RuleLabels(t *testing.T) { Config: testAccRuleGroupConfig_labels(ruleGroupName), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ "rule_label.#": "2", @@ -1012,7 +1012,7 @@ func TestAccWAFV2RuleGroup_RuleLabels(t *testing.T) { Config: testAccRuleGroupConfig_noLabels(ruleGroupName), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ "rule_label.#": "0", @@ -1045,7 +1045,7 @@ func TestAccWAFV2RuleGroup_geoMatchStatement(t *testing.T) { Config: testAccRuleGroupConfig_geoMatchStatement(ruleGroupName), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ "statement.#": "1", @@ -1061,7 +1061,7 @@ func TestAccWAFV2RuleGroup_geoMatchStatement(t *testing.T) { Config: testAccRuleGroupConfig_geoMatchStatementUpdate(ruleGroupName), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ "statement.#": "1", @@ -1100,7 +1100,7 @@ func TestAccWAFV2RuleGroup_GeoMatchStatement_forwardedIP(t *testing.T) { Config: testAccRuleGroupConfig_geoMatchStatementForwardedIP(ruleGroupName, "MATCH", "X-Forwarded-For"), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ "statement.#": "1", @@ -1118,7 +1118,7 @@ func TestAccWAFV2RuleGroup_GeoMatchStatement_forwardedIP(t *testing.T) { Config: testAccRuleGroupConfig_geoMatchStatementForwardedIP(ruleGroupName, "NO_MATCH", "Updated"), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ "statement.#": "1", @@ -1158,7 +1158,7 @@ func TestAccWAFV2RuleGroup_LabelMatchStatement(t *testing.T) { Config: testAccRuleGroupConfig_labelMatchStatement(ruleGroupName, "LABEL", "Hashicorp:Test:Label1"), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ "statement.#": "1", @@ -1172,7 +1172,7 @@ func TestAccWAFV2RuleGroup_LabelMatchStatement(t *testing.T) { Config: testAccRuleGroupConfig_labelMatchStatement(ruleGroupName, "NAMESPACE", "awswaf:managed:aws:bot-control:"), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ "statement.#": "1", @@ -1208,7 +1208,7 @@ func TestAccWAFV2RuleGroup_ipSetReferenceStatement(t *testing.T) { Config: testAccRuleGroupConfig_ipsetReferenceStatement(ruleGroupName), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ "statement.#": "1", @@ -1246,7 +1246,7 @@ func TestAccWAFV2RuleGroup_IPSetReferenceStatement_ipsetForwardedIP(t *testing.T Config: testAccRuleGroupConfig_ipsetReferenceStatementIPSetForwardedIP(ruleGroupName, "MATCH", "X-Forwarded-For", "FIRST"), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ "statement.#": "1", @@ -1267,7 +1267,7 @@ func TestAccWAFV2RuleGroup_IPSetReferenceStatement_ipsetForwardedIP(t *testing.T Config: testAccRuleGroupConfig_ipsetReferenceStatementIPSetForwardedIP(ruleGroupName, "NO_MATCH", "X-Forwarded-For", "LAST"), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ "statement.#": "1", @@ -1288,7 +1288,7 @@ func TestAccWAFV2RuleGroup_IPSetReferenceStatement_ipsetForwardedIP(t *testing.T Config: testAccRuleGroupConfig_ipsetReferenceStatementIPSetForwardedIP(ruleGroupName, "MATCH", "Updated", "ANY"), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ "statement.#": "1", @@ -1309,7 +1309,7 @@ func TestAccWAFV2RuleGroup_IPSetReferenceStatement_ipsetForwardedIP(t *testing.T Config: testAccRuleGroupConfig_ipsetReferenceStatement(ruleGroupName), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ "statement.#": "1", @@ -1347,7 +1347,7 @@ func TestAccWAFV2RuleGroup_logicalRuleStatements(t *testing.T) { Config: testAccRuleGroupConfig_logicalStatementAnd(ruleGroupName), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ "statement.#": "1", @@ -1362,7 +1362,7 @@ func TestAccWAFV2RuleGroup_logicalRuleStatements(t *testing.T) { Config: testAccRuleGroupConfig_logicalStatementNotAnd(ruleGroupName), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ "statement.#": "1", @@ -1379,7 +1379,7 @@ func TestAccWAFV2RuleGroup_logicalRuleStatements(t *testing.T) { Config: testAccRuleGroupConfig_logicalStatementOrNotAnd(ruleGroupName), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ "statement.#": "1", @@ -1421,7 +1421,7 @@ func TestAccWAFV2RuleGroup_minimal(t *testing.T) { Config: testAccRuleGroupConfig_minimal(ruleGroupName), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, "capacity", "2"), resource.TestCheckResourceAttr(resourceName, names.AttrName, ruleGroupName), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -1453,7 +1453,7 @@ func TestAccWAFV2RuleGroup_regexMatchStatement(t *testing.T) { Config: testAccRuleGroupConfig_regexMatchStatement(ruleGroupName), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ "statement.#": "1", @@ -1490,7 +1490,7 @@ func TestAccWAFV2RuleGroup_regexPatternSetReferenceStatement(t *testing.T) { Config: testAccRuleGroupConfig_regexPatternSetReferenceStatement(ruleGroupName), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ "statement.#": "1", @@ -1529,7 +1529,7 @@ func TestAccWAFV2RuleGroup_ruleAction(t *testing.T) { Config: testAccRuleGroupConfig_actionAllow(ruleGroupName), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, "capacity", "2"), resource.TestCheckResourceAttr(resourceName, names.AttrName, ruleGroupName), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -1551,7 +1551,7 @@ func TestAccWAFV2RuleGroup_ruleAction(t *testing.T) { Config: testAccRuleGroupConfig_actionBlock(ruleGroupName), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, "capacity", "2"), resource.TestCheckResourceAttr(resourceName, names.AttrName, ruleGroupName), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -1573,7 +1573,7 @@ func TestAccWAFV2RuleGroup_ruleAction(t *testing.T) { Config: testAccRuleGroupConfig_actionCount(ruleGroupName), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, "capacity", "2"), resource.TestCheckResourceAttr(resourceName, names.AttrName, ruleGroupName), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -1617,7 +1617,7 @@ func TestAccWAFV2RuleGroup_RuleAction_customRequestHandling(t *testing.T) { Config: testAccRuleGroupConfig_actionAllowCustomRequestHandling(ruleGroupName), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, "capacity", "2"), resource.TestCheckResourceAttr(resourceName, names.AttrName, ruleGroupName), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -1644,7 +1644,7 @@ func TestAccWAFV2RuleGroup_RuleAction_customRequestHandling(t *testing.T) { Config: testAccRuleGroupConfig_actionCountCustomRequestHandling(ruleGroupName), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, "capacity", "2"), resource.TestCheckResourceAttr(resourceName, names.AttrName, ruleGroupName), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -1693,7 +1693,7 @@ func TestAccWAFV2RuleGroup_RuleAction_customResponse(t *testing.T) { Config: testAccRuleGroupConfig_actionBlockCustomResponse(ruleGroupName), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, "capacity", "2"), resource.TestCheckResourceAttr(resourceName, names.AttrName, ruleGroupName), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -1721,7 +1721,7 @@ func TestAccWAFV2RuleGroup_RuleAction_customResponse(t *testing.T) { Config: testAccRuleGroupConfig_actionBlockCustomResponseBody(ruleGroupName, "test_body_1"), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, "capacity", "2"), resource.TestCheckResourceAttr(resourceName, names.AttrName, ruleGroupName), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -1755,7 +1755,7 @@ func TestAccWAFV2RuleGroup_RuleAction_customResponse(t *testing.T) { Config: testAccRuleGroupConfig_actionBlockCustomResponseBody(ruleGroupName, "test_body_2"), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, "capacity", "2"), resource.TestCheckResourceAttr(resourceName, names.AttrName, ruleGroupName), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), @@ -1812,7 +1812,7 @@ func TestAccWAFV2RuleGroup_sizeConstraintStatement(t *testing.T) { Config: testAccRuleGroupConfig_sizeConstraintStatement(ruleGroupName), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ "statement.#": "1", @@ -1829,7 +1829,7 @@ func TestAccWAFV2RuleGroup_sizeConstraintStatement(t *testing.T) { Config: testAccRuleGroupConfig_sizeConstraintStatementUpdate(ruleGroupName), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ "statement.#": "1", @@ -1868,7 +1868,7 @@ func TestAccWAFV2RuleGroup_sqliMatchStatement(t *testing.T) { Config: testAccRuleGroupConfig_sqliMatchStatement(ruleGroupName), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ "statement.#": "1", @@ -1891,7 +1891,7 @@ func TestAccWAFV2RuleGroup_sqliMatchStatement(t *testing.T) { Config: testAccRuleGroupConfig_sqliMatchStatementUpdate(ruleGroupName), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ "statement.#": "1", @@ -1987,7 +1987,7 @@ func TestAccWAFV2RuleGroup_xssMatchStatement(t *testing.T) { Config: testAccRuleGroupConfig_xssMatchStatement(ruleGroupName), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ "statement.#": "1", @@ -2006,7 +2006,7 @@ func TestAccWAFV2RuleGroup_xssMatchStatement(t *testing.T) { Config: testAccRuleGroupConfig_xssMatchStatementUpdate(ruleGroupName), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ "statement.#": "1", @@ -2047,7 +2047,7 @@ func TestAccWAFV2RuleGroup_rateBasedStatement(t *testing.T) { Config: testAccRuleGroupConfig_rateBasedStatement(ruleGroupName), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ "statement.#": "1", @@ -2064,7 +2064,7 @@ func TestAccWAFV2RuleGroup_rateBasedStatement(t *testing.T) { Config: testAccRuleGroupConfig_rateBasedStatement_forwardedIPConfig(ruleGroupName, "MATCH", "X-Forwarded-For"), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ "statement.#": "1", @@ -2084,7 +2084,7 @@ func TestAccWAFV2RuleGroup_rateBasedStatement(t *testing.T) { Config: testAccRuleGroupConfig_rateBasedStatement_forwardedIPConfig(ruleGroupName, "NO_MATCH", "Updated"), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ "statement.#": "1", @@ -2104,7 +2104,7 @@ func TestAccWAFV2RuleGroup_rateBasedStatement(t *testing.T) { Config: testAccRuleGroupConfig_rateBasedStatement_customKeysBasic(ruleGroupName, "cookie", "testcookie"), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ "statement.#": "1", @@ -2132,7 +2132,7 @@ func TestAccWAFV2RuleGroup_rateBasedStatement(t *testing.T) { Config: testAccRuleGroupConfig_rateBasedStatement_customKeysForwardedIP(ruleGroupName), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ "statement.#": "1", @@ -2160,7 +2160,7 @@ func TestAccWAFV2RuleGroup_rateBasedStatement(t *testing.T) { Config: testAccRuleGroupConfig_rateBasedStatement_customKeysHTTPMethod(ruleGroupName), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ "statement.#": "1", @@ -2187,7 +2187,7 @@ func TestAccWAFV2RuleGroup_rateBasedStatement(t *testing.T) { Config: testAccRuleGroupConfig_rateBasedStatement_customKeysBasic(ruleGroupName, names.AttrHeader, "x-forwrded-for"), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ "statement.#": "1", @@ -2215,7 +2215,7 @@ func TestAccWAFV2RuleGroup_rateBasedStatement(t *testing.T) { Config: testAccRuleGroupConfig_rateBasedStatement_customKeysIP(ruleGroupName), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ "statement.#": "1", @@ -2243,7 +2243,7 @@ func TestAccWAFV2RuleGroup_rateBasedStatement(t *testing.T) { Config: testAccRuleGroupConfig_rateBasedStatement_customKeysBasic(ruleGroupName, "query_argument", names.AttrKey), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ "statement.#": "1", @@ -2271,7 +2271,7 @@ func TestAccWAFV2RuleGroup_rateBasedStatement(t *testing.T) { Config: testAccRuleGroupConfig_rateBasedStatement_customKeysMinimal(ruleGroupName, "query_string"), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ "statement.#": "1", @@ -2299,7 +2299,7 @@ func TestAccWAFV2RuleGroup_rateBasedStatement(t *testing.T) { Config: testAccRuleGroupConfig_rateBasedStatement_customKeysMinimal(ruleGroupName, "uri_path"), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ "statement.#": "1", @@ -2327,7 +2327,7 @@ func TestAccWAFV2RuleGroup_rateBasedStatement(t *testing.T) { Config: testAccRuleGroupConfig_rateBasedStatement_customKeysMaxKeys(ruleGroupName), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ "statement.#": "1", @@ -2345,7 +2345,7 @@ func TestAccWAFV2RuleGroup_rateBasedStatement(t *testing.T) { Config: testAccRuleGroupConfig_rateBasedStatement_update(ruleGroupName), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ "statement.#": "1", @@ -2389,7 +2389,7 @@ func TestAccWAFV2RuleGroup_RateBased_maxNested(t *testing.T) { Config: testAccRuleGroupConfig_multipleNestedRateBasedStatements(ruleGroupName), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, ruleGroupName), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ @@ -2434,7 +2434,7 @@ func TestAccWAFV2RuleGroup_Operators_maxNested(t *testing.T) { Config: testAccRuleGroupConfig_multipleNestedOperatorStatements(ruleGroupName), Check: resource.ComposeTestCheckFunc( testAccCheckRuleGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/rulegroup/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, ruleGroupName), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ diff --git a/internal/service/wafv2/service_endpoints_gen_test.go b/internal/service/wafv2/service_endpoints_gen_test.go index 2946c9e85eff..fac47ef508aa 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/wafv2/web_acl_association_test.go b/internal/service/wafv2/web_acl_association_test.go index 2baaaf7d0bef..30e9f95c7df5 100644 --- a/internal/service/wafv2/web_acl_association_test.go +++ b/internal/service/wafv2/web_acl_association_test.go @@ -39,7 +39,7 @@ func TestAccWAFV2WebACLAssociation_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckWebACLAssociationExists(ctx, resourceName), acctest.MatchResourceAttrRegionalARNNoAccount(resourceName, names.AttrResourceARN, "apigateway", regexache.MustCompile(fmt.Sprintf("/restapis/.*/stages/%s", rName))), - acctest.MatchResourceAttrRegionalARN(resourceName, "web_acl_arn", "wafv2", regexache.MustCompile(fmt.Sprintf("regional/webacl/%s/.*", rName))), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, "web_acl_arn", "wafv2", regexache.MustCompile(fmt.Sprintf("regional/webacl/%s/.*", rName))), ), }, { diff --git a/internal/service/wafv2/web_acl_data_source_test.go b/internal/service/wafv2/web_acl_data_source_test.go index 3f57f80612be..4a957073b1ac 100644 --- a/internal/service/wafv2/web_acl_data_source_test.go +++ b/internal/service/wafv2/web_acl_data_source_test.go @@ -33,7 +33,7 @@ func TestAccWAFV2WebACLDataSource_basic(t *testing.T) { Config: testAccWebACLDataSourceConfig_name(name), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrPair(datasourceName, names.AttrARN, resourceName, names.AttrARN), - acctest.MatchResourceAttrRegionalARN(datasourceName, names.AttrARN, "wafv2", regexache.MustCompile(fmt.Sprintf("regional/webacl/%v/.+$", name))), + acctest.MatchResourceAttrRegionalARN(ctx, datasourceName, names.AttrARN, "wafv2", regexache.MustCompile(fmt.Sprintf("regional/webacl/%v/.+$", name))), resource.TestCheckResourceAttrPair(datasourceName, names.AttrDescription, resourceName, names.AttrDescription), resource.TestCheckResourceAttrPair(datasourceName, names.AttrID, resourceName, names.AttrID), resource.TestCheckResourceAttrPair(datasourceName, names.AttrName, resourceName, names.AttrName), diff --git a/internal/service/wafv2/web_acl_test.go b/internal/service/wafv2/web_acl_test.go index c18acb82613a..a6f1f9f9f7fd 100644 --- a/internal/service/wafv2/web_acl_test.go +++ b/internal/service/wafv2/web_acl_test.go @@ -51,7 +51,7 @@ func TestAccWAFV2WebACL_basic(t *testing.T) { Config: testAccWebACLConfig_basic(webACLName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, "application_integration_url", ""), resource.TestCheckResourceAttr(resourceName, "association_config.#", "0"), resource.TestCheckResourceAttr(resourceName, "captcha_config.#", "0"), @@ -99,7 +99,7 @@ func TestAccWAFV2WebACL_Update_rule(t *testing.T) { Config: testAccWebACLConfig_basicRule(webACLName), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "Updated"), resource.TestCheckResourceAttr(resourceName, names.AttrScope, string(awstypes.ScopeRegional)), @@ -157,7 +157,7 @@ func TestAccWAFV2WebACL_Update_rule(t *testing.T) { Config: testAccWebACLConfig_updateRuleNamePriorityMetric(webACLName, ruleName1, ruleName2, 10, 5), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "Updated"), resource.TestCheckResourceAttr(resourceName, names.AttrScope, string(awstypes.ScopeRegional)), @@ -243,7 +243,7 @@ func TestAccWAFV2WebACL_Update_ruleProperties(t *testing.T) { Config: testAccWebACLConfig_updateRuleNamePriorityMetric(webACLName, ruleName1, ruleName2, 5, 10), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "Updated"), resource.TestCheckResourceAttr(resourceName, names.AttrScope, string(awstypes.ScopeRegional)), @@ -304,7 +304,7 @@ func TestAccWAFV2WebACL_Update_ruleProperties(t *testing.T) { Config: testAccWebACLConfig_updateRuleNamePriorityMetric(webACLName, ruleName1, ruleName2, 10, 5), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "Updated"), resource.TestCheckResourceAttr(resourceName, names.AttrScope, string(awstypes.ScopeRegional)), @@ -365,7 +365,7 @@ func TestAccWAFV2WebACL_Update_ruleProperties(t *testing.T) { Config: testAccWebACLConfig_updateRuleNamePriorityMetric(webACLName, ruleName1, "updated", 10, 5), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "Updated"), resource.TestCheckResourceAttr(resourceName, names.AttrScope, string(awstypes.ScopeRegional)), @@ -450,7 +450,7 @@ func TestAccWAFV2WebACL_Update_nameForceNew(t *testing.T) { Config: testAccWebACLConfig_basic(webACLName), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &before), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, webACLName), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "0"), @@ -468,7 +468,7 @@ func TestAccWAFV2WebACL_Update_nameForceNew(t *testing.T) { Config: testAccWebACLConfig_basic(ruleGroupNewName), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &after), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, ruleGroupNewName), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ruleGroupNewName), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "0"), @@ -526,7 +526,7 @@ func TestAccWAFV2WebACL_ManagedRuleGroup_basic(t *testing.T) { Config: testAccWebACLConfig_managedRuleGroupStatement(webACLName), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, "application_integration_url", ""), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), @@ -549,7 +549,7 @@ func TestAccWAFV2WebACL_ManagedRuleGroup_basic(t *testing.T) { Config: testAccWebACLConfig_managedRuleGroupStatementUpdate(webACLName), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ @@ -577,7 +577,7 @@ func TestAccWAFV2WebACL_ManagedRuleGroup_basic(t *testing.T) { Config: testAccWebACLConfig_managedRuleGroupStatementRuleActionOverrides(webACLName), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ @@ -617,7 +617,7 @@ func TestAccWAFV2WebACL_ManagedRuleGroup_basic(t *testing.T) { Config: testAccWebACLConfig_managedRuleGroupStatementVersionVersion10(webACLName), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ @@ -663,7 +663,7 @@ func TestAccWAFV2WebACL_ManagedRuleGroup_ManagedRuleGroupConfig(t *testing.T) { Config: testAccWebACLConfig_managedRuleGroupStatementManagedRuleGroupConfig(webACLName), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ @@ -688,7 +688,7 @@ func TestAccWAFV2WebACL_ManagedRuleGroup_ManagedRuleGroupConfig(t *testing.T) { Config: testAccWebACLConfig_managedRuleGroupStatementManagedRuleGroupConfigUpdate(webACLName), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ @@ -737,7 +737,7 @@ func TestAccWAFV2WebACL_ManagedRuleGroup_ManagedRuleGroupConfig_ACFPRuleSet(t *t Config: testAccWebACLConfig_managedRuleGroupStatementManagedRuleGroupConfig_acfpRuleSet(webACLName), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestMatchResourceAttr(resourceName, "application_integration_url", regexache.MustCompile(`https:\/\/.*\.sdk\.awswaf\.com.*`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), @@ -781,7 +781,7 @@ func TestAccWAFV2WebACL_ManagedRuleGroup_ManagedRuleGroupConfig_ACFPRuleSet(t *t Config: testAccWebACLConfig_managedRuleGroupStatementManagedRuleGroupConfig_acfpRuleSetUpdate(webACLName), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ @@ -845,7 +845,7 @@ func TestAccWAFV2WebACL_ManagedRuleGroup_ManagedRuleGroupConfig_ATPRuleSet(t *te Config: testAccWebACLConfig_managedRuleGroupStatementManagedRuleGroupConfig_atpRuleSet(webACLName), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestMatchResourceAttr(resourceName, "application_integration_url", regexache.MustCompile(`https:\/\/.*\.sdk\.awswaf\.com.*`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), @@ -878,7 +878,7 @@ func TestAccWAFV2WebACL_ManagedRuleGroup_ManagedRuleGroupConfig_ATPRuleSet(t *te Config: testAccWebACLConfig_managedRuleGroupStatementManagedRuleGroupConfig_atpRuleSetUpdate(webACLName), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ @@ -933,7 +933,7 @@ func TestAccWAFV2WebACL_ManagedRuleGroup_ManagedRuleGroupConfig_BotControl(t *te Config: testAccWebACLConfig_managedRuleGroupStatementManagedRuleGroupConfig_botControl(webACLName), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestMatchResourceAttr(resourceName, "application_integration_url", regexache.MustCompile(`https:\/\/.*\.sdk\.awswaf\.com.*`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), @@ -972,7 +972,7 @@ func TestAccWAFV2WebACL_ManagedRuleGroup_specifyVersion(t *testing.T) { Config: testAccWebACLConfig_managedRuleGroupStatementVersionVersion10(webACLName), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ @@ -995,7 +995,7 @@ func TestAccWAFV2WebACL_ManagedRuleGroup_specifyVersion(t *testing.T) { Config: testAccWebACLConfig_managedRuleGroupStatement(webACLName), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ @@ -1040,7 +1040,7 @@ func TestAccWAFV2WebACL_minimal(t *testing.T) { Config: testAccWebACLConfig_minimal(webACLName), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "0"), @@ -1074,7 +1074,7 @@ func TestAccWAFV2WebACL_RateBased_basic(t *testing.T) { Config: testAccWebACLConfig_rateBasedStatement(webACLName), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ @@ -1097,7 +1097,7 @@ func TestAccWAFV2WebACL_RateBased_basic(t *testing.T) { Config: testAccWebACLConfig_rateBasedStatementUpdate(webACLName), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ @@ -1147,7 +1147,7 @@ func TestAccWAFV2WebACL_ByteMatchStatement_basic(t *testing.T) { Config: testAccWebACLConfig_byteMatchStatement(webACLName, string(awstypes.PositionalConstraintContainsWord), acctest.CtValue1), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ @@ -1167,7 +1167,7 @@ func TestAccWAFV2WebACL_ByteMatchStatement_basic(t *testing.T) { Config: testAccWebACLConfig_byteMatchStatement(webACLName, string(awstypes.PositionalConstraintExactly), acctest.CtValue2), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ @@ -1210,7 +1210,7 @@ func TestAccWAFV2WebACL_ByteMatchStatement_ja3fingerprint(t *testing.T) { Config: testAccWebACLConfig_byteMatchStatementJA3Fingerprint(webACLName, string(awstypes.FallbackBehaviorMatch)), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ @@ -1223,7 +1223,7 @@ func TestAccWAFV2WebACL_ByteMatchStatement_ja3fingerprint(t *testing.T) { Config: testAccWebACLConfig_byteMatchStatementJA3Fingerprint(webACLName, string(awstypes.FallbackBehaviorNoMatch)), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ @@ -1259,7 +1259,7 @@ func TestAccWAFV2WebACL_ByteMatchStatement_jsonBody(t *testing.T) { Config: testAccWebACLConfig_byteMatchStatementJSONBody(webACLName, string(awstypes.JsonMatchScopeValue), string(awstypes.FallbackBehaviorMatch), string(awstypes.OversizeHandlingNoMatch), `included_paths = ["/dogs/0/name", "/dogs/1/name"]`), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ @@ -1279,7 +1279,7 @@ func TestAccWAFV2WebACL_ByteMatchStatement_jsonBody(t *testing.T) { Config: testAccWebACLConfig_byteMatchStatementJSONBody(webACLName, string(awstypes.JsonMatchScopeAll), string(awstypes.FallbackBehaviorNoMatch), string(awstypes.OversizeHandlingContinue), "all {}"), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ @@ -1320,7 +1320,7 @@ func TestAccWAFV2WebACL_ByteMatchStatement_body(t *testing.T) { Config: testAccWebACLConfig_byteMatchStatementBody(webACLName, string(awstypes.OversizeHandlingNoMatch)), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ @@ -1333,7 +1333,7 @@ func TestAccWAFV2WebACL_ByteMatchStatement_body(t *testing.T) { Config: testAccWebACLConfig_byteMatchStatementBody(webACLName, string(awstypes.OversizeHandlingContinue)), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ @@ -1369,7 +1369,7 @@ func TestAccWAFV2WebACL_ByteMatchStatement_headerOrder(t *testing.T) { Config: testAccWebACLConfig_byteMatchStatementHeaderOrder(webACLName, string(awstypes.OversizeHandlingMatch)), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ @@ -1382,7 +1382,7 @@ func TestAccWAFV2WebACL_ByteMatchStatement_headerOrder(t *testing.T) { Config: testAccWebACLConfig_byteMatchStatementHeaderOrder(webACLName, string(awstypes.OversizeHandlingNoMatch)), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ @@ -1420,7 +1420,7 @@ func TestAccWAFV2WebACL_GeoMatch_basic(t *testing.T) { Config: testAccWebACLConfig_geoMatchStatement(webACLName, countryCode), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, "default_action.#", "1"), resource.TestCheckResourceAttr(resourceName, "default_action.0.allow.#", "1"), @@ -1454,7 +1454,7 @@ func TestAccWAFV2WebACL_GeoMatch_basic(t *testing.T) { Config: testAccWebACLConfig_geoMatchStatement(webACLName, countryCodes), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, "default_action.#", "1"), resource.TestCheckResourceAttr(resourceName, "default_action.0.allow.#", "1"), @@ -1512,7 +1512,7 @@ func TestAccWAFV2WebACL_GeoMatch_forwardedIP(t *testing.T) { Config: testAccWebACLConfig_geoMatchStatementForwardedIP(webACLName, "MATCH", "X-Forwarded-For"), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ @@ -1534,7 +1534,7 @@ func TestAccWAFV2WebACL_GeoMatch_forwardedIP(t *testing.T) { Config: testAccWebACLConfig_geoMatchStatementForwardedIP(webACLName, "NO_MATCH", "Updated"), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ @@ -1579,7 +1579,7 @@ func TestAccWAFV2WebACL_LabelMatchStatement(t *testing.T) { Config: testAccWebACLConfig_labelMatchStatement(webACLName, "LABEL", "Hashicorp:Test:Label1"), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ @@ -1594,7 +1594,7 @@ func TestAccWAFV2WebACL_LabelMatchStatement(t *testing.T) { Config: testAccWebACLConfig_labelMatchStatement(webACLName, "NAMESPACE", "awswaf:managed:aws:bot-control:"), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ @@ -1632,7 +1632,7 @@ func TestAccWAFV2WebACL_RuleLabels(t *testing.T) { Config: testAccWebACLConfig_ruleLabels(webACLName), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ @@ -1646,7 +1646,7 @@ func TestAccWAFV2WebACL_RuleLabels(t *testing.T) { Config: testAccWebACLConfig_noRuleLabels(webACLName), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ @@ -1681,7 +1681,7 @@ func TestAccWAFV2WebACL_IPSetReference_basic(t *testing.T) { Config: testAccWebACLConfig_ipsetReference(webACLName), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ @@ -1729,7 +1729,7 @@ func TestAccWAFV2WebACL_IPSetReference_forwardedIP(t *testing.T) { Config: testAccWebACLConfig_ipsetReferenceForwardedIP(webACLName, "MATCH", "X-Forwarded-For", "FIRST"), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ @@ -1751,7 +1751,7 @@ func TestAccWAFV2WebACL_IPSetReference_forwardedIP(t *testing.T) { Config: testAccWebACLConfig_ipsetReferenceForwardedIP(webACLName, "NO_MATCH", "X-Forwarded-For", "LAST"), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ @@ -1773,7 +1773,7 @@ func TestAccWAFV2WebACL_IPSetReference_forwardedIP(t *testing.T) { Config: testAccWebACLConfig_ipsetReferenceForwardedIP(webACLName, "MATCH", "Updated", "ANY"), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ @@ -1795,7 +1795,7 @@ func TestAccWAFV2WebACL_IPSetReference_forwardedIP(t *testing.T) { Config: testAccWebACLConfig_ipsetReference(webACLName), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ @@ -1835,7 +1835,7 @@ func TestAccWAFV2WebACL_RateBased_customKeys(t *testing.T) { Config: testAccWebACLConfig_rateBasedStatement_customKeysBasic(webACLName, "cookie", "testcookie"), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ @@ -1864,7 +1864,7 @@ func TestAccWAFV2WebACL_RateBased_customKeys(t *testing.T) { Config: testAccWebACLConfig_rateBasedStatement_customKeysForwardedIP(webACLName), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ @@ -1893,7 +1893,7 @@ func TestAccWAFV2WebACL_RateBased_customKeys(t *testing.T) { Config: testAccWebACLConfig_rateBasedStatement_customKeysHTTPMethod(webACLName), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ @@ -1921,7 +1921,7 @@ func TestAccWAFV2WebACL_RateBased_customKeys(t *testing.T) { Config: testAccWebACLConfig_rateBasedStatement_customKeysBasic(webACLName, names.AttrHeader, "x-forwrded-for"), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ @@ -1950,7 +1950,7 @@ func TestAccWAFV2WebACL_RateBased_customKeys(t *testing.T) { Config: testAccWebACLConfig_rateBasedStatement_customKeysIP(webACLName), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ @@ -1979,7 +1979,7 @@ func TestAccWAFV2WebACL_RateBased_customKeys(t *testing.T) { Config: testAccWebACLConfig_rateBasedStatement_customKeysBasic(webACLName, "query_argument", names.AttrKey), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ @@ -2008,7 +2008,7 @@ func TestAccWAFV2WebACL_RateBased_customKeys(t *testing.T) { Config: testAccWebACLConfig_rateBasedStatement_customKeysMinimal(webACLName, "query_string"), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ @@ -2037,7 +2037,7 @@ func TestAccWAFV2WebACL_RateBased_customKeys(t *testing.T) { Config: testAccWebACLConfig_rateBasedStatement_customKeysMinimal(webACLName, "uri_path"), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ @@ -2066,7 +2066,7 @@ func TestAccWAFV2WebACL_RateBased_customKeys(t *testing.T) { Config: testAccWebACLConfig_rateBasedStatement_customKeysMaxKeys(webACLName), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ @@ -2108,7 +2108,7 @@ func TestAccWAFV2WebACL_RateBased_forwardedIP(t *testing.T) { Config: testAccWebACLConfig_rateBasedStatementForwardedIP(webACLName, "MATCH", "X-Forwarded-For"), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ @@ -2133,7 +2133,7 @@ func TestAccWAFV2WebACL_RateBased_forwardedIP(t *testing.T) { Config: testAccWebACLConfig_rateBasedStatementForwardedIP(webACLName, "NO_MATCH", "Updated"), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ @@ -2181,7 +2181,7 @@ func TestAccWAFV2WebACL_RuleGroupReference_basic(t *testing.T) { Config: testAccWebACLConfig_ruleGroupReferenceStatement(webACLName), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ @@ -2202,7 +2202,7 @@ func TestAccWAFV2WebACL_RuleGroupReference_basic(t *testing.T) { Config: testAccWebACLConfig_ruleGroupReferenceStatementUpdate(webACLName), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ @@ -2448,7 +2448,7 @@ func TestAccWAFV2WebACL_Custom_requestHandling(t *testing.T) { Config: testAccWebACLConfig_customRequestHandlingAllow(webACLName, "x-hdr1", "x-hdr2"), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, "default_action.#", "1"), resource.TestCheckResourceAttr(resourceName, "default_action.0.allow.#", "1"), @@ -2488,7 +2488,7 @@ func TestAccWAFV2WebACL_Custom_requestHandling(t *testing.T) { Config: testAccWebACLConfig_customRequestHandlingCount(webACLName, "x-hdr1", "x-hdr2"), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, "default_action.#", "1"), resource.TestCheckResourceAttr(resourceName, "default_action.0.allow.#", "1"), @@ -2521,7 +2521,7 @@ func TestAccWAFV2WebACL_Custom_requestHandling(t *testing.T) { Config: testAccWebACLConfig_customRequestHandlingCaptcha(webACLName, "x-hdr1", "x-hdr2"), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, "default_action.#", "1"), resource.TestCheckResourceAttr(resourceName, "default_action.0.allow.#", "1"), @@ -2559,7 +2559,7 @@ func TestAccWAFV2WebACL_Custom_requestHandling(t *testing.T) { Config: testAccWebACLConfig_customRequestHandlingChallenge(webACLName), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, "default_action.#", "1"), resource.TestCheckResourceAttr(resourceName, "default_action.0.allow.#", "1"), @@ -2603,7 +2603,7 @@ func TestAccWAFV2WebACL_Custom_response(t *testing.T) { Config: testAccWebACLConfig_customResponse(webACLName, 401, 403, "x-hdr1"), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, "default_action.#", "1"), resource.TestCheckResourceAttr(resourceName, "default_action.0.allow.#", "0"), @@ -2635,7 +2635,7 @@ func TestAccWAFV2WebACL_Custom_response(t *testing.T) { Config: testAccWebACLConfig_customResponse(webACLName, 404, 429, "x-hdr2"), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, "default_action.#", "1"), resource.TestCheckResourceAttr(resourceName, "default_action.0.allow.#", "0"), @@ -2667,7 +2667,7 @@ func TestAccWAFV2WebACL_Custom_response(t *testing.T) { Config: testAccWebACLConfig_customResponseBody(webACLName, 404, 429), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, "custom_response_body.#", "1"), resource.TestCheckResourceAttr(resourceName, "custom_response_body.0.key", "test_body"), @@ -2772,7 +2772,7 @@ func TestAccWAFV2WebACL_RateBased_maxNested(t *testing.T) { Config: testAccWebACLConfig_multipleNestedRateBasedStatements(webACLName), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ @@ -2819,7 +2819,7 @@ func TestAccWAFV2WebACL_Operators_maxNested(t *testing.T) { Config: testAccWebACLConfig_multipleNestedOperatorStatements(webACLName), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ @@ -2867,7 +2867,7 @@ func TestAccWAFV2WebACL_tokenDomains(t *testing.T) { Config: testAccWebACLConfig_tokenDomains(webACLName, domain1, domain2), Check: resource.ComposeTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, webACLName), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "0"), @@ -2914,7 +2914,7 @@ func TestAccWAFV2WebACL_associationConfigCloudFront(t *testing.T) { Config: testAccWebACLConfig_associationConfigCloudFront(webACLName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`global/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`global/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, "association_config.#", "1"), resource.TestCheckResourceAttr(resourceName, "association_config.0.request_body.#", "1"), resource.TestCheckResourceAttr(resourceName, "association_config.0.request_body.0.cloudfront.#", "1"), @@ -2959,7 +2959,7 @@ func TestAccWAFV2WebACL_associationConfigRegional(t *testing.T) { Config: testAccWebACLConfig_associationConfigRegional(webACLName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, "association_config.#", "1"), resource.TestCheckResourceAttr(resourceName, "association_config.0.request_body.#", "1"), resource.TestCheckResourceAttr(resourceName, "association_config.0.request_body.0.api_gateway.#", "1"), @@ -3011,7 +3011,7 @@ func TestAccWAFV2WebACL_CloudFrontScope(t *testing.T) { Config: testAccWebACLConfig_CloudFrontScope(webACLName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`global/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`global/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, names.AttrName, webACLName), resource.TestCheckResourceAttr(resourceName, names.AttrScope, string(awstypes.ScopeCloudfront)), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), @@ -3063,7 +3063,7 @@ func TestAccWAFV2WebACL_ruleJSON(t *testing.T) { Config: testAccWebACLConfig_jsonRule(webACLName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttrSet(resourceName, "rule_json"), ), }, @@ -3078,7 +3078,7 @@ func TestAccWAFV2WebACL_ruleJSON(t *testing.T) { Config: testAccWebACLConfig_jsonRuleUpdate(webACLName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttrSet(resourceName, "rule_json"), ), }, @@ -3102,7 +3102,7 @@ func TestAccWAFV2WebACL_ruleJSONToRule(t *testing.T) { Config: testAccWebACLConfig_jsonRule(webACLName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "0"), resource.TestCheckResourceAttrSet(resourceName, "rule_json"), ), @@ -3111,7 +3111,7 @@ func TestAccWAFV2WebACL_ruleJSONToRule(t *testing.T) { Config: testAccWebACLConfig_jsonRuleEquivalent(webACLName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckWebACLExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "wafv2", regexache.MustCompile(`regional/webacl/.+$`)), resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "rule.*", map[string]string{ names.AttrName: "rule-1", diff --git a/internal/service/wellarchitected/service_endpoints_gen_test.go b/internal/service/wellarchitected/service_endpoints_gen_test.go index b87b57105cbd..3c67298f49df 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 aa464604a7da..ec7330b8eceb 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 08f5e550afec..affd4f253cf4 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 f07d70b956c3..a4f6f0e89f87 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/encryption_config.go b/internal/service/xray/encryption_config.go index 9a23a8328189..d5081e0dd39a 100644 --- a/internal/service/xray/encryption_config.go +++ b/internal/service/xray/encryption_config.go @@ -67,7 +67,7 @@ func resourceEncryptionPutConfig(ctx context.Context, d *schema.ResourceData, me return sdkdiag.AppendErrorf(diags, "creating XRay Encryption Config: %s", err) } - d.SetId(meta.(*conns.AWSClient).Region) + d.SetId(meta.(*conns.AWSClient).Region(ctx)) if _, err := waitEncryptionConfigAvailable(ctx, conn); err != nil { return sdkdiag.AppendErrorf(diags, "waiting for XRay Encryption Config (%s) create: %s", d.Id(), err) diff --git a/internal/service/xray/group_test.go b/internal/service/xray/group_test.go index 2f6c4fde2883..ade4033259f7 100644 --- a/internal/service/xray/group_test.go +++ b/internal/service/xray/group_test.go @@ -36,7 +36,7 @@ func TestAccXRayGroup_basic(t *testing.T) { Config: testAccGroupConfig_basic(rName, "responsetime > 5"), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "xray", regexache.MustCompile(`group/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "xray", regexache.MustCompile(`group/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrGroupName, rName), resource.TestCheckResourceAttr(resourceName, "filter_expression", "responsetime > 5"), resource.TestCheckResourceAttr(resourceName, "insights_configuration.#", "1"), // Computed. @@ -51,7 +51,7 @@ func TestAccXRayGroup_basic(t *testing.T) { Config: testAccGroupConfig_basic(rName, "responsetime > 10"), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckGroupExists(ctx, resourceName, &v), - acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "xray", regexache.MustCompile(`group/.+`)), + acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "xray", regexache.MustCompile(`group/.+`)), resource.TestCheckResourceAttr(resourceName, names.AttrGroupName, rName), resource.TestCheckResourceAttr(resourceName, "filter_expression", "responsetime > 10"), resource.TestCheckResourceAttr(resourceName, "insights_configuration.#", "1"), diff --git a/internal/service/xray/sampling_rule_test.go b/internal/service/xray/sampling_rule_test.go index 4e4943cae940..f096064a9f62 100644 --- a/internal/service/xray/sampling_rule_test.go +++ b/internal/service/xray/sampling_rule_test.go @@ -36,7 +36,7 @@ func TestAccXRaySamplingRule_basic(t *testing.T) { Config: testAccSamplingRuleConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckSamplingRuleExists(ctx, resourceName, &v), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "xray", fmt.Sprintf("sampling-rule/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "xray", fmt.Sprintf("sampling-rule/%s", rName)), resource.TestCheckResourceAttr(resourceName, names.AttrPriority, "5"), resource.TestCheckResourceAttr(resourceName, names.AttrVersion, "1"), resource.TestCheckResourceAttr(resourceName, "reservoir_size", "10"), @@ -78,7 +78,7 @@ func TestAccXRaySamplingRule_update(t *testing.T) { Config: testAccSamplingRuleConfig_update(rName, sdkacctest.RandIntRange(0, 9999), sdkacctest.RandIntRange(0, 2147483647)), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckSamplingRuleExists(ctx, resourceName, &v), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "xray", fmt.Sprintf("sampling-rule/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "xray", fmt.Sprintf("sampling-rule/%s", rName)), resource.TestCheckResourceAttrSet(resourceName, names.AttrPriority), resource.TestCheckResourceAttrSet(resourceName, "reservoir_size"), resource.TestCheckResourceAttr(resourceName, names.AttrVersion, "1"), @@ -96,7 +96,7 @@ func TestAccXRaySamplingRule_update(t *testing.T) { Config: testAccSamplingRuleConfig_update(rName, updatedPriority, updatedReservoirSize), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckSamplingRuleExists(ctx, resourceName, &v), - acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "xray", fmt.Sprintf("sampling-rule/%s", rName)), + acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "xray", fmt.Sprintf("sampling-rule/%s", rName)), resource.TestCheckResourceAttr(resourceName, names.AttrPriority, strconv.Itoa(updatedPriority)), resource.TestCheckResourceAttr(resourceName, "reservoir_size", strconv.Itoa(updatedReservoirSize)), resource.TestCheckResourceAttr(resourceName, names.AttrVersion, "1"), diff --git a/internal/service/xray/service_endpoints_gen_test.go b/internal/service/xray/service_endpoints_gen_test.go index 7d153eedbc3e..476a77a92df8 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 670bb617dff5..bc2569aaf0f7 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/internal/sweep/register_gen_test.go b/internal/sweep/register_gen_test.go index cddf0cb01ce3..ee8cde72556c 100644 --- a/internal/sweep/register_gen_test.go +++ b/internal/sweep/register_gen_test.go @@ -134,6 +134,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/service/rum" "github.com/hashicorp/terraform-provider-aws/internal/service/s3" "github.com/hashicorp/terraform-provider-aws/internal/service/s3control" + "github.com/hashicorp/terraform-provider-aws/internal/service/s3tables" "github.com/hashicorp/terraform-provider-aws/internal/service/sagemaker" "github.com/hashicorp/terraform-provider-aws/internal/service/scheduler" "github.com/hashicorp/terraform-provider-aws/internal/service/schemas" @@ -301,6 +302,7 @@ func registerSweepers() { rum.RegisterSweepers() s3.RegisterSweepers() s3control.RegisterSweepers() + s3tables.RegisterSweepers() sagemaker.RegisterSweepers() scheduler.RegisterSweepers() schemas.RegisterSweepers() diff --git a/internal/sweep/service_packages_gen_test.go b/internal/sweep/service_packages_gen_test.go index 4e11fb03bff2..bb288e0459dd 100644 --- a/internal/sweep/service_packages_gen_test.go +++ b/internal/sweep/service_packages_gen_test.go @@ -208,6 +208,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/service/s3" "github.com/hashicorp/terraform-provider-aws/internal/service/s3control" "github.com/hashicorp/terraform-provider-aws/internal/service/s3outposts" + "github.com/hashicorp/terraform-provider-aws/internal/service/s3tables" "github.com/hashicorp/terraform-provider-aws/internal/service/sagemaker" "github.com/hashicorp/terraform-provider-aws/internal/service/scheduler" "github.com/hashicorp/terraform-provider-aws/internal/service/schemas" @@ -458,6 +459,7 @@ func servicePackages(ctx context.Context) []conns.ServicePackage { s3.ServicePackage(ctx), s3control.ServicePackage(ctx), s3outposts.ServicePackage(ctx), + s3tables.ServicePackage(ctx), sagemaker.ServicePackage(ctx), scheduler.ServicePackage(ctx), schemas.ServicePackage(ctx), diff --git a/names/consts_gen.go b/names/consts_gen.go index d6bb0032a28e..2ff235a3f3e3 100644 --- a/names/consts_gen.go +++ b/names/consts_gen.go @@ -202,6 +202,7 @@ const ( S3 = "s3" S3Control = "s3control" S3Outposts = "s3outposts" + S3Tables = "s3tables" SES = "ses" SESV2 = "sesv2" SFN = "sfn" @@ -452,6 +453,7 @@ const ( S3ServiceID = "S3" S3ControlServiceID = "S3 Control" S3OutpostsServiceID = "S3Outposts" + S3TablesServiceID = "S3Tables" SESServiceID = "SES" SESV2ServiceID = "SESv2" SFNServiceID = "SFN" diff --git a/names/data/names_data.hcl b/names/data/names_data.hcl index b46f324edbd2..d51897bf5a0d 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" { @@ -7482,6 +7482,28 @@ service "s3control" { brand = "AWS" } +service "s3tables" { + sdk { + id = "S3Tables" + } + + names { + provider_name_upper = "S3Tables" + human_friendly = "S3 Tables" + } + + endpoint_info { + endpoint_api_call = "ListTableBuckets" + } + + resource_prefix { + correct = "aws_s3tables_" + } + + doc_prefix = ["s3tables_"] + brand = "Amazon" +} + service "glacier" { sdk { id = "Glacier" @@ -9454,7 +9476,7 @@ service "ec2" { split_package = "ec2" file_prefix = "vpc_" - doc_prefix = ["default_network_", "default_route_", "default_security_", "default_subnet", "default_vpc", "ec2_managed_", "ec2_network_", "ec2_subnet_", "ec2_traffic_", "egress_only_", "flow_log", "internet_gateway", "main_route_", "nat_", "network_", "prefix_list", "route_", "route\\.", "security_group", "subnet", "vpc_dhcp_", "vpc_endpoint", "vpc_ipv", "vpc_network_performance", "vpc_peering_", "vpc_security_group_", "vpc\\.", "vpcs\\."] + doc_prefix = ["default_network_", "default_route_", "default_security_", "default_subnet", "default_vpc", "ec2_managed_", "ec2_network_", "ec2_subnet_", "ec2_traffic_", "egress_only_", "flow_log", "internet_gateway", "main_route_", "nat_", "network_", "prefix_list", "route_", "route\\.", "security_group", "subnet", "vpc_dhcp_", "vpc_endpoint", "vpc_ipv", "vpc_network_performance", "vpc_peering_", "vpc_security_group_", "vpc\\.", "vpcs\\.", "vpc_block_public_access_"] brand = "Amazon" exclude = true allowed_subcategory = true diff --git a/names/names.go b/names/names.go index 8819bf43d20c..6c63c0ff57a9 100644 --- a/names/names.go +++ b/names/names.go @@ -145,60 +145,6 @@ const ( WAFRegionalEndpointID = "waf-regional" ) -const ( - // AWS Standard partition's regions. - GlobalRegionID = "aws-global" // AWS Standard global region. - - AFSouth1RegionID = "af-south-1" // Africa (Cape Town). - APEast1RegionID = "ap-east-1" // Asia Pacific (Hong Kong). - APNortheast1RegionID = "ap-northeast-1" // Asia Pacific (Tokyo). - APNortheast2RegionID = "ap-northeast-2" // Asia Pacific (Seoul). - APNortheast3RegionID = "ap-northeast-3" // Asia Pacific (Osaka). - APSouth1RegionID = "ap-south-1" // Asia Pacific (Mumbai). - APSouth2RegionID = "ap-south-2" // Asia Pacific (Hyderabad). - APSoutheast1RegionID = "ap-southeast-1" // Asia Pacific (Singapore). - APSoutheast2RegionID = "ap-southeast-2" // Asia Pacific (Sydney). - APSoutheast3RegionID = "ap-southeast-3" // Asia Pacific (Jakarta). - APSoutheast4RegionID = "ap-southeast-4" // Asia Pacific (Melbourne). - APSoutheast5RegionID = "ap-southeast-5" // Asia Pacific (Malaysia). - CACentral1RegionID = "ca-central-1" // Canada (Central). - CAWest1RegionID = "ca-west-1" // Canada West (Calgary). - EUCentral1RegionID = "eu-central-1" // Europe (Frankfurt). - EUCentral2RegionID = "eu-central-2" // Europe (Zurich). - EUNorth1RegionID = "eu-north-1" // Europe (Stockholm). - EUSouth1RegionID = "eu-south-1" // Europe (Milan). - EUSouth2RegionID = "eu-south-2" // Europe (Spain). - EUWest1RegionID = "eu-west-1" // Europe (Ireland). - EUWest2RegionID = "eu-west-2" // Europe (London). - EUWest3RegionID = "eu-west-3" // Europe (Paris). - ILCentral1RegionID = "il-central-1" // Israel (Tel Aviv). - MECentral1RegionID = "me-central-1" // Middle East (UAE). - MESouth1RegionID = "me-south-1" // Middle East (Bahrain). - SAEast1RegionID = "sa-east-1" // South America (Sao Paulo). - USEast1RegionID = "us-east-1" // US East (N. Virginia). - USEast2RegionID = "us-east-2" // US East (Ohio). - USWest1RegionID = "us-west-1" // US West (N. California). - USWest2RegionID = "us-west-2" // US West (Oregon). - - // AWS China partition's regions. - CNNorth1RegionID = "cn-north-1" // China (Beijing). - CNNorthwest1RegionID = "cn-northwest-1" // China (Ningxia). - - // AWS GovCloud (US) partition's regions. - USGovEast1RegionID = "us-gov-east-1" // AWS GovCloud (US-East). - USGovWest1RegionID = "us-gov-west-1" // AWS GovCloud (US-West). - - // AWS ISO (US) partition's regions. - USISOEast1RegionID = "us-iso-east-1" // US ISO East. - USISOWest1RegionID = "us-iso-west-1" // US ISO WEST. - - // AWS ISOB (US) partition's regions. - USISOBEast1RegionID = "us-isob-east-1" // US ISOB East (Ohio). - - // AWS ISOF partition's regions. - EUISOEWest1RegionID = "eu-isoe-west-1" // EU ISOE West. -) - // PartitionForRegion returns the partition for the given Region. // Returns the empty partition if the Region is empty. // Returns the standard partition if no known partition includes the Region. diff --git a/skaff/go.mod b/skaff/go.mod index 666d09cb44d3..64f109b0ebbb 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 @@ -18,7 +18,7 @@ require ( github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/mitchellh/go-wordwrap v1.0.1 // indirect github.com/spf13/pflag v1.0.5 // indirect - github.com/zclconf/go-cty v1.15.0 // indirect + github.com/zclconf/go-cty v1.15.1 // indirect golang.org/x/mod v0.22.0 // indirect golang.org/x/sync v0.9.0 // indirect golang.org/x/text v0.20.0 // indirect diff --git a/skaff/go.sum b/skaff/go.sum index f09a0c93cf9d..a9f5b51d57c0 100644 --- a/skaff/go.sum +++ b/skaff/go.sum @@ -26,8 +26,8 @@ github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/zclconf/go-cty v1.15.0 h1:tTCRWxsexYUmtt/wVxgDClUe+uQusuI443uL6e+5sXQ= -github.com/zclconf/go-cty v1.15.0/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= +github.com/zclconf/go-cty v1.15.1 h1:RgQYm4j2EvoBRXOPxhUvxPzRrGDo1eCOhHXuGfrj5S0= +github.com/zclconf/go-cty v1.15.1/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940 h1:4r45xpDWB6ZMSMNJFMOjqrGHynW3DIBuR2H9j0ug+Mo= github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940/go.mod h1:CmBdvvj3nqzfzJ6nTCIwDTPZ56aVGvDrmztiO5g3qrM= golang.org/x/mod v0.22.0 h1:D4nJWe9zXqHOmWqj4VMOJhvzj7bEZg4wEYa759z1pH4= diff --git a/skaff/resource/resourcetest.gtpl b/skaff/resource/resourcetest.gtpl index 0bc28db06741..087c11dca964 100644 --- a/skaff/resource/resourcetest.gtpl +++ b/skaff/resource/resourcetest.gtpl @@ -213,7 +213,7 @@ func TestAcc{{ .Service }}{{ .Resource }}_disappears(t *testing.T) { PreCheck: func() { acctest.PreCheck(ctx, t) acctest.PreCheckPartitionHasService(t, names.{{ .Service }}EndpointID) - testAccPreCheck(t) + testAccPreCheck(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, names.{{ .Service }}ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, @@ -252,18 +252,15 @@ func testAccCheck{{ .Resource }}Destroy(ctx context.Context) resource.TestCheckF continue } - input := &{{ .SDKPackage }}.Describe{{ .Resource }}Input{ - {{ .Resource }}Id: aws.String(rs.Primary.ID), - } - - _, err := conn.Describe{{ .Resource }}(ctx, &{{ .SDKPackage }}.Describe{{ .Resource }}Input{ - {{ .Resource }}Id: aws.String(rs.Primary.ID), - }) - - if errs.IsA[*types.ResourceNotFoundException](err){ + {{ if .IncludeComments }} + // TIP: ==== FINDERS ==== + // The find function should be exported. Since it won't be used outside of the package, it can be exported + // in the `exports_test.go` file. + {{- end }} + _, err := tf{{ .ServicePackage }}.Find{{ .Resource }}ByID(ctx, conn, rs.Primary.ID) + if tfresource.NotFound(err) { return nil } - if err != nil { return create.Error(names.{{ .Service }}, create.ErrActionCheckingDestroyed, tf{{ .ServicePackage }}.ResName{{ .Resource }}, rs.Primary.ID, err) } @@ -288,10 +285,7 @@ func testAccCheck{{ .Resource }}Exists(ctx context.Context, name string, {{ .Res conn := acctest.Provider.Meta().(*conns.AWSClient).{{ .Service }}Client(ctx) - resp, err := conn.Describe{{ .Resource }}(ctx, &{{ .SDKPackage }}.Describe{{ .Resource }}Input{ - {{ .Resource }}Id: aws.String(rs.Primary.ID), - }) - + resp, err := tf{{ .ServicePackage }}.Find{{ .Resource }}ByID(ctx, conn, rs.Primary.ID) if err != nil { return create.Error(names.{{ .Service }}, create.ErrActionCheckingExistence, tf{{ .ServicePackage }}.ResName{{ .Resource }}, rs.Primary.ID, err) } diff --git a/tools/literally/go.mod b/tools/literally/go.mod index 103fd526b7a0..ed1642207de2 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 3f16ccdd91fc..e91790dab7c4 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 @@ -13,273 +13,273 @@ require ( github.com/Masterminds/goutils v1.1.1 // indirect github.com/Masterminds/semver/v3 v3.3.1 // indirect github.com/Masterminds/sprig/v3 v3.3.0 // indirect - github.com/ProtonMail/go-crypto v1.1.2 // indirect + github.com/ProtonMail/go-crypto v1.1.3 // indirect github.com/YakDriver/go-version v0.1.0 // indirect github.com/YakDriver/regexache v0.24.0 // indirect github.com/agext/levenshtein v1.2.3 // indirect github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect github.com/armon/go-radix v1.0.0 // indirect github.com/aws/aws-sdk-go v1.55.5 // indirect - github.com/aws/aws-sdk-go-v2 v1.32.5 // indirect + github.com/aws/aws-sdk-go-v2 v1.32.6 // indirect github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.7 // indirect - 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/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/config v1.28.6 // indirect + github.com/aws/aws-sdk-go-v2/credentials v1.17.47 // indirect + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.21 // indirect + github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.43 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.25 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.25 // indirect github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 // indirect - github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.24 // indirect - github.com/aws/aws-sdk-go-v2/service/accessanalyzer v1.36.1 // indirect - github.com/aws/aws-sdk-go-v2/service/account v1.21.6 // indirect - github.com/aws/aws-sdk-go-v2/service/acm v1.30.6 // indirect - 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/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/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/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/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 - github.com/aws/aws-sdk-go-v2/service/bcmdataexports v1.7.6 // indirect - 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/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 - github.com/aws/aws-sdk-go-v2/service/cleanrooms v1.20.1 // indirect - 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/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/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/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 - github.com/aws/aws-sdk-go-v2/service/codecommit v1.27.6 // indirect - github.com/aws/aws-sdk-go-v2/service/codeconnections v1.5.6 // indirect - 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/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/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/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/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 - github.com/aws/aws-sdk-go-v2/service/databrew v1.33.6 // indirect - github.com/aws/aws-sdk-go-v2/service/dataexchange v1.33.4 // indirect - github.com/aws/aws-sdk-go-v2/service/datapipeline v1.25.6 // indirect - github.com/aws/aws-sdk-go-v2/service/datasync v1.43.4 // indirect - github.com/aws/aws-sdk-go-v2/service/datazone v1.24.0 // indirect - github.com/aws/aws-sdk-go-v2/service/dax v1.23.6 // indirect - github.com/aws/aws-sdk-go-v2/service/detective v1.31.6 // indirect - github.com/aws/aws-sdk-go-v2/service/devicefarm v1.28.6 // indirect - 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/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/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/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/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/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 - github.com/aws/aws-sdk-go-v2/service/evidently v1.23.6 // indirect - github.com/aws/aws-sdk-go-v2/service/finspace v1.28.6 // indirect - github.com/aws/aws-sdk-go-v2/service/firehose v1.35.1 // indirect - github.com/aws/aws-sdk-go-v2/service/fis v1.31.1 // indirect - github.com/aws/aws-sdk-go-v2/service/fms v1.38.4 // indirect - github.com/aws/aws-sdk-go-v2/service/fsx v1.49.6 // indirect - github.com/aws/aws-sdk-go-v2/service/gamelift v1.37.1 // indirect - github.com/aws/aws-sdk-go-v2/service/glacier v1.26.6 // indirect - github.com/aws/aws-sdk-go-v2/service/globalaccelerator v1.29.6 // indirect - github.com/aws/aws-sdk-go-v2/service/glue v1.102.0 // indirect - github.com/aws/aws-sdk-go-v2/service/grafana v1.26.6 // indirect - github.com/aws/aws-sdk-go-v2/service/greengrass v1.27.6 // indirect - github.com/aws/aws-sdk-go-v2/service/groundstation v1.31.6 // indirect - github.com/aws/aws-sdk-go-v2/service/guardduty v1.51.2 // indirect - github.com/aws/aws-sdk-go-v2/service/healthlake v1.28.6 // indirect - github.com/aws/aws-sdk-go-v2/service/iam v1.38.1 // indirect - 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/internal/v4a v1.3.25 // indirect + github.com/aws/aws-sdk-go-v2/service/accessanalyzer v1.36.2 // indirect + github.com/aws/aws-sdk-go-v2/service/account v1.21.7 // indirect + github.com/aws/aws-sdk-go-v2/service/acm v1.30.7 // indirect + github.com/aws/aws-sdk-go-v2/service/acmpca v1.37.8 // indirect + github.com/aws/aws-sdk-go-v2/service/amp v1.30.4 // indirect + github.com/aws/aws-sdk-go-v2/service/amplify v1.27.5 // indirect + github.com/aws/aws-sdk-go-v2/service/apigateway v1.28.1 // indirect + github.com/aws/aws-sdk-go-v2/service/apigatewayv2 v1.24.7 // indirect + github.com/aws/aws-sdk-go-v2/service/appconfig v1.36.1 // indirect + github.com/aws/aws-sdk-go-v2/service/appfabric v1.11.7 // indirect + github.com/aws/aws-sdk-go-v2/service/appflow v1.45.8 // indirect + github.com/aws/aws-sdk-go-v2/service/appintegrations v1.30.7 // indirect + github.com/aws/aws-sdk-go-v2/service/applicationautoscaling v1.34.1 // indirect + github.com/aws/aws-sdk-go-v2/service/applicationinsights v1.29.5 // indirect + github.com/aws/aws-sdk-go-v2/service/applicationsignals v1.7.2 // indirect + github.com/aws/aws-sdk-go-v2/service/appmesh v1.29.7 // indirect + github.com/aws/aws-sdk-go-v2/service/apprunner v1.32.7 // indirect + github.com/aws/aws-sdk-go-v2/service/appstream v1.41.7 // indirect + github.com/aws/aws-sdk-go-v2/service/appsync v1.40.1 // indirect + github.com/aws/aws-sdk-go-v2/service/athena v1.48.5 // indirect + github.com/aws/aws-sdk-go-v2/service/auditmanager v1.37.7 // indirect + github.com/aws/aws-sdk-go-v2/service/autoscaling v1.51.1 // indirect + github.com/aws/aws-sdk-go-v2/service/autoscalingplans v1.24.7 // indirect + github.com/aws/aws-sdk-go-v2/service/backup v1.39.8 // indirect + github.com/aws/aws-sdk-go-v2/service/batch v1.48.2 // indirect + github.com/aws/aws-sdk-go-v2/service/bcmdataexports v1.7.7 // indirect + github.com/aws/aws-sdk-go-v2/service/bedrock v1.24.0 // indirect + github.com/aws/aws-sdk-go-v2/service/bedrockagent v1.31.0 // indirect + github.com/aws/aws-sdk-go-v2/service/budgets v1.28.7 // indirect + github.com/aws/aws-sdk-go-v2/service/chatbot v1.9.1 // indirect + github.com/aws/aws-sdk-go-v2/service/chime v1.34.7 // indirect + github.com/aws/aws-sdk-go-v2/service/chimesdkmediapipelines v1.21.2 // indirect + github.com/aws/aws-sdk-go-v2/service/chimesdkvoice v1.20.0 // indirect + github.com/aws/aws-sdk-go-v2/service/cleanrooms v1.21.0 // indirect + github.com/aws/aws-sdk-go-v2/service/cloud9 v1.28.7 // indirect + github.com/aws/aws-sdk-go-v2/service/cloudcontrol v1.23.2 // indirect + github.com/aws/aws-sdk-go-v2/service/cloudformation v1.56.1 // indirect + github.com/aws/aws-sdk-go-v2/service/cloudfront v1.43.1 // indirect + github.com/aws/aws-sdk-go-v2/service/cloudfrontkeyvaluestore v1.8.7 // indirect + github.com/aws/aws-sdk-go-v2/service/cloudhsmv2 v1.27.8 // indirect + github.com/aws/aws-sdk-go-v2/service/cloudsearch v1.26.6 // indirect + github.com/aws/aws-sdk-go-v2/service/cloudtrail v1.46.2 // indirect + github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.43.2 // indirect + github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.45.0 // indirect + github.com/aws/aws-sdk-go-v2/service/codeartifact v1.33.7 // indirect + github.com/aws/aws-sdk-go-v2/service/codebuild v1.49.2 // indirect + github.com/aws/aws-sdk-go-v2/service/codecatalyst v1.17.7 // indirect + github.com/aws/aws-sdk-go-v2/service/codecommit v1.27.7 // indirect + github.com/aws/aws-sdk-go-v2/service/codeconnections v1.5.7 // indirect + github.com/aws/aws-sdk-go-v2/service/codedeploy v1.29.7 // indirect + github.com/aws/aws-sdk-go-v2/service/codeguruprofiler v1.24.7 // indirect + github.com/aws/aws-sdk-go-v2/service/codegurureviewer v1.29.7 // indirect + github.com/aws/aws-sdk-go-v2/service/codepipeline v1.37.1 // indirect + github.com/aws/aws-sdk-go-v2/service/codestarconnections v1.29.7 // indirect + github.com/aws/aws-sdk-go-v2/service/codestarnotifications v1.26.7 // indirect + github.com/aws/aws-sdk-go-v2/service/cognitoidentity v1.27.7 // indirect + github.com/aws/aws-sdk-go-v2/service/cognitoidentityprovider v1.47.1 // indirect + github.com/aws/aws-sdk-go-v2/service/comprehend v1.35.7 // indirect + github.com/aws/aws-sdk-go-v2/service/computeoptimizer v1.40.1 // indirect + github.com/aws/aws-sdk-go-v2/service/configservice v1.51.1 // indirect + github.com/aws/aws-sdk-go-v2/service/connect v1.119.0 // indirect + github.com/aws/aws-sdk-go-v2/service/connectcases v1.21.7 // indirect + github.com/aws/aws-sdk-go-v2/service/controltower v1.20.1 // indirect + github.com/aws/aws-sdk-go-v2/service/costandusagereportservice v1.28.7 // indirect + github.com/aws/aws-sdk-go-v2/service/costexplorer v1.45.1 // indirect + github.com/aws/aws-sdk-go-v2/service/costoptimizationhub v1.11.1 // indirect + github.com/aws/aws-sdk-go-v2/service/customerprofiles v1.44.0 // indirect + github.com/aws/aws-sdk-go-v2/service/databasemigrationservice v1.44.5 // indirect + github.com/aws/aws-sdk-go-v2/service/databrew v1.33.7 // indirect + github.com/aws/aws-sdk-go-v2/service/dataexchange v1.33.5 // indirect + github.com/aws/aws-sdk-go-v2/service/datapipeline v1.25.7 // indirect + github.com/aws/aws-sdk-go-v2/service/datasync v1.43.5 // indirect + github.com/aws/aws-sdk-go-v2/service/datazone v1.24.1 // indirect + github.com/aws/aws-sdk-go-v2/service/dax v1.23.7 // indirect + github.com/aws/aws-sdk-go-v2/service/detective v1.31.7 // indirect + github.com/aws/aws-sdk-go-v2/service/devicefarm v1.28.7 // indirect + github.com/aws/aws-sdk-go-v2/service/devopsguru v1.34.7 // indirect + github.com/aws/aws-sdk-go-v2/service/directconnect v1.30.1 // indirect + github.com/aws/aws-sdk-go-v2/service/directoryservice v1.30.8 // indirect + github.com/aws/aws-sdk-go-v2/service/dlm v1.28.8 // indirect + github.com/aws/aws-sdk-go-v2/service/docdb v1.39.6 // indirect + github.com/aws/aws-sdk-go-v2/service/docdbelastic v1.14.4 // indirect + github.com/aws/aws-sdk-go-v2/service/drs v1.30.7 // indirect + github.com/aws/aws-sdk-go-v2/service/dynamodb v1.38.0 // indirect + github.com/aws/aws-sdk-go-v2/service/ec2 v1.195.0 // indirect + github.com/aws/aws-sdk-go-v2/service/ecr v1.36.7 // indirect + github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.27.7 // indirect + github.com/aws/aws-sdk-go-v2/service/ecs v1.52.1 // indirect + github.com/aws/aws-sdk-go-v2/service/efs v1.34.1 // indirect + github.com/aws/aws-sdk-go-v2/service/eks v1.53.0 // indirect + github.com/aws/aws-sdk-go-v2/service/elasticache v1.44.1 // indirect + github.com/aws/aws-sdk-go-v2/service/elasticbeanstalk v1.28.7 // indirect + github.com/aws/aws-sdk-go-v2/service/elasticloadbalancing v1.28.6 // indirect + github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.43.1 // indirect + github.com/aws/aws-sdk-go-v2/service/elasticsearchservice v1.32.7 // indirect + github.com/aws/aws-sdk-go-v2/service/elastictranscoder v1.27.7 // indirect + github.com/aws/aws-sdk-go-v2/service/emr v1.47.1 // indirect + github.com/aws/aws-sdk-go-v2/service/emrcontainers v1.33.8 // indirect + github.com/aws/aws-sdk-go-v2/service/emrserverless v1.26.7 // indirect + github.com/aws/aws-sdk-go-v2/service/eventbridge v1.36.0 // indirect + github.com/aws/aws-sdk-go-v2/service/evidently v1.23.7 // indirect + github.com/aws/aws-sdk-go-v2/service/finspace v1.28.7 // indirect + github.com/aws/aws-sdk-go-v2/service/firehose v1.35.2 // indirect + github.com/aws/aws-sdk-go-v2/service/fis v1.31.2 // indirect + github.com/aws/aws-sdk-go-v2/service/fms v1.38.5 // indirect + github.com/aws/aws-sdk-go-v2/service/fsx v1.51.0 // indirect + github.com/aws/aws-sdk-go-v2/service/gamelift v1.37.2 // indirect + github.com/aws/aws-sdk-go-v2/service/glacier v1.26.7 // indirect + github.com/aws/aws-sdk-go-v2/service/globalaccelerator v1.29.7 // indirect + github.com/aws/aws-sdk-go-v2/service/glue v1.102.1 // indirect + github.com/aws/aws-sdk-go-v2/service/grafana v1.26.7 // indirect + github.com/aws/aws-sdk-go-v2/service/greengrass v1.27.7 // indirect + github.com/aws/aws-sdk-go-v2/service/groundstation v1.31.7 // indirect + github.com/aws/aws-sdk-go-v2/service/guardduty v1.52.0 // indirect + github.com/aws/aws-sdk-go-v2/service/healthlake v1.28.7 // indirect + github.com/aws/aws-sdk-go-v2/service/iam v1.38.2 // indirect + github.com/aws/aws-sdk-go-v2/service/identitystore v1.27.7 // indirect + github.com/aws/aws-sdk-go-v2/service/imagebuilder v1.39.0 // indirect + github.com/aws/aws-sdk-go-v2/service/inspector v1.25.7 // indirect + github.com/aws/aws-sdk-go-v2/service/inspector2 v1.34.1 // 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/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 - github.com/aws/aws-sdk-go-v2/service/ivschat v1.16.6 // indirect - github.com/aws/aws-sdk-go-v2/service/kafka v1.38.6 // indirect - github.com/aws/aws-sdk-go-v2/service/kafkaconnect v1.21.6 // indirect - github.com/aws/aws-sdk-go-v2/service/kendra v1.54.6 // indirect - github.com/aws/aws-sdk-go-v2/service/keyspaces v1.16.0 // indirect - github.com/aws/aws-sdk-go-v2/service/kinesis v1.32.6 // indirect - github.com/aws/aws-sdk-go-v2/service/kinesisanalytics v1.25.7 // indirect - github.com/aws/aws-sdk-go-v2/service/kinesisanalyticsv2 v1.31.7 // indirect - 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/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 - github.com/aws/aws-sdk-go-v2/service/licensemanager v1.29.6 // indirect - github.com/aws/aws-sdk-go-v2/service/lightsail v1.42.6 // indirect - github.com/aws/aws-sdk-go-v2/service/location v1.42.6 // indirect - github.com/aws/aws-sdk-go-v2/service/lookoutmetrics v1.31.6 // indirect - github.com/aws/aws-sdk-go-v2/service/m2 v1.18.4 // indirect - github.com/aws/aws-sdk-go-v2/service/macie2 v1.43.6 // indirect - github.com/aws/aws-sdk-go-v2/service/mediaconnect v1.35.6 // indirect - github.com/aws/aws-sdk-go-v2/service/mediaconvert v1.63.0 // indirect - github.com/aws/aws-sdk-go-v2/service/medialive v1.62.6 // indirect - github.com/aws/aws-sdk-go-v2/service/mediapackage v1.34.6 // indirect - github.com/aws/aws-sdk-go-v2/service/mediapackagev2 v1.20.0 // indirect - github.com/aws/aws-sdk-go-v2/service/mediastore v1.24.6 // indirect - github.com/aws/aws-sdk-go-v2/service/memorydb v1.24.5 // indirect - 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/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 - github.com/aws/aws-sdk-go-v2/service/oam v1.15.6 // indirect - github.com/aws/aws-sdk-go-v2/service/opensearch v1.44.1 // indirect - github.com/aws/aws-sdk-go-v2/service/opensearchserverless v1.17.3 // indirect - github.com/aws/aws-sdk-go-v2/service/opsworks v1.26.6 // indirect - github.com/aws/aws-sdk-go-v2/service/organizations v1.35.1 // indirect - github.com/aws/aws-sdk-go-v2/service/osis v1.14.6 // indirect - github.com/aws/aws-sdk-go-v2/service/outposts v1.47.1 // indirect - github.com/aws/aws-sdk-go-v2/service/paymentcryptography v1.16.1 // indirect - github.com/aws/aws-sdk-go-v2/service/pcaconnectorad v1.9.6 // indirect - github.com/aws/aws-sdk-go-v2/service/pcs v1.2.7 // indirect - 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/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/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 - github.com/aws/aws-sdk-go-v2/service/redshift v1.52.1 // indirect - 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/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 - github.com/aws/aws-sdk-go-v2/service/rolesanywhere v1.16.6 // indirect - github.com/aws/aws-sdk-go-v2/service/route53 v1.46.2 // indirect - github.com/aws/aws-sdk-go-v2/service/route53domains v1.27.6 // indirect - github.com/aws/aws-sdk-go-v2/service/route53profiles v1.4.6 // indirect - github.com/aws/aws-sdk-go-v2/service/route53recoverycontrolconfig v1.25.6 // indirect - 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/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/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 - github.com/aws/aws-sdk-go-v2/service/securityhub v1.54.7 // indirect - github.com/aws/aws-sdk-go-v2/service/securitylake v1.19.4 // indirect - github.com/aws/aws-sdk-go-v2/service/serverlessapplicationrepository v1.24.6 // indirect - github.com/aws/aws-sdk-go-v2/service/servicecatalog v1.32.6 // indirect - 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/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/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/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/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/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 - github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.5 // indirect - github.com/aws/aws-sdk-go-v2/service/storagegateway v1.34.6 // indirect - github.com/aws/aws-sdk-go-v2/service/sts v1.33.1 // indirect - github.com/aws/aws-sdk-go-v2/service/swf v1.27.6 // indirect - 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/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/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/internal/checksum v1.4.6 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.10.6 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.6 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.6 // indirect + github.com/aws/aws-sdk-go-v2/service/internetmonitor v1.20.2 // indirect + github.com/aws/aws-sdk-go-v2/service/iot v1.61.1 // indirect + github.com/aws/aws-sdk-go-v2/service/iotanalytics v1.26.7 // indirect + github.com/aws/aws-sdk-go-v2/service/iotevents v1.27.7 // indirect + github.com/aws/aws-sdk-go-v2/service/ivs v1.42.2 // indirect + github.com/aws/aws-sdk-go-v2/service/ivschat v1.16.7 // indirect + github.com/aws/aws-sdk-go-v2/service/kafka v1.38.7 // indirect + github.com/aws/aws-sdk-go-v2/service/kafkaconnect v1.21.7 // indirect + github.com/aws/aws-sdk-go-v2/service/kendra v1.54.7 // indirect + github.com/aws/aws-sdk-go-v2/service/keyspaces v1.16.1 // indirect + github.com/aws/aws-sdk-go-v2/service/kinesis v1.32.7 // indirect + github.com/aws/aws-sdk-go-v2/service/kinesisanalytics v1.25.8 // indirect + github.com/aws/aws-sdk-go-v2/service/kinesisanalyticsv2 v1.31.8 // indirect + github.com/aws/aws-sdk-go-v2/service/kinesisvideo v1.27.7 // indirect + github.com/aws/aws-sdk-go-v2/service/kms v1.37.7 // indirect + github.com/aws/aws-sdk-go-v2/service/lakeformation v1.39.0 // indirect + github.com/aws/aws-sdk-go-v2/service/lambda v1.69.1 // indirect + github.com/aws/aws-sdk-go-v2/service/launchwizard v1.8.7 // indirect + github.com/aws/aws-sdk-go-v2/service/lexmodelbuildingservice v1.28.7 // indirect + github.com/aws/aws-sdk-go-v2/service/lexmodelsv2 v1.49.7 // indirect + github.com/aws/aws-sdk-go-v2/service/licensemanager v1.29.7 // indirect + github.com/aws/aws-sdk-go-v2/service/lightsail v1.42.7 // indirect + github.com/aws/aws-sdk-go-v2/service/location v1.42.7 // indirect + github.com/aws/aws-sdk-go-v2/service/lookoutmetrics v1.31.7 // indirect + github.com/aws/aws-sdk-go-v2/service/m2 v1.18.5 // indirect + github.com/aws/aws-sdk-go-v2/service/macie2 v1.43.7 // indirect + github.com/aws/aws-sdk-go-v2/service/mediaconnect v1.35.7 // indirect + github.com/aws/aws-sdk-go-v2/service/mediaconvert v1.63.1 // indirect + github.com/aws/aws-sdk-go-v2/service/medialive v1.62.7 // indirect + github.com/aws/aws-sdk-go-v2/service/mediapackage v1.34.7 // indirect + github.com/aws/aws-sdk-go-v2/service/mediapackagev2 v1.20.1 // indirect + github.com/aws/aws-sdk-go-v2/service/mediastore v1.24.7 // indirect + github.com/aws/aws-sdk-go-v2/service/memorydb v1.25.0 // indirect + github.com/aws/aws-sdk-go-v2/service/mq v1.27.8 // indirect + github.com/aws/aws-sdk-go-v2/service/mwaa v1.33.1 // indirect + github.com/aws/aws-sdk-go-v2/service/neptune v1.35.6 // indirect + github.com/aws/aws-sdk-go-v2/service/neptunegraph v1.15.1 // indirect + github.com/aws/aws-sdk-go-v2/service/networkfirewall v1.44.4 // indirect + github.com/aws/aws-sdk-go-v2/service/networkmanager v1.32.1 // indirect + github.com/aws/aws-sdk-go-v2/service/networkmonitor v1.7.7 // indirect + github.com/aws/aws-sdk-go-v2/service/oam v1.15.7 // indirect + github.com/aws/aws-sdk-go-v2/service/opensearch v1.45.0 // indirect + github.com/aws/aws-sdk-go-v2/service/opensearchserverless v1.17.4 // indirect + github.com/aws/aws-sdk-go-v2/service/opsworks v1.26.7 // indirect + github.com/aws/aws-sdk-go-v2/service/organizations v1.36.0 // indirect + github.com/aws/aws-sdk-go-v2/service/osis v1.14.7 // indirect + github.com/aws/aws-sdk-go-v2/service/outposts v1.47.2 // indirect + github.com/aws/aws-sdk-go-v2/service/paymentcryptography v1.16.2 // indirect + github.com/aws/aws-sdk-go-v2/service/pcaconnectorad v1.9.7 // indirect + github.com/aws/aws-sdk-go-v2/service/pcs v1.2.8 // indirect + github.com/aws/aws-sdk-go-v2/service/pinpoint v1.34.7 // indirect + github.com/aws/aws-sdk-go-v2/service/pinpointsmsvoicev2 v1.18.2 // indirect + github.com/aws/aws-sdk-go-v2/service/pipes v1.18.5 // indirect + github.com/aws/aws-sdk-go-v2/service/polly v1.45.8 // indirect + github.com/aws/aws-sdk-go-v2/service/pricing v1.32.7 // indirect + github.com/aws/aws-sdk-go-v2/service/qbusiness v1.18.0 // indirect + github.com/aws/aws-sdk-go-v2/service/qldb v1.25.7 // indirect + github.com/aws/aws-sdk-go-v2/service/quicksight v1.81.0 // indirect + github.com/aws/aws-sdk-go-v2/service/ram v1.29.7 // indirect + github.com/aws/aws-sdk-go-v2/service/rbin v1.21.1 // indirect + github.com/aws/aws-sdk-go-v2/service/rds v1.92.0 // indirect + github.com/aws/aws-sdk-go-v2/service/redshift v1.53.0 // indirect + github.com/aws/aws-sdk-go-v2/service/redshiftdata v1.31.4 // indirect + github.com/aws/aws-sdk-go-v2/service/redshiftserverless v1.24.4 // indirect + github.com/aws/aws-sdk-go-v2/service/rekognition v1.45.8 // indirect + github.com/aws/aws-sdk-go-v2/service/resiliencehub v1.28.1 // indirect + github.com/aws/aws-sdk-go-v2/service/resourceexplorer2 v1.16.2 // indirect + github.com/aws/aws-sdk-go-v2/service/resourcegroups v1.27.7 // indirect + github.com/aws/aws-sdk-go-v2/service/resourcegroupstaggingapi v1.25.7 // indirect + github.com/aws/aws-sdk-go-v2/service/rolesanywhere v1.16.7 // indirect + github.com/aws/aws-sdk-go-v2/service/route53 v1.46.3 // indirect + github.com/aws/aws-sdk-go-v2/service/route53domains v1.27.7 // indirect + github.com/aws/aws-sdk-go-v2/service/route53profiles v1.4.7 // indirect + github.com/aws/aws-sdk-go-v2/service/route53recoverycontrolconfig v1.25.7 // indirect + github.com/aws/aws-sdk-go-v2/service/route53recoveryreadiness v1.21.7 // indirect + github.com/aws/aws-sdk-go-v2/service/route53resolver v1.34.2 // indirect + github.com/aws/aws-sdk-go-v2/service/rum v1.21.7 // indirect + github.com/aws/aws-sdk-go-v2/service/s3 v1.71.0 // indirect + github.com/aws/aws-sdk-go-v2/service/s3control v1.52.0 // indirect + github.com/aws/aws-sdk-go-v2/service/s3outposts v1.28.7 // indirect + github.com/aws/aws-sdk-go-v2/service/sagemaker v1.168.1 // indirect + github.com/aws/aws-sdk-go-v2/service/scheduler v1.12.7 // indirect + github.com/aws/aws-sdk-go-v2/service/schemas v1.28.8 // indirect + github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.34.7 // indirect + github.com/aws/aws-sdk-go-v2/service/securityhub v1.55.0 // indirect + github.com/aws/aws-sdk-go-v2/service/securitylake v1.19.5 // indirect + github.com/aws/aws-sdk-go-v2/service/serverlessapplicationrepository v1.24.7 // indirect + github.com/aws/aws-sdk-go-v2/service/servicecatalog v1.32.7 // indirect + github.com/aws/aws-sdk-go-v2/service/servicecatalogappregistry v1.30.7 // indirect + github.com/aws/aws-sdk-go-v2/service/servicediscovery v1.33.7 // indirect + github.com/aws/aws-sdk-go-v2/service/servicequotas v1.25.7 // indirect + github.com/aws/aws-sdk-go-v2/service/ses v1.29.1 // indirect + github.com/aws/aws-sdk-go-v2/service/sesv2 v1.38.4 // indirect + github.com/aws/aws-sdk-go-v2/service/sfn v1.34.1 // indirect + github.com/aws/aws-sdk-go-v2/service/shield v1.29.7 // indirect + github.com/aws/aws-sdk-go-v2/service/signer v1.26.7 // indirect + github.com/aws/aws-sdk-go-v2/service/sns v1.33.7 // indirect + github.com/aws/aws-sdk-go-v2/service/sqs v1.37.2 // indirect + github.com/aws/aws-sdk-go-v2/service/ssm v1.56.1 // indirect + github.com/aws/aws-sdk-go-v2/service/ssmcontacts v1.26.7 // indirect + github.com/aws/aws-sdk-go-v2/service/ssmincidents v1.34.7 // indirect + github.com/aws/aws-sdk-go-v2/service/ssmquicksetup v1.3.1 // indirect + github.com/aws/aws-sdk-go-v2/service/ssmsap v1.18.7 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.24.7 // indirect + github.com/aws/aws-sdk-go-v2/service/ssoadmin v1.29.7 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.6 // indirect + github.com/aws/aws-sdk-go-v2/service/storagegateway v1.34.7 // indirect + github.com/aws/aws-sdk-go-v2/service/sts v1.33.2 // indirect + github.com/aws/aws-sdk-go-v2/service/swf v1.27.8 // indirect + github.com/aws/aws-sdk-go-v2/service/synthetics v1.30.2 // indirect + github.com/aws/aws-sdk-go-v2/service/taxsettings v1.7.1 // indirect + github.com/aws/aws-sdk-go-v2/service/timestreaminfluxdb v1.6.7 // indirect + github.com/aws/aws-sdk-go-v2/service/timestreamwrite v1.29.8 // indirect + github.com/aws/aws-sdk-go-v2/service/transcribe v1.41.7 // indirect + github.com/aws/aws-sdk-go-v2/service/transfer v1.54.0 // indirect + github.com/aws/aws-sdk-go-v2/service/verifiedpermissions v1.20.3 // indirect + github.com/aws/aws-sdk-go-v2/service/vpclattice v1.13.0 // indirect + github.com/aws/aws-sdk-go-v2/service/waf v1.25.7 // indirect + github.com/aws/aws-sdk-go-v2/service/wafregional v1.25.7 // indirect + github.com/aws/aws-sdk-go-v2/service/wafv2 v1.55.6 // indirect + github.com/aws/aws-sdk-go-v2/service/wellarchitected v1.34.7 // 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/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/workspaces v1.50.2 // indirect + github.com/aws/aws-sdk-go-v2/service/workspacesweb v1.25.1 // indirect + github.com/aws/aws-sdk-go-v2/service/xray v1.30.1 // 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 @@ -347,7 +347,7 @@ require ( github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect github.com/xeipuuv/gojsonschema v1.2.0 // indirect - github.com/zclconf/go-cty v1.15.0 // indirect + github.com/zclconf/go-cty v1.15.1 // indirect go.opentelemetry.io/contrib/instrumentation/github.com/aws/aws-sdk-go-v2/otelaws v0.57.0 // indirect go.opentelemetry.io/otel v1.32.0 // indirect go.opentelemetry.io/otel/metric v1.32.0 // indirect @@ -360,7 +360,7 @@ require ( golang.org/x/text v0.20.0 // indirect golang.org/x/tools v0.27.0 // indirect google.golang.org/appengine v1.6.8 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241118233622-e639e219e697 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a // indirect google.golang.org/grpc v1.68.0 // indirect google.golang.org/protobuf v1.35.2 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect diff --git a/tools/tfsdk2fw/go.sum b/tools/tfsdk2fw/go.sum index 0627d66c08b1..7dbc124b922a 100644 --- a/tools/tfsdk2fw/go.sum +++ b/tools/tfsdk2fw/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= @@ -23,526 +23,526 @@ github.com/armon/go-radix v1.0.0 h1:F4z6KzEeeQIMeLFa97iZU6vupzoecKdU5TX24SNppXI= github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/aws/aws-sdk-go v1.55.5 h1:KKUZBfBoyqy5d3swXyiC7Q76ic40rYcbqH7qjh59kzU= github.com/aws/aws-sdk-go v1.55.5/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU= -github.com/aws/aws-sdk-go-v2 v1.32.5 h1:U8vdWJuY7ruAkzaOdD7guwJjD06YSKmnKCJs7s3IkIo= -github.com/aws/aws-sdk-go-v2 v1.32.5/go.mod h1:P5WJBrYqqbWVaOxgH0X/FYYD47/nooaPOZPlQdmiN2U= +github.com/aws/aws-sdk-go-v2 v1.32.6 h1:7BokKRgRPuGmKkFMhEg/jSul+tB9VvXhcViILtfG8b4= +github.com/aws/aws-sdk-go-v2 v1.32.6/go.mod h1:P5WJBrYqqbWVaOxgH0X/FYYD47/nooaPOZPlQdmiN2U= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.7 h1:lL7IfaFzngfx0ZwUGOZdsFFnQ5uLvR0hWqqhyE7Q9M8= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.7/go.mod h1:QraP0UcVlQJsmHfioCrveWOC1nbiWUl3ej08h4mXWoc= -github.com/aws/aws-sdk-go-v2/config v1.28.5 h1:Za41twdCXbuyyWv9LndXxZZv3QhTG1DinqlFsSuvtI0= -github.com/aws/aws-sdk-go-v2/config v1.28.5/go.mod h1:4VsPbHP8JdcdUDmbTVgNL/8w9SqOkM5jyY8ljIxLO3o= -github.com/aws/aws-sdk-go-v2/credentials v1.17.46 h1:AU7RcriIo2lXjUfHFnFKYsLCwgbz1E7Mm95ieIRDNUg= -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/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= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.24/go.mod h1:dCn9HbJ8+K31i8IQ8EWmWj0EiIk0+vKiHNMxTTYveAg= +github.com/aws/aws-sdk-go-v2/config v1.28.6 h1:D89IKtGrs/I3QXOLNTH93NJYtDhm8SYa9Q5CsPShmyo= +github.com/aws/aws-sdk-go-v2/config v1.28.6/go.mod h1:GDzxJ5wyyFSCoLkS+UhGB0dArhb9mI+Co4dHtoTxbko= +github.com/aws/aws-sdk-go-v2/credentials v1.17.47 h1:48bA+3/fCdi2yAwVt+3COvmatZ6jUDNkDTIsqDiMUdw= +github.com/aws/aws-sdk-go-v2/credentials v1.17.47/go.mod h1:+KdckOejLW3Ks3b0E3b5rHsr2f9yuORBum0WPnE5o5w= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.21 h1:AmoU1pziydclFT/xRV+xXE/Vb8fttJCLRPv8oAkprc0= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.21/go.mod h1:AjUdLYe4Tgs6kpH4Bv7uMZo7pottoyHMn4eTcIcneaY= +github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.43 h1:iLdpkYZ4cXIQMO7ud+cqMWR1xK5ESbt1rvN77tRi1BY= +github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.43/go.mod h1:OgbsKPAswXDd5kxnR4vZov69p3oYjbvUyIRBAAV0y9o= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.25 h1:s/fF4+yDQDoElYhfIVvSNyeCydfbuTKzhxSXDXCPasU= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.25/go.mod h1:IgPfDv5jqFIzQSNbUEMoitNooSMXjRSDkhXv8jiROvU= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.25 h1:ZntTCl5EsYnhN/IygQEUugpdwbhdkom9uHcbCftiGgA= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.25/go.mod h1:DBdPrgeocww+CSl1C8cEV8PN1mHMBhuCDLpXezyvWkE= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 h1:VaRN3TlFdd6KxX1x3ILT5ynH6HvKgqdiXoTxAF4HQcQ= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1/go.mod h1:FbtygfRFze9usAadmnGJNc8KsP346kEe+y2/oyhGAGc= -github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.24 h1:JX70yGKLj25+lMC5Yyh8wBtvB01GDilyRuJvXJ4piD0= -github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.24/go.mod h1:+Ln60j9SUTD0LEwnhEB0Xhg61DHqplBrbZpLgyjoEHg= -github.com/aws/aws-sdk-go-v2/service/accessanalyzer v1.36.1 h1:IdOcs3kO2gSgjQ6CQVV3TiFrcqt4+p/hIO3fJoY5LAk= -github.com/aws/aws-sdk-go-v2/service/accessanalyzer v1.36.1/go.mod h1:73ZiTjCNz6qec4WaTLpXuz3QS/B6BGaeI1CsiojnR2w= -github.com/aws/aws-sdk-go-v2/service/account v1.21.6 h1:FtKN52U4HemOC0ScQTPmZKe+902h09Uf60s6F6x9eE8= -github.com/aws/aws-sdk-go-v2/service/account v1.21.6/go.mod h1:DoOQNxPjjgOCH5KPxVZ+37214qlPbXGOX7phOWvZPQU= -github.com/aws/aws-sdk-go-v2/service/acm v1.30.6 h1:fDg0RlN30Xf/yYzEUL/WXqhmgFsjVb/I3230oCfyI5w= -github.com/aws/aws-sdk-go-v2/service/acm v1.30.6/go.mod h1:zRR6jE3v/TcbfO8C2P+H0Z+kShiKKVaVyoIl8NQRjyg= -github.com/aws/aws-sdk-go-v2/service/acmpca v1.37.7 h1:uysdx5dYnLtvApVpV4A730PfmqqEjb2ejYcB0NB+2js= -github.com/aws/aws-sdk-go-v2/service/acmpca v1.37.7/go.mod h1:PmgOAeKyU7dx7gOZE+v+p3n2tiKa2DvGKvJ8GDehAZw= -github.com/aws/aws-sdk-go-v2/service/amp v1.30.3 h1:28FOQuvHpWMdEYK9x89FszjBmwGfhkWYIc45DQcLhsk= -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/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= -github.com/aws/aws-sdk-go-v2/service/appconfig v1.36.0/go.mod h1:mtklZ9Lk3KEtJ9ej2NrPqpGHaGGcrwfeSN9ClPd4FA8= -github.com/aws/aws-sdk-go-v2/service/appfabric v1.11.6 h1:71eLtI7uFLhWHgnbaZqLs+dCYw6obqHrAQy+/5+Jlt4= -github.com/aws/aws-sdk-go-v2/service/appfabric v1.11.6/go.mod h1:RPqeoYHbSE1AoVzgAPQp1JjaKiyGMXszHOZMa0pKdUM= -github.com/aws/aws-sdk-go-v2/service/appflow v1.45.7 h1:UfxkfxuI4Ksq33InChPPDFg/qEFGsPzrnRnBHzbisHM= -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/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= -github.com/aws/aws-sdk-go-v2/service/applicationsignals v1.7.1/go.mod h1:/tCS8SpYcmDH7u+RiqUuT7MgKQjyWJWzRwlkMlXbgAA= -github.com/aws/aws-sdk-go-v2/service/appmesh v1.29.6 h1:mnptOnjJlbuERJEoEGdUZKnTGxkvHzgosXba3+JoCfI= -github.com/aws/aws-sdk-go-v2/service/appmesh v1.29.6/go.mod h1:bRUdurcm4crbVyWF9uN8J7P1WHcZ0U7Losz/wc9mY94= -github.com/aws/aws-sdk-go-v2/service/apprunner v1.32.6 h1:Wqlx6m821gv7qXMJQ3f7JuTQusWbZNWbpEgFD6/qkgE= -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/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/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= -github.com/aws/aws-sdk-go-v2/service/backup v1.39.7/go.mod h1:oeRKTbMD3NrXPRvFZGSibtpJfpYlyLKnQOyHvl6rjqQ= -github.com/aws/aws-sdk-go-v2/service/batch v1.48.1 h1:DkHLOuDTutCshu7k+Po0sd/CXfOrtML+GHVx4dgkvpg= -github.com/aws/aws-sdk-go-v2/service/batch v1.48.1/go.mod h1:2bWNVbqMIXP8HnWqkEIEm+WTH3QNo9Ui/CGJ5l9IM2E= -github.com/aws/aws-sdk-go-v2/service/bcmdataexports v1.7.6 h1:sxKe/rHVVxLQJgqnxBzdlX2GYCLhY+y9jH9UmE9381A= -github.com/aws/aws-sdk-go-v2/service/bcmdataexports v1.7.6/go.mod h1:kplgf9W6J8e3ml6xKdfdNRuCCdXZbgmwVd6xfUeHkkM= -github.com/aws/aws-sdk-go-v2/service/bedrock v1.22.4 h1:R0Tw4Xon1Lz8TGmeTi3D2Qi8Rn601myEGVFRw0Rp3aY= -github.com/aws/aws-sdk-go-v2/service/bedrock v1.22.4/go.mod h1:U9FfwVNRitPo23yN28RGlXRR1EgqcwnP0P2oTUHKCi8= -github.com/aws/aws-sdk-go-v2/service/bedrockagent v1.27.1 h1:Uq364zd0sw4Sa5DovhBKFn5oXqEws3KQkzMMnRl1N5k= -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/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= -github.com/aws/aws-sdk-go-v2/service/chimesdkmediapipelines v1.21.1/go.mod h1:PMNzhRaaNVe10wFPXZot2S/d7oWZ+daavUxPZoJwunc= -github.com/aws/aws-sdk-go-v2/service/chimesdkvoice v1.19.6 h1:gHAxXcatt7lzQmRGwnlHzdsDc0QF2nyasvmGziUDW0M= -github.com/aws/aws-sdk-go-v2/service/chimesdkvoice v1.19.6/go.mod h1:06jbpOTnxPCMbGCiQZKt4GaM+w1NxNXoCYINTK0ddXQ= -github.com/aws/aws-sdk-go-v2/service/cleanrooms v1.20.1 h1:kILYJ5OnV3XPABU3XPWhCl2Ruek1SLGh9A2zOPpIHtg= -github.com/aws/aws-sdk-go-v2/service/cleanrooms v1.20.1/go.mod h1:AVtuSdL0mtsEZhTJQiSVDe3UMneZUQvqN0fgHCNM0kE= -github.com/aws/aws-sdk-go-v2/service/cloud9 v1.28.6 h1:pKLIvUEFSgh7BICo0Vkk1LXkQFfgrDVrGvD+jJr9QOA= -github.com/aws/aws-sdk-go-v2/service/cloud9 v1.28.6/go.mod h1:wDc8fmV/V2cWH6OYILCV6eaQGNe38/glTCiffF61N30= -github.com/aws/aws-sdk-go-v2/service/cloudcontrol v1.23.1 h1:x4XUX/gadOFFsX5ndid0zKvf9Y33rlkbPmlmubLsfZA= -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/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/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/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= -github.com/aws/aws-sdk-go-v2/service/codebuild v1.49.1/go.mod h1:8dQzphxd2LV1cd7+OGI4GMFDxQ/VPHVjh6KxVd2SJbo= -github.com/aws/aws-sdk-go-v2/service/codecatalyst v1.17.6 h1:+1s3luItMYMd4tzBtvvDC92v1P9wnTMbxTlQsL++8eg= -github.com/aws/aws-sdk-go-v2/service/codecatalyst v1.17.6/go.mod h1:+uaY4HqZJC0cu7SHnzMV6k/aeazDS7TLfW3yjHI4eSs= -github.com/aws/aws-sdk-go-v2/service/codecommit v1.27.6 h1:RDxqhwbpubVwvFAsh2YYFlK3y9JPTE3sfnRhLk5Ngj4= -github.com/aws/aws-sdk-go-v2/service/codecommit v1.27.6/go.mod h1:Q77pLjwbFzluXn9ciIdzS4kwnU8OSOKskIMIjFP6oyY= -github.com/aws/aws-sdk-go-v2/service/codeconnections v1.5.6 h1:qrWm4wG/P/ocxqYW4rBKaMoO8vabqrr3I1Hbvu+mTkM= -github.com/aws/aws-sdk-go-v2/service/codeconnections v1.5.6/go.mod h1:cx8mC1/hFSDeK6b40Kqga9vk2s2rkbf3MsErQLojnSA= -github.com/aws/aws-sdk-go-v2/service/codedeploy v1.29.6 h1:jwaOL3HT0yXEIs/2Bs35sx6DM6L755ppdW9DejXYYa4= -github.com/aws/aws-sdk-go-v2/service/codedeploy v1.29.6/go.mod h1:wOfD5vHIuGIe9aMoujgn0teM3fGOvtW1uxeZPs+MluI= -github.com/aws/aws-sdk-go-v2/service/codeguruprofiler v1.24.6 h1:NHA1oFgnYErN/m1U1KDFrM4pbL7EABumJU6hCL6FhIg= -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/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/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/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/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= -github.com/aws/aws-sdk-go-v2/service/customerprofiles v1.43.0/go.mod h1:NszyDJkn2aVBAt20J4jJou61HFdA8N6AFGNIBfsCmB4= -github.com/aws/aws-sdk-go-v2/service/databasemigrationservice v1.44.4 h1:WK5CyygA6+yzm8Zlx4W5u9b06uepMDJz+Hahpdmg25k= -github.com/aws/aws-sdk-go-v2/service/databasemigrationservice v1.44.4/go.mod h1:7TP5GpEyyLYic8kVFHJu/OK0bk9X2uKcvPqLw90CMok= -github.com/aws/aws-sdk-go-v2/service/databrew v1.33.6 h1:yZtWiFez6yMalTG9Ouc0A8LQqGrFjgKYePl5rM27fQo= -github.com/aws/aws-sdk-go-v2/service/databrew v1.33.6/go.mod h1:FGU+VnezEhrhsfnxFJcJnTu0sDNowur5LFxIFsL7M7Q= -github.com/aws/aws-sdk-go-v2/service/dataexchange v1.33.4 h1:Gfr2MS/iQBluI3gGBTepfBc6lCcUPDVu9SHBAcImPos= -github.com/aws/aws-sdk-go-v2/service/dataexchange v1.33.4/go.mod h1:npMegXgBSU5uTIVtczlAFOvKcy9f5x4uGpbLsAHqelU= -github.com/aws/aws-sdk-go-v2/service/datapipeline v1.25.6 h1:dH4IwB5kATH1fb0PV0Vw58CDKgKQFlE24qwd1j8Ruj4= -github.com/aws/aws-sdk-go-v2/service/datapipeline v1.25.6/go.mod h1:1v3H40k29g47RMmzLpeN8CQahznbkrrchPf7WYp7PyE= -github.com/aws/aws-sdk-go-v2/service/datasync v1.43.4 h1:rc3uPdxBtqgt3ELUzTP7qRV8M4MhWboC4wsvPCPGK3M= -github.com/aws/aws-sdk-go-v2/service/datasync v1.43.4/go.mod h1:+goO0fVAf3qrLIIlnp0nITiG26fGtkfKakRXkgJ9u14= -github.com/aws/aws-sdk-go-v2/service/datazone v1.24.0 h1:1vQZdB56DusyU/ZUVaJ6EOa3m/J5eOYQ9xnKE5huD5Q= -github.com/aws/aws-sdk-go-v2/service/datazone v1.24.0/go.mod h1:2f82lBtHfBrKP/pAn93z9QTta5TrO7pt60KR7I2ipnQ= -github.com/aws/aws-sdk-go-v2/service/dax v1.23.6 h1:tKtDYH6bWtGCD/2lWSh/nTDCSC13fj9Ta4opiJec4rs= -github.com/aws/aws-sdk-go-v2/service/dax v1.23.6/go.mod h1:UacIy1kHz1XwzQksauluq9Ikc/54pzzZalbGMs87T0A= -github.com/aws/aws-sdk-go-v2/service/detective v1.31.6 h1:Y8GzDptm2EHuqDCI5We0ZJoxnIJ07bMgH02JOk8/4DA= -github.com/aws/aws-sdk-go-v2/service/detective v1.31.6/go.mod h1:FjvuK1A2czZ+8xeIXDiXntztVg49AxwkSmCnTAmrqqw= -github.com/aws/aws-sdk-go-v2/service/devicefarm v1.28.6 h1:LMO26c9BpvBJU7TjkIOmeA0UnuVz9VEJGVKJUl/B6Ts= -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/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/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= -github.com/aws/aws-sdk-go-v2/service/docdbelastic v1.14.3/go.mod h1:TR7OBxz2KVqaU7utIGP4TjVZmIodSLNQyl3IcbiDi5Q= -github.com/aws/aws-sdk-go-v2/service/drs v1.30.6 h1:gRx0PWMok7r3zmoiwdFzYRyJwp2R2gzuuoFGVxQVSFs= -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/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= -github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.27.6/go.mod h1:qoPi18scDl8uM9o+tHi77043RLv2WIIFvVHcF1RT8Yk= -github.com/aws/aws-sdk-go-v2/service/ecs v1.52.0 h1:7/vgFWplkusJN/m+3QOa+W9FNRqa8ujMPNmdufRaJpg= -github.com/aws/aws-sdk-go-v2/service/ecs v1.52.0/go.mod h1:dPTOvmjJQ1T7Q+2+Xs2KSPrMvx+p0rpyV+HsQVnUK4o= -github.com/aws/aws-sdk-go-v2/service/efs v1.34.0 h1:0VpBMWwpq5UuhneIWO19+/Mp5DmFwQIEAoC0LqFCYdM= -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/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/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/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= -github.com/aws/aws-sdk-go-v2/service/emrserverless v1.26.6/go.mod h1:xfBpOsT/7QZnOPGQmaNxW99mqJG8Ya02kmvUcwOYiGk= -github.com/aws/aws-sdk-go-v2/service/eventbridge v1.35.6 h1:LLUzdN3H7EEmpRjkJDpMGdbimAPTg6+3fFvJCDpjcrQ= -github.com/aws/aws-sdk-go-v2/service/eventbridge v1.35.6/go.mod h1:njIZoyz4eQquthx3TH9aIz5svTr55u/6+agentCxFC0= -github.com/aws/aws-sdk-go-v2/service/evidently v1.23.6 h1:dVG09QDQUUvWW16V1nbRrYLnTN6K0DukfN6D2cFn9jE= -github.com/aws/aws-sdk-go-v2/service/evidently v1.23.6/go.mod h1:KL+GoKHIcOl97tHqKuL39pAjTQ6+cjifp1Y4Z4fagM4= -github.com/aws/aws-sdk-go-v2/service/finspace v1.28.6 h1:DMzWUq6cdH+I03X8Bn1UATTt0MFnhsSkR6kOsN5pcFo= -github.com/aws/aws-sdk-go-v2/service/finspace v1.28.6/go.mod h1:5SpnpHrkr9dXBugT+Dv/X+X57K88XC5MtYDK4WDf6a8= -github.com/aws/aws-sdk-go-v2/service/firehose v1.35.1 h1:yA6/HoFnFrPhE1nMO3LzsgKIT/99NDWoX5Xzqnqhpyg= -github.com/aws/aws-sdk-go-v2/service/firehose v1.35.1/go.mod h1:TSAFnwAC+DYOJX5JehOV+wJiAhpluwa+yHDxDmWI4P0= -github.com/aws/aws-sdk-go-v2/service/fis v1.31.1 h1:bllAkyDhLHCyJFn/nP+b49RRL8Hh/w5Fj4TW8rZhKrw= -github.com/aws/aws-sdk-go-v2/service/fis v1.31.1/go.mod h1:IxUBo1RMVFX9fbptkBFSnqaAh4x5SXdTDmLLsyzYPC4= -github.com/aws/aws-sdk-go-v2/service/fms v1.38.4 h1:cEOnWR/0wXpeQ/UR7ekpfdi3E0tn5GUhPoJWoaPid+Y= -github.com/aws/aws-sdk-go-v2/service/fms v1.38.4/go.mod h1:sdb9Vy6D39p4Vye95Bz5tRQc6IPenFmcT8+wsketxUw= -github.com/aws/aws-sdk-go-v2/service/fsx v1.49.6 h1:dgI1m+My7Se4SpgSLJ3oIaNQDvwTHUNdjLjq7vPgJjo= -github.com/aws/aws-sdk-go-v2/service/fsx v1.49.6/go.mod h1:MV66g+vJERlW3JmnDD0fGwJHkCQ13iAhACBUUsG9Fbg= -github.com/aws/aws-sdk-go-v2/service/gamelift v1.37.1 h1:knLg8HvuZ0aMqX4YlH2uPSlScqcj9xFejdn6KUCvpig= -github.com/aws/aws-sdk-go-v2/service/gamelift v1.37.1/go.mod h1:yfH6QVHv+ST1elyWtd4lj9V7Uw+QMjVROA7/gjrhNCM= -github.com/aws/aws-sdk-go-v2/service/glacier v1.26.6 h1:Yb4du9dQRtexyb3AsAnH/soJOYdULLsjCIzIYSi2KFk= -github.com/aws/aws-sdk-go-v2/service/glacier v1.26.6/go.mod h1:mcndxNubKcVuK74+86W8BDJYhmWgfV/9/WO25Ofouuw= -github.com/aws/aws-sdk-go-v2/service/globalaccelerator v1.29.6 h1:p4aGf3B37+2c8Jqh9oukh2Aj2AMK8E0XRroDyLJ0jx8= -github.com/aws/aws-sdk-go-v2/service/globalaccelerator v1.29.6/go.mod h1:Au4Za2pi2wu/ib9eut/FRpmW4bqw/HuFpnlje/94Of4= -github.com/aws/aws-sdk-go-v2/service/glue v1.102.0 h1:D6OOWCPCSpjzwfya9hOgDQk3BNvgN1N8ie8bzszq3VU= -github.com/aws/aws-sdk-go-v2/service/glue v1.102.0/go.mod h1:TNh83y7HCK7s/ImCZkiJF/a5/25XZwkvGHtmvDM4y7I= -github.com/aws/aws-sdk-go-v2/service/grafana v1.26.6 h1:4HbrlCilE6Gfp/mzsm0QUZWrkOXnJhA6tANilm4bW5A= -github.com/aws/aws-sdk-go-v2/service/grafana v1.26.6/go.mod h1:HJ529PdQzuLBtEDDjLtpk9tUskaGduSfAeY2bQzSPi0= -github.com/aws/aws-sdk-go-v2/service/greengrass v1.27.6 h1:Jsv+CFWW/dC7Pnn8QyxfzyJkfQBt0sEFg+I+DQAxrB4= -github.com/aws/aws-sdk-go-v2/service/greengrass v1.27.6/go.mod h1:TPDOTBV37nVuKseCVfhtjXYFsesBQmhe/ap5HFKTUWc= -github.com/aws/aws-sdk-go-v2/service/groundstation v1.31.6 h1:mIzNjH67V9Nu0YaT8FMxe48i4da5etXCxr9YZbBc8os= -github.com/aws/aws-sdk-go-v2/service/groundstation v1.31.6/go.mod h1:FutbhbkJQBICQf1iATk3YM5/KpMCoGBwtIzrj4fpjN8= -github.com/aws/aws-sdk-go-v2/service/guardduty v1.51.2 h1:b7UFaMcKBI7L6dn0cIdti+JWo7tu/PBzSiPMxL5hG+0= -github.com/aws/aws-sdk-go-v2/service/guardduty v1.51.2/go.mod h1:Nt8fPu+TIY++o7jufOiHACxNFdgTNSL5yY9csYxIK3s= -github.com/aws/aws-sdk-go-v2/service/healthlake v1.28.6 h1:5ORoj9mfye3aGD2Q3bWqybeflWHK4MKd8YrVwy2lQGU= -github.com/aws/aws-sdk-go-v2/service/healthlake v1.28.6/go.mod h1:X3UjJJdBn2mecE1MqmLTjL83ueoiwBo8aWFCMk8HYbE= -github.com/aws/aws-sdk-go-v2/service/iam v1.38.1 h1:hfkzDZHBp9jAT4zcd5mtqckpU4E3Ax0LQaEWWk1VgN8= -github.com/aws/aws-sdk-go-v2/service/iam v1.38.1/go.mod h1:u36ahDtZcQHGmVm/r+0L1sfKX4fzLEMdCqiKRKkUMVM= -github.com/aws/aws-sdk-go-v2/service/identitystore v1.27.6 h1:K0vnb1HZx5Bzc4VP2Pyul6pKGOkmlOdLGLNag1H6tJ0= -github.com/aws/aws-sdk-go-v2/service/identitystore v1.27.6/go.mod h1:4biBEi9kbDSwayhZhLtGF6325lrEi3e+C9q+C0N5Jv0= -github.com/aws/aws-sdk-go-v2/service/imagebuilder v1.38.4 h1:aiUxEicGm5tUeTfhsay1FJXnKJnwVO7RPqSLL9ofmcI= -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/internal/v4a v1.3.25 h1:r67ps7oHCYnflpgDy2LZU0MAQtQbYIOqNNnqGO6xQkE= +github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.25/go.mod h1:GrGY+Q4fIokYLtjCVB/aFfCVL6hhGUFl8inD18fDalE= +github.com/aws/aws-sdk-go-v2/service/accessanalyzer v1.36.2 h1:9WvCTutkgDExBamb9UZQ94oiCjJwXUhhtoBH3NIs0Iw= +github.com/aws/aws-sdk-go-v2/service/accessanalyzer v1.36.2/go.mod h1:9QmJU2Zam+wUZe8etjM4VY9NlC0WeMFLIvtUIOIko4U= +github.com/aws/aws-sdk-go-v2/service/account v1.21.7 h1:TljZChU1jYlIrVC6GpS4t5CCuTPVbxkHP9pOv9yKz+o= +github.com/aws/aws-sdk-go-v2/service/account v1.21.7/go.mod h1:/OutbIU/lpaxPpjAeKIE6lOfy9bPOZi1xMzSllMubKw= +github.com/aws/aws-sdk-go-v2/service/acm v1.30.7 h1:rv8PVsnReslpDVVByyuX4LzfA7j0+Jcj6Gili1dBEd0= +github.com/aws/aws-sdk-go-v2/service/acm v1.30.7/go.mod h1:ns7D5/uAekEaVLAIzzNrxVz/CsBCCwNfSdi46PEaGhI= +github.com/aws/aws-sdk-go-v2/service/acmpca v1.37.8 h1:qcx0XpDUjTkwp89kt15m1iKorZ1BK1uzXFTT+1NvU0A= +github.com/aws/aws-sdk-go-v2/service/acmpca v1.37.8/go.mod h1:T44GdsVnipn1kFnmZbVqLhDNtl9rrWVBmjsuPIrRQzY= +github.com/aws/aws-sdk-go-v2/service/amp v1.30.4 h1:0ya3FPNzwsGD93yx7ag3l5sD6Kelb8qghRAUgRfB5G8= +github.com/aws/aws-sdk-go-v2/service/amp v1.30.4/go.mod h1:e3oL6s7I4YUSaRCpz4gSp1ujDmi+f0CwMbDjlRsad40= +github.com/aws/aws-sdk-go-v2/service/amplify v1.27.5 h1:W+P/AMT4p8I1EuP9BaRidIiJXWbUNpbsSb4uZwXah+Q= +github.com/aws/aws-sdk-go-v2/service/amplify v1.27.5/go.mod h1:2wrh0ye46s6rA3L1TKkvu4MEADM54tvnxcMkXVL4z5c= +github.com/aws/aws-sdk-go-v2/service/apigateway v1.28.1 h1:XBVNkd4B5uGC6RgJ+/4x/ZUuk7/6f/hQ8cvGRSxltBI= +github.com/aws/aws-sdk-go-v2/service/apigateway v1.28.1/go.mod h1:4cynmnoMmeiroN7OvI8upcQbvJ3Rfzd3j5hOthYKQnk= +github.com/aws/aws-sdk-go-v2/service/apigatewayv2 v1.24.7 h1:sDijLs7HLzhvxPWxODryESj4gMA8A8seQWhaUVZaPlE= +github.com/aws/aws-sdk-go-v2/service/apigatewayv2 v1.24.7/go.mod h1:5AN33eZ7xq2pxsvMJGgXmQA30PQGHOGOaHZf8Q7AaFw= +github.com/aws/aws-sdk-go-v2/service/appconfig v1.36.1 h1:I8nQw87FkrIlGbeXx3O7yFpn6a1wmcdEzDd3U6lCacM= +github.com/aws/aws-sdk-go-v2/service/appconfig v1.36.1/go.mod h1:pTisi6AYAEJXJpYnghBsl52D0U2Xu8/ZxnCsN5g8Fz0= +github.com/aws/aws-sdk-go-v2/service/appfabric v1.11.7 h1:rktzRP9bRlkjb9g5ndMnS6x8tUgc/rrrXyCCn3qHe4s= +github.com/aws/aws-sdk-go-v2/service/appfabric v1.11.7/go.mod h1:7UgJlroQG4RN5Klt8zwbZFvfGGV8zWvgf3BH+iJoRfY= +github.com/aws/aws-sdk-go-v2/service/appflow v1.45.8 h1:C4Ahu+vqQMgwcKfOaxdUgn0Tmz/yKl5lrk/Y9aGhRsc= +github.com/aws/aws-sdk-go-v2/service/appflow v1.45.8/go.mod h1:m9n55ulVW0oYNVhczguWuVkoaWky0znzYCn1Is2Q4l0= +github.com/aws/aws-sdk-go-v2/service/appintegrations v1.30.7 h1:LrYSdKQMAAJs8XpSfNba7Goc0m0hOEGWoNvrOWFasEw= +github.com/aws/aws-sdk-go-v2/service/appintegrations v1.30.7/go.mod h1:GiSlb1fm4OJ1foTOhXcDziKm2Xre4+bcG8AnQAhjUIM= +github.com/aws/aws-sdk-go-v2/service/applicationautoscaling v1.34.1 h1:8EwNbY+A/Q5myYggLJ7v9v9f00UuWoh9S04y5kre8UQ= +github.com/aws/aws-sdk-go-v2/service/applicationautoscaling v1.34.1/go.mod h1:2mMP2R86zLPAUz0TpJdsKW8XawHgs9Nk97fYJomO3o8= +github.com/aws/aws-sdk-go-v2/service/applicationinsights v1.29.5 h1:dxVAH0LY3XmilHw4O4eB+kYKTu3SqujSYQlyKA6PqkM= +github.com/aws/aws-sdk-go-v2/service/applicationinsights v1.29.5/go.mod h1:A+d2JfMEfDdWWMz3OfbK0IKtWjqoLaKlHt3ifC9pd04= +github.com/aws/aws-sdk-go-v2/service/applicationsignals v1.7.2 h1:QL9Ak3hh3POYTr/DgOe4pn0naYOnARZ9Gy9/uIzW+Oo= +github.com/aws/aws-sdk-go-v2/service/applicationsignals v1.7.2/go.mod h1:a+yECc5pms9wxGPwIKHOhnmDWcHJqAUmTIZR76IhMaA= +github.com/aws/aws-sdk-go-v2/service/appmesh v1.29.7 h1:sycevRiEU3w7mUO+aVCAFgQw7VxXmzGj+13evW/l+Hk= +github.com/aws/aws-sdk-go-v2/service/appmesh v1.29.7/go.mod h1:7/hVyfkxKjfuBu0Z+Ggh9n9VWNEkxPVFagCJZZYGV0U= +github.com/aws/aws-sdk-go-v2/service/apprunner v1.32.7 h1:VlcGnZMtvyxACAPxWPPyWBIRmaqQ62vyf/dTWKyHC84= +github.com/aws/aws-sdk-go-v2/service/apprunner v1.32.7/go.mod h1:/lor1ybmbMZb2It700RSirZR8uIXzt6/EVv9b9qX3r0= +github.com/aws/aws-sdk-go-v2/service/appstream v1.41.7 h1:9KTwRIeh67p4JjOtkAiUQ6Qbzui3igoFyCFGudRR9BY= +github.com/aws/aws-sdk-go-v2/service/appstream v1.41.7/go.mod h1:YC50kSYeBhmjzeJKNf4CB85KN9Gdy+RKhtt4MvMx4ro= +github.com/aws/aws-sdk-go-v2/service/appsync v1.40.1 h1:+fJ03y/PaSNBw6ZrJZFnyix+hTOagn1/+iRLQbW/Crg= +github.com/aws/aws-sdk-go-v2/service/appsync v1.40.1/go.mod h1:YN/LhOApnQGAgb4AljjHkcpl+OmaLrkD6cGPL1dkajI= +github.com/aws/aws-sdk-go-v2/service/athena v1.48.5 h1:nfeCwaDRq4tXZUoBENWNydZQ7YeP3lPuWnAMCJSYcuE= +github.com/aws/aws-sdk-go-v2/service/athena v1.48.5/go.mod h1:27ljwDsnZvfrZKsLzWD4WFjI4OZutEFIjvVtYfj9gHc= +github.com/aws/aws-sdk-go-v2/service/auditmanager v1.37.7 h1:THLQzF9JZZthlhdf8i+rDCqO8K7sk2xmsgl/by0/4B4= +github.com/aws/aws-sdk-go-v2/service/auditmanager v1.37.7/go.mod h1:UZOdtpOTwIj4yHbPVNxfayWIlQp4c3Xht/7sDaFzZs0= +github.com/aws/aws-sdk-go-v2/service/autoscaling v1.51.1 h1:XFZsqNpwwi/D8nFI/tdUQn1QW1BTVcuQH382RNUXojE= +github.com/aws/aws-sdk-go-v2/service/autoscaling v1.51.1/go.mod h1:r+eOyjSMo2zY+j6zEEaHjb7nU74oyva1r2/wFqDkPg4= +github.com/aws/aws-sdk-go-v2/service/autoscalingplans v1.24.7 h1:7zci6q+hPs522cfe75lHUw9LnJ/Ha6eeE977IpBiRwg= +github.com/aws/aws-sdk-go-v2/service/autoscalingplans v1.24.7/go.mod h1:J/X0cqccGAPGPtWCWi5Juw2sSkmUN7mKnBKbbyyjzwc= +github.com/aws/aws-sdk-go-v2/service/backup v1.39.8 h1:ChfrtARE1PhWRW+EZ89IywUUoiPf4f9HYFEahbDaKxo= +github.com/aws/aws-sdk-go-v2/service/backup v1.39.8/go.mod h1:YgtsGOZJNjMAnSov/HRVspxzEUjjszZi3qXo90gzNU8= +github.com/aws/aws-sdk-go-v2/service/batch v1.48.2 h1:/BSZk0ywzZD4KKRt4qm33fIcXQztMSr8zpkr6EfrACs= +github.com/aws/aws-sdk-go-v2/service/batch v1.48.2/go.mod h1:5pxmENM3nBEAr2XrSs6c89Iwl6wAJk0/pkyFd3Gmav0= +github.com/aws/aws-sdk-go-v2/service/bcmdataexports v1.7.7 h1:zrQ6zDzE5ohrLEpwaXGoF0PoBiSBo0oW6uW72iyF0ic= +github.com/aws/aws-sdk-go-v2/service/bcmdataexports v1.7.7/go.mod h1:J+Zv3ekV1h3RyqVlxi1hCliEuI1SwugGAnmiOfwzNco= +github.com/aws/aws-sdk-go-v2/service/bedrock v1.24.0 h1:WyGNIAmXDXp59IAVi/US8K/rV6kA5F0wWg5he/BLx0M= +github.com/aws/aws-sdk-go-v2/service/bedrock v1.24.0/go.mod h1:BKSewSMuaeUidKqXArDlT06PWK/PP3wsgLWTXKeKgQw= +github.com/aws/aws-sdk-go-v2/service/bedrockagent v1.31.0 h1:Nm9+rGcx1CWDDbEiRcuQ4kwyFS24ajcxNn8ca/aqAw0= +github.com/aws/aws-sdk-go-v2/service/bedrockagent v1.31.0/go.mod h1:d+BIleA83BNMLQbwc1gYB/Kgrogwl4lzn2RN+XPIC0s= +github.com/aws/aws-sdk-go-v2/service/budgets v1.28.7 h1:MaBE1kMoZnJ7sxK7wtR7qVe4ggfMz9681DoQZtasgII= +github.com/aws/aws-sdk-go-v2/service/budgets v1.28.7/go.mod h1:jhUXdAWAOIKQReti3jcD8zaDjyayYBAuhmijh8+rYrk= +github.com/aws/aws-sdk-go-v2/service/chatbot v1.9.1 h1:g+Xnw4sHm/T5xDTlNvPBeM6gAAQSzj7EwOI0vBXscSE= +github.com/aws/aws-sdk-go-v2/service/chatbot v1.9.1/go.mod h1:lpKKa8zv8/MTIHRh1JB24Y+R/RXLE6BWxnFCQ/b0W2M= +github.com/aws/aws-sdk-go-v2/service/chime v1.34.7 h1:iHBLzHxZF2vRCQzm9fKp7yA6X2nnUzqeVF3TY60tqhQ= +github.com/aws/aws-sdk-go-v2/service/chime v1.34.7/go.mod h1:NFTd15WIZy1RPTOSZEsWalWG7PuteqwXLfcy/YQocY4= +github.com/aws/aws-sdk-go-v2/service/chimesdkmediapipelines v1.21.2 h1:r4NLm/DDTGnpo2MMXIv/yox2ckrm1xugN41SH/gBrIQ= +github.com/aws/aws-sdk-go-v2/service/chimesdkmediapipelines v1.21.2/go.mod h1:NVs+MoGw0vt6s6g0hulXyy9IMRxTlfPrsral5630V9E= +github.com/aws/aws-sdk-go-v2/service/chimesdkvoice v1.20.0 h1:IwQ9oL4a8ZhJq/tgfPd5r17wxe7V9Sa6JhhwfCkS0D0= +github.com/aws/aws-sdk-go-v2/service/chimesdkvoice v1.20.0/go.mod h1:U8vcvSwicq+2VDdkPTP8UYn5IV8YFWPPi8CoMI786w8= +github.com/aws/aws-sdk-go-v2/service/cleanrooms v1.21.0 h1:XlyfMge7JCGYR9wJoihE0aSx1mmlDdmeDg8l/SmCXPQ= +github.com/aws/aws-sdk-go-v2/service/cleanrooms v1.21.0/go.mod h1:F/4OPOJP5yt+EsQXiOyMq1CkV00LZImdgoHdRWd0nQA= +github.com/aws/aws-sdk-go-v2/service/cloud9 v1.28.7 h1:gcTAeqesSwreH8YtKudbKx3FrliadMbVJOdmHssqEDc= +github.com/aws/aws-sdk-go-v2/service/cloud9 v1.28.7/go.mod h1:l1sYjOTxY/lcqFT56ruW2YoC1k2in//ko50kBxwpYII= +github.com/aws/aws-sdk-go-v2/service/cloudcontrol v1.23.2 h1:xUD/6aoYwDsMmVl6J6Umkgk+QlkzDm1N0w2BukgXTMI= +github.com/aws/aws-sdk-go-v2/service/cloudcontrol v1.23.2/go.mod h1:NQSFnuiS7N4Leys2Mx/N0UMIWkMsXHBs3HEI4ElCSV8= +github.com/aws/aws-sdk-go-v2/service/cloudformation v1.56.1 h1:EqRhsrEoXFFyzcNuqQCF1g9rG9EA8K2EiUj6/eWClgk= +github.com/aws/aws-sdk-go-v2/service/cloudformation v1.56.1/go.mod h1:75rrfzgrN4Ol0m9Xo4+8S09KBoGAd1t6eafFHMt5wDI= +github.com/aws/aws-sdk-go-v2/service/cloudfront v1.43.1 h1:riUb1ppQ6Qs0+Yz0bttwlwPIl0AdBAcJdtuKLzsbaI4= +github.com/aws/aws-sdk-go-v2/service/cloudfront v1.43.1/go.mod h1:fXHLupAMPNGhRAW7e2kS0aoDY/KsQ9GHu80GSK70cRs= +github.com/aws/aws-sdk-go-v2/service/cloudfrontkeyvaluestore v1.8.7 h1:+7Ru1G2Y17qgRiUAcBxc9enlf0TxustitfBqonrWcBc= +github.com/aws/aws-sdk-go-v2/service/cloudfrontkeyvaluestore v1.8.7/go.mod h1:Di9EQnngIp8gHvxf+GkB14uEbC5UcSxsNOOnSWMsfjQ= +github.com/aws/aws-sdk-go-v2/service/cloudhsmv2 v1.27.8 h1:3WVykb3vPvTQ7Ht1LgUzcqlSuZVhV6hntx9lwhvaJ3Y= +github.com/aws/aws-sdk-go-v2/service/cloudhsmv2 v1.27.8/go.mod h1:l9Gu/zoAKx1ww1ZtRlSj8qP80AV742bDP337N5NkY3o= +github.com/aws/aws-sdk-go-v2/service/cloudsearch v1.26.6 h1:m1CAIBZzVi05OAocQs7SzY3gLsGGNBmg+qpHA7HQteU= +github.com/aws/aws-sdk-go-v2/service/cloudsearch v1.26.6/go.mod h1:4ogUNAMmF9rtIYGYnFm21WXc/8+lcAuoNYUkS534MfI= +github.com/aws/aws-sdk-go-v2/service/cloudtrail v1.46.2 h1:DrN2vg75JseLCepYjMVav43e+v7+AhArtWlm2F0OJ6Y= +github.com/aws/aws-sdk-go-v2/service/cloudtrail v1.46.2/go.mod h1:WcTfALKgqv+VCMRCLtG4155sAwcfdYhFADc/yDJgSlc= +github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.43.2 h1:+M/uY6CU2TjCyi9u8ZcowyguWvpifU7C4eQowdZeXBU= +github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.43.2/go.mod h1:URs8sqsyaxiAZkKP6tOEmhcs9j2ynFIomqOKY/CAHJc= +github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.45.0 h1:j9rGKWaYglZpf9KbJCQVM/L85Y4UdGMgK80A1OddR24= +github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.45.0/go.mod h1:LZafBHU62ByizrdhNLMnzWGsUX+abAW4q35PN+FOj+A= +github.com/aws/aws-sdk-go-v2/service/codeartifact v1.33.7 h1:5us9BU1TnHeSqgQEiQCH9qpDbwGEtYAz6fhSL0jiAyA= +github.com/aws/aws-sdk-go-v2/service/codeartifact v1.33.7/go.mod h1:k6IbvJ+UeAR3ueA7so+YwS+sPoHa99ECNQvbtwt/pxk= +github.com/aws/aws-sdk-go-v2/service/codebuild v1.49.2 h1:hQB9ib1JAhjLodnSczNfG5XDw1bWZU0wBwW0FjDs2/4= +github.com/aws/aws-sdk-go-v2/service/codebuild v1.49.2/go.mod h1:dOgg7MoOJYIvQkUkZRrKuO/3YdAbO3+fIJlICyDc3dc= +github.com/aws/aws-sdk-go-v2/service/codecatalyst v1.17.7 h1:FgYA/R4VzjeXwimhbQGJhuyaxV/ORz1LVXUkn4t++Nw= +github.com/aws/aws-sdk-go-v2/service/codecatalyst v1.17.7/go.mod h1:1V3pxyJ9hgz8HDju0oDV7lY+pzM/rERREZh7Kd6W3Yo= +github.com/aws/aws-sdk-go-v2/service/codecommit v1.27.7 h1:8IZ97GQsCxQ3n0yQ+0QAMMtt2YpOeig6W5Q+hIBCfjE= +github.com/aws/aws-sdk-go-v2/service/codecommit v1.27.7/go.mod h1:7thXvCQtqWJhO9u+40n1lA89PhEA7069UVxShNyL5N0= +github.com/aws/aws-sdk-go-v2/service/codeconnections v1.5.7 h1:j2T2/23Cyo+5cOl8iXOL9Tau780sXBriOhWw/N4ex20= +github.com/aws/aws-sdk-go-v2/service/codeconnections v1.5.7/go.mod h1:GmV2UoFy3kQRz44DlCYZUu7/m1tT8K+6TGtqkBQWxHY= +github.com/aws/aws-sdk-go-v2/service/codedeploy v1.29.7 h1:WPhY1/OCDi8AteUyBZj7zvVczNZ4O6T5/HtSxBWh3nE= +github.com/aws/aws-sdk-go-v2/service/codedeploy v1.29.7/go.mod h1:0Xfzxc16U/0QopHTRY6P7MapMxHqd8RkJOt27ryEV+g= +github.com/aws/aws-sdk-go-v2/service/codeguruprofiler v1.24.7 h1:5FCm30+pN7ZXwLohD5e2ec/rGPeuTz7l5cCFMFZfVwY= +github.com/aws/aws-sdk-go-v2/service/codeguruprofiler v1.24.7/go.mod h1:miiswEyJjWFb8lIQgqA067DXBnq5mmTk2eIgKkhg9Yg= +github.com/aws/aws-sdk-go-v2/service/codegurureviewer v1.29.7 h1:x7Wiwow6bm0ICkR9akuYUkzfdpZrDx5wvkY64hZ0nT8= +github.com/aws/aws-sdk-go-v2/service/codegurureviewer v1.29.7/go.mod h1:91nPYuyG0FyzUG6sKqXqU6wJyeysU/9H/ug+tbQR1jc= +github.com/aws/aws-sdk-go-v2/service/codepipeline v1.37.1 h1:+PBCTujGgVyFHSFR7VKGBuwzHZCd6aolUCXO98Xd3yw= +github.com/aws/aws-sdk-go-v2/service/codepipeline v1.37.1/go.mod h1:fLGjNeyN4aduz+LrpWje0ufvfadQnwZof389MwTeFtI= +github.com/aws/aws-sdk-go-v2/service/codestarconnections v1.29.7 h1:5bDPXYGWnZ9nY/N7tY9cSO4hMadCFvZqDwRIs/4ik7w= +github.com/aws/aws-sdk-go-v2/service/codestarconnections v1.29.7/go.mod h1:K9YY4T95yT7BVqHvDjSo8h9yxftqPvWYDFfuCxtHF/g= +github.com/aws/aws-sdk-go-v2/service/codestarnotifications v1.26.7 h1:12UdLytB/DylaodJgGl0CUBT7Zz2xRskdlrHst29JVE= +github.com/aws/aws-sdk-go-v2/service/codestarnotifications v1.26.7/go.mod h1:yDbe8Oh55gPuNdJzsv3CFbHV7d5wvUoLkFhql0p+y1U= +github.com/aws/aws-sdk-go-v2/service/cognitoidentity v1.27.7 h1:Mr0Fl/TJ1ZtkTOtX3wpgzqL6ZI+WOTnxHF0X0OlZyXo= +github.com/aws/aws-sdk-go-v2/service/cognitoidentity v1.27.7/go.mod h1:eVAaMRWHgjdGuTJCjlmcwYleskahesLPrGFV4MpQYvA= +github.com/aws/aws-sdk-go-v2/service/cognitoidentityprovider v1.47.1 h1:isjmZUmhAMzCLs38LnWVIKqWRSkItqZVGpdJowlmV/Y= +github.com/aws/aws-sdk-go-v2/service/cognitoidentityprovider v1.47.1/go.mod h1:U+GnB0KkXI5SgVMzW2J1FHMGbAiObr1XaIGZSMejLlI= +github.com/aws/aws-sdk-go-v2/service/comprehend v1.35.7 h1:z6WD4P7bvSJNlmNVDsfNP/e5o0Zmbz9oM2wOgFWCHRA= +github.com/aws/aws-sdk-go-v2/service/comprehend v1.35.7/go.mod h1:M+Z8mhHoSWbr3Q1V8ZaINLLj0p1WGYWjCv/kO4IgUVw= +github.com/aws/aws-sdk-go-v2/service/computeoptimizer v1.40.1 h1:iH/z1Q7WYbT2MoTkEIMvR32Ip+FFRuD74EKXUqYLP+k= +github.com/aws/aws-sdk-go-v2/service/computeoptimizer v1.40.1/go.mod h1:Epb43KiHofSehPHq6PEQZ07hcl/Euv4vUi7kEcC7J7I= +github.com/aws/aws-sdk-go-v2/service/configservice v1.51.1 h1:zA4KArT5FZ4ypJc8X+7MJNN3iv74K8ygmFhci64M4YI= +github.com/aws/aws-sdk-go-v2/service/configservice v1.51.1/go.mod h1:2fOznUkaoZ2EtJimN0zizQRxQmkndSJz/SSd2x0goKo= +github.com/aws/aws-sdk-go-v2/service/connect v1.119.0 h1:uZ2hecASZoYuuGLHa252ss5SSbFYEhcS/SSWUa/u9kE= +github.com/aws/aws-sdk-go-v2/service/connect v1.119.0/go.mod h1:tuGtOUYMxcOObTcKDHKpzTG9EvjfXjOIEC74a6meGRk= +github.com/aws/aws-sdk-go-v2/service/connectcases v1.21.7 h1:uWiDzkr4L/KMlftI2OqmELmsv0ZGxeyi3YAo266wJzs= +github.com/aws/aws-sdk-go-v2/service/connectcases v1.21.7/go.mod h1:/FZ+YQmJpAdZPR4Z1tA1mIxA/SmLmUlgrn3sZOAmnfQ= +github.com/aws/aws-sdk-go-v2/service/controltower v1.20.1 h1:fpqsKm/4mA+oOn2IM62syUhcVZMU3Gc7tl8HTd4Ul+k= +github.com/aws/aws-sdk-go-v2/service/controltower v1.20.1/go.mod h1:zVh69cAM8AHhBlu/eP9OSBCRbojNw++iEHx0+wgBojI= +github.com/aws/aws-sdk-go-v2/service/costandusagereportservice v1.28.7 h1:8iIE0CQ6ZWC11vSLJf+M4gPgaiP+qxQ3haPV7KhGZTE= +github.com/aws/aws-sdk-go-v2/service/costandusagereportservice v1.28.7/go.mod h1:guVPkA6zDaG1wnh0Od9xyPb/6lUijf2zaHi4tTxW8Do= +github.com/aws/aws-sdk-go-v2/service/costexplorer v1.45.1 h1:2aaEZa6CBfsEebfn3jxwnIDGbSAwZnqIsEC5KF89X2w= +github.com/aws/aws-sdk-go-v2/service/costexplorer v1.45.1/go.mod h1:RboWadEsqV6Hw/OOyyu8IP+kdz0DASutt3H4ezBxSIk= +github.com/aws/aws-sdk-go-v2/service/costoptimizationhub v1.11.1 h1:r1LakPxgYvob4eOY0rTjgYuahwFhVgx0txkSHpnyxFw= +github.com/aws/aws-sdk-go-v2/service/costoptimizationhub v1.11.1/go.mod h1:agAlqygpDyX9paflw12sVF0sGGzAk6Ed5plVQgOqJRk= +github.com/aws/aws-sdk-go-v2/service/customerprofiles v1.44.0 h1:Wkf9S+n02aTZ8pQsp+nBRRVFdodbHG7V5HWqwYQWm/Q= +github.com/aws/aws-sdk-go-v2/service/customerprofiles v1.44.0/go.mod h1:yresrCHgaNcKcF7cLJ6emqK9eb05B1Ik2KvDMLbncU8= +github.com/aws/aws-sdk-go-v2/service/databasemigrationservice v1.44.5 h1:KmcRuMU/pSZy/bhnZ0nTGeNXhvBO0cvXkXduq3E5mAQ= +github.com/aws/aws-sdk-go-v2/service/databasemigrationservice v1.44.5/go.mod h1:4O6knGhxKpEu9ILt1+PGSN/LVWzLa4hdyUdPfjgFTao= +github.com/aws/aws-sdk-go-v2/service/databrew v1.33.7 h1:kaYiuNxHzwDMwsqM766yy0cp8ZVldOTwJhOeR0MINU8= +github.com/aws/aws-sdk-go-v2/service/databrew v1.33.7/go.mod h1:Gu2mR/aUZzdmnNORl8GbAN6xDsPO/t9KNG+B99SNMIk= +github.com/aws/aws-sdk-go-v2/service/dataexchange v1.33.5 h1:X62garDt07bE4Ojd+qO6MTlyMC/wYPw6Sg0QkSfNgXs= +github.com/aws/aws-sdk-go-v2/service/dataexchange v1.33.5/go.mod h1:UJZLGoXBQs6AukctWkOWimAQh6wloVGq6LOTyg/ALJs= +github.com/aws/aws-sdk-go-v2/service/datapipeline v1.25.7 h1:b2xXuJ5Yh5RuyOzs3vdBamLXVK5DIM5l819/pCxbC/M= +github.com/aws/aws-sdk-go-v2/service/datapipeline v1.25.7/go.mod h1:IH2WIe0ol0aDtM5a/+nP6UYRwrDXi/gwF+DA0nJK+i8= +github.com/aws/aws-sdk-go-v2/service/datasync v1.43.5 h1:4tdw3XO+pUwsjE6j2a4kWxZt80NtRxhOl9OnDtPS1fY= +github.com/aws/aws-sdk-go-v2/service/datasync v1.43.5/go.mod h1:ty1/xBfWRiv/C+e/cbTLkM4UGMfkOavUgp3daLZ2QKc= +github.com/aws/aws-sdk-go-v2/service/datazone v1.24.1 h1:/7+bznm0eo+AtBUZZY6cNzrmmto3Mv57Cg8BZeJDBXI= +github.com/aws/aws-sdk-go-v2/service/datazone v1.24.1/go.mod h1:2MCAq6PXnLOI6NVaUES50GGvOl1pa5l6N2XmRAVWWWw= +github.com/aws/aws-sdk-go-v2/service/dax v1.23.7 h1:hZg1sHhWXGZShzHGpwcaOT8HZfx26kkbRDNZgZda4xI= +github.com/aws/aws-sdk-go-v2/service/dax v1.23.7/go.mod h1:fYBjETTq8hZfirBEgXM1xIMy+tvCGYZTeWpjeKKp0bU= +github.com/aws/aws-sdk-go-v2/service/detective v1.31.7 h1:Pw3K9Leqg7SfEoPZek374z1pTJXSKbbS+zbGolMCsWI= +github.com/aws/aws-sdk-go-v2/service/detective v1.31.7/go.mod h1:ngskhJvBbS6oSmoGYyX6gzcoumPw+W5KIzbMVNBd8lQ= +github.com/aws/aws-sdk-go-v2/service/devicefarm v1.28.7 h1:oXxzZJw5Jc5rrbnSBYjC5EfQ3cik+ZzdjHIZYPQ2SeA= +github.com/aws/aws-sdk-go-v2/service/devicefarm v1.28.7/go.mod h1:RmmJpAmMnDSzrKzi29jEcnhy9d4xfjRJ368FEnhvCiE= +github.com/aws/aws-sdk-go-v2/service/devopsguru v1.34.7 h1:WrbyPtKCsyt0UcHzoF/5Kof6O3b4JkZgx5pAFrAe3Ps= +github.com/aws/aws-sdk-go-v2/service/devopsguru v1.34.7/go.mod h1:/pcwN9rb3n1thi1++LLQik7v48pXo7mcgh4baY5giPA= +github.com/aws/aws-sdk-go-v2/service/directconnect v1.30.1 h1:U2VtqwmOzP7sZYWmrnapl3j3KLxIntWyK0RU3uGBIPk= +github.com/aws/aws-sdk-go-v2/service/directconnect v1.30.1/go.mod h1:IVHMPfXzPHdq2JuZmnyreo2Dhhlu84Vel/tochYKgh8= +github.com/aws/aws-sdk-go-v2/service/directoryservice v1.30.8 h1:o3yUhrImWkJuI42DyTJu7REWf1+EUNlwfmLpo2yXzb0= +github.com/aws/aws-sdk-go-v2/service/directoryservice v1.30.8/go.mod h1:CxYqXrb08ko/psMpQ692AcEFXCuB+sVuWA2OZPB32t0= +github.com/aws/aws-sdk-go-v2/service/dlm v1.28.8 h1:Ez/XAeVo6h1hd4dk+r0JADhEqR3fhDPOIgzkWcbKPns= +github.com/aws/aws-sdk-go-v2/service/dlm v1.28.8/go.mod h1:SBPSK/ycAG4ET3JblaBP2Xt52RjNcg827EFgqN8W7AY= +github.com/aws/aws-sdk-go-v2/service/docdb v1.39.6 h1:N2iwdECLOQuClhv3XdTgGSY75N7QHF5nDekPGoFpRyY= +github.com/aws/aws-sdk-go-v2/service/docdb v1.39.6/go.mod h1:pa9tid/NTUDjayagl5El0KVg9IiV3hJEKVxFmvyc+J8= +github.com/aws/aws-sdk-go-v2/service/docdbelastic v1.14.4 h1:pT1NLJ04YA/05ZEbYBNhminfsbKBvHDlOh8ScoMZybA= +github.com/aws/aws-sdk-go-v2/service/docdbelastic v1.14.4/go.mod h1:ZupWmXwSQwiyktsk0/7C71pCkTn7dLgOw47TmpvtU1Q= +github.com/aws/aws-sdk-go-v2/service/drs v1.30.7 h1:0jUZJqidFnPF9LlSSsYD9yQcbIYLyNKjGa+gFPh9UlA= +github.com/aws/aws-sdk-go-v2/service/drs v1.30.7/go.mod h1:myL1h4VGyN3HU1B/7WBs2MsjKYX3FugwPJ09muIM8tE= +github.com/aws/aws-sdk-go-v2/service/dynamodb v1.38.0 h1:isKhHsjpQR3CypQJ4G1g8QWx7zNpiC/xKw1zjgJYVno= +github.com/aws/aws-sdk-go-v2/service/dynamodb v1.38.0/go.mod h1:xDvUyIkwBwNtVZJdHEwAuhFly3mezwdEWkbJ5oNYwIw= +github.com/aws/aws-sdk-go-v2/service/ec2 v1.195.0 h1:F3pFi50sK30DZ4IkkNpHwTLGeal5c3nlKuvTgv7xec4= +github.com/aws/aws-sdk-go-v2/service/ec2 v1.195.0/go.mod h1:00zqVNJFK6UASrTnuvjJHJuaqUdkVz5tW8Ip+VhzuNg= +github.com/aws/aws-sdk-go-v2/service/ecr v1.36.7 h1:R+5XKIJga2K9Dkj0/iQ6fD/MBGo02oxGGFTc512lK/Q= +github.com/aws/aws-sdk-go-v2/service/ecr v1.36.7/go.mod h1:fDPQV/6ONOQOjvtKhtypIy1wcGLcKYtoK/lvZ9fyDGQ= +github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.27.7 h1:eddAe+FnCCLECUKHUHLM9/iAlqDkyRjZk/84+eo0ToE= +github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.27.7/go.mod h1:lik3qEJ4TBnQrEKoZnFh8E8nn5oZSebnB/pydq8oQRQ= +github.com/aws/aws-sdk-go-v2/service/ecs v1.52.1 h1:85SGI/Db9I8PT2rvDLIRGxXdSzuyC4ZKDJwfzuv7WqQ= +github.com/aws/aws-sdk-go-v2/service/ecs v1.52.1/go.mod h1:Ghi1OWUv4+VMEULWiHsKH2gNA3KAcMoLWsvU0eRXvIA= +github.com/aws/aws-sdk-go-v2/service/efs v1.34.1 h1:y2BaF/VBEQM5Gi27ZOX1jSKRQLNifOfvegkqKKDPNEM= +github.com/aws/aws-sdk-go-v2/service/efs v1.34.1/go.mod h1:0c/j249PCFk5d/KHJsBIoCVdnZa9Or71J/fqC/n63BA= +github.com/aws/aws-sdk-go-v2/service/eks v1.53.0 h1:ACTxnLwL6YNmuYbxtp/VR3HGL9SWXU6VZkXPjWST9ZQ= +github.com/aws/aws-sdk-go-v2/service/eks v1.53.0/go.mod h1:ZzOjZXGGUQxOq+T3xmfPLKCZe4OaB5vm1LdGaC8IPn4= +github.com/aws/aws-sdk-go-v2/service/elasticache v1.44.1 h1:Dch9DIcyrHf6OTEhgzz7wIFKrHZAWfcZ1BCAlZtwpYo= +github.com/aws/aws-sdk-go-v2/service/elasticache v1.44.1/go.mod h1:gzplo968xB24VkeHC4wKfDbSERguKL2xKPL1Csd/mH4= +github.com/aws/aws-sdk-go-v2/service/elasticbeanstalk v1.28.7 h1:ieY1UqWTqjb83Rx1KiUO2pxFRdebobkKxHKDXIlIMhM= +github.com/aws/aws-sdk-go-v2/service/elasticbeanstalk v1.28.7/go.mod h1:U47A7lAuy5QYMD7lnRHA8WJCzV/W0POLZrUfjZ7HLro= +github.com/aws/aws-sdk-go-v2/service/elasticloadbalancing v1.28.6 h1:uQFPQNvc9hIaF7SyHQyg2vRtTcWONaa1LUUy+8LEzT8= +github.com/aws/aws-sdk-go-v2/service/elasticloadbalancing v1.28.6/go.mod h1:KkaWcwL6GJtS/TNn1+fVJPAR+6G7Bs7kEm8E3MlgbhQ= +github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.43.1 h1:L9Wt9zgtoYKIlaeFTy+EztGjL4oaXBBGtVXA+jaeYko= +github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.43.1/go.mod h1:yxzLdxt7bVGvIOPYIKFtiaJCJnx2ChlIIvlhW4QgI6M= +github.com/aws/aws-sdk-go-v2/service/elasticsearchservice v1.32.7 h1:LEo0xkW2yM3qVp8awRVG1lp1o/eR2o0CSR4h9CpB3us= +github.com/aws/aws-sdk-go-v2/service/elasticsearchservice v1.32.7/go.mod h1:cMruo7iPDprwYjl8CruF4+ht8gZnMJ8nmbVtgEEBu8M= +github.com/aws/aws-sdk-go-v2/service/elastictranscoder v1.27.7 h1:46x9DdOeOXKRKsDuwX22aHWg1Ow/32jkYyETzh/1zPQ= +github.com/aws/aws-sdk-go-v2/service/elastictranscoder v1.27.7/go.mod h1:sjP2fl/DXY5A/zWjkC414jwK5HXbydQ/ClUFIIzyNQA= +github.com/aws/aws-sdk-go-v2/service/emr v1.47.1 h1:7vjckLqynZflJB13FUfp1oWOvmAhkHFlA6WsnWSOcj0= +github.com/aws/aws-sdk-go-v2/service/emr v1.47.1/go.mod h1:Bae8t4Qt9r5jnngv9coFhXIHvFBCzlplxsqzm2pOLTs= +github.com/aws/aws-sdk-go-v2/service/emrcontainers v1.33.8 h1:tr2CAqQqNsOQqlQTNFJ0HW4o4A/era9mnq/9UnnVZng= +github.com/aws/aws-sdk-go-v2/service/emrcontainers v1.33.8/go.mod h1:BAo50mn0HxLW1w5N96Y3KluxU//eaQkpQv2O0LLPsw4= +github.com/aws/aws-sdk-go-v2/service/emrserverless v1.26.7 h1:9mmljOULuO7Q0foAf32HWwyhgbm+oLGeVwaGadp08lY= +github.com/aws/aws-sdk-go-v2/service/emrserverless v1.26.7/go.mod h1:HAlr1TP57Lswg9mwg+5SyoeDRMMj98chLBn9BRq/SmE= +github.com/aws/aws-sdk-go-v2/service/eventbridge v1.36.0 h1:UBCwgevYbPDbPb8LKyCmyBJ0Lk/gCPq4v85rZLe3vr4= +github.com/aws/aws-sdk-go-v2/service/eventbridge v1.36.0/go.mod h1:ve9wzd6ToYjkZrF0nesNJxy14kU77QjrH5Rixrr4NJY= +github.com/aws/aws-sdk-go-v2/service/evidently v1.23.7 h1:Y4KQFc4uXRZRUS0c8zauTd0t0vAMvQrAS06DqwyvWMg= +github.com/aws/aws-sdk-go-v2/service/evidently v1.23.7/go.mod h1:uvzDzbyHPk9ZoALbM6K0Yz+XiZuGHwHPNGXUdggdDu0= +github.com/aws/aws-sdk-go-v2/service/finspace v1.28.7 h1:4Figzs7CIQI08uPe8YDsECkDOJuR9N8eMz2Y8pccxc4= +github.com/aws/aws-sdk-go-v2/service/finspace v1.28.7/go.mod h1:a+RGo9o5n5Ts8kCQadDaq8Py9r6upMOFTzd5LV1xB2M= +github.com/aws/aws-sdk-go-v2/service/firehose v1.35.2 h1:A4rkZ/YpyzoU8f8LMe1rPXEvkzX5R/vdAxDwN6IGegs= +github.com/aws/aws-sdk-go-v2/service/firehose v1.35.2/go.mod h1:3Iza1sNaP9L+uKzhE08ilDSz8Dbu2tOL8e5exyj0etE= +github.com/aws/aws-sdk-go-v2/service/fis v1.31.2 h1:sgNhe7x7r4SffGdtbZteb0AHqCmw5ZHDIiyMCEl6BWs= +github.com/aws/aws-sdk-go-v2/service/fis v1.31.2/go.mod h1:MDGBuQGY9Y4zvv6Bi5tDF4Am+D7fRCvk+nUVndGr0l0= +github.com/aws/aws-sdk-go-v2/service/fms v1.38.5 h1:y41UPvSB231dfhAikN9xB2OSEGi8wdJgu7YvOHIT9IY= +github.com/aws/aws-sdk-go-v2/service/fms v1.38.5/go.mod h1:XnzEACT9GzGF0eSbBbkupYA74UtnF2b4mQN6In289KA= +github.com/aws/aws-sdk-go-v2/service/fsx v1.51.0 h1:n4ifwCx29MYkKBnojL/dkV1BzG5IJubsG4Z9A/bZB30= +github.com/aws/aws-sdk-go-v2/service/fsx v1.51.0/go.mod h1:5q7w7rvT828zgFuEod4Ijbw/yJ4Tn4vOPSSxbRT7Lws= +github.com/aws/aws-sdk-go-v2/service/gamelift v1.37.2 h1:OzCZubJlSiTU7ht4kGi+g5/RWjoutYyBYWPPaw6Mi5c= +github.com/aws/aws-sdk-go-v2/service/gamelift v1.37.2/go.mod h1:MOsRBRZZKsukJ3FetfsrX+QXgLd9k0q1wwIxJrh5qu0= +github.com/aws/aws-sdk-go-v2/service/glacier v1.26.7 h1:YTg3h8OBu4x3UCsu9vKz9VHqkfJQpY1fpwXye6GeoMQ= +github.com/aws/aws-sdk-go-v2/service/glacier v1.26.7/go.mod h1:w/cFjxbAVqNeAMQf31PI9KopvcFYoXdv0oG2Y9wU0uA= +github.com/aws/aws-sdk-go-v2/service/globalaccelerator v1.29.7 h1:TB66P1ES3DvjeR7YNTfO4/4ncB2MiFx0jzazbPisWkw= +github.com/aws/aws-sdk-go-v2/service/globalaccelerator v1.29.7/go.mod h1:geddg2iWFvxpfa7SIoJztvcdP/Prm1xk9W4+IUhGs7Y= +github.com/aws/aws-sdk-go-v2/service/glue v1.102.1 h1:E8/vYD7uGzp9mwKErJdQBH77FqEtt/BK35hM7UP3PLM= +github.com/aws/aws-sdk-go-v2/service/glue v1.102.1/go.mod h1:ajiRue7mZ0vQjVHQkQG2KBaPHW8lL5GtvmjRTHWDaqk= +github.com/aws/aws-sdk-go-v2/service/grafana v1.26.7 h1:LVJA+YR5tHGo95E8P5W1GFnqrQIiOOagnYCGLExvVr0= +github.com/aws/aws-sdk-go-v2/service/grafana v1.26.7/go.mod h1:oEez2RtKrs3oJ6EgbLV0aBC5YJ/bPcMbkGNtsrW1L3Q= +github.com/aws/aws-sdk-go-v2/service/greengrass v1.27.7 h1:ZYq/OyCCRtS55xvC73U7klRHzWlV4AG0XvG8/jbBH1E= +github.com/aws/aws-sdk-go-v2/service/greengrass v1.27.7/go.mod h1:5iOqOd+Xi7tMBd+ucAb95owiLCYfeqxphlblc8EvCJg= +github.com/aws/aws-sdk-go-v2/service/groundstation v1.31.7 h1:6I620zcBLf791OnuF3hJGj2ft+qLvSsxRerminjOiGY= +github.com/aws/aws-sdk-go-v2/service/groundstation v1.31.7/go.mod h1:RPZk76+qDmck0IFAo+ZteQDOKRN3jST4mFsCeicDmOc= +github.com/aws/aws-sdk-go-v2/service/guardduty v1.52.0 h1:eU4Wt4yUuxVfETAfHqkIivj2fmaObjY+1rNRAVp63tQ= +github.com/aws/aws-sdk-go-v2/service/guardduty v1.52.0/go.mod h1:JMxJFzRnFpi77J2uktvtZh4lcGMJMC9HLE9Tqvf7atA= +github.com/aws/aws-sdk-go-v2/service/healthlake v1.28.7 h1:XuRWGRITuK7WMWKMkog/htDAt/t58wwdTK04oynlPL8= +github.com/aws/aws-sdk-go-v2/service/healthlake v1.28.7/go.mod h1:0Ef9fBviMZwF5p9vDNcmAB6hUst2h8aNRnkUhzoE3B0= +github.com/aws/aws-sdk-go-v2/service/iam v1.38.2 h1:8iFKuRj/FJipy/aDZ2lbq0DYuEHdrxp0qVsdi+ZEwnE= +github.com/aws/aws-sdk-go-v2/service/iam v1.38.2/go.mod h1:UBe4z0VZnbXGp6xaCW1ulE9pndjfpsnrU206rWZcR0Y= +github.com/aws/aws-sdk-go-v2/service/identitystore v1.27.7 h1:y0SG6t2s4xrOwjulhbGQ72ovA2MSlrb2UyAz+pA6n8g= +github.com/aws/aws-sdk-go-v2/service/identitystore v1.27.7/go.mod h1:cJpIii79T0fjc0awSqvU/1kltAjp8MCmMpkhbOUUiik= +github.com/aws/aws-sdk-go-v2/service/imagebuilder v1.39.0 h1:iYKAYIDogQjGVip912p9brH3/SUnY+uBAZyZi2TKz20= +github.com/aws/aws-sdk-go-v2/service/imagebuilder v1.39.0/go.mod h1:7s6ULWi0Vru/qbdXGU9P17fRG3J0pnCLdb0Q7ldlI2s= +github.com/aws/aws-sdk-go-v2/service/inspector v1.25.7 h1:LV32Xwxm9bvE4DnnUHyfDFrkL5sNGGnr/PWG8LMg2rA= +github.com/aws/aws-sdk-go-v2/service/inspector v1.25.7/go.mod h1:yK+nyYadIKeORBC4ctdbS87vSBa6AHzck8HHhQ6ZxX4= +github.com/aws/aws-sdk-go-v2/service/inspector2 v1.34.1 h1:dX68SHOUFejZMeg2HyHlyL1QFWR+p03S2y08EO2eTdY= +github.com/aws/aws-sdk-go-v2/service/inspector2 v1.34.1/go.mod h1:SDwBSilPek820sf6C7qttUzdiO/2FXPkj811SAbn0sY= 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= -github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.4.5/go.mod h1:DLWnfvIcm9IET/mmjdxeXbBKmTCm0ZB8p1za9BVteM8= -github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.10.5 h1:3Y457U2eGukmjYjeHG6kanZpDzJADa2m0ADqnuePYVQ= -github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.10.5/go.mod h1:CfwEHGkTjYZpkQ/5PvcbEtT7AJlG68KkEvmtwU8z3/U= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.5 h1:wtpJ4zcwrSbwhECWQoI/g6WM9zqCcSpHDJIWSbMLOu4= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.5/go.mod h1:qu/W9HXQbbQ4+1+JcZp0ZNPV31ym537ZJN+fiS7Ti8E= -github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.5 h1:P1doBzv5VEg1ONxnJss1Kh5ZG/ewoIE4MQtKKc6Crgg= -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/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= -github.com/aws/aws-sdk-go-v2/service/iotevents v1.27.6/go.mod h1:trsP/zg3CggG/NoU1ST6HWEHoZrc1MiQZOjpjmsAbeA= -github.com/aws/aws-sdk-go-v2/service/ivs v1.42.1 h1:9u32vlxg5QBHW3nbVJDRzcGCAW/V0yxBfgd93LazzQM= -github.com/aws/aws-sdk-go-v2/service/ivs v1.42.1/go.mod h1:i0WHmbRSq7fzU4s4jTS0npa50FFxMozzpXwv6mz9OFQ= -github.com/aws/aws-sdk-go-v2/service/ivschat v1.16.6 h1:5xHMX7m64RVGupzIV8fEQqEaosY6q2E+OH95s0ONMKU= -github.com/aws/aws-sdk-go-v2/service/ivschat v1.16.6/go.mod h1:dJPtJnW8PowNFXJzPltAM/DsQq27tH+zgNYdygfSZDs= -github.com/aws/aws-sdk-go-v2/service/kafka v1.38.6 h1:VwFMQWdGfkUW7xhkLWfqZXk1X3ufQ1JyrwA11Uaejo4= -github.com/aws/aws-sdk-go-v2/service/kafka v1.38.6/go.mod h1:zYy5wnwc0at4JSdXWyPQ9vthJyBRsi7fuAQZHdaWs5s= -github.com/aws/aws-sdk-go-v2/service/kafkaconnect v1.21.6 h1:OJOnpv9SKHd3BbAZ7ZOVfTwH9ZuZ8DudbZ1q7Y8zEik= -github.com/aws/aws-sdk-go-v2/service/kafkaconnect v1.21.6/go.mod h1:doTPYxH1R3obnAYNR7dNb+q5uaQrFGWsjrK7mmkhFOI= -github.com/aws/aws-sdk-go-v2/service/kendra v1.54.6 h1:tFPhqndyf8ylW0sHA4SKjxdey2Tc99avmKyI4KpWd/I= -github.com/aws/aws-sdk-go-v2/service/kendra v1.54.6/go.mod h1:PfMkacoIQi/2ICBRITqDcuMtssqRcOqnlH2La8wg280= -github.com/aws/aws-sdk-go-v2/service/keyspaces v1.16.0 h1:9VSwywZan7uSofA8lg87jXAvrXH4+QDTIF+7H/Q+SRw= -github.com/aws/aws-sdk-go-v2/service/keyspaces v1.16.0/go.mod h1:H8dcZZVknJUIM10091NgZ6lwrNFZRWamRA/a1JskMIE= -github.com/aws/aws-sdk-go-v2/service/kinesis v1.32.6 h1:yN7WEx9ksiP5+9zdKtoQYrUT51HvYw+EA1TXsElvMyk= -github.com/aws/aws-sdk-go-v2/service/kinesis v1.32.6/go.mod h1:j8MNat6qtGw5OoEACRbWtT8r5my4nRWfM/6Uk+NsuC4= -github.com/aws/aws-sdk-go-v2/service/kinesisanalytics v1.25.7 h1:Qbwhj/5W7R/gD/kLKercGtFzbLN68Dr/xVCU36RLnTg= -github.com/aws/aws-sdk-go-v2/service/kinesisanalytics v1.25.7/go.mod h1:9NP8BTAPCUTA2xq2KCPtpnDzVkrsS32y0AnJGQWetLg= -github.com/aws/aws-sdk-go-v2/service/kinesisanalyticsv2 v1.31.7 h1:26BO/wxoZ0UxhBnRXfoU58PHGyXAOHD6MGRdMw6bnXw= -github.com/aws/aws-sdk-go-v2/service/kinesisanalyticsv2 v1.31.7/go.mod h1:G655M6ZsQSwHjKDrSSYkzzNLNl0yd24TS/Nvte1Aq8M= -github.com/aws/aws-sdk-go-v2/service/kinesisvideo v1.27.6 h1:HBq8LJ3tFE44HRDDHFdfHT/12xHhlupUL3TMyz2HqR8= -github.com/aws/aws-sdk-go-v2/service/kinesisvideo v1.27.6/go.mod h1:RrmAKIuupEED9AZl0bikVGtyyDO3C93mA0nQwKaPOT0= -github.com/aws/aws-sdk-go-v2/service/kms v1.37.6 h1:CZImQdb1QbU9sGgJ9IswhVkxAcjkkD1eQTMA1KHWk+E= -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/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= -github.com/aws/aws-sdk-go-v2/service/lexmodelbuildingservice v1.28.6/go.mod h1:NIISLX1VE6siExm6eBCKwUxgUtbcZuijhfwovFLlhww= -github.com/aws/aws-sdk-go-v2/service/lexmodelsv2 v1.49.6 h1:2x58q4xIruXYmlJlN16QYK1i3I3BPczqUWdLLu0tGS0= -github.com/aws/aws-sdk-go-v2/service/lexmodelsv2 v1.49.6/go.mod h1:g8skRF3vu5As3fJIFINhNV9kyeAOr8pBDhW9wFHjRDs= -github.com/aws/aws-sdk-go-v2/service/licensemanager v1.29.6 h1:lIBhjNuzuaHwAuziSpwd1pUPrOUGrHnQlg7cbcbLegM= -github.com/aws/aws-sdk-go-v2/service/licensemanager v1.29.6/go.mod h1:G2ZGBJQHBfH6UXY9f0TUfx6kucCKJgQbLKftvjzpXls= -github.com/aws/aws-sdk-go-v2/service/lightsail v1.42.6 h1:Q5zuxb0SS9xrIEnuKlKwFYedk5nviOmtEDXWrfhh/CY= -github.com/aws/aws-sdk-go-v2/service/lightsail v1.42.6/go.mod h1:qklSjYVYEPst2z+rhuBpn84+jYzoo7QRRRk+ZguUoCA= -github.com/aws/aws-sdk-go-v2/service/location v1.42.6 h1:vEfLyr8ouHpU3AzTlyjBO3tMMcVIuaWWSACv9w1VK4c= -github.com/aws/aws-sdk-go-v2/service/location v1.42.6/go.mod h1:etVji3nL4Ge3MpPffv+buU/Scj/iWAL/xf9yUGRZ8zs= -github.com/aws/aws-sdk-go-v2/service/lookoutmetrics v1.31.6 h1:G3y3bhS/P9Y2+YAuvHcHHfyDN4sDjdDZEruCiIBUZM0= -github.com/aws/aws-sdk-go-v2/service/lookoutmetrics v1.31.6/go.mod h1:Da6VcI7dL5IJesAqesB4nr7s2Qv6vFz/DXRUfVFWg+w= -github.com/aws/aws-sdk-go-v2/service/m2 v1.18.4 h1:clAzdHIybLtBrZyt8cqwR171x7mVE3fMmCVmaffskmY= -github.com/aws/aws-sdk-go-v2/service/m2 v1.18.4/go.mod h1:FDVkgTp/iqmocl2JsFtyiQftsSa2jO+DpZ4dB+CRe4E= -github.com/aws/aws-sdk-go-v2/service/macie2 v1.43.6 h1:8Ma/55QqIQBimERWAPLiOafZZ2CGMz15l1jKOcx2YnU= -github.com/aws/aws-sdk-go-v2/service/macie2 v1.43.6/go.mod h1:8DUfCGSV5Y4q2H2pyN1+oZtLszDKMzizpUx6AA9WAxo= -github.com/aws/aws-sdk-go-v2/service/mediaconnect v1.35.6 h1:FXVjLYYBZ9t9BC14HifNCrkzUWTaIrpEEkocPcOvWjE= -github.com/aws/aws-sdk-go-v2/service/mediaconnect v1.35.6/go.mod h1:YTN0ly1dMxMDXGGWWryQB8cDV53rIcPJZNJNXwSoBJA= -github.com/aws/aws-sdk-go-v2/service/mediaconvert v1.63.0 h1:nnH0LGQDZDa7zv8OoXtvixQ8uXH+76tOaMzdu6jDgtU= -github.com/aws/aws-sdk-go-v2/service/mediaconvert v1.63.0/go.mod h1:2Xyd+9T+Wq6gdWAnCEnsuhXE3XES+gwkGsPJI0EBRNI= -github.com/aws/aws-sdk-go-v2/service/medialive v1.62.6 h1:YY15VFYZC/vN2o24nEnQ8KI79GnAfqkYb6RCf0xIFfw= -github.com/aws/aws-sdk-go-v2/service/medialive v1.62.6/go.mod h1:gBEjJ+TAuuuuPDAryKEKdcTLj0oZanQ9moERd0TJpo8= -github.com/aws/aws-sdk-go-v2/service/mediapackage v1.34.6 h1:yLTr2ccKf3+v8eErIAZxuQcHZuVf0+8w/h/RtTJemNw= -github.com/aws/aws-sdk-go-v2/service/mediapackage v1.34.6/go.mod h1:eb107D0QJ62buaWqqmr8FZW7nGOLpgUkanSBzd8HOZw= -github.com/aws/aws-sdk-go-v2/service/mediapackagev2 v1.20.0 h1:jyZC/sFkBrjgxae9USiu6s+V3yW9kbaw/0YeOtM09Sw= -github.com/aws/aws-sdk-go-v2/service/mediapackagev2 v1.20.0/go.mod h1:N/XJzgT7ToK87uK+nTO/gT6oSV+lhbmEhEYTSAHHkZQ= -github.com/aws/aws-sdk-go-v2/service/mediastore v1.24.6 h1:mwGoScB0hwRkKBlbpFhHGwWVuifXKgubYv+OxpxQa0c= -github.com/aws/aws-sdk-go-v2/service/mediastore v1.24.6/go.mod h1:LTbk7V5F9ZAS5dDrCb8Hej0ztaKxzZ2k2XerAfJ1//c= -github.com/aws/aws-sdk-go-v2/service/memorydb v1.24.5 h1:XPYy54nDWNBzieltKQ6pmm5S72NQ++ABzEMrWReAHp8= -github.com/aws/aws-sdk-go-v2/service/memorydb v1.24.5/go.mod h1:O94Vn/09IxbWludvHgI4EmmMNrGHJYUuubF6KxYELlY= -github.com/aws/aws-sdk-go-v2/service/mq v1.27.7 h1:SM+fa0iiR0B/CNpSnYZgBAFMcaPqxaWJyFHz+0QvpHc= -github.com/aws/aws-sdk-go-v2/service/mq v1.27.7/go.mod h1:uM+OjF2Wbww2yCvtPJ3lK7pO0MzcNLtItckYtWbg7bQ= -github.com/aws/aws-sdk-go-v2/service/mwaa v1.33.0 h1:2MD49J99Lxb43LfLItaZEPVVgXHQofAxXo2fQWUzWhA= -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/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/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= -github.com/aws/aws-sdk-go-v2/service/oam v1.15.6/go.mod h1:WSjmYbqG4Sa08dw+q1kBbn5sOK4ioCAwajICCrytQ5I= -github.com/aws/aws-sdk-go-v2/service/opensearch v1.44.1 h1:8LrDaf/GI94aAXufGevIiHYd+btpMkWPmpHRKn7gLPs= -github.com/aws/aws-sdk-go-v2/service/opensearch v1.44.1/go.mod h1:Hda4HPusP9TqF+NEC+aw2296WJ+yJGZR72Ufj1atZ3w= -github.com/aws/aws-sdk-go-v2/service/opensearchserverless v1.17.3 h1:4VeBNMpriKBFdPX7y7ARuiE63IyRbzmritTKD2uqpME= -github.com/aws/aws-sdk-go-v2/service/opensearchserverless v1.17.3/go.mod h1:FAez2d7b4Pe0pkJBE+BhG+1kFJszPdasr5f/uWLFttM= -github.com/aws/aws-sdk-go-v2/service/opsworks v1.26.6 h1:5RdEdk2lp3M+cLixpXURN0MjkUV5FRmDwFo1UXMt0Oc= -github.com/aws/aws-sdk-go-v2/service/opsworks v1.26.6/go.mod h1:pIHYTG0D9gBoZ0gmlZRL8benTzF85bnjPbWrVU25YLk= -github.com/aws/aws-sdk-go-v2/service/organizations v1.35.1 h1:+QsuehAdI8oDvdbkSfgM2yK00FzhPpM8sFozmG1rXD8= -github.com/aws/aws-sdk-go-v2/service/organizations v1.35.1/go.mod h1:Y4nD5yj/r634ux6MWgvZFWmwTofHrHvzYvX2nMnkMdY= -github.com/aws/aws-sdk-go-v2/service/osis v1.14.6 h1:IkLznNNge5hWvUsxF6bYhKkoGpcC0E/5OqOI8rI3WcA= -github.com/aws/aws-sdk-go-v2/service/osis v1.14.6/go.mod h1:tPJ/Jub87lHWze0ct1XH1oA6mKbwIdcLXxaafsnz4t8= -github.com/aws/aws-sdk-go-v2/service/outposts v1.47.1 h1:1+XB/P5Hhf8PS7wW/J+0JuPKHMR/IF0YSYmhC+XiZXc= -github.com/aws/aws-sdk-go-v2/service/outposts v1.47.1/go.mod h1:xwxXMu+7LhL0fmE7tTDhc4tKoClcIvavT13GyixjcXU= -github.com/aws/aws-sdk-go-v2/service/paymentcryptography v1.16.1 h1:lEULsuCT1aAFhns7c33YERMpdIQDz5Hsd8zWB9we/XM= -github.com/aws/aws-sdk-go-v2/service/paymentcryptography v1.16.1/go.mod h1:lncC4s0TLDksKC5mu3D07d2hoEwyxtq/9rCfv+Rhsrg= -github.com/aws/aws-sdk-go-v2/service/pcaconnectorad v1.9.6 h1:KNybFigKqPXtgiSvJlQAfBRdyo+r+pcvf8m4LkNNYzo= -github.com/aws/aws-sdk-go-v2/service/pcaconnectorad v1.9.6/go.mod h1:1oelry9UC3Ht/EyNJYOtj7Jl3lXPJJS1yfAcnRX4mXo= -github.com/aws/aws-sdk-go-v2/service/pcs v1.2.7 h1:ym8CxKwHy+DcZ/q+Nr+jRW79O0TYHszJfppHDyRiaNk= -github.com/aws/aws-sdk-go-v2/service/pcs v1.2.7/go.mod h1:nEWxtjVwnxhC/+PiFYotwLndICIO7s7zg9ppmof7Snc= -github.com/aws/aws-sdk-go-v2/service/pinpoint v1.34.6 h1:20YDzR53Z4/F5Lj9TvZ+C8LXIUQ0Wjy+HtJXM91Ir4s= -github.com/aws/aws-sdk-go-v2/service/pinpoint v1.34.6/go.mod h1:lXmDGZDFvSb1CySh9mujOzljpo5lwKQchPLssSBT890= -github.com/aws/aws-sdk-go-v2/service/pinpointsmsvoicev2 v1.18.1 h1:Rq87gPsr+seXVoRG1qaB+PyYVZPWUYHwHNZj7vxvxR0= -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/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/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= -github.com/aws/aws-sdk-go-v2/service/rbin v1.21.0/go.mod h1:pmSXGrqZyUIIZy6GCp+jvHtreRPPAyHA0B5Rj3JWP/M= -github.com/aws/aws-sdk-go-v2/service/rds v1.91.0 h1:eqHz3Uih+gb0vLE5Cc4Xf733vOxsxDp6GFUUVQU4d7w= -github.com/aws/aws-sdk-go-v2/service/rds v1.91.0/go.mod h1:h2jc7IleH3xHY7y+h8FH7WAZcz3IVLOB6/jXotIQ/qU= -github.com/aws/aws-sdk-go-v2/service/redshift v1.52.1 h1:zb5RnnLLNhQ5ttu/M2awKTMFZCSPk/dFkzLg0wRoGEY= -github.com/aws/aws-sdk-go-v2/service/redshift v1.52.1/go.mod h1:wwRCtvNBYB+hYayN6DRc2bnpuHQa1nlbxzl2hG0iiFY= -github.com/aws/aws-sdk-go-v2/service/redshiftdata v1.31.3 h1:TjnbaZH/KmEb05dDFhghgfRkDfPwlW8offp3N038gTQ= -github.com/aws/aws-sdk-go-v2/service/redshiftdata v1.31.3/go.mod h1:GdcVhrp1b1xkdTQuX05ULZ+nUleYT5uJdQwu+vorK/w= -github.com/aws/aws-sdk-go-v2/service/redshiftserverless v1.24.3 h1:kK6hgb+NPtKbVt6ipCyWDSny6mJty3IxnArQAeUQHRw= -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/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= -github.com/aws/aws-sdk-go-v2/service/resourcegroups v1.27.6/go.mod h1:gGux5LmDJLXI5Q+Nt4YqX+l3ucXvgcxAzuyJ2v9Th/I= -github.com/aws/aws-sdk-go-v2/service/resourcegroupstaggingapi v1.25.6 h1:I+a2rKx253mIClu5QtBkYWtko1k3nC+SvAtWTomengI= -github.com/aws/aws-sdk-go-v2/service/resourcegroupstaggingapi v1.25.6/go.mod h1:hmJ9BhvEvDx0TrC16/p9UdoBRyCD2+k23ritPq5ctdM= -github.com/aws/aws-sdk-go-v2/service/rolesanywhere v1.16.6 h1:PAcYgkHkqSQnXRvlJiYogADw2FE6e3RlxZhEyfLbp5s= -github.com/aws/aws-sdk-go-v2/service/rolesanywhere v1.16.6/go.mod h1:0oftCHOKgkrfOUU5py1HImPvXXmohziImw6ZsDblUZY= -github.com/aws/aws-sdk-go-v2/service/route53 v1.46.2 h1:wmt05tPp/CaRZpPV5B4SaJ5TwkHKom07/BzHoLdkY1o= -github.com/aws/aws-sdk-go-v2/service/route53 v1.46.2/go.mod h1:d+K9HESMpGb1EU9/UmmpInbGIUcAkwmcY6ZO/A3zZsw= -github.com/aws/aws-sdk-go-v2/service/route53domains v1.27.6 h1:V05BVZkF8PlS+7mv/mZbg+RTosgot+/vbC/GjD/O6+I= -github.com/aws/aws-sdk-go-v2/service/route53domains v1.27.6/go.mod h1:qi5Gro08MCfHLMycebAQWfHotdcpDzzPE3lwYSdQDHA= -github.com/aws/aws-sdk-go-v2/service/route53profiles v1.4.6 h1:GmnkT3Bgzhdmpr2jTEwNRBkJIG0wEJto5V0iU0+Y2Ws= -github.com/aws/aws-sdk-go-v2/service/route53profiles v1.4.6/go.mod h1:nmCbIBvDF0cz6unQBjj+0mWo1rrS/Kx5cLidUnBTqxM= -github.com/aws/aws-sdk-go-v2/service/route53recoverycontrolconfig v1.25.6 h1:WOwc3eLLF/1K72JrZNOj8zouEKO1LeIAVNPQ0SVLMoY= -github.com/aws/aws-sdk-go-v2/service/route53recoverycontrolconfig v1.25.6/go.mod h1:hSlHrezzmKmqKk5wUR4cx3jBGskN7wyP/9EzeUlr3Y4= -github.com/aws/aws-sdk-go-v2/service/route53recoveryreadiness v1.21.6 h1:UlFi92om4R46idg9Ha1Q9E7X4wBluNqPzbwJfbMe9XQ= -github.com/aws/aws-sdk-go-v2/service/route53recoveryreadiness v1.21.6/go.mod h1:RBzN/I/E7XuGozrYf7XXSKdbFd50qZIvqCxnisme/S0= -github.com/aws/aws-sdk-go-v2/service/route53resolver v1.34.1 h1:FlKzCc4JH3i87BpFsCvoXQrc2acahy24kebPFvSVWMY= -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/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/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= -github.com/aws/aws-sdk-go-v2/service/schemas v1.28.7/go.mod h1:iwJXS0UyH3hE+/Bt+1MAFCwFuJ6uSx7MUv5KdFeqqPc= -github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.34.6 h1:1KDMKvOKNrpD667ORbZ/+4OgvUoaok1gg/MLzrHF9fw= -github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.34.6/go.mod h1:DmtyfCfONhOyVAJ6ZMTrDSFIeyCBlEO93Qkfhxwbxu0= -github.com/aws/aws-sdk-go-v2/service/securityhub v1.54.7 h1:pWQKR8guL3JKhJo4fzbez5TwcG6oNShKNv1cOlDX0KM= -github.com/aws/aws-sdk-go-v2/service/securityhub v1.54.7/go.mod h1:UleZz3snRNYUF7PwsUDdKFq7VF1SUI4WGgMrnLNbYos= -github.com/aws/aws-sdk-go-v2/service/securitylake v1.19.4 h1:9q6LYxzfK4fW6hYMtrHrI/lXu4sS7I2gGY1vlyrCKNs= -github.com/aws/aws-sdk-go-v2/service/securitylake v1.19.4/go.mod h1:QwvPHp/z19J3LsiN3xOStRqe5rV0TJN4tfbKjBSFlyE= -github.com/aws/aws-sdk-go-v2/service/serverlessapplicationrepository v1.24.6 h1:GfQTL+TxMeqrcUj+e0C85o60mXXsiwCzuFJvEC/XCb0= -github.com/aws/aws-sdk-go-v2/service/serverlessapplicationrepository v1.24.6/go.mod h1:mHgnVSl8qnOokL5Vrn+r8Vk26lxG5rJJWsf3ng9MmMQ= -github.com/aws/aws-sdk-go-v2/service/servicecatalog v1.32.6 h1:ZfH1I4A7xSoZV7Hy/NNHpCTyOj6TjxLax4gZvIdmvEA= -github.com/aws/aws-sdk-go-v2/service/servicecatalog v1.32.6/go.mod h1:8mB+AmDLKnSF82XAtwnUzRjLxDyiEJOj53S84IhR0Mw= -github.com/aws/aws-sdk-go-v2/service/servicecatalogappregistry v1.30.6 h1:3rDGhJUqFxm3njevh4wdEwuqUEhMRUTk16gDEjMIfXg= -github.com/aws/aws-sdk-go-v2/service/servicecatalogappregistry v1.30.6/go.mod h1:VB1Zh7z33iwdgqfNks5+k+YRCIVDX+t0odHr7iRh/9c= -github.com/aws/aws-sdk-go-v2/service/servicediscovery v1.33.6 h1:SNpBx1RGzJRBdiUqyzEeLvJTWIsO/XdrSMNI+z6Oy88= -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/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/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/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/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/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= -github.com/aws/aws-sdk-go-v2/service/sso v1.24.6/go.mod h1:WJSZH2ZvepM6t6jwu4w/Z45Eoi75lPN7DcydSRtJg6Y= -github.com/aws/aws-sdk-go-v2/service/ssoadmin v1.29.6 h1:/+meNQDvDq2Bq3mAhlBkCJjSsjKhOKIUoxSkgy9VJ1o= -github.com/aws/aws-sdk-go-v2/service/ssoadmin v1.29.6/go.mod h1:clySUxAQHWp4zLgAIm9hEOlLFHyxSE2YYb2wL/p+7Oo= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.5 h1:K0OQAsDywb0ltlFrZm0JHPY3yZp/S9OaoLU33S7vPS8= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.5/go.mod h1:ORITg+fyuMoeiQFiVGoqB3OydVTLkClw/ljbblMq6Cc= -github.com/aws/aws-sdk-go-v2/service/storagegateway v1.34.6 h1:6TACV9Oz/QFABh6zqHCRt6/3TCCTN2yu/Vk/d2QiMCo= -github.com/aws/aws-sdk-go-v2/service/storagegateway v1.34.6/go.mod h1:9Zh7Q083SlzjsH5+Ay1MUsPwDBFdpQWd8C2k3LYiIZ0= -github.com/aws/aws-sdk-go-v2/service/sts v1.33.1 h1:6SZUVRQNvExYlMLbHdlKB48x0fLbc2iVROyaNEwBHbU= -github.com/aws/aws-sdk-go-v2/service/sts v1.33.1/go.mod h1:GqWyYCwLXnlUB1lOAXQyNSPqPLQJvmo8J0DWBzp9mtg= -github.com/aws/aws-sdk-go-v2/service/swf v1.27.6 h1:SNBI1mmvexuy41GeRryQe8r/BWlEtnC7TuDrlIiccDg= -github.com/aws/aws-sdk-go-v2/service/swf v1.27.6/go.mod h1:p48SX8A0BLF1a9owTvsdlpALq2th780a2FJi/DGGK/s= -github.com/aws/aws-sdk-go-v2/service/synthetics v1.30.1 h1:f9icqeThImJEpO3cQp7CO4taZOil/uph9uaiLqo6ZMw= -github.com/aws/aws-sdk-go-v2/service/synthetics v1.30.1/go.mod h1:l0COvN1sYnOLJJaXAQistyp96G76KL0+1CtsvLtQJ/8= -github.com/aws/aws-sdk-go-v2/service/taxsettings v1.7.0 h1:NWEjSezAbU7klTwlWJFLhDHgwyUpwUuByd1QExRMULM= -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/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/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= -github.com/aws/aws-sdk-go-v2/service/wafregional v1.25.6/go.mod h1:j3VEF66T5h8nu3WjPwPZRiBIwUo7rlDgyklgTTNleAE= -github.com/aws/aws-sdk-go-v2/service/wafv2 v1.55.5 h1:Fqt5dudTu1FxJXxrcLxKmnSPVuOV5qYyONUWXEeEU0g= -github.com/aws/aws-sdk-go-v2/service/wafv2 v1.55.5/go.mod h1:SGymgXOuZBAnbdEO2NAPUHOXU2swMyT0+nHD1VlNxhk= -github.com/aws/aws-sdk-go-v2/service/wellarchitected v1.34.6 h1:gRlAqT37MBjotuhc9aES3J9OcyRolDlZE9y4eqlWx7g= -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/internal/checksum v1.4.6 h1:HCpPsWqmYQieU7SS6E9HXfdAMSud0pteVXieJmcpIRI= +github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.4.6/go.mod h1:ngUiVRCco++u+soRRVBIvBZxSMMvOVMXA4PJ36JLfSw= +github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.10.6 h1:nbmKXZzXPJn41CcD4HsHsGWqvKjLKz9kWu6XxvLmf1s= +github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.10.6/go.mod h1:SJhcisfKfAawsdNQoZMBEjg+vyN2lH6rO6fP+T94z5Y= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.6 h1:50+XsN70RS7dwJ2CkVNXzj7U2L1HKP8nqTd3XWEXBN4= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.6/go.mod h1:WqgLmwY7so32kG01zD8CPTJWVWM+TzJoOVHwTg4aPug= +github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.6 h1:BbGDtTi0T1DYlmjBiCr/le3wzhA37O8QTC5/Ab8+EXk= +github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.6/go.mod h1:hLMJt7Q8ePgViKupeymbqI0la+t9/iYFBjxQCFwuAwI= +github.com/aws/aws-sdk-go-v2/service/internetmonitor v1.20.2 h1:Dv+q59QjG5FUBRrZGSnu5nouzwPoivj2Z7KH0U0EneU= +github.com/aws/aws-sdk-go-v2/service/internetmonitor v1.20.2/go.mod h1:Pnzezn20O/qGSc8S3NVpy879f5w4bWnYW3iGHTUbgBw= +github.com/aws/aws-sdk-go-v2/service/iot v1.61.1 h1:xU86aILQFTU5I35YHw5iOLIbSriLsdmnYBuTst9+5K8= +github.com/aws/aws-sdk-go-v2/service/iot v1.61.1/go.mod h1:2QrSORRSY/NYGcTbUdHIz62SM5RlLCAnBcpcDIjg/Sk= +github.com/aws/aws-sdk-go-v2/service/iotanalytics v1.26.7 h1:Wzu7Zb+Xxekp9ncI9Lqx24b8avRoLh4ZaVjUWda3Po8= +github.com/aws/aws-sdk-go-v2/service/iotanalytics v1.26.7/go.mod h1:dT/c5XzdfUmqgbuY2rfoqEoaS4hhhV6bzYKCmHIudsg= +github.com/aws/aws-sdk-go-v2/service/iotevents v1.27.7 h1:3+CqncIjYZhQ4dW0MEe3LN48ny4H1OydEIrtN6N/NMM= +github.com/aws/aws-sdk-go-v2/service/iotevents v1.27.7/go.mod h1:A8OzS86qbmve0dL7bqdbqy4PcBKWCWqg8gKRHLO9pEI= +github.com/aws/aws-sdk-go-v2/service/ivs v1.42.2 h1:9QFYCHXxRywbd/jvx9wtU73u7QT0I7Y3qAKLgDDIwKo= +github.com/aws/aws-sdk-go-v2/service/ivs v1.42.2/go.mod h1:BwNgy90oNpZ/VrzHTn6y/z2jdsJ2ZK6D5yvvtE5Ft0o= +github.com/aws/aws-sdk-go-v2/service/ivschat v1.16.7 h1:HlECOFumfIpk5nRnSdJ6F6ney0vxu9JsLe4zifGlswg= +github.com/aws/aws-sdk-go-v2/service/ivschat v1.16.7/go.mod h1:C57nohycrCEMovZLg5G75J/DEZka5WSuOJtfaYqIq8s= +github.com/aws/aws-sdk-go-v2/service/kafka v1.38.7 h1:RjCwdphB+wBtT/qQw6e7c6HOZ7ab4WN22Uw8GSmKNb8= +github.com/aws/aws-sdk-go-v2/service/kafka v1.38.7/go.mod h1:6ezJjIOpnDf+Q/BJ2CIITrcdXSvfUS1zwjnEHHPa8oU= +github.com/aws/aws-sdk-go-v2/service/kafkaconnect v1.21.7 h1:OSj7D23vSCmeHSp8IQUuSvc57cUi6FwYQ634FgbMdOY= +github.com/aws/aws-sdk-go-v2/service/kafkaconnect v1.21.7/go.mod h1:oy7uAjiwfudbkCbOW5nIBNhzPEsQbnbcNO18JgdVqZU= +github.com/aws/aws-sdk-go-v2/service/kendra v1.54.7 h1:tOVT7NRS+pv4o1/X8V8Abd/Pa+rVCvwfkdxCfPqofoI= +github.com/aws/aws-sdk-go-v2/service/kendra v1.54.7/go.mod h1:/HuziZyTc3mY3YW5DqgZAnyhFoK38EMCqnASuWrpYoo= +github.com/aws/aws-sdk-go-v2/service/keyspaces v1.16.1 h1:6H6WaX339sByRffHdcX7yCG7JeFM4Z/61+uvGLleQNw= +github.com/aws/aws-sdk-go-v2/service/keyspaces v1.16.1/go.mod h1:hW+Z1zESPAefZ33sgnMvY1ADVCiPI2e8v1vTQcz/MDY= +github.com/aws/aws-sdk-go-v2/service/kinesis v1.32.7 h1:QTtbqxI+i2gaWjcTwJZtm8/xEl9kiQXXbOatGabNuXA= +github.com/aws/aws-sdk-go-v2/service/kinesis v1.32.7/go.mod h1:5aKZaOb2yfdeAOvfam0/6HoUXg01pN172bn7MqpM35c= +github.com/aws/aws-sdk-go-v2/service/kinesisanalytics v1.25.8 h1:0h1EmAZ5VTdoteDEzE9OlTr7OXZGO56eMxOGGceioBE= +github.com/aws/aws-sdk-go-v2/service/kinesisanalytics v1.25.8/go.mod h1:c9hLEK1e3z+ruMXThiEyqMrPdpPOxRw4yg3KZ3rHYl4= +github.com/aws/aws-sdk-go-v2/service/kinesisanalyticsv2 v1.31.8 h1:ryRIc8QkgWcMqmCSBcnYkchdLeDEOtCEjU4tJKCZv9M= +github.com/aws/aws-sdk-go-v2/service/kinesisanalyticsv2 v1.31.8/go.mod h1:vS4K9dorERPC3u8+nXR32WJfltj6DCrx/B3w1njvJUY= +github.com/aws/aws-sdk-go-v2/service/kinesisvideo v1.27.7 h1:u312E9WSNS3aL0fMkD3R8TCrv6RX4KT1F8I6itnQe/4= +github.com/aws/aws-sdk-go-v2/service/kinesisvideo v1.27.7/go.mod h1:pdoRfafdWneitPJSDJEIUH3npcWNF0a9ReMblcQC+hA= +github.com/aws/aws-sdk-go-v2/service/kms v1.37.7 h1:dZmNIRtPUvtvUIIDVNpvtnJQ8N8Iqm7SQAxf18htZYw= +github.com/aws/aws-sdk-go-v2/service/kms v1.37.7/go.mod h1:vj8PlfJH9mnGeIzd6uMLPi5VgiqzGG7AZoe1kf1uTXM= +github.com/aws/aws-sdk-go-v2/service/lakeformation v1.39.0 h1:1tONU+X0IWsiNJIXZGCHQC25GVGbuTcH2EufcOH4gJA= +github.com/aws/aws-sdk-go-v2/service/lakeformation v1.39.0/go.mod h1:TrZ6XeQ86aBjOsy+ae7RKlYWh3TQ53QQcA6YhtFadYk= +github.com/aws/aws-sdk-go-v2/service/lambda v1.69.1 h1:q1NrvoJiz0rm9ayKOJ9wsMGmStK6rZSY36BDICMrcuY= +github.com/aws/aws-sdk-go-v2/service/lambda v1.69.1/go.mod h1:hDj7He9kbR9T5zugnS+T21l4z6do4SEGuno/BpJLpA0= +github.com/aws/aws-sdk-go-v2/service/launchwizard v1.8.7 h1:nMYxTZs0WjVLEyTEqRtD6WR83nMqF65uPHSv43SrFDQ= +github.com/aws/aws-sdk-go-v2/service/launchwizard v1.8.7/go.mod h1:6g7hO7AFKCy9KcvxJFPs8m6u/YS42+AXnI5G6v5amyk= +github.com/aws/aws-sdk-go-v2/service/lexmodelbuildingservice v1.28.7 h1:ctsj2+1N2CfpM2WOrnSKMXgHIjoxqm8LbQ2zs/ecZWI= +github.com/aws/aws-sdk-go-v2/service/lexmodelbuildingservice v1.28.7/go.mod h1:jW7hiTAbVhBgyur3096wz15sT2YEZYPyVtO4fRWgZc4= +github.com/aws/aws-sdk-go-v2/service/lexmodelsv2 v1.49.7 h1:1iMiIfLc8yYCQJ4HwxLkD9L6vU5hnTcNoBI8yoanyR4= +github.com/aws/aws-sdk-go-v2/service/lexmodelsv2 v1.49.7/go.mod h1:Tj5DuyiCjIK6WkzvyXYy0PVq24dK+6CKvon670Q9Jag= +github.com/aws/aws-sdk-go-v2/service/licensemanager v1.29.7 h1:qtiX/fhTL1mrZNOM7KXKgaiHCMSmRfclUMtI2ep619U= +github.com/aws/aws-sdk-go-v2/service/licensemanager v1.29.7/go.mod h1:aH2CD/bGJKv5nBMc2S3bYIapITSSZ6au6YJERm5cEdo= +github.com/aws/aws-sdk-go-v2/service/lightsail v1.42.7 h1:pVO3tnwny+c+XIfNkmrReAkNd4Gyy7TVvro1ZTfzY4g= +github.com/aws/aws-sdk-go-v2/service/lightsail v1.42.7/go.mod h1:yveTbfkp9hhabgl3aXbd2/AvWCgJRi0O+mhm3REyvE8= +github.com/aws/aws-sdk-go-v2/service/location v1.42.7 h1:yLpR7rDAh1mSazJyYc2bNzVk8EMuertx4ZCsDzSFeNg= +github.com/aws/aws-sdk-go-v2/service/location v1.42.7/go.mod h1:lSuujyYUNaI4cHRzTha04mEVGSpIW0PM9AiTemTvKDY= +github.com/aws/aws-sdk-go-v2/service/lookoutmetrics v1.31.7 h1:wyvJFktMUDLYX7q8LpfuvDS50sIR2QrcK2OPaoJZL+Q= +github.com/aws/aws-sdk-go-v2/service/lookoutmetrics v1.31.7/go.mod h1:xVdP3fbrhDfhVNugkmC2aY95Ea0od8j0cUUxoRJ+UP8= +github.com/aws/aws-sdk-go-v2/service/m2 v1.18.5 h1:X6iVlWx3rVolup+wnlNcyylpUIoBbWWhwmvjM+4sC2o= +github.com/aws/aws-sdk-go-v2/service/m2 v1.18.5/go.mod h1:XXdV0w3yWrEmBvE4iZVAwWEPtQD+UrDIc3j/ETsI5+4= +github.com/aws/aws-sdk-go-v2/service/macie2 v1.43.7 h1:mlaPITmZnYi8bm20Ql8tTPrSdLZc6LwdH9RYDuAgf3o= +github.com/aws/aws-sdk-go-v2/service/macie2 v1.43.7/go.mod h1:wya8VTBSC9uglnFujLKT/21M03qc+tnTUHV3fgW6aFM= +github.com/aws/aws-sdk-go-v2/service/mediaconnect v1.35.7 h1:8fTYn2M9KBwvo/MN4S5V5HJkl76MCC4dCZGKK+9y11E= +github.com/aws/aws-sdk-go-v2/service/mediaconnect v1.35.7/go.mod h1:NyaKp3HdG4vD6gNfnIwGsl68/4vneSu1cok7yZAOB/U= +github.com/aws/aws-sdk-go-v2/service/mediaconvert v1.63.1 h1:O0PufOavkptAta6HE7q128zvKV4jcZ5PbyyIRbUsWI8= +github.com/aws/aws-sdk-go-v2/service/mediaconvert v1.63.1/go.mod h1:4B8R+NlIvQUF77Rpqe2r4xQceaUVXCFYfbJ2ASlocbc= +github.com/aws/aws-sdk-go-v2/service/medialive v1.62.7 h1:BdMoauoIpEII5wAfLUnyTJpaiigoqzRctfTtQpdiYwE= +github.com/aws/aws-sdk-go-v2/service/medialive v1.62.7/go.mod h1:3941uJpLJirB+Xc5CM5rsVMeQuNkp0UMrdswdqvOelQ= +github.com/aws/aws-sdk-go-v2/service/mediapackage v1.34.7 h1:NEDXmP4JZxYVPcU+rvIcLUPM6kEhCS2lw09weM1a0WI= +github.com/aws/aws-sdk-go-v2/service/mediapackage v1.34.7/go.mod h1:E4wTOblO64Lm0JHaNwxx1klyfyQ3rKje2J0CwQ6Q4XE= +github.com/aws/aws-sdk-go-v2/service/mediapackagev2 v1.20.1 h1:F+do5xWXqiQhY4sVpYwzVxrER5h6IKfedgFJVuAfpF0= +github.com/aws/aws-sdk-go-v2/service/mediapackagev2 v1.20.1/go.mod h1:+vDyRn8cichafKg5NVt3+HC81nasKOkFpJ0jxuTL6J0= +github.com/aws/aws-sdk-go-v2/service/mediastore v1.24.7 h1:OK3XNax+Pg6cKlgOSOs3Rp/zGlq29gmQQVOMv6Frh4g= +github.com/aws/aws-sdk-go-v2/service/mediastore v1.24.7/go.mod h1:4Cz00WLWNC0c79Y1Rks4MH+ezS5zXGerYY9DryVWRNQ= +github.com/aws/aws-sdk-go-v2/service/memorydb v1.25.0 h1:7HzWnEIEXis3QZCiGpI0FwM4CzxKr82dc18cTqE+Ws8= +github.com/aws/aws-sdk-go-v2/service/memorydb v1.25.0/go.mod h1:nv31Ugm3PeTj/1NoUT1wlJpSttTV9kpANgSGMCOdTYg= +github.com/aws/aws-sdk-go-v2/service/mq v1.27.8 h1:xGcrYXOE7mCt14ToL/ZibXsBW0DhReBuollS35Ci7pQ= +github.com/aws/aws-sdk-go-v2/service/mq v1.27.8/go.mod h1:EjYQlgBAl1BVTGEpjQSTTn8q2IaBYmKZAMGorq+J8N8= +github.com/aws/aws-sdk-go-v2/service/mwaa v1.33.1 h1:Vy9YZcV16Fpo0gFJBTKnEoDiKsREAIwPxvZR51DDlXY= +github.com/aws/aws-sdk-go-v2/service/mwaa v1.33.1/go.mod h1:jMA6WUWuLnmu8HD8/bbhF+UsqZZDD21Sy50KeCYk4Us= +github.com/aws/aws-sdk-go-v2/service/neptune v1.35.6 h1:4XpR4uxdYixFnQecBQ4bj+OVTTIllaVLIdNZT9PVGXU= +github.com/aws/aws-sdk-go-v2/service/neptune v1.35.6/go.mod h1:JeJv7jf5G41lHVNiZ+24s7Frzg8k9xYCGborBe0FdNw= +github.com/aws/aws-sdk-go-v2/service/neptunegraph v1.15.1 h1:2jejkFcjwRmm2w7h5em/psgHikBl+uc8F9qoFdyS5F8= +github.com/aws/aws-sdk-go-v2/service/neptunegraph v1.15.1/go.mod h1:GpKZo1Lgbubeuqk2To4Tr1E5DBHj2mGrl2tuhysti2I= +github.com/aws/aws-sdk-go-v2/service/networkfirewall v1.44.4 h1:kkkVxybBMwof8LX4KwP46syMXHwYAQP90nsEPA5cKiU= +github.com/aws/aws-sdk-go-v2/service/networkfirewall v1.44.4/go.mod h1:b3UwYXVSlxwwRl8frZR9eXRc3rqisD4YyHv+rZ1Xmyc= +github.com/aws/aws-sdk-go-v2/service/networkmanager v1.32.1 h1:xc15Eon+HAbIUBF+58ow0ZxpJ+ZRiQgY0Lu7UmkAe1A= +github.com/aws/aws-sdk-go-v2/service/networkmanager v1.32.1/go.mod h1:EWCvUfz0rkfBfd/2s6Jj8DBT/PilQ/ClD/EByti+JKA= +github.com/aws/aws-sdk-go-v2/service/networkmonitor v1.7.7 h1:jq2n7Z+SUcKFK8zR4lmELte9rgX59HtBqQUBg2DhTYU= +github.com/aws/aws-sdk-go-v2/service/networkmonitor v1.7.7/go.mod h1:Sl6QugaUidIUBpGqzz5EHcwx6cT918H/mnQKNHTyAdc= +github.com/aws/aws-sdk-go-v2/service/oam v1.15.7 h1:gy/9lznIWLyAxokvjktoXNHpmLz8f7Fl/jUrdXdWbGk= +github.com/aws/aws-sdk-go-v2/service/oam v1.15.7/go.mod h1:Rh8Jc91inXNMdoRQk/ETf3waaqde2ZgaBFMyUKC10ko= +github.com/aws/aws-sdk-go-v2/service/opensearch v1.45.0 h1:rjJ9MjX7jObSSxrBK1IU7bkHD6iudbhKTZie4eSHoBo= +github.com/aws/aws-sdk-go-v2/service/opensearch v1.45.0/go.mod h1:f2qp9ZzFIyhStNsVqT09BQbw5K13qEYYMTB9WNNWtDs= +github.com/aws/aws-sdk-go-v2/service/opensearchserverless v1.17.4 h1:+igfh7CHy9+DAnTtTsC1ZIcfkCn/8r+ESK+/+NQj4bk= +github.com/aws/aws-sdk-go-v2/service/opensearchserverless v1.17.4/go.mod h1:pyPPjpS52Akb5g9Y1Sy1eNqWud1ZDDjhe/cLrBfrvyo= +github.com/aws/aws-sdk-go-v2/service/opsworks v1.26.7 h1:JHabLpXH1A2IkaLYccQwC2TBnKLm2b3uSKvAu9N39YE= +github.com/aws/aws-sdk-go-v2/service/opsworks v1.26.7/go.mod h1:ddJLpQoIwK18NaELU6CxxgLnzYdAyzfGEGBwudjbJgo= +github.com/aws/aws-sdk-go-v2/service/organizations v1.36.0 h1:CVHfN8ZVvWzDkAf/Qj+GO53dD5NWVyK16O8pYg/wp3k= +github.com/aws/aws-sdk-go-v2/service/organizations v1.36.0/go.mod h1:SVY+doFrL3KTvVMWzFLKvD7KYQ6GQfwNRPSQS7eA3cA= +github.com/aws/aws-sdk-go-v2/service/osis v1.14.7 h1:K37+ch2PxHJVWg1NRfVebstqZvicwfPPHQuXmwznbqw= +github.com/aws/aws-sdk-go-v2/service/osis v1.14.7/go.mod h1:TRjW1OYREjDpa4Z8pn5Axm6SFPdP2FVcy+jX5eyX3XY= +github.com/aws/aws-sdk-go-v2/service/outposts v1.47.2 h1:OpS3l/leIv8pbK1zaeoZ5WzzTojbLN8zdK8inc37bMM= +github.com/aws/aws-sdk-go-v2/service/outposts v1.47.2/go.mod h1:5X4a801ISjSwj+2Wq5FVicytit172Cdy7Clwia8l3Q0= +github.com/aws/aws-sdk-go-v2/service/paymentcryptography v1.16.2 h1:FShkGVtnQNoezF2amvLfP47k7t/TcwwnXPihC1dpw5s= +github.com/aws/aws-sdk-go-v2/service/paymentcryptography v1.16.2/go.mod h1:mGR1OiBn//5KaxFrLLMwoMDiMeKD07ifB/YaHpYFsFI= +github.com/aws/aws-sdk-go-v2/service/pcaconnectorad v1.9.7 h1:LOvtIRHTybPxw6Q57GpPxmNaD1dn3I8oK9aYD2ZBRmE= +github.com/aws/aws-sdk-go-v2/service/pcaconnectorad v1.9.7/go.mod h1:3BgmxWQ8Z4E2uyTWXp610jzZ4ohM0vk4ECRTiquMusM= +github.com/aws/aws-sdk-go-v2/service/pcs v1.2.8 h1:Ir7mcDtBOJObLKHl/FXB2eRPuWgsDoZNIq8lfVNuJ+Y= +github.com/aws/aws-sdk-go-v2/service/pcs v1.2.8/go.mod h1:LI8eDIEw9SSDuQp2D3UDB6+LZtfs3oraCFoCuf5NHQE= +github.com/aws/aws-sdk-go-v2/service/pinpoint v1.34.7 h1:SZq67/WO334eVG9JqpGZ8uT2ozLV8eX4KWXOXncVmT4= +github.com/aws/aws-sdk-go-v2/service/pinpoint v1.34.7/go.mod h1:8vy9a2PeHCuidO1JTs7iII3BB9WHA4VRlpgHP04mR8c= +github.com/aws/aws-sdk-go-v2/service/pinpointsmsvoicev2 v1.18.2 h1:JijCnewV7KgxgzohNUqCrkH8AU1asAC3Gna0+O9lC6Q= +github.com/aws/aws-sdk-go-v2/service/pinpointsmsvoicev2 v1.18.2/go.mod h1:Aj5x9nXOR2FuuPVcPVlEQnEaliM7Sy08MKxmy40ZQck= +github.com/aws/aws-sdk-go-v2/service/pipes v1.18.5 h1:W0cvpLbDGJIctaEWbClBT6oLNdiUUsEmq4CMm00cLMs= +github.com/aws/aws-sdk-go-v2/service/pipes v1.18.5/go.mod h1:D3p7y45dr9Vgx5sIVD/PxnTwIcbjmlboTHv4GMP7Qsk= +github.com/aws/aws-sdk-go-v2/service/polly v1.45.8 h1:qP67eGQ8myAxyd9+ZA6AZc0nYFmEOBwi7zrC5Aj0DFg= +github.com/aws/aws-sdk-go-v2/service/polly v1.45.8/go.mod h1:Bn1paZpSkDKa1vVJcx5DnDZOFMxMrgR7s74igJuhMTk= +github.com/aws/aws-sdk-go-v2/service/pricing v1.32.7 h1:9UDHX1ZgcXUTAGcyxmw04r/6OVG/aUpQ7dZUziR+vTM= +github.com/aws/aws-sdk-go-v2/service/pricing v1.32.7/go.mod h1:68s1DYctoo30LibzEY6gLajXbQEhxpn49+zYFy+Q5Xs= +github.com/aws/aws-sdk-go-v2/service/qbusiness v1.18.0 h1:Wazwv3/svgvNu31XSsX0fdcwAzuEDKklcMv/V5PNcFE= +github.com/aws/aws-sdk-go-v2/service/qbusiness v1.18.0/go.mod h1:cmW8VmRWKpSEhqy70H3+QCFfHcTguZMZphBIdqcWsIo= +github.com/aws/aws-sdk-go-v2/service/qldb v1.25.7 h1:TWJzwB7S/SBBVitz/0HtdB7pqyf1iv9OUCQ6qeYob5Q= +github.com/aws/aws-sdk-go-v2/service/qldb v1.25.7/go.mod h1:8AyevnOHnUsSNTlqH723oxU2hGgIdhVsUjtDS6JIi8w= +github.com/aws/aws-sdk-go-v2/service/quicksight v1.81.0 h1:U/ktIgrHh0l1Azkhl8sNxNvknhz1Ql6PtEgluc9R8GU= +github.com/aws/aws-sdk-go-v2/service/quicksight v1.81.0/go.mod h1:GE3TPXNfQ2OETAUjwhnFl3CYWqzF9SPB1sJjeUSOkJA= +github.com/aws/aws-sdk-go-v2/service/ram v1.29.7 h1:c6XYrBzh3J8J5Vaxcj4fbfuzDtKv7Blg/bYmd12PG44= +github.com/aws/aws-sdk-go-v2/service/ram v1.29.7/go.mod h1:Znaic26hqqKZ3mmG+UA8aLdnWrOYmkdHUd5KoT/DzGY= +github.com/aws/aws-sdk-go-v2/service/rbin v1.21.1 h1:4w3T6RGy/jrGrup/o9WwtVXEWbwbL/up/+dPaGR5IfU= +github.com/aws/aws-sdk-go-v2/service/rbin v1.21.1/go.mod h1:R1qdIYNn+b3mrEkq9r7jM7FVpgGDeOkeYVr3Poc+95g= +github.com/aws/aws-sdk-go-v2/service/rds v1.92.0 h1:W0gUYAjO24u/M6tpR041wMHJWGzleOhxtCnNLImdrZs= +github.com/aws/aws-sdk-go-v2/service/rds v1.92.0/go.mod h1:ADD2uROOoEIXjbjDPEvDDZWnGmfKFYMddgKwG5RlBGw= +github.com/aws/aws-sdk-go-v2/service/redshift v1.53.0 h1:4/hmROBioc89sKlMVjHgOaH92zAkrAAMZR3BIvYwyD0= +github.com/aws/aws-sdk-go-v2/service/redshift v1.53.0/go.mod h1:UydVhUJOB/DaCJWiaBkPlvuzvWVcUlgbS2Bxn33bcKI= +github.com/aws/aws-sdk-go-v2/service/redshiftdata v1.31.4 h1:A0vlEMhhjNwiDuSeyqCV5E+nKi71xB7JEZ3zmSk9C2o= +github.com/aws/aws-sdk-go-v2/service/redshiftdata v1.31.4/go.mod h1:D22t6rKMIQkle+JZOeXSyPbhluGCmp64qfBYnJciyNo= +github.com/aws/aws-sdk-go-v2/service/redshiftserverless v1.24.4 h1:41IjzWVSWq0V5Dc/aZKINc4J4WMdf5zjCYi7hM+JI/Y= +github.com/aws/aws-sdk-go-v2/service/redshiftserverless v1.24.4/go.mod h1:HR4+m/4+W7RiaFMme0p6Y5dV7bDKhAIn8UiiZfWJVXg= +github.com/aws/aws-sdk-go-v2/service/rekognition v1.45.8 h1:K21+kYo7APUzqhc6pvCxHWAGxdyaxJqnEfBSySbFlGM= +github.com/aws/aws-sdk-go-v2/service/rekognition v1.45.8/go.mod h1:LIrvj+qa6+K+FfiOFv/DXgmBxDU/LCZebFYulAITgps= +github.com/aws/aws-sdk-go-v2/service/resiliencehub v1.28.1 h1:NBrNat0V6a0IlxwURP/kixLzvW7sSYy4/PAqe/OwB5Q= +github.com/aws/aws-sdk-go-v2/service/resiliencehub v1.28.1/go.mod h1:6M1A4+fuybF+twN7Ch53fSEb0jdQAnDl7SjEQOdJQrE= +github.com/aws/aws-sdk-go-v2/service/resourceexplorer2 v1.16.2 h1:vqsk41T4OS50+uU4oYh6YWXjX+wMV8j6fbxMD+xkHXg= +github.com/aws/aws-sdk-go-v2/service/resourceexplorer2 v1.16.2/go.mod h1:TsghsVk15IIlBkv5onzATu0Efu4xd8Xqh1QsQRCFoQU= +github.com/aws/aws-sdk-go-v2/service/resourcegroups v1.27.7 h1:gj5YZ+wn0LpNlqapkn6mEc3Af3w3G79RPh2eT7Os/zc= +github.com/aws/aws-sdk-go-v2/service/resourcegroups v1.27.7/go.mod h1:XngsyfRxK0KbWSC3WIP+YacPE4HoSm4GDpRWiwtQAfQ= +github.com/aws/aws-sdk-go-v2/service/resourcegroupstaggingapi v1.25.7 h1:xQUVjSepDh2F1BUH9Fyxam3YLnYpehb4qzdvdo6sBcY= +github.com/aws/aws-sdk-go-v2/service/resourcegroupstaggingapi v1.25.7/go.mod h1:XklDWgTWh+O/pQRDMSmh6AJaTFYswRsQ+o5XjwBP2+c= +github.com/aws/aws-sdk-go-v2/service/rolesanywhere v1.16.7 h1:M49WXIllz0oLeFxvvEfZvb+FPMfhN9nnDH/Bdiyjf4k= +github.com/aws/aws-sdk-go-v2/service/rolesanywhere v1.16.7/go.mod h1:cb8Aygy/+Ap36c0StMfVnUBCLked9v65w7i/ShJLTLs= +github.com/aws/aws-sdk-go-v2/service/route53 v1.46.3 h1:pDBrvz7CMK381q5U+nPqtSQZZid5z1XH8lsI6kHNcSY= +github.com/aws/aws-sdk-go-v2/service/route53 v1.46.3/go.mod h1:rDMeB13C/RS0/zw68RQD4LLiWChf5tZBKjEQmjtHa/c= +github.com/aws/aws-sdk-go-v2/service/route53domains v1.27.7 h1:cUSak+oDWuKhl3doMhJkm8adfJcP6wRz9Alh9HxDQJI= +github.com/aws/aws-sdk-go-v2/service/route53domains v1.27.7/go.mod h1:c4Zcr9bz35UJ07RC3cR/zBdpFn7ZjZqy/ow+oN0+NEo= +github.com/aws/aws-sdk-go-v2/service/route53profiles v1.4.7 h1:6SZ8kRmQE278KIJXq4cLdlOgO7nvlxgn6BNZRIIuyFQ= +github.com/aws/aws-sdk-go-v2/service/route53profiles v1.4.7/go.mod h1:RFwYVDBuEI0U+vxTP5m5lGgGe9Wo2kagynHfxTl2fWU= +github.com/aws/aws-sdk-go-v2/service/route53recoverycontrolconfig v1.25.7 h1:/NwKq9S1DBMAIYNamv9kBz0fwuqnILphCnilPMO48Yc= +github.com/aws/aws-sdk-go-v2/service/route53recoverycontrolconfig v1.25.7/go.mod h1:Qalb81pBJbyuXB8Z1JbrOs8ZB8pbLwTTfR/L+ssPP2k= +github.com/aws/aws-sdk-go-v2/service/route53recoveryreadiness v1.21.7 h1:uozag7wGE9PbM/rESMnnXkBqPpOR/UtSpUSUB5Knl6M= +github.com/aws/aws-sdk-go-v2/service/route53recoveryreadiness v1.21.7/go.mod h1:aC09Jm/A1wGiFkMs2BDU5IvGL6V26xIgJKQbM1VyXrA= +github.com/aws/aws-sdk-go-v2/service/route53resolver v1.34.2 h1:9YaCGPw0s0qmxlyPujSe6LWqmtjfouTIRXrEtiJyHaw= +github.com/aws/aws-sdk-go-v2/service/route53resolver v1.34.2/go.mod h1:m0CMmlFRzCrscSzjkH7GOPstcuKhgJCgK2153O2bP1I= +github.com/aws/aws-sdk-go-v2/service/rum v1.21.7 h1:AEl97eESj/H7fjtDH1dNyUCXHH2Dj16o2JYXLePaRH0= +github.com/aws/aws-sdk-go-v2/service/rum v1.21.7/go.mod h1:D54Xit4pURxcusZV7N1/J9U+/1LSTA2wmrAb2zAJhdA= +github.com/aws/aws-sdk-go-v2/service/s3 v1.71.0 h1:nyuzXooUNJexRT0Oy0UQY6AhOzxPxhtt4DcBIHyCnmw= +github.com/aws/aws-sdk-go-v2/service/s3 v1.71.0/go.mod h1:sT/iQz8JK3u/5gZkT+Hmr7GzVZehUMkRZpOaAwYXeGY= +github.com/aws/aws-sdk-go-v2/service/s3control v1.52.0 h1:tH6HJdKj1O5N8Uti8D2X20JYoDe9ZdC827iY92U+Ooo= +github.com/aws/aws-sdk-go-v2/service/s3control v1.52.0/go.mod h1:sAOVMYapLSs3nCfdQo63qfVkKHlu97oqHDPrRbqayNg= +github.com/aws/aws-sdk-go-v2/service/s3outposts v1.28.7 h1:yUuN4xIlI/2bUqniq5OdIw13FIGtUdPhzU4dzl2v6fM= +github.com/aws/aws-sdk-go-v2/service/s3outposts v1.28.7/go.mod h1:yCIumXPHLHsjmrD8P9UvXFVT0R9R+Wlqut71bW5+ZY4= +github.com/aws/aws-sdk-go-v2/service/sagemaker v1.168.1 h1:Sz0HMK2/8itHAb9ABnMOEHfpOAIxk2a+f6EMsw7jn54= +github.com/aws/aws-sdk-go-v2/service/sagemaker v1.168.1/go.mod h1:LoIh7abCP1rQng1kxJVJOTux55TaYN2tVN7G+zNbhus= +github.com/aws/aws-sdk-go-v2/service/scheduler v1.12.7 h1:lRA+BvESWVoldCxaw3SG9UssITkVref8rlVy5xCsh0A= +github.com/aws/aws-sdk-go-v2/service/scheduler v1.12.7/go.mod h1:hCwaxwoPRJmODF1jv6HvbUyT9q7Ak43LesgkvNvZ0PI= +github.com/aws/aws-sdk-go-v2/service/schemas v1.28.8 h1:9TVRGRx70yb6sa0QHQiASkQJvi/7yyHjSgacjqtuoGs= +github.com/aws/aws-sdk-go-v2/service/schemas v1.28.8/go.mod h1:e2l9QQlF3fXpXQp/eOaiAY8eVIk/JZX4Ood3FFMSGa8= +github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.34.7 h1:Nyfbgei75bohfmZNxgN27i528dGYVzqWJGlAO6lzXy8= +github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.34.7/go.mod h1:FG4p/DciRxPgjA+BEOlwRHN0iA8hX2h9g5buSy3cTDA= +github.com/aws/aws-sdk-go-v2/service/securityhub v1.55.0 h1:nMhvHZ3rqAVJEf6nQzhPFJxd1Ta2V5irglgO6LxefZQ= +github.com/aws/aws-sdk-go-v2/service/securityhub v1.55.0/go.mod h1:vcK9C11qfED/CA+tpAVXNzUNdHMIi6YkG2SY4rJeWzQ= +github.com/aws/aws-sdk-go-v2/service/securitylake v1.19.5 h1:nwqNHhr5lUPJu7+xguOlyHzT8/mWvzq/sAalls7Z2lg= +github.com/aws/aws-sdk-go-v2/service/securitylake v1.19.5/go.mod h1:5ouEhyGzNtLjT3iWieBp4haVCzL3O+L/WACksBRvGmc= +github.com/aws/aws-sdk-go-v2/service/serverlessapplicationrepository v1.24.7 h1:nwt36WJvLlHVvWsMJ6I9kXL9PDdHymiMX1wGbC9XV70= +github.com/aws/aws-sdk-go-v2/service/serverlessapplicationrepository v1.24.7/go.mod h1:ebAPCdcVdlTh+1dJqKJZ9nqaaW9fvVmUsDhgd5mu5uU= +github.com/aws/aws-sdk-go-v2/service/servicecatalog v1.32.7 h1:5wifyBACWZHZQ2Qgfs4rhJn5+pDDwLADqPKZDjdrhuY= +github.com/aws/aws-sdk-go-v2/service/servicecatalog v1.32.7/go.mod h1:yKI83wCV2CPuFQC8xrt8pzAiemWUsz7NKFZEOJBO+Og= +github.com/aws/aws-sdk-go-v2/service/servicecatalogappregistry v1.30.7 h1:uUMAVnxMbdZNkIYjSa0x33AQQ7d/FctnXacslwqHV20= +github.com/aws/aws-sdk-go-v2/service/servicecatalogappregistry v1.30.7/go.mod h1:6lOlu/wGdOPV5TwZ4gPZWDb0y1PtzN+jaUWL++ocCx8= +github.com/aws/aws-sdk-go-v2/service/servicediscovery v1.33.7 h1:GfXWwM9/iEJVcWQaMu22YzBeGQnY6zjiZD556awNJBA= +github.com/aws/aws-sdk-go-v2/service/servicediscovery v1.33.7/go.mod h1:YMM+e0OfZQVBpTJs+WNZWP/hdodeWnepXgancR5NFFw= +github.com/aws/aws-sdk-go-v2/service/servicequotas v1.25.7 h1:MpCqFu4StEaeuKFfcfHBr+a6I2ZG+GgiNZqKa5gBHI8= +github.com/aws/aws-sdk-go-v2/service/servicequotas v1.25.7/go.mod h1:Idae0gtkk4euj6ncytZGgDkkyZKmkFasf1mbZZ0RA6s= +github.com/aws/aws-sdk-go-v2/service/ses v1.29.1 h1:2e4bmSER1FF330Xu8p0nwnV4Ctdb0VzLQPUV15xs3iY= +github.com/aws/aws-sdk-go-v2/service/ses v1.29.1/go.mod h1:axmD03yvc8MIBcQkETvptcdw+wySwdc8MpYzQixku2w= +github.com/aws/aws-sdk-go-v2/service/sesv2 v1.38.4 h1:6qEG7Ee2TgPtiCRMyK0VK5ZCh5GXdsyXSpcbE+tPjpA= +github.com/aws/aws-sdk-go-v2/service/sesv2 v1.38.4/go.mod h1:dI4OVSVcgeQXlqjRN8zspZVtYxmDis1rZwpopBeu3dc= +github.com/aws/aws-sdk-go-v2/service/sfn v1.34.1 h1:EsBALm4m1lGz5riWufNKWguTFOt7Nze7m0wVIzIq8wU= +github.com/aws/aws-sdk-go-v2/service/sfn v1.34.1/go.mod h1:svXjjW4/t8lsSJa4+AUxYPevCzfw3m+z8sk4XcSsosU= +github.com/aws/aws-sdk-go-v2/service/shield v1.29.7 h1:S4nh0xUMZyNkhm7R5r2ITaa966JUYklMGug5LQHWefk= +github.com/aws/aws-sdk-go-v2/service/shield v1.29.7/go.mod h1:YebUyWBs2+7W+ybtLOJp/cvCqi9pqIwS8J2Zkn70Tls= +github.com/aws/aws-sdk-go-v2/service/signer v1.26.7 h1:lFV4EORSh0nyu8KkVp6Esw9A4nQqJ7kKdJT4IB7ods0= +github.com/aws/aws-sdk-go-v2/service/signer v1.26.7/go.mod h1:SVmnmYEocWBuQQhmyACYG1nDoWaMUpBQsgUkPa9v6WU= +github.com/aws/aws-sdk-go-v2/service/sns v1.33.7 h1:N3o8mXK6/MP24BtD9sb51omEO9J9cgPM3Ughc293dZc= +github.com/aws/aws-sdk-go-v2/service/sns v1.33.7/go.mod h1:AAHZydTB8/V2zn3WNwjLXBK1RAcSEpDNmFfrmjvrJQg= +github.com/aws/aws-sdk-go-v2/service/sqs v1.37.2 h1:mFLfxLZB/TVQwNJAYox4WaxpIu+dFVIcExrmRmRCOhw= +github.com/aws/aws-sdk-go-v2/service/sqs v1.37.2/go.mod h1:GnvfTdlvcpD+or3oslHPOn4Mu6KaCwlCp+0p0oqWnrM= +github.com/aws/aws-sdk-go-v2/service/ssm v1.56.1 h1:cfVjoEwOMOJOI6VoRQua0nI0KjZV9EAnR8bKaMeSppE= +github.com/aws/aws-sdk-go-v2/service/ssm v1.56.1/go.mod h1:fGHwAnTdNrLKhgl+UEeq9uEL4n3Ng4MJucA+7Xi3sC4= +github.com/aws/aws-sdk-go-v2/service/ssmcontacts v1.26.7 h1:9C399gf+xBWcnc88jYMdJXuDIUD4Cx0GgWgNwLkw7sQ= +github.com/aws/aws-sdk-go-v2/service/ssmcontacts v1.26.7/go.mod h1:s66Ty5zVYIbHuUl9Qv1jKyGPviLi1JCyMUITScR9eTs= +github.com/aws/aws-sdk-go-v2/service/ssmincidents v1.34.7 h1:oaL9ihEn6IFAj7B2TMsHl5FWDD7mtzVP4cLuAixRZyA= +github.com/aws/aws-sdk-go-v2/service/ssmincidents v1.34.7/go.mod h1:V8XcDjqhMDjAKPMbMVHhIdlxq4XmE38TrCnUPqVc7UE= +github.com/aws/aws-sdk-go-v2/service/ssmquicksetup v1.3.1 h1:VVR6LIH9dWS+yjm65SirUAOq/AslPI0pHyKAcYblDBQ= +github.com/aws/aws-sdk-go-v2/service/ssmquicksetup v1.3.1/go.mod h1:T8ZPwRPFsWMZRMdGRI8A//XEB8LO6rmg10HzcdJtPQI= +github.com/aws/aws-sdk-go-v2/service/ssmsap v1.18.7 h1:G/RD7kQlR7Kn+4zkXDX2zNGI35h+vITgfxXR836n3nY= +github.com/aws/aws-sdk-go-v2/service/ssmsap v1.18.7/go.mod h1:S74L321WjjyiND/iV5Ogc6FTPVKFlWfdvHu4kg3Wl8U= +github.com/aws/aws-sdk-go-v2/service/sso v1.24.7 h1:rLnYAfXQ3YAccocshIH5mzNNwZBkBo+bP6EhIxak6Hw= +github.com/aws/aws-sdk-go-v2/service/sso v1.24.7/go.mod h1:ZHtuQJ6t9A/+YDuxOLnbryAmITtr8UysSny3qcyvJTc= +github.com/aws/aws-sdk-go-v2/service/ssoadmin v1.29.7 h1:X+5QChV4btPAoTpQ/GAcEJ1tCrpO6Y8X4C5CG11WNWI= +github.com/aws/aws-sdk-go-v2/service/ssoadmin v1.29.7/go.mod h1:LYMBcQuhPc6czFaQpYC9JAcEcMf1DNVie4YHg6iC240= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.6 h1:JnhTZR3PiYDNKlXy50/pNeix9aGMo6lLpXwJ1mw8MD4= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.6/go.mod h1:URronUEGfXZN1VpdktPSD1EkAL9mfrV+2F4sjH38qOY= +github.com/aws/aws-sdk-go-v2/service/storagegateway v1.34.7 h1:InM09Qs5JI3JIAFhn+rSUCntQYzxCWjxbhO4ClleGK0= +github.com/aws/aws-sdk-go-v2/service/storagegateway v1.34.7/go.mod h1:ilUpGJkGtgY4Wm/A0RMUualrpaLeNqKVK+v6IneCKEU= +github.com/aws/aws-sdk-go-v2/service/sts v1.33.2 h1:s4074ZO1Hk8qv65GqNXqDjmkf4HSQqJukaLuuW0TpDA= +github.com/aws/aws-sdk-go-v2/service/sts v1.33.2/go.mod h1:mVggCnIWoM09jP71Wh+ea7+5gAp53q+49wDFs1SW5z8= +github.com/aws/aws-sdk-go-v2/service/swf v1.27.8 h1:uOj2sgPJAhL/SGgWo+eXS6BwzSvf1b1aU7j3EXjnk88= +github.com/aws/aws-sdk-go-v2/service/swf v1.27.8/go.mod h1:AvLsUcEcGmH2QWmwosGAMkBqRrsI0Jr2x92clBtul9s= +github.com/aws/aws-sdk-go-v2/service/synthetics v1.30.2 h1:k/jiEnfNxjWewwhKbdqkvrOo/AIyQTPgaAxTy/nqYJU= +github.com/aws/aws-sdk-go-v2/service/synthetics v1.30.2/go.mod h1:S/mI+GqL6A6JNbKqu0M9qKop3LOE6X96OzXdJX0rO6w= +github.com/aws/aws-sdk-go-v2/service/taxsettings v1.7.1 h1:eJp5OnMaO41jYGwemZSOtmWf2g/TSAYfWEQDfZ6yBP4= +github.com/aws/aws-sdk-go-v2/service/taxsettings v1.7.1/go.mod h1:izz7C90kWSbYfURLt+atG6pdCvOP3AFjGEznRf0YgGw= +github.com/aws/aws-sdk-go-v2/service/timestreaminfluxdb v1.6.7 h1:JQUps7DzFbYEAHZb6O9xJCAU1GVN396Vu0Pjj9VoGPc= +github.com/aws/aws-sdk-go-v2/service/timestreaminfluxdb v1.6.7/go.mod h1:oIpMQLOrjkZVCZl0ff5cDgE/zZuFE4PwVb61+2fkELk= +github.com/aws/aws-sdk-go-v2/service/timestreamwrite v1.29.8 h1:chzp64fl/hknlRR9jlstQDB4bYaf848v7KmzUB13omA= +github.com/aws/aws-sdk-go-v2/service/timestreamwrite v1.29.8/go.mod h1:6r72p62vXJL+0VTgk9rVV7i9+C0qTcx+HuL56XT9Pus= +github.com/aws/aws-sdk-go-v2/service/transcribe v1.41.7 h1:KJ5CkGw76hEoR66sJRZFgiRGxtybWGuQgvnJ+Q6qTtA= +github.com/aws/aws-sdk-go-v2/service/transcribe v1.41.7/go.mod h1:BwUrZHaN6ruqmc8+b12wWhJ6fHqLrkZ0Z214feUqWWM= +github.com/aws/aws-sdk-go-v2/service/transfer v1.54.0 h1:IA34IDWH2ooVUIPOidlQL1wZLej8QbcaZsYVgeRiA6w= +github.com/aws/aws-sdk-go-v2/service/transfer v1.54.0/go.mod h1:UV0UI3xdWUkyarrq5gViMKtXx4EWBKQsSpPxc+rdJCA= +github.com/aws/aws-sdk-go-v2/service/verifiedpermissions v1.20.3 h1:3HJY3Fym+WfG/BQmrrGq5hS80th6Vlx3VM2ZyaH41Lo= +github.com/aws/aws-sdk-go-v2/service/verifiedpermissions v1.20.3/go.mod h1:myoi8VQCWyHnkfxRjkM1H5lFQilgGXbU2ulwAVqxeow= +github.com/aws/aws-sdk-go-v2/service/vpclattice v1.13.0 h1:UvZSATW4nNWJFzsBmgVvosdrlLTPgtpaDfra2afaSlk= +github.com/aws/aws-sdk-go-v2/service/vpclattice v1.13.0/go.mod h1:LLTXSn+ChGS/Ejt+akSlR0QBJ2VJVibiKQfp/IovK7Q= +github.com/aws/aws-sdk-go-v2/service/waf v1.25.7 h1:QatDy5lb2iXs9GPxuPSRDogX2HesmmUXu0GCDCQ7exQ= +github.com/aws/aws-sdk-go-v2/service/waf v1.25.7/go.mod h1:Jx83wxDXt4tq2UEhy4ODhqgpb6NBkQRs4TSkcHfBPcg= +github.com/aws/aws-sdk-go-v2/service/wafregional v1.25.7 h1:9V+YZqYy+FvDzZF16xXE7IWYlNWJKurMay7HC+ZGm0A= +github.com/aws/aws-sdk-go-v2/service/wafregional v1.25.7/go.mod h1:gB1OOPydtleVh7rcCj8fgoNfi6/4chzyP6aereNH3tA= +github.com/aws/aws-sdk-go-v2/service/wafv2 v1.55.6 h1:cK66ajiEQ2+eVezj6SMetpTohM1TuR94nPXGbGGCHaI= +github.com/aws/aws-sdk-go-v2/service/wafv2 v1.55.6/go.mod h1:HSfXIyNzPY6UIB37eFe76S4f/YyQPbuoovY+JhEy1x8= +github.com/aws/aws-sdk-go-v2/service/wellarchitected v1.34.7 h1:e4VW/f+S98RAKzHZT9+gPqFhNELSobBcgVZOTl23C/o= +github.com/aws/aws-sdk-go-v2/service/wellarchitected v1.34.7/go.mod h1:X1zN/DRROy1bpTCMdQqVLd4/hLaM3GbMhVURUW8F8mA= 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/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/workspaces v1.50.2 h1:VfPamxDTVfbKWP3UPDt3iJ8msHkHfIvqZNUhLjtGD9Q= +github.com/aws/aws-sdk-go-v2/service/workspaces v1.50.2/go.mod h1:OX0I9k3wOSsRCrdqAUOVEDLHupani0n+UJ80TY0fIWc= +github.com/aws/aws-sdk-go-v2/service/workspacesweb v1.25.1 h1:PrMt4dBsy0rdfuMcFYlqOQNSgHmF+gCGbV0M/8MbYd8= +github.com/aws/aws-sdk-go-v2/service/workspacesweb v1.25.1/go.mod h1:pwgFCLPLVoTNXQxG6LZdpXBGMr2wmVZBDci+yfuGZi8= +github.com/aws/aws-sdk-go-v2/service/xray v1.30.1 h1:BqsNRmYVd9CLJtcTwlJftM5oCsmuHcKm8ajJjYscP0Q= +github.com/aws/aws-sdk-go-v2/service/xray v1.30.1/go.mod h1:4XSKiCaqUPZUSQwLQCAzVVCEYJZKMzHF2s36fCTTirk= 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= @@ -756,8 +756,8 @@ github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1: github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74= github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -github.com/zclconf/go-cty v1.15.0 h1:tTCRWxsexYUmtt/wVxgDClUe+uQusuI443uL6e+5sXQ= -github.com/zclconf/go-cty v1.15.0/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= +github.com/zclconf/go-cty v1.15.1 h1:RgQYm4j2EvoBRXOPxhUvxPzRrGDo1eCOhHXuGfrj5S0= +github.com/zclconf/go-cty v1.15.1/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940 h1:4r45xpDWB6ZMSMNJFMOjqrGHynW3DIBuR2H9j0ug+Mo= github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940/go.mod h1:CmBdvvj3nqzfzJ6nTCIwDTPZ56aVGvDrmztiO5g3qrM= go.opentelemetry.io/contrib/instrumentation/github.com/aws/aws-sdk-go-v2/otelaws v0.57.0 h1:G47XgH32CEM1I9kZ8xrVExSxivATGHNE0tdxuqlx9MQ= @@ -823,8 +823,8 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241118233622-e639e219e697 h1:LWZqQOEjDyONlF1H6afSWpAL/znlREo2tHfLoe+8LMA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241118233622-e639e219e697/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a h1:hgh8P4EuoxpsuKMXX/To36nOFD7vixReXgn8lPGnt+o= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= google.golang.org/grpc v1.68.0 h1:aHQeeJbo8zAkAa3pRzrVjZlbz6uSfeOXlJNQM0RAbz0= google.golang.org/grpc v1.68.0/go.mod h1:fmSPC5AsjSBCK54MyHRx48kpOti1/jRfOlwEWywNjWA= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= diff --git a/website/allowed-subcategories.txt b/website/allowed-subcategories.txt index d4fff79113cd..ebac5cea5700 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 @@ -203,6 +203,7 @@ Route 53 Resolver S3 (Simple Storage) S3 Control S3 Glacier +S3 Tables S3 on Outposts SDB (SimpleDB) SES (Simple Email) diff --git a/website/docs/cdktf/python/d/memorydb_acl.html.markdown b/website/docs/cdktf/python/d/memorydb_acl.html.markdown index 8059f4a49bb0..32b141af2b71 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: |- @@ -47,4 +47,4 @@ This data source exports the following attributes in addition to the arguments a * `tags` - Map of tags assigned to the ACL. * `user_names` - Set of MemoryDB user names included in this ACL. - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/d/memorydb_cluster.html.markdown b/website/docs/cdktf/python/d/memorydb_cluster.html.markdown index 462a1c3a2116..cc84154b01bb 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: |- @@ -50,8 +50,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`. @@ -79,4 +80,4 @@ This data source exports the following attributes in addition to the arguments a * `tls_enabled` - When true, in-transit encryption is enabled for the cluster. * `tags` - Map of tags assigned to the cluster. - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/d/memorydb_parameter_group.html.markdown b/website/docs/cdktf/python/d/memorydb_parameter_group.html.markdown index 563659f7095c..94ccc96dbeb1 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: |- @@ -50,4 +50,4 @@ This data source exports the following attributes in addition to the arguments a * `value` - Value of the parameter. * `tags` - Map of tags assigned to the parameter group. - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/d/memorydb_snapshot.html.markdown b/website/docs/cdktf/python/d/memorydb_snapshot.html.markdown index 0973826f709a..e07bcacf55cf 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: |- @@ -45,7 +45,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. @@ -62,4 +63,4 @@ This data source exports the following attributes in addition to the arguments a * `source` - Whether the snapshot is from an automatic backup (`automated`) or was created manually (`manual`). * `tags` - Map of tags assigned to the snapshot. - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/d/memorydb_subnet_group.html.markdown b/website/docs/cdktf/python/d/memorydb_subnet_group.html.markdown index e564b6e0a348..2612ca33647f 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: |- @@ -48,4 +48,4 @@ This data source exports the following attributes in addition to the arguments a * `vpc_id` - VPC in which the subnet group exists. * `tags` - Map of tags assigned to the subnet group. - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/d/memorydb_user.html.markdown b/website/docs/cdktf/python/d/memorydb_user.html.markdown index ab2343293f21..efe33dec939c 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: |- @@ -50,4 +50,4 @@ This data source exports the following attributes in addition to the arguments a * `minimum_engine_version` - Minimum engine version supported for the user. * `tags` - Map of tags assigned to the user. - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/d/organizations_policies.html.markdown b/website/docs/cdktf/python/d/organizations_policies.html.markdown index 86af4a62a2b9..3123b2831248 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 20c5434a5442..3f2743cf13ac 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 dea30d053115..4bce0e6b1c52 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 000000000000..10762623698c --- /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 000000000000..85ea3d8b3ba6 --- /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 000000000000..31f131206b78 --- /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/guides/custom-service-endpoints.html.markdown b/website/docs/cdktf/python/guides/custom-service-endpoints.html.markdown index 4e41054cac55..cd5ee67d5388 100644 --- a/website/docs/cdktf/python/guides/custom-service-endpoints.html.markdown +++ b/website/docs/cdktf/python/guides/custom-service-endpoints.html.markdown @@ -259,7 +259,7 @@ class MyConvertedCode(TerraformStack): |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`| @@ -451,4 +451,4 @@ class MyConvertedCode(TerraformStack): ) ``` - \ No newline at end of file + \ 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 6468c7cde490..36c1563fdf1f 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 1450 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/bedrock_guardrail.html.markdown b/website/docs/cdktf/python/r/bedrock_guardrail.html.markdown index 427aa94c0bb6..94a9613857b1 100644 --- a/website/docs/cdktf/python/r/bedrock_guardrail.html.markdown +++ b/website/docs/cdktf/python/r/bedrock_guardrail.html.markdown @@ -88,7 +88,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 @@ -193,4 +194,4 @@ Using `terraform import`, import Amazon Bedrock Guardrail using using a comma-de % terraform import aws_bedrock_guardrail.example guardrail-id-12345678,DRAFT ``` - \ 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 1dbcd46afa12..79e750a99fb1 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 8740252c5c1a..580eda97742d 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 07dd8f28e53c..9c346ded412a 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 aaad49ee40b1..3c15e2b10d4c 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 9011155831b0..6bb7dac36a6d 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_organizations_features.html.markdown b/website/docs/cdktf/python/r/iam_organizations_features.html.markdown new file mode 100644 index 000000000000..a65ee8fba1a0 --- /dev/null +++ b/website/docs/cdktf/python/r/iam_organizations_features.html.markdown @@ -0,0 +1,80 @@ +--- +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 + +```python +# DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug +from constructs import Construct +from cdktf import TerraformStack +# +# Provider bindings are generated by running `cdktf get`. +# See https://cdk.tf/provider-generation for more details. +# +from imports.aws.iam_organizations_features import IamOrganizationsFeatures +from imports.aws.organizations_organization import OrganizationsOrganization +class MyConvertedCode(TerraformStack): + def __init__(self, scope, name): + super().__init__(scope, name) + IamOrganizationsFeatures(self, "example", + enabled_features=["RootCredentialsManagement", "RootSessions"] + ) + aws_organizations_organization_example = OrganizationsOrganization(self, "example_1", + aws_service_access_principals=["iam.amazonaws.com"], + feature_set="ALL" + ) + # 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_organizations_organization_example.override_logical_id("example") +``` + +## 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: + +```python +# DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug +from constructs import Construct +from cdktf import TerraformStack +# +# Provider bindings are generated by running `cdktf get`. +# See https://cdk.tf/provider-generation for more details. +# +from imports.aws.iam_organizations_features import IamOrganizationsFeatures +class MyConvertedCode(TerraformStack): + def __init__(self, scope, name): + super().__init__(scope, name) + IamOrganizationsFeatures.generate_config_for_import(self, "example", "o-1234567") +``` + +Using `terraform import`, import root access features using the `id`. For example: + +```console +% terraform import aws_iam_organizations_features.example o-1234567 +``` + + \ 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 62cd4f89bf3b..ffb31125a092 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 2d12bcabb03e..8b6f448cfd35 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 3c1b7408414c..67e5f392005e 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_event_source_mapping.html.markdown b/website/docs/cdktf/python/r/lambda_event_source_mapping.html.markdown index c06d0d43f9b6..ecc13947d674 100644 --- a/website/docs/cdktf/python/r/lambda_event_source_mapping.html.markdown +++ b/website/docs/cdktf/python/r/lambda_event_source_mapping.html.markdown @@ -100,6 +100,11 @@ class MyConvertedCode(TerraformStack): super().__init__(scope, name) LambdaEventSourceMapping(self, "example", function_name=Token.as_string(aws_lambda_function_example.arn), + provisioned_poller_config=[{ + "maximum_poller": 80, + "minimum_poller": 10 + } + ], self_managed_event_source=LambdaEventSourceMappingSelfManagedEventSource( endpoints={ "KAFKA_BOOTSTRAP_SERVERS": "kafka1.example.com:9092,kafka2.example.com:9092" @@ -251,7 +256,9 @@ class MyConvertedCode(TerraformStack): * `maximum_batching_window_in_seconds` - (Optional) The maximum amount of time to gather records before invoking the function, in seconds (between 0 and 300). Records will continue to buffer (or accumulate in the case of an SQS queue event source) until either `maximum_batching_window_in_seconds` expires or `batch_size` has been met. For streaming event sources, defaults to as soon as records are available in the stream. If the batch it reads from the stream/queue only has one record in it, Lambda only sends one record to the function. Only available for stream sources (DynamoDB and Kinesis) and SQS standard queues. * `maximum_record_age_in_seconds`: - (Optional) The maximum age of a record that Lambda sends to a function for processing. Only available for stream sources (DynamoDB and Kinesis). Must be either -1 (forever, and the default value) or between 60 and 604800 (inclusive). * `maximum_retry_attempts`: - (Optional) The maximum number of times to retry when the function returns an error. Only available for stream sources (DynamoDB and Kinesis). Minimum and default of -1 (forever), maximum of 10000. +* `metrics_config`: - (Optional) CloudWatch metrics configuration of the event source. Only available for stream sources (DynamoDB and Kinesis) and SQS queues. Detailed below. * `parallelization_factor`: - (Optional) The number of batches to process from each shard concurrently. Only available for stream sources (DynamoDB and Kinesis). Minimum and default of 1, maximum of 10. +* `provisioned_poller_config`: - (Optional) Event poller configuration for the event source. Only valid for Amazon MSK or self-managed Apache Kafka sources. Detailed below. * `queues` - (Optional) The name of the Amazon MQ broker destination queue to consume. Only available for MQ sources. The list must contain exactly one queue name. * `scaling_config` - (Optional) Scaling configuration of the event source. Only available for SQS queues. Detailed below. * `self_managed_event_source`: - (Optional) For Self Managed Kafka sources, the location of the self managed cluster. If set, configuration must also include `source_access_configuration`. Detailed below. @@ -289,6 +296,15 @@ class MyConvertedCode(TerraformStack): * `pattern` - (Optional) A filter pattern up to 4096 characters. See [Filter Rule Syntax](https://docs.aws.amazon.com/lambda/latest/dg/invocation-eventfiltering.html#filtering-syntax). +### metrics_config Configuration Block + +* `metrics` - (Required) A list containing the metrics to be produced by the event source mapping. Valid values: `EventCount`. + +### provisioned_poller_config Configuration Block + +* `maximum_pollers` - (Optional) The maximum number of event pollers this event source can scale up to. The range is between 1 and 2000. +* `minimum_pollers` - (Optional) The minimum number of event pollers this event source can scale down to. The range is between 1 and 200. + ### scaling_config Configuration Block * `maximum_concurrency` - (Optional) Limits the number of concurrent instances that the Amazon SQS event source can invoke. Must be greater than or equal to `2`. See [Configuring maximum concurrency for Amazon SQS event sources](https://docs.aws.amazon.com/lambda/latest/dg/with-sqs.html#events-sqs-max-concurrency). You need to raise a [Service Quota Ticket](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html) to increase the concurrency beyond 1000. @@ -347,4 +363,4 @@ Using `terraform import`, import Lambda event source mappings using the `UUID` ( % terraform import aws_lambda_event_source_mapping.event_source_mapping 12345kxodurf3443 ``` - \ 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 038b87da46dd..2dcc120b043f 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 c98c603d14ea..573aa0e34926 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 18dc7014090e..75ccda8d6837 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: |- @@ -77,4 +77,4 @@ Using `terraform import`, import an ACL using the `name`. For example: % terraform import aws_memorydb_acl.example my-acl ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/memorydb_cluster.html.markdown b/website/docs/cdktf/python/r/memorydb_cluster.html.markdown index 632f1cf87270..926820198a7a 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: |- @@ -30,6 +30,8 @@ class MyConvertedCode(TerraformStack): super().__init__(scope, name) MemorydbCluster(self, "example", acl_name="open-access", + engine="redis", + engine_version="7.1", name="my-cluster", node_type="db.t4g.small", num_shards=2, @@ -44,6 +46,8 @@ class MyConvertedCode(TerraformStack): 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: @@ -51,7 +55,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`. @@ -80,7 +83,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. @@ -127,4 +130,4 @@ Using `terraform import`, import a cluster using the `name`. For example: % terraform import aws_memorydb_cluster.example my-cluster ``` - \ No newline at end of file + \ No newline at end of file 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 851db30a96b0..d0eb498fbaea 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: |- @@ -91,4 +91,4 @@ Using `terraform import`, import a parameter group using the `name`. For example % terraform import aws_memorydb_parameter_group.example my-parameter-group ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/memorydb_snapshot.html.markdown b/website/docs/cdktf/python/r/memorydb_snapshot.html.markdown index 4394a68773a2..8a355bf357e4 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: |- @@ -52,7 +52,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. @@ -99,4 +100,4 @@ Using `terraform import`, import a snapshot using the `name`. For example: % terraform import aws_memorydb_snapshot.example my-snapshot ``` - \ No newline at end of file + \ No newline at end of file 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 b7272bf1345e..16ac724c4baf 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: |- @@ -95,4 +95,4 @@ Using `terraform import`, import a subnet group using its `name`. For example: % terraform import aws_memorydb_subnet_group.example my-subnet-group ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/memorydb_user.html.markdown b/website/docs/cdktf/python/r/memorydb_user.html.markdown index 14803be73ebb..9e25ee0e6780 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: |- @@ -102,4 +102,4 @@ Using `terraform import`, import a user using the `user_name`. For example: The `passwords` are not available for imported resources, as this information cannot be read back from the MemoryDB API. - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/organizations_organization.html.markdown b/website/docs/cdktf/python/r/organizations_organization.html.markdown index 4d3eeabbce5a..6aa2a149bb95 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 000000000000..1cb55266e45b --- /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 4e0a56d6da9f..f121968f4f6a 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 d94ee9c055f8..9b1586a5196d 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/python/r/vpc_block_public_access_exclusion.html.markdown b/website/docs/cdktf/python/r/vpc_block_public_access_exclusion.html.markdown new file mode 100644 index 000000000000..747143f85bc7 --- /dev/null +++ b/website/docs/cdktf/python/r/vpc_block_public_access_exclusion.html.markdown @@ -0,0 +1,131 @@ +--- +subcategory: "VPC (Virtual Private Cloud)" +layout: "aws" +page_title: "AWS: aws_vpc_block_public_access_exclusion" +description: |- + Terraform resource for managing an exception to the AWS VPC (Virtual Private Cloud) Block Public Access Exclusion. +--- + + + +# Resource: aws_vpc_block_public_access_exclusion + +Terraform resource for managing an AWS EC2 (Elastic Compute Cloud) VPC Block Public Access Exclusion. + +## Example Usage + +### Basic Usage + +```python +# DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug +from constructs import Construct +from cdktf import TerraformStack +# +# Provider bindings are generated by running `cdktf get`. +# See https://cdk.tf/provider-generation for more details. +# +from imports.aws. import VpcBlockPublicAccessExclusion +from imports.aws.vpc import Vpc +class MyConvertedCode(TerraformStack): + def __init__(self, scope, name): + super().__init__(scope, name) + test = Vpc(self, "test", + cidr_block="10.1.0.0/16" + ) + aws_vpc_block_public_access_exclusion_test = + VpcBlockPublicAccessExclusion(self, "test_1", + internet_gateway_exclusion_mode="allow-bidirectional", + vpc_id=test.id + ) + # 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_vpc_block_public_access_exclusion_test.override_logical_id("test") +``` + +### Usage with subnet id + +```python +# DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug +from constructs import Construct +from cdktf import TerraformStack +# +# Provider bindings are generated by running `cdktf get`. +# See https://cdk.tf/provider-generation for more details. +# +from imports.aws. import VpcBlockPublicAccessExclusion +from imports.aws.subnet import Subnet +from imports.aws.vpc import Vpc +class MyConvertedCode(TerraformStack): + def __init__(self, scope, name): + super().__init__(scope, name) + test = Vpc(self, "test", + cidr_block="10.1.0.0/16" + ) + aws_subnet_test = Subnet(self, "test_1", + cidr_block="10.1.1.0/24", + vpc_id=test.id + ) + # 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_subnet_test.override_logical_id("test") + aws_vpc_block_public_access_exclusion_test = + VpcBlockPublicAccessExclusion(self, "test_2", + internet_gateway_exclusion_mode="allow-egress", + subnet_id=aws_subnet_test.id + ) + # 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_vpc_block_public_access_exclusion_test.override_logical_id("test") +``` + +## Argument Reference + +The following arguments are required: + +* `internet_gateway_exclusion_mode` - (Required) Mode of exclusion from Block Public Access. The allowed values are `allow-egress` and `allow-bidirectional`. + +The following arguments are optional: + +* `vpc_id` - (Optional) Id of the VPC to which this exclusion applies. Either this or the subnet_id needs to be provided. +* `subnet_id` - (Optional) Id of the subnet to which this exclusion applies. Either this or the vpc_id needs to be provided. +* `tags` - (Optional) A map of tags to assign to the exclusion. If configured with a provider [`default_tags` configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-configuration-block) present, tags with matching keys will overwrite those defined at the provider-level. + +## Attribute Reference + +This resource exports the following attributes in addition to the arguments above: + +* `id` - The ID of the VPC Block Public Access Exclusion. +* `resource_arn` - The Amazon Resource Name (ARN) the excluded resource. +* `tags_all` - A map of tags assigned to the resource, including those inherited from the provider [`default_tags` configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-configuration-block). + +## Timeouts + +[Configuration options](https://developer.hashicorp.com/terraform/language/resources/syntax#operation-timeouts): + +* `create` - (Default `30m`) +* `update` - (Default `30m`) +* `delete` - (Default `30m`) + +## Import + +In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import VPC Block Public Access Exclusion using the `id`. For example: + +```python +# DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug +from constructs import Construct +from cdktf import TerraformStack +# +# Provider bindings are generated by running `cdktf get`. +# See https://cdk.tf/provider-generation for more details. +# +from imports.aws. import VpcBlockPublicAccessExclusion +class MyConvertedCode(TerraformStack): + def __init__(self, scope, name): + super().__init__(scope, name) + VpcBlockPublicAccessExclusion.generate_config_for_import(self, "example", "vpcbpa-exclude-1234abcd") +``` + +Using `terraform import`, import EC2 (Elastic Compute Cloud) VPC Block Public Access Exclusion using the `id`. For example: + +```console +% terraform import aws_vpc_block_public_access_exclusion.example vpcbpa-exclude-1234abcd +``` + + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/vpc_block_public_access_options.html.markdown b/website/docs/cdktf/python/r/vpc_block_public_access_options.html.markdown new file mode 100644 index 000000000000..6da3706e92a9 --- /dev/null +++ b/website/docs/cdktf/python/r/vpc_block_public_access_options.html.markdown @@ -0,0 +1,82 @@ +--- +subcategory: "VPC (Virtual Private Cloud)" +layout: "aws" +page_title: "AWS: aws_vpc_block_public_access_options" +description: |- + Terraform resource for managing AWS VPC Block Public Access Options in a region. +--- + + + +# Resource: aws_vpc_block_public_access_options + +Terraform resource for managing an AWS VPC Block Public Access Options. + +## Example Usage + +### Basic Usage + +```python +# DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug +from constructs import Construct +from cdktf import TerraformStack +# +# Provider bindings are generated by running `cdktf get`. +# See https://cdk.tf/provider-generation for more details. +# +from imports.aws. import VpcBlockPublicAccessOptions +class MyConvertedCode(TerraformStack): + def __init__(self, scope, name): + super().__init__(scope, name) + VpcBlockPublicAccessOptions(self, "example", + internet_gateway_block_mode="block-bidirectional" + ) +``` + +## Argument Reference + +The following arguments are required: + +* `internet_gateway_block_mode` - (Required) Block mode. Needs to be one of `block-bidirectional`, `block-ingress`, `off`. If this resource is deleted, then this value will be set to `off` in the AWS account and region. + +## Attribute Reference + +This resource exports the following attributes in addition to the arguments above: + +* `aws_account_id` - The AWS account id to which these options apply. +* `aws_region` - The AWS region to which these options apply. + +## Timeouts + +[Configuration options](https://developer.hashicorp.com/terraform/language/resources/syntax#operation-timeouts): + +* `create` - (Default `30m`) +* `update` - (Default `30m`) +* `delete` - (Default `30m`) + +## Import + +In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import VPC Block Public Access Options using the `aws_region`. 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. import VpcBlockPublicAccessOptions +class MyConvertedCode(TerraformStack): + def __init__(self, scope, name): + super().__init__(scope, name) + VpcBlockPublicAccessOptions.generate_config_for_import(self, "example", "us-east-1") +``` + +Using `terraform import`, import VPC Block Public Access Options using the `aws_region`. For example: + +```console +% terraform import aws_vpc_block_public_access_options.example us-east-1 +``` + + \ 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 66bf039e3d6c..0b6a0b7e0c0f 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: |- @@ -50,4 +50,4 @@ This data source exports the following attributes in addition to the arguments a * `tags` - Map of tags assigned to the ACL. * `userNames` - Set of MemoryDB user names included in this ACL. - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/d/memorydb_cluster.html.markdown b/website/docs/cdktf/typescript/d/memorydb_cluster.html.markdown index 4f392d868460..a33559895163 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: |- @@ -53,8 +53,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. * `dataTiering` - True when data tiering is enabled. * `description` - Description for the cluster. -* `enginePatchVersion` - Patch version number of the Redis engine used by the cluster. -* `engineVersion` - Version number of the Redis engine used by the cluster. +* `enginePatchVersion` - Patch version number of the engine used by the cluster. +* `engine` - Engine that will run on cluster nodes. +* `engineVersion` - Version number of the engine used by the cluster. * `finalSnapshotName` - Name of the final cluster snapshot to be created when this resource is deleted. If omitted, no final snapshot will be made. * `kmsKeyArn` - ARN of the KMS key used to encrypt the cluster at rest. * `maintenanceWindow` - 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`. @@ -82,4 +83,4 @@ This data source exports the following attributes in addition to the arguments a * `tlsEnabled` - When true, in-transit encryption is enabled for the cluster. * `tags` - Map of tags assigned to the cluster. - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/d/memorydb_parameter_group.html.markdown b/website/docs/cdktf/typescript/d/memorydb_parameter_group.html.markdown index 30b075c724a7..243fa9ca6b83 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: |- @@ -53,4 +53,4 @@ This data source exports the following attributes in addition to the arguments a * `value` - Value of the parameter. * `tags` - Map of tags assigned to the parameter group. - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/d/memorydb_snapshot.html.markdown b/website/docs/cdktf/typescript/d/memorydb_snapshot.html.markdown index a801a7615567..d49a15542593 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: |- @@ -48,7 +48,8 @@ This data source exports the following attributes in addition to the arguments a * `arn` - ARN of the snapshot. * `clusterConfiguration` - The configuration of the cluster from which the snapshot was taken. * `description` - Description for the cluster. - * `engineVersion` - Version number of the Redis engine used by the cluster. + * `engine` - The engine that will run on cluster nodes. + * `engineVersion` - Version number of the engine used by the cluster. * `maintenanceWindow` - The weekly time range during which maintenance on the cluster is performed. * `name` - Name of the cluster. * `nodeType` - Compute and memory capacity of the nodes in the cluster. @@ -65,4 +66,4 @@ This data source exports the following attributes in addition to the arguments a * `source` - Whether the snapshot is from an automatic backup (`automated`) or was created manually (`manual`). * `tags` - Map of tags assigned to the snapshot. - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/d/memorydb_subnet_group.html.markdown b/website/docs/cdktf/typescript/d/memorydb_subnet_group.html.markdown index 672234f3cfce..bbee78c67042 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: |- @@ -51,4 +51,4 @@ This data source exports the following attributes in addition to the arguments a * `vpcId` - VPC in which the subnet group exists. * `tags` - Map of tags assigned to the subnet group. - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/d/memorydb_user.html.markdown b/website/docs/cdktf/typescript/d/memorydb_user.html.markdown index 6685762605fb..57a0d5ee756e 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: |- @@ -53,4 +53,4 @@ This data source exports the following attributes in addition to the arguments a * `minimumEngineVersion` - Minimum engine version supported for the user. * `tags` - Map of tags assigned to the user. - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/d/organizations_policies.html.markdown b/website/docs/cdktf/typescript/d/organizations_policies.html.markdown index 99cfcdcca3a6..f2a1c03e45b2 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 e234e4b314dd..de5f81110862 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 09875fe5caf8..097f99706502 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 000000000000..a306c2118967 --- /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 000000000000..a0a5b46801d6 --- /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 000000000000..a06ae8a867a3 --- /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/guides/custom-service-endpoints.html.markdown b/website/docs/cdktf/typescript/guides/custom-service-endpoints.html.markdown index 21257dc70a1b..54d632990ae4 100644 --- a/website/docs/cdktf/typescript/guides/custom-service-endpoints.html.markdown +++ b/website/docs/cdktf/typescript/guides/custom-service-endpoints.html.markdown @@ -267,7 +267,7 @@ class MyConvertedCode extends TerraformStack { |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`| @@ -467,4 +467,4 @@ class MyConvertedCode extends TerraformStack { ``` - \ No newline at end of file + \ 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 19ae8a5d5c0b..8245d564f858 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 1450 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/bedrock_guardrail.html.markdown b/website/docs/cdktf/typescript/r/bedrock_guardrail.html.markdown index c6870aa00f04..dee81102db7b 100644 --- a/website/docs/cdktf/typescript/r/bedrock_guardrail.html.markdown +++ b/website/docs/cdktf/typescript/r/bedrock_guardrail.html.markdown @@ -88,7 +88,8 @@ The following arguments are optional: The `contentPolicyConfig` configuration block supports the following arguments: -* `filtersConfig` - (Optional) List of content filter configs in content policy. See [Filters Config](#content-filters-config) for more information. +* `filtersConfig` - (Optional) Set of content filter configs in content policy. + See [Filters Config](#content-filters-config) for more information. #### Content Filters Config @@ -200,4 +201,4 @@ Using `terraform import`, import Amazon Bedrock Guardrail using using a comma-de % terraform import aws_bedrock_guardrail.example guardrail-id-12345678,DRAFT ``` - \ 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 ee6438d27c72..71681b800167 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 6e40f9291d40..403d13746ffb 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 1cc962856dc3..0fc5ca3b2427 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 e7159fdfc96b..340e24f520d2 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 874b7027383b..0d5b1b1d700a 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_organizations_features.html.markdown b/website/docs/cdktf/typescript/r/iam_organizations_features.html.markdown new file mode 100644 index 000000000000..71b149c2888c --- /dev/null +++ b/website/docs/cdktf/typescript/r/iam_organizations_features.html.markdown @@ -0,0 +1,94 @@ +--- +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 + +```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 { IamOrganizationsFeatures } from "./.gen/providers/aws/iam-organizations-features"; +import { OrganizationsOrganization } from "./.gen/providers/aws/organizations-organization"; +class MyConvertedCode extends TerraformStack { + constructor(scope: Construct, name: string) { + super(scope, name); + new IamOrganizationsFeatures(this, "example", { + enabledFeatures: ["RootCredentialsManagement", "RootSessions"], + }); + const awsOrganizationsOrganizationExample = new OrganizationsOrganization( + this, + "example_1", + { + awsServiceAccessPrincipals: ["iam.amazonaws.com"], + featureSet: "ALL", + } + ); + /*This allows the Terraform resource name to match the original name. You can remove the call if you don't need them to match.*/ + awsOrganizationsOrganizationExample.overrideLogicalId("example"); + } +} + +``` + +## Argument Reference + +The following arguments are required: + +* `enabledFeatures` - (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: + +```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 { IamOrganizationsFeatures } from "./.gen/providers/aws/iam-organizations-features"; +class MyConvertedCode extends TerraformStack { + constructor(scope: Construct, name: string) { + super(scope, name); + IamOrganizationsFeatures.generateConfigForImport( + this, + "example", + "o-1234567" + ); + } +} + +``` + +Using `terraform import`, import root access features using the `id`. For example: + +```console +% terraform import aws_iam_organizations_features.example o-1234567 +``` + + \ 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 b0583730fa76..d07a1b9b39d1 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 1b843050fba3..952bdb5c834e 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 fd210b0ff69e..262c51cbf3db 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_event_source_mapping.html.markdown b/website/docs/cdktf/typescript/r/lambda_event_source_mapping.html.markdown index 09e0570e9b0d..35fab326b495 100644 --- a/website/docs/cdktf/typescript/r/lambda_event_source_mapping.html.markdown +++ b/website/docs/cdktf/typescript/r/lambda_event_source_mapping.html.markdown @@ -109,6 +109,12 @@ class MyConvertedCode extends TerraformStack { super(scope, name); new LambdaEventSourceMapping(this, "example", { functionName: Token.asString(awsLambdaFunctionExample.arn), + provisioned_poller_config: [ + { + maximum_poller: 80, + minimum_poller: 10, + }, + ], selfManagedEventSource: { endpoints: { KAFKA_BOOTSTRAP_SERVERS: @@ -285,7 +291,9 @@ class MyConvertedCode extends TerraformStack { * `maximumBatchingWindowInSeconds` - (Optional) The maximum amount of time to gather records before invoking the function, in seconds (between 0 and 300). Records will continue to buffer (or accumulate in the case of an SQS queue event source) until either `maximumBatchingWindowInSeconds` expires or `batchSize` has been met. For streaming event sources, defaults to as soon as records are available in the stream. If the batch it reads from the stream/queue only has one record in it, Lambda only sends one record to the function. Only available for stream sources (DynamoDB and Kinesis) and SQS standard queues. * `maximumRecordAgeInSeconds`: - (Optional) The maximum age of a record that Lambda sends to a function for processing. Only available for stream sources (DynamoDB and Kinesis). Must be either -1 (forever, and the default value) or between 60 and 604800 (inclusive). * `maximumRetryAttempts`: - (Optional) The maximum number of times to retry when the function returns an error. Only available for stream sources (DynamoDB and Kinesis). Minimum and default of -1 (forever), maximum of 10000. +* `metrics_config`: - (Optional) CloudWatch metrics configuration of the event source. Only available for stream sources (DynamoDB and Kinesis) and SQS queues. Detailed below. * `parallelizationFactor`: - (Optional) The number of batches to process from each shard concurrently. Only available for stream sources (DynamoDB and Kinesis). Minimum and default of 1, maximum of 10. +* `provisioned_poller_config`: - (Optional) Event poller configuration for the event source. Only valid for Amazon MSK or self-managed Apache Kafka sources. Detailed below. * `queues` - (Optional) The name of the Amazon MQ broker destination queue to consume. Only available for MQ sources. The list must contain exactly one queue name. * `scalingConfig` - (Optional) Scaling configuration of the event source. Only available for SQS queues. Detailed below. * `selfManagedEventSource`: - (Optional) For Self Managed Kafka sources, the location of the self managed cluster. If set, configuration must also include `sourceAccessConfiguration`. Detailed below. @@ -323,6 +331,15 @@ class MyConvertedCode extends TerraformStack { * `pattern` - (Optional) A filter pattern up to 4096 characters. See [Filter Rule Syntax](https://docs.aws.amazon.com/lambda/latest/dg/invocation-eventfiltering.html#filtering-syntax). +### metrics_config Configuration Block + +* `metrics` - (Required) A list containing the metrics to be produced by the event source mapping. Valid values: `EventCount`. + +### provisioned_poller_config Configuration Block + +* `maximum_pollers` - (Optional) The maximum number of event pollers this event source can scale up to. The range is between 1 and 2000. +* `minimum_pollers` - (Optional) The minimum number of event pollers this event source can scale down to. The range is between 1 and 200. + ### scaling_config Configuration Block * `maximumConcurrency` - (Optional) Limits the number of concurrent instances that the Amazon SQS event source can invoke. Must be greater than or equal to `2`. See [Configuring maximum concurrency for Amazon SQS event sources](https://docs.aws.amazon.com/lambda/latest/dg/with-sqs.html#events-sqs-max-concurrency). You need to raise a [Service Quota Ticket](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html) to increase the concurrency beyond 1000. @@ -388,4 +405,4 @@ Using `terraform import`, import Lambda event source mappings using the `UUID` ( % terraform import aws_lambda_event_source_mapping.event_source_mapping 12345kxodurf3443 ``` - \ 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 76da2bf12b2c..4047b890c49f 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 13caaa69afda..bb6c226b8c79 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 9048af183da1..0cfa3e61282b 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: |- @@ -83,4 +83,4 @@ Using `terraform import`, import an ACL using the `name`. For example: % terraform import aws_memorydb_acl.example my-acl ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/memorydb_cluster.html.markdown b/website/docs/cdktf/typescript/r/memorydb_cluster.html.markdown index bc0ff04e3d00..3eecb143f8ad 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: |- @@ -30,6 +30,8 @@ class MyConvertedCode extends TerraformStack { super(scope, name); new MemorydbCluster(this, "example", { aclName: "open-access", + engine: "redis", + engineVersion: "7.1", name: "my-cluster", nodeType: "db.t4g.small", numShards: 2, @@ -47,6 +49,8 @@ class MyConvertedCode extends TerraformStack { The following arguments are required: * `aclName` - (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`. +* `engineVersion` - (Optional) Version number of the engine to be used for the cluster. Downgrades are not supported. * `nodeType` - (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: @@ -54,7 +58,6 @@ The following arguments are optional: * `autoMinorVersionUpgrade` - (Optional, Forces new resource) When set to `true`, the cluster will automatically receive minor engine version upgrades after launch. Defaults to `true`. * `dataTiering` - (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"`. -* `engineVersion` - (Optional) Version number of the Redis engine to be used for the cluster. Downgrades are not supported. * `finalSnapshotName` - (Optional) Name of the final cluster snapshot to be created when this resource is deleted. If omitted, no final snapshot will be made. * `kmsKeyArn` - (Optional, Forces new resource) ARN of the KMS key used to encrypt the cluster at rest. * `maintenanceWindow` - (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`. @@ -83,7 +86,7 @@ This resource exports the following attributes in addition to the arguments abov * `clusterEndpoint` * `address` - DNS hostname of the cluster configuration endpoint. * `port` - Port number that the cluster configuration endpoint is listening on. -* `enginePatchVersion` - Patch version number of the Redis engine used by the cluster. +* `enginePatchVersion` - 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. @@ -133,4 +136,4 @@ Using `terraform import`, import a cluster using the `name`. For example: % terraform import aws_memorydb_cluster.example my-cluster ``` - \ No newline at end of file + \ No newline at end of file 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 a505b1e3c064..e0b23c3d1c83 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: |- @@ -102,4 +102,4 @@ Using `terraform import`, import a parameter group using the `name`. For example % terraform import aws_memorydb_parameter_group.example my-parameter-group ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/memorydb_snapshot.html.markdown b/website/docs/cdktf/typescript/r/memorydb_snapshot.html.markdown index fbdbf2de5b20..a698a5ba8784 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: |- @@ -55,7 +55,8 @@ This resource exports the following attributes in addition to the arguments abov * `arn` - The ARN of the snapshot. * `clusterConfiguration` - The configuration of the cluster from which the snapshot was taken. * `description` - Description for the cluster. - * `engineVersion` - Version number of the Redis engine used by the cluster. + * `engine` - The engine that will run on cluster nodes. + * `engineVersion` - Version number of the engine used by the cluster. * `maintenanceWindow` - The weekly time range during which maintenance on the cluster is performed. * `name` - Name of the cluster. * `nodeType` - Compute and memory capacity of the nodes in the cluster. @@ -105,4 +106,4 @@ Using `terraform import`, import a snapshot using the `name`. For example: % terraform import aws_memorydb_snapshot.example my-snapshot ``` - \ No newline at end of file + \ No newline at end of file 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 5e7bbc98a001..74278d58d020 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: |- @@ -109,4 +109,4 @@ Using `terraform import`, import a subnet group using its `name`. For example: % terraform import aws_memorydb_subnet_group.example my-subnet-group ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/memorydb_user.html.markdown b/website/docs/cdktf/typescript/r/memorydb_user.html.markdown index a27e6d8d6153..f3c9510392e3 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: |- @@ -108,4 +108,4 @@ Using `terraform import`, import a user using the `userName`. For example: The `passwords` are not available for imported resources, as this information cannot be read back from the MemoryDB API. - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/organizations_organization.html.markdown b/website/docs/cdktf/typescript/r/organizations_organization.html.markdown index 2fde6e886bb2..1edf8eca5981 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 000000000000..cc68f4f2b475 --- /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 6d4ef967714a..97966f4bc7c7 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 26c630069134..db24d309e085 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/cdktf/typescript/r/vpc_block_public_access_exclusion.html.markdown b/website/docs/cdktf/typescript/r/vpc_block_public_access_exclusion.html.markdown new file mode 100644 index 000000000000..4d4dd369cc88 --- /dev/null +++ b/website/docs/cdktf/typescript/r/vpc_block_public_access_exclusion.html.markdown @@ -0,0 +1,144 @@ +--- +subcategory: "VPC (Virtual Private Cloud)" +layout: "aws" +page_title: "AWS: aws_vpc_block_public_access_exclusion" +description: |- + Terraform resource for managing an exception to the AWS VPC (Virtual Private Cloud) Block Public Access Exclusion. +--- + + + +# Resource: aws_vpc_block_public_access_exclusion + +Terraform resource for managing an AWS EC2 (Elastic Compute Cloud) VPC Block Public Access Exclusion. + +## Example Usage + +### Basic Usage + +```typescript +// DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug +import { Construct } from "constructs"; +import { TerraformStack } from "cdktf"; +/* + * Provider bindings are generated by running `cdktf get`. + * See https://cdk.tf/provider-generation for more details. + */ +import { VpcBlockPublicAccessExclusion } from "./.gen/providers/aws/"; +import { Vpc } from "./.gen/providers/aws/vpc"; +class MyConvertedCode extends TerraformStack { + constructor(scope: Construct, name: string) { + super(scope, name); + const test = new Vpc(this, "test", { + cidrBlock: "10.1.0.0/16", + }); + const awsVpcBlockPublicAccessExclusionTest = + new VpcBlockPublicAccessExclusion(this, "test_1", { + internet_gateway_exclusion_mode: "allow-bidirectional", + vpc_id: test.id, + }); + /*This allows the Terraform resource name to match the original name. You can remove the call if you don't need them to match.*/ + awsVpcBlockPublicAccessExclusionTest.overrideLogicalId("test"); + } +} + +``` + +### Usage with subnet id + +```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 { VpcBlockPublicAccessExclusion } from "./.gen/providers/aws/"; +import { Subnet } from "./.gen/providers/aws/subnet"; +import { Vpc } from "./.gen/providers/aws/vpc"; +class MyConvertedCode extends TerraformStack { + constructor(scope: Construct, name: string) { + super(scope, name); + const test = new Vpc(this, "test", { + cidrBlock: "10.1.0.0/16", + }); + const awsSubnetTest = new Subnet(this, "test_1", { + cidrBlock: "10.1.1.0/24", + vpcId: test.id, + }); + /*This allows the Terraform resource name to match the original name. You can remove the call if you don't need them to match.*/ + awsSubnetTest.overrideLogicalId("test"); + const awsVpcBlockPublicAccessExclusionTest = + new VpcBlockPublicAccessExclusion(this, "test_2", { + internet_gateway_exclusion_mode: "allow-egress", + subnet_id: awsSubnetTest.id, + }); + /*This allows the Terraform resource name to match the original name. You can remove the call if you don't need them to match.*/ + awsVpcBlockPublicAccessExclusionTest.overrideLogicalId("test"); + } +} + +``` + +## Argument Reference + +The following arguments are required: + +* `internet_gateway_exclusion_mode` - (Required) Mode of exclusion from Block Public Access. The allowed values are `allow-egress` and `allow-bidirectional`. + +The following arguments are optional: + +* `vpcId` - (Optional) Id of the VPC to which this exclusion applies. Either this or the subnet_id needs to be provided. +* `subnetId` - (Optional) Id of the subnet to which this exclusion applies. Either this or the vpc_id needs to be provided. +* `tags` - (Optional) A map of tags to assign to the exclusion. If configured with a provider [`defaultTags` configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-configuration-block) present, tags with matching keys will overwrite those defined at the provider-level. + +## Attribute Reference + +This resource exports the following attributes in addition to the arguments above: + +* `id` - The ID of the VPC Block Public Access Exclusion. +* `resourceArn` - The Amazon Resource Name (ARN) the excluded resource. +* `tagsAll` - A map of tags assigned to the resource, including those inherited from the provider [`defaultTags` configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-configuration-block). + +## Timeouts + +[Configuration options](https://developer.hashicorp.com/terraform/language/resources/syntax#operation-timeouts): + +* `create` - (Default `30m`) +* `update` - (Default `30m`) +* `delete` - (Default `30m`) + +## Import + +In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import VPC Block Public Access Exclusion using the `id`. For example: + +```typescript +// DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug +import { Construct } from "constructs"; +import { TerraformStack } from "cdktf"; +/* + * Provider bindings are generated by running `cdktf get`. + * See https://cdk.tf/provider-generation for more details. + */ +import { VpcBlockPublicAccessExclusion } from "./.gen/providers/aws/"; +class MyConvertedCode extends TerraformStack { + constructor(scope: Construct, name: string) { + super(scope, name); + VpcBlockPublicAccessExclusion.generateConfigForImport( + this, + "example", + "vpcbpa-exclude-1234abcd" + ); + } +} + +``` + +Using `terraform import`, import EC2 (Elastic Compute Cloud) VPC Block Public Access Exclusion using the `id`. For example: + +```console +% terraform import aws_vpc_block_public_access_exclusion.example vpcbpa-exclude-1234abcd +``` + + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/vpc_block_public_access_options.html.markdown b/website/docs/cdktf/typescript/r/vpc_block_public_access_options.html.markdown new file mode 100644 index 000000000000..684ea54225ee --- /dev/null +++ b/website/docs/cdktf/typescript/r/vpc_block_public_access_options.html.markdown @@ -0,0 +1,92 @@ +--- +subcategory: "VPC (Virtual Private Cloud)" +layout: "aws" +page_title: "AWS: aws_vpc_block_public_access_options" +description: |- + Terraform resource for managing AWS VPC Block Public Access Options in a region. +--- + + + +# Resource: aws_vpc_block_public_access_options + +Terraform resource for managing an AWS VPC Block Public Access Options. + +## Example Usage + +### Basic Usage + +```typescript +// DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug +import { Construct } from "constructs"; +import { TerraformStack } from "cdktf"; +/* + * Provider bindings are generated by running `cdktf get`. + * See https://cdk.tf/provider-generation for more details. + */ +import { VpcBlockPublicAccessOptions } from "./.gen/providers/aws/"; +class MyConvertedCode extends TerraformStack { + constructor(scope: Construct, name: string) { + super(scope, name); + new VpcBlockPublicAccessOptions(this, "example", { + internet_gateway_block_mode: "block-bidirectional", + }); + } +} + +``` + +## Argument Reference + +The following arguments are required: + +* `internet_gateway_block_mode` - (Required) Block mode. Needs to be one of `block-bidirectional`, `block-ingress`, `off`. If this resource is deleted, then this value will be set to `off` in the AWS account and region. + +## Attribute Reference + +This resource exports the following attributes in addition to the arguments above: + +* `awsAccountId` - The AWS account id to which these options apply. +* `awsRegion` - The AWS region to which these options apply. + +## Timeouts + +[Configuration options](https://developer.hashicorp.com/terraform/language/resources/syntax#operation-timeouts): + +* `create` - (Default `30m`) +* `update` - (Default `30m`) +* `delete` - (Default `30m`) + +## Import + +In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import VPC Block Public Access Options using the `awsRegion`. 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 { VpcBlockPublicAccessOptions } from "./.gen/providers/aws/"; +class MyConvertedCode extends TerraformStack { + constructor(scope: Construct, name: string) { + super(scope, name); + VpcBlockPublicAccessOptions.generateConfigForImport( + this, + "example", + "us-east-1" + ); + } +} + +``` + +Using `terraform import`, import VPC Block Public Access Options using the `awsRegion`. For example: + +```console +% terraform import aws_vpc_block_public_access_options.example us-east-1 +``` + + \ No newline at end of file diff --git a/website/docs/d/eks_cluster.html.markdown b/website/docs/d/eks_cluster.html.markdown index 578a845020c4..fd37a9e828b9 100644 --- a/website/docs/d/eks_cluster.html.markdown +++ b/website/docs/d/eks_cluster.html.markdown @@ -24,11 +24,6 @@ output "endpoint" { output "kubeconfig-certificate-authority-data" { value = data.aws_eks_cluster.example.certificate_authority[0].data } - -# Only available on Kubernetes version 1.13 and 1.14 clusters created or upgraded on or after September 3, 2019. -output "identity-oidc-issuer" { - value = data.aws_eks_cluster.example.identity[0].oidc[0].issuer -} ``` ## Argument Reference @@ -44,6 +39,10 @@ This data source exports the following attributes in addition to the arguments a * `access_config` - Configuration block for access config. * `authentication_mode` - Values returned are `CONFIG_MAP`, `API` or `API_AND_CONFIG_MAP` * `bootstrap_cluster_creator_admin_permissions` - Default to `true`. +* `compute_config` - Nested attribute containing compute capability configuration for EKS Auto Mode enabled cluster. + * `enabled` - Whether the EKS Auto Mode compute capability is enabled or not. + * `node_pools` - List of node pools for the EKS Auto Mode compute capability. + * `node_role_arn` - The ARN of the IAM Role EKS will assign to EC2 Managed Instances in your EKS Auto Mode cluster. * `certificate_authority` - Nested attribute containing `certificate-authority-data` for your cluster. * `data` - The base64 encoded certificate data required to communicate with your cluster. Add this to the `certificate-authority-data` section of the `kubeconfig` file for your cluster. * `cluster_id` - The ID of your local Amazon EKS cluster on the AWS Outpost. This attribute isn't available for an AWS EKS cluster on AWS cloud. @@ -54,6 +53,8 @@ This data source exports the following attributes in addition to the arguments a * `oidc` - Nested attribute containing [OpenID Connect](https://openid.net/connect/) identity provider information for the cluster. * `issuer` - Issuer URL for the OpenID Connect identity provider. * `kubernetes_network_config` - Nested list containing Kubernetes Network Configuration. + * `elastic_load_balancing` - Contains Elastic Load Balancing configuration for EKS Auto Mode enabled cluster. + * `enabled` - Indicates if the load balancing capability is enabled for EKS Auto Mode enabled cluster. * `ip_family` - `ipv4` or `ipv6`. * `service_ipv4_cidr` - The CIDR block to assign Kubernetes pod and service IP addresses from if `ipv4` was specified when the cluster was created. * `service_ipv6_cidr` - The CIDR block to assign Kubernetes pod and service IP addresses from if `ipv6` was specified when the cluster was created. Kubernetes assigns service addresses from the unique local address range (fc00::/7) because you can't specify a custom IPv6 CIDR block when you create the cluster. @@ -63,11 +64,19 @@ This data source exports the following attributes in addition to the arguments a * `group_name` - The name of the placement group for the Kubernetes control plane instances. * `outpost_arns` - List of ARNs of the Outposts hosting the EKS cluster. Only a single ARN is supported currently. * `platform_version` - Platform version for the cluster. +* `remote_network_config` - Contains remote network configuration for EKS Hybrid Nodes. + * `remote_node_networks` - The networks that can contain hybrid nodes. + * `cidrs` - List of network CIDRs that can contain hybrid nodes. + * `remote_pod_networks` - The networks that can contain pods that run Kubernetes webhooks on hybrid nodes. + * `cidrs` - List of network CIDRs that can contain pods that run Kubernetes webhooks on hybrid nodes. * `role_arn` - ARN of the IAM role that provides permissions for the Kubernetes control plane to make calls to AWS API operations on your behalf. * `status` - Status of the EKS cluster. One of `CREATING`, `ACTIVE`, `DELETING`, `FAILED`. +* `storage_config` - Contains storage configuration for EKS Auto Mode enabled cluster. + * `block_storage` - Contains block storage configuration for EKS Auto Mode enabled cluster. + * `enabled` - Indicates if the block storage capability is enabled for EKS Auto Mode enabled cluster. * `tags` - Key-value map of resource tags. -* `upgrade_policy` - (Optional) Configuration block for the support policy to use for the cluster. - * `support_type` - (Optional) Support type to use for the cluster. +* `upgrade_policy` - Configuration block for the support policy to use for the cluster. + * `support_type` - Support type to use for the cluster. * `version` - Kubernetes server version for the cluster. * `vpc_config` - Nested list containing VPC configuration for the cluster. * `cluster_security_group_id` - The cluster security group that was created by Amazon EKS for the cluster. diff --git a/website/docs/d/memorydb_acl.html.markdown b/website/docs/d/memorydb_acl.html.markdown index 56c0e4def26f..ca5d591f8560 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 f9294037af41..442d6cb9ee7d 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 c073c18a12bc..e1f9241e68d8 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 2c2a63e73c37..76db1d5b56d2 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 e0f7fec956d9..7d2974aae06e 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 0656d5023b88..06651746b48f 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 6ddd1209d100..88ea867bb49a 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`| @@ -283,6 +283,7 @@ provider "aws" { |S3 (Simple Storage)|`s3`(or `s3api`)|`AWS_ENDPOINT_URL_S3`|`s3`| |S3 Control|`s3control`|`AWS_ENDPOINT_URL_S3_CONTROL`|`s3_control`| |S3 on Outposts|`s3outposts`|`AWS_ENDPOINT_URL_S3OUTPOSTS`|`s3outposts`| +|S3 Tables|`s3tables`|`AWS_ENDPOINT_URL_S3TABLES`|`s3tables`| |SageMaker|`sagemaker`|`AWS_ENDPOINT_URL_SAGEMAKER`|`sagemaker`| |EventBridge Scheduler|`scheduler`|`AWS_ENDPOINT_URL_SCHEDULER`|`scheduler`| |EventBridge Schemas|`schemas`|`AWS_ENDPOINT_URL_SCHEMAS`|`schemas`| diff --git a/website/docs/index.html.markdown b/website/docs/index.html.markdown index bcaa80fccba4..26e37f2c7c6e 100644 --- a/website/docs/index.html.markdown +++ b/website/docs/index.html.markdown @@ -11,7 +11,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 1448 resources and 591 data sources available in the provider. +Use the navigation to the left to read about the available resources. There are currently 1452 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, diff --git a/website/docs/r/bedrock_guardrail.html.markdown b/website/docs/r/bedrock_guardrail.html.markdown index 8aeefbfccf76..158d7f5ab894 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_agent.html.markdown b/website/docs/r/bedrockagent_agent.html.markdown index 58fe852c0bc0..5b9b5574e62b 100644 --- a/website/docs/r/bedrockagent_agent.html.markdown +++ b/website/docs/r/bedrockagent_agent.html.markdown @@ -79,7 +79,7 @@ The following arguments are optional: * `customer_encryption_key_arn` - (Optional) ARN of the AWS KMS key that encrypts the agent. * `description` - (Optional) Description of the agent. -* `guardrail_config` - (Optional) Details about the guardrail associated with the agent. See [`guardrail_config` Block](#guardrail_config-block) for details. +* `guardrail_configuration` - (Optional) Details about the guardrail associated with the agent. See [`guardrail_configuration` Block](#guardrail_configuration-block) for details. * `idle_session_ttl_in_seconds` - (Optional) Number of seconds for which Amazon Bedrock keeps information about a user's conversation with the agent. A user interaction remains active for the amount of time specified. If no conversation occurs during this time, the session expires and Amazon Bedrock deletes any data provided before the timeout. * `instruction` - (Optional) Instructions that tell the agent what it should do and how it should interact with users. * `prepare_agent` (Optional) Whether to prepare the agent after creation or modification. Defaults to `true`. @@ -87,9 +87,9 @@ The following arguments are optional: * `skip_resource_in_use_check` - (Optional) Whether the in-use check is skipped when deleting the agent. * `tags` - (Optional) Map of tags assigned to the resource. If configured with a provider [`default_tags` configuration block](/docs/providers/aws/index.html#default_tags-configuration-block) present, tags with matching keys will overwrite those defined at the provider-level. -### `guardrail_config` Block +### `guardrail_configuration` Block -The `guardrail_config` configuration block supports the following arguments: +The `guardrail_configuration` configuration block supports the following arguments: * `guardrail_identifier` - (Optional) Unique identifier of the guardrail. * `guardrail_version` - (Optional) Version of the guardrail. diff --git a/website/docs/r/bedrockagent_data_source.html.markdown b/website/docs/r/bedrockagent_data_source.html.markdown index d0feadf9a706..013fa1ac70ba 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/codeconnections_connection.html.markdown b/website/docs/r/codeconnections_connection.html.markdown new file mode 100644 index 000000000000..fa6f487dd04b --- /dev/null +++ b/website/docs/r/codeconnections_connection.html.markdown @@ -0,0 +1,59 @@ +--- +subcategory: "CodeConnections" +layout: "aws" +page_title: "AWS: aws_codeconnections_connection" +description: |- + Terraform resource for managing an AWS CodeConnections Connection. +--- + +# Resource: aws_codeconnections_connection + +Terraform resource for managing an AWS CodeConnections Connection. + +~> **NOTE:** The `aws_codeconnections_connection` resource is created in the state `PENDING`. Authentication with the connection provider must be completed in the AWS Console. See the [AWS documentation](https://docs.aws.amazon.com/dtconsole/latest/userguide/connections-update.html) for details. + +## Example Usage + +### Basic Usage + +```terraform +resource "aws_codeconnections_connection" "example" { + name = "example-connection" + provider_type = "Bitbucket" +} +``` + +## Argument Reference + +This resource supports the following arguments: + +* `name` - (Required) The name of the connection to be created. The name must be unique in the calling AWS account. Changing `name` will create a new resource. +* `provider_type` - (Optional) The name of the external provider where your third-party code repository is configured. Changing `provider_type` will create a new resource. Conflicts with `host_arn`. +* `host_arn` - (Optional) The Amazon Resource Name (ARN) of the host associated with the connection. Conflicts with `provider_type` +* `tags` - (Optional) Map of key-value resource tags to associate with the resource. If configured with a provider [`default_tags` configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-configuration-block) present, tags with matching keys will overwrite those defined at the provider-level. + +## Attribute Reference + +This resource exports the following attributes in addition to the arguments above: + +* `id` - The codeconnections connection ARN. +* `arn` - The codeconnections connection ARN. +* `connection_status` - The codeconnections connection status. Possible values are `PENDING`, `AVAILABLE` and `ERROR`. +* `tags_all` - A map of tags assigned to the resource, including those inherited from the provider [`default_tags` configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-configuration-block). + +## Import + +In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import CodeConnections connection using the ARN. For example: + +```terraform +import { + to = aws_codeconnections_connection.test-connection + id = "arn:aws:codeconnections:us-west-1:0123456789:connection/79d4d357-a2ee-41e4-b350-2fe39ae59448" +} +``` + +Using `terraform import`, import CodeConnections connection using the ARN. For example: + +```console +% terraform import aws_codeconnections_connection.test-connection arn:aws:codeconnections:us-west-1:0123456789:connection/79d4d357-a2ee-41e4-b350-2fe39ae59448 +``` diff --git a/website/docs/r/codeconnections_host.html.markdown b/website/docs/r/codeconnections_host.html.markdown new file mode 100644 index 000000000000..2dff43e137bc --- /dev/null +++ b/website/docs/r/codeconnections_host.html.markdown @@ -0,0 +1,66 @@ +--- +subcategory: "CodeConnections" +layout: "aws" +page_title: "AWS: aws_codeconnections_host" +description: |- + Terraform resource for managing an AWS CodeConnections Host. +--- + +# Resource: aws_codeconnections_host + +Terraform resource for managing an AWS CodeConnections Host. + +~> **NOTE:** The `aws_codeconnections_host` resource is created in the state `PENDING`. Authentication with the host provider must be completed in the AWS Console. For more information visit [Set up a pending host](https://docs.aws.amazon.com/dtconsole/latest/userguide/connections-host-setup.html). + +## Example Usage + +### Basic Usage + +```terraform +resource "aws_codeconnections_host" "example" { + name = "example-host" + provider_endpoint = "https://example.com" + provider_type = "GitHubEnterpriseServer" +} +``` + +## Argument Reference + +This resource supports the following arguments: + +* `name` - (Required) The name of the host to be created. The name must be unique in the calling AWS account. +* `provider_endpoint` - (Required) The endpoint of the infrastructure to be represented by the host after it is created. +* `provider_type` - (Required) The name of the external provider where your third-party code repository is configured. +* `vpc_configuration` - (Optional) The VPC configuration to be provisioned for the host. A VPC must be configured, and the infrastructure to be represented by the host must already be connected to the VPC. + +A `vpc_configuration` block supports the following arguments: + +* `security_group_ids` - (Required) ID of the security group or security groups associated with the Amazon VPC connected to the infrastructure where your provider type is installed. +* `subnet_ids` - (Required) The ID of the subnet or subnets associated with the Amazon VPC connected to the infrastructure where your provider type is installed. +* `tls_certificate` - (Optional) The value of the Transport Layer Security (TLS) certificate associated with the infrastructure where your provider type is installed. +* `vpc_id` - (Required) The ID of the Amazon VPC connected to the infrastructure where your provider type is installed. + +## Attribute Reference + +This resource exports the following attributes in addition to the arguments above: + +* `id` - The CodeConnections Host ARN. +* `arn` - The CodeConnections Host ARN. +* `status` - The CodeConnections Host status. Possible values are `PENDING`, `AVAILABLE`, `VPC_CONFIG_DELETING`, `VPC_CONFIG_INITIALIZING`, and `VPC_CONFIG_FAILED_INITIALIZATION`. + +## Import + +In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import CodeConnections Host using the ARN. For example: + +```terraform +import { + to = aws_codeconnections_host.example-host + id = "arn:aws:codeconnections:us-west-1:0123456789:host/79d4d357-a2ee-41e4-b350-2fe39ae59448" +} +``` + +Using `terraform import`, import CodeConnections Host using the ARN. For example: + +```console +% terraform import aws_codeconnections_host.example-host arn:aws:codeconnections:us-west-1:0123456789:host/79d4d357-a2ee-41e4-b350-2fe39ae59448 +``` diff --git a/website/docs/r/dynamodb_table_replica.html.markdown b/website/docs/r/dynamodb_table_replica.html.markdown index 04806f976d8d..81828c91a74f 100644 --- a/website/docs/r/dynamodb_table_replica.html.markdown +++ b/website/docs/r/dynamodb_table_replica.html.markdown @@ -67,7 +67,8 @@ Required arguments: Optional arguments: * `kms_key_arn` - (Optional, Forces new resource) ARN of the CMK that should be used for the AWS KMS encryption. This argument should only be used if the key is different from the default KMS-managed DynamoDB key, `alias/aws/dynamodb`. **Note:** This attribute will _not_ be populated with the ARN of _default_ keys. -* `point_in_time_recovery` - (Optional) Whether to enable Point In Time Recovery for the replica. Default is `false`. +* `deletion_protection_enabled` - (Optional) Whether deletion protection is enabled (true) or disabled (false) on the table replica. +* `point_in_time_recovery` - (Optional) Whether to enable Point In Time Recovery for the table replica. Default is `false`. * `table_class_override` - (Optional, Forces new resource) Storage class of the table replica. Valid values are `STANDARD` and `STANDARD_INFREQUENT_ACCESS`. If not used, the table replica will use the same class as the global table. * `tags` - (Optional) Map of tags to populate on the created table. If configured with a provider [`default_tags` configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-configuration-block) present, tags with matching keys will overwrite those defined at the provider-level. diff --git a/website/docs/r/ecs_service.html.markdown b/website/docs/r/ecs_service.html.markdown index 8be0add8d43d..a99a3323c344 100644 --- a/website/docs/r/ecs_service.html.markdown +++ b/website/docs/r/ecs_service.html.markdown @@ -127,6 +127,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. @@ -154,6 +155,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 @@ -171,6 +173,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: diff --git a/website/docs/r/eks_cluster.html.markdown b/website/docs/r/eks_cluster.html.markdown index 03cdf1724cf8..30ac42f829f5 100644 --- a/website/docs/r/eks_cluster.html.markdown +++ b/website/docs/r/eks_cluster.html.markdown @@ -14,196 +14,324 @@ Manages an EKS Cluster. ## Example Usage -### Basic Usage +### EKS Cluster ```terraform resource "aws_eks_cluster" "example" { - name = "example" + name = "example" + + access_config { + authentication_mode = "API" + } + role_arn = aws_iam_role.example.arn + version = "1.31" vpc_config { - subnet_ids = [aws_subnet.example1.id, aws_subnet.example2.id] + subnet_ids = [ + aws_subnet.az1.id, + aws_subnet.az2.id, + aws_subnet.az3.id, + ] } - # Ensure that IAM Role permissions are created before and deleted after EKS Cluster handling. - # Otherwise, EKS will not be able to properly delete EKS managed EC2 infrastructure such as Security Groups. + # Ensure that IAM Role permissions are created before and deleted + # after EKS Cluster handling. Otherwise, EKS will not be able to + # properly delete EKS managed EC2 infrastructure such as Security Groups. depends_on = [ - aws_iam_role_policy_attachment.example-AmazonEKSClusterPolicy, - aws_iam_role_policy_attachment.example-AmazonEKSVPCResourceController, + aws_iam_role_policy_attachment.cluster_AmazonEKSClusterPolicy, ] } -output "endpoint" { - value = aws_eks_cluster.example.endpoint +resource "aws_iam_role" "cluster" { + name = "eks-cluster-example" + assume_role_policy = jsonencode({ + Version = "2012-10-17" + Statement = [ + { + Action = [ + "sts:AssumeRole", + "sts:TagSession" + ] + Effect = "Allow" + Principal = { + Service = "eks.amazonaws.com" + } + }, + ] + }) } -output "kubeconfig-certificate-authority-data" { - value = aws_eks_cluster.example.certificate_authority[0].data +resource "aws_iam_role_policy_attachment" "cluster_AmazonEKSClusterPolicy" { + policy_arn = "arn:aws:iam::aws:policy/AmazonEKSClusterPolicy" + role = aws_iam_role.cluster.name } ``` -### Example IAM Role for EKS Cluster +### EKS Cluster with EKS Auto Mode + +~> **NOTE:** When using EKS Auto Mode `compute_config.enabled`, `kubernetes_network_config.elastic_load_balancing.enabled`, and `storage_config.block_storage.enabled` must *ALL be set to `true`. Likewise for disabling EKS Auto Mode, all three arguments must be set to `false`. ```terraform -data "aws_iam_policy_document" "assume_role" { - statement { - effect = "Allow" +resource "aws_eks_cluster" "example" { + name = "example" + + access_config { + authentication_mode = "API" + } + + role_arn = aws_iam_role.cluster.arn + version = "1.31" + + compute_config { + enabled = true + node_pools = ["general-purpose"] + node_role_arn = aws_iam_role.node.arn + } - principals { - type = "Service" - identifiers = ["eks.amazonaws.com"] + kubernetes_network_config { + elastic_load_balancing { + enabled = true } + } - actions = ["sts:AssumeRole"] + storage_config { + block_storage { + enabled = true + } } -} -resource "aws_iam_role" "example" { - name = "eks-cluster-example" - assume_role_policy = data.aws_iam_policy_document.assume_role.json -} + vpc_config { + endpoint_private_access = true + endpoint_public_access = true -resource "aws_iam_role_policy_attachment" "example-AmazonEKSClusterPolicy" { - policy_arn = "arn:aws:iam::aws:policy/AmazonEKSClusterPolicy" - role = aws_iam_role.example.name -} + subnet_ids = [ + aws_subnet.az1.id, + aws_subnet.az2.id, + aws_subnet.az3.id, + ] + } -# Optionally, enable Security Groups for Pods -# Reference: https://docs.aws.amazon.com/eks/latest/userguide/security-groups-for-pods.html -resource "aws_iam_role_policy_attachment" "example-AmazonEKSVPCResourceController" { - policy_arn = "arn:aws:iam::aws:policy/AmazonEKSVPCResourceController" - role = aws_iam_role.example.name + # Ensure that IAM Role permissions are created before and deleted + # after EKS Cluster handling. Otherwise, EKS will not be able to + # properly delete EKS managed EC2 infrastructure such as Security Groups. + depends_on = [ + aws_iam_role_policy_attachment.cluster_AmazonEKSClusterPolicy, + aws_iam_role_policy_attachment.cluster_AmazonEKSComputePolicy, + aws_iam_role_policy_attachment.cluster_AmazonEKSBlockStoragePolicy, + aws_iam_role_policy_attachment.cluster_AmazonEKSLoadBalancingPolicy, + aws_iam_role_policy_attachment.cluster_AmazonEKSNetworkingPolicy, + ] } -``` -### Enabling Control Plane Logging +resource "aws_iam_role" "node" { + name = "eks-auto-node-example" + assume_role_policy = jsonencode({ + Version = "2012-10-17" + Statement = [ + { + Action = ["sts:AssumeRole"] + Effect = "Allow" + Principal = { + Service = "ec2.amazonaws.com" + } + }, + ] + }) +} -[EKS Control Plane Logging](https://docs.aws.amazon.com/eks/latest/userguide/control-plane-logs.html) can be enabled via the `enabled_cluster_log_types` argument. To manage the CloudWatch Log Group retention period, the [`aws_cloudwatch_log_group` resource](/docs/providers/aws/r/cloudwatch_log_group.html) can be used. +resource "aws_iam_role_policy_attachment" "node_AmazonEKSWorkerNodeMinimalPolicy" { + policy_arn = "arn:aws:iam::aws:policy/AmazonEKSWorkerNodeMinimalPolicy" + role = aws_iam_role.node.name +} --> The below configuration uses [`depends_on`](https://www.terraform.io/docs/configuration/meta-arguments/depends_on.html) to prevent ordering issues with EKS automatically creating the log group first and a variable for naming consistency. Other ordering and naming methodologies may be more appropriate for your environment. +resource "aws_iam_role_policy_attachment" "node_AmazonEC2ContainerRegistryPullOnly" { + policy_arn = "arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryPullOnly" + role = aws_iam_role.node.name +} -```terraform -variable "cluster_name" { - default = "example" - type = string +resource "aws_iam_role" "cluster" { + name = "eks-cluster-example" + assume_role_policy = jsonencode({ + Version = "2012-10-17" + Statement = [ + { + Action = [ + "sts:AssumeRole", + "sts:TagSession" + ] + Effect = "Allow" + Principal = { + Service = "eks.amazonaws.com" + } + }, + ] + }) } -resource "aws_eks_cluster" "example" { - depends_on = [aws_cloudwatch_log_group.example] +resource "aws_iam_role_policy_attachment" "cluster_AmazonEKSClusterPolicy" { + policy_arn = "arn:aws:iam::aws:policy/AmazonEKSClusterPolicy" + role = aws_iam_role.cluster.name +} - enabled_cluster_log_types = ["api", "audit"] - name = var.cluster_name +resource "aws_iam_role_policy_attachment" "cluster_AmazonEKSComputePolicy" { + policy_arn = "arn:aws:iam::aws:policy/AmazonEKSComputePolicy" + role = aws_iam_role.cluster.name +} - # ... other configuration ... +resource "aws_iam_role_policy_attachment" "cluster_AmazonEKSBlockStoragePolicy" { + policy_arn = "arn:aws:iam::aws:policy/AmazonEKSBlockStoragePolicy" + role = aws_iam_role.cluster.name } -resource "aws_cloudwatch_log_group" "example" { - # The log group name format is /aws/eks//cluster - # Reference: https://docs.aws.amazon.com/eks/latest/userguide/control-plane-logs.html - name = "/aws/eks/${var.cluster_name}/cluster" - retention_in_days = 7 +resource "aws_iam_role_policy_attachment" "cluster_AmazonEKSLoadBalancingPolicy" { + policy_arn = "arn:aws:iam::aws:policy/AmazonEKSLoadBalancingPolicy" + role = aws_iam_role.cluster.name +} - # ... potentially other configuration ... +resource "aws_iam_role_policy_attachment" "cluster_AmazonEKSNetworkingPolicy" { + policy_arn = "arn:aws:iam::aws:policy/AmazonEKSNetworkingPolicy" + role = aws_iam_role.cluster.name } ``` -### Enabling IAM Roles for Service Accounts - -For more information about this feature, see the [EKS User Guide](https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html). +### EKS Cluster with EKS Hybrid Nodes ```terraform resource "aws_eks_cluster" "example" { - # ... other configuration ... -} + name = "example" -data "tls_certificate" "example" { - url = aws_eks_cluster.example.identity[0].oidc[0].issuer -} - -resource "aws_iam_openid_connect_provider" "example" { - client_id_list = ["sts.amazonaws.com"] - thumbprint_list = [data.tls_certificate.example.certificates[0].sha1_fingerprint] - url = data.tls_certificate.example.url -} + access_config { + authentication_mode = "API" + } -data "aws_iam_policy_document" "example_assume_role_policy" { - statement { - actions = ["sts:AssumeRoleWithWebIdentity"] - effect = "Allow" + role_arn = aws_iam_role.cluster.arn + version = "1.31" - condition { - test = "StringEquals" - variable = "${replace(aws_iam_openid_connect_provider.example.url, "https://", "")}:sub" - values = ["system:serviceaccount:kube-system:aws-node"] + cluster_remote_network_config = { + remote_node_networks = { + cidrs = ["172.16.0.0/18"] } - - principals { - identifiers = [aws_iam_openid_connect_provider.example.arn] - type = "Federated" + remote_pod_networks = { + cidrs = ["172.16.64.0/18"] } } + + vpc_config { + endpoint_private_access = true + endpoint_public_access = true + + subnet_ids = [ + aws_subnet.az1.id, + aws_subnet.az2.id, + aws_subnet.az3.id, + ] + } + + # Ensure that IAM Role permissions are created before and deleted + # after EKS Cluster handling. Otherwise, EKS will not be able to + # properly delete EKS managed EC2 infrastructure such as Security Groups. + depends_on = [ + aws_iam_role_policy_attachment.cluster_AmazonEKSClusterPolicy, + ] +} + +resource "aws_iam_role" "cluster" { + name = "eks-cluster-example" + assume_role_policy = jsonencode({ + Version = "2012-10-17" + Statement = [ + { + Action = [ + "sts:AssumeRole", + "sts:TagSession" + ] + Effect = "Allow" + Principal = { + Service = "eks.amazonaws.com" + } + }, + ] + }) } -resource "aws_iam_role" "example" { - assume_role_policy = data.aws_iam_policy_document.example_assume_role_policy.json - name = "example" +resource "aws_iam_role_policy_attachment" "cluster_AmazonEKSClusterPolicy" { + policy_arn = "arn:aws:iam::aws:policy/AmazonEKSClusterPolicy" + role = aws_iam_role.cluster.name } ``` -### EKS Cluster on AWS Outpost +### Local EKS Cluster on AWS Outpost [Creating a local Amazon EKS cluster on an AWS Outpost](https://docs.aws.amazon.com/eks/latest/userguide/create-cluster-outpost.html) ```terraform -resource "aws_iam_role" "example" { - assume_role_policy = data.aws_iam_policy_document.example_assume_role_policy.json - name = "example" -} - resource "aws_eks_cluster" "example" { - name = "example-cluster" + name = "example" + + access_config { + authentication_mode = "CONFIG_MAP" + } + role_arn = aws_iam_role.example.arn + version = "1.31" vpc_config { endpoint_private_access = true endpoint_public_access = false - # ... other configuration ... + + subnet_ids = [ + aws_subnet.az1.id, + aws_subnet.az2.id, + aws_subnet.az3.id, + ] } outpost_config { - control_plane_instance_type = "m5d.large" + control_plane_instance_type = "m5.large" outpost_arns = [data.aws_outposts_outpost.example.arn] } -} -``` - -### EKS Cluster with Access Config -```terraform -resource "aws_iam_role" "example" { - assume_role_policy = data.aws_iam_policy_document.example_assume_role_policy.json - name = "example" + # Ensure that IAM Role permissions are created before and deleted + # after EKS Cluster handling. Otherwise, EKS will not be able to + # properly delete EKS managed EC2 infrastructure such as Security Groups. + depends_on = [ + aws_iam_role_policy_attachment.cluster_AmazonEKSLocalOutpostClusterPolicy, + ] } -resource "aws_eks_cluster" "example" { - name = "example-cluster" - role_arn = aws_iam_role.example.arn +data "aws_outposts_outpost" "example" { + name = "example" +} - vpc_config { - endpoint_private_access = true - endpoint_public_access = false - # ... other configuration ... - } +resource "aws_iam_role" "cluster" { + name = "eks-cluster-example" + assume_role_policy = jsonencode({ + Version = "2012-10-17" + Statement = [ + { + Action = [ + "sts:AssumeRole", + "sts:TagSession" + ] + Effect = "Allow" + Principal = { + Service = [ + "eks.amazonaws.com", + "ec2.amazonaws.com" + ] + } + }, + ] + }) +} - access_config { - authentication_mode = "CONFIG_MAP" - bootstrap_cluster_creator_admin_permissions = true - } +resource "aws_iam_role_policy_attachment" "cluster_AmazonEKSLocalOutpostClusterPolicy" { + policy_arn = "arn:aws:iam::aws:policy/AmazonEKSLocalOutpostClusterPolicy" + role = aws_iam_role.cluster.name } ``` -After adding inline IAM Policies (e.g., [`aws_iam_role_policy` resource](/docs/providers/aws/r/iam_role_policy.html)) or attaching IAM Policies (e.g., [`aws_iam_policy` resource](/docs/providers/aws/r/iam_policy.html) and [`aws_iam_role_policy_attachment` resource](/docs/providers/aws/r/iam_role_policy_attachment.html)) with the desired permissions to the IAM Role, annotate the Kubernetes service account (e.g., [`kubernetes_service_account` resource](https://registry.terraform.io/providers/hashicorp/kubernetes/latest/docs/resources/service_account)) and recreate any pods. - ## Argument Reference The following arguments are required: @@ -216,10 +344,13 @@ The following arguments are optional: * `access_config` - (Optional) Configuration block for the access config associated with your cluster, see [Amazon EKS Access Entries](https://docs.aws.amazon.com/eks/latest/userguide/access-entries.html). * `bootstrap_self_managed_addons` - (Optional) Install default unmanaged add-ons, such as `aws-cni`, `kube-proxy`, and CoreDNS during cluster creation. If `false`, you must manually install desired add-ons. Changing this value will force a new cluster to be created. Defaults to `true`. +* `compute_config` - (Optional) Configuration block with compute configuration for EKS Auto Mode. Detailed below. * `enabled_cluster_log_types` - (Optional) List of the desired control plane logging to enable. For more information, see [Amazon EKS Control Plane Logging](https://docs.aws.amazon.com/eks/latest/userguide/control-plane-logs.html). * `encryption_config` - (Optional) Configuration block with encryption configuration for the cluster. Detailed below. * `kubernetes_network_config` - (Optional) Configuration block with kubernetes network configuration for the cluster. Detailed below. If removed, Terraform will only perform drift detection if a configuration value is provided. * `outpost_config` - (Optional) Configuration block representing the configuration of your local Amazon EKS cluster on an AWS Outpost. This block isn't available for creating Amazon EKS clusters on the AWS cloud. +* `remote_network_config` - (Optional) Configuration block with remote network configuration for EKS Hybrid Nodes. Detailed below. +* `storage_config` - (Optional) Configuration block with storage configuration for EKS Auto Mode. Detailed below. * `tags` - (Optional) Key-value map of resource tags. If configured with a provider [`default_tags` configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-configuration-block) present, tags with matching keys will overwrite those defined at the provider-level. * `upgrade_policy` - (Optional) Configuration block for the support policy to use for the cluster. See [upgrade_policy](#upgrade_policy) for details. * `version` – (Optional) Desired Kubernetes master version. If you do not specify a value, the latest available version at resource creation is used and no upgrades will occur except those automatically triggered by EKS. The value must be configured and increased to upgrade the version when desired. Downgrades are not supported by EKS. @@ -232,6 +363,14 @@ The `access_config` configuration block supports the following arguments: * `authentication_mode` - (Optional) The authentication mode for the cluster. Valid values are `CONFIG_MAP`, `API` or `API_AND_CONFIG_MAP` * `bootstrap_cluster_creator_admin_permissions` - (Optional) Whether or not to bootstrap the access config values to the cluster. Default is `false`. +### compute_config + +The `compute_config` configuration block supports the following arguments: + +* `enabled` - (Optional) Request to enable or disable the compute capability on your EKS Auto Mode cluster. If the compute capability is enabled, EKS Auto Mode will create and delete EC2 Managed Instances in your Amazon Web Services account. +* `node_pools` - (Optional) Configuration for node pools that defines the compute resources for your EKS Auto Mode cluster. Valid options are `general-purpose` and `system`. +* `node_role_arn` - (Optional) The ARN of the IAM Role EKS will assign to EC2 Managed Instances in your EKS Auto Mode cluster. This value cannot be changed after the compute capability of EKS Auto Mode is enabled.. + ### encryption_config The `encryption_config` configuration block supports the following arguments: @@ -245,6 +384,25 @@ The `provider` configuration block supports the following arguments: * `key_arn` - (Required) ARN of the Key Management Service (KMS) customer master key (CMK). The CMK must be symmetric, created in the same region as the cluster, and if the CMK was created in a different account, the user must have access to the CMK. For more information, see [Allowing Users in Other Accounts to Use a CMK in the AWS Key Management Service Developer Guide](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying-external-accounts.html). +### remote_network_config + +The `remote_network_config` configuration block supports the following arguments: + +* `remote_node_networks` - (Optional) Configuration block with remote node network configuration for EKS Hybrid Nodes. Detailed below. +* `remote_pod_networks` - (Optional) Configuration block with remote pod network configuration for EKS Hybrid Nodes. Detailed below. + +#### remote_node_networks + +The `remote_node_networks` configuration block supports the following arguments: + +* `cidrs` - (Required) List of network CIDRs that can contain hybrid nodes. + +#### remote_pod_networks + +The `remote_pod_networks` configuration block supports the following arguments: + +* `cidrs` - (Required) List of network CIDRs that can contain pods that run Kubernetes webhooks on hybrid nodes. + ### vpc_config Arguments * `endpoint_private_access` - (Optional) Whether the Amazon EKS private API server endpoint is enabled. Default is `false`. @@ -257,6 +415,7 @@ The `provider` configuration block supports the following arguments: The `kubernetes_network_config` configuration block supports the following arguments: +* `elastic_load_balancing` - (Optional) Configuration block with elastic load balancing configuration for the cluster. Detailed below. * `service_ipv4_cidr` - (Optional) The CIDR block to assign Kubernetes pod and service IP addresses from. If you don't specify a block, Kubernetes assigns addresses from either the 10.100.0.0/16 or 172.20.0.0/16 CIDR blocks. We recommend that you specify a block that does not overlap with resources in other networks that are peered or connected to your VPC. You can only specify a custom CIDR block when you create a cluster, changing this value will force a new cluster to be created. The block must meet the following requirements: * Within one of the following private IP address blocks: 10.0.0.0/8, 172.16.0.0/12, or 192.168.0.0/16. @@ -266,6 +425,12 @@ The `kubernetes_network_config` configuration block supports the following argum * Between /24 and /12. * `ip_family` - (Optional) The IP family used to assign Kubernetes pod and service addresses. Valid values are `ipv4` (default) and `ipv6`. You can only specify an IP family when you create a cluster, changing this value will force a new cluster to be created. +#### elastic_load_balancing + +The `elastic_load_balancing` configuration block supports the following arguments: + +* `enabled` - (Optional) Indicates if the load balancing capability is enabled on your EKS Auto Mode cluster. If the load balancing capability is enabled, EKS Auto Mode will create and delete load balancers in your Amazon Web Services account. + ### outpost_config The `outpost_config` configuration block supports the following arguments: @@ -310,7 +475,7 @@ This resource exports the following attributes in addition to the arguments abov * `endpoint` - Endpoint for your Kubernetes API server. * `id` - Name of the cluster. * `identity` - Attribute block containing identity provider information for your cluster. Only available on Kubernetes version 1.13 and 1.14 clusters created or upgraded on or after September 3, 2019. Detailed below. -* `kubernetes_network_config.service_ipv6_cidr` - The CIDR block that Kubernetes pod and service IP addresses are assigned from if you specified `ipv6` for ipFamily when you created the cluster. Kubernetes assigns service addresses from the unique local address range (fc00::/7) because you can't specify a custom IPv6 CIDR block when you create the cluster. +* `kubernetes_network_config` - Attribute block containing Kubernetes network configuration for the cluster. Detailed below. * `platform_version` - Platform version for the cluster. * `status` - Status of the EKS cluster. One of `CREATING`, `ACTIVE`, `DELETING`, `FAILED`. * `tags_all` - Map of tags assigned to the resource, including those inherited from the provider [`default_tags` configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-configuration-block). @@ -324,6 +489,10 @@ This resource exports the following attributes in addition to the arguments abov * `oidc` - Nested block containing [OpenID Connect](https://openid.net/connect/) identity provider information for the cluster. Detailed below. +### kubernetes_network_config + +* `service_ipv6_cidr` - The CIDR block that Kubernetes pod and service IP addresses are assigned from if you specified `ipv6` for `ip_family` when you created the cluster. Kubernetes assigns service addresses from the unique local address range (fc00::/7) because you can't specify a custom IPv6 CIDR block when you create the cluster. + ### oidc * `issuer` - Issuer URL for the OpenID Connect identity provider. 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 000000000000..d3995528a76a --- /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/lambda_event_source_mapping.html.markdown b/website/docs/r/lambda_event_source_mapping.html.markdown index e1191136cae8..146ccbc69d32 100644 --- a/website/docs/r/lambda_event_source_mapping.html.markdown +++ b/website/docs/r/lambda_event_source_mapping.html.markdown @@ -58,6 +58,11 @@ resource "aws_lambda_event_source_mapping" "example" { topics = ["Example"] starting_position = "TRIM_HORIZON" + provisioned_poller_config { + maximum_poller = 80 + minimum_poller = 10 + } + self_managed_event_source { endpoints = { KAFKA_BOOTSTRAP_SERVERS = "kafka1.example.com:9092,kafka2.example.com:9092" @@ -165,7 +170,9 @@ resource "aws_lambda_event_source_mapping" "example" { * `maximum_batching_window_in_seconds` - (Optional) The maximum amount of time to gather records before invoking the function, in seconds (between 0 and 300). Records will continue to buffer (or accumulate in the case of an SQS queue event source) until either `maximum_batching_window_in_seconds` expires or `batch_size` has been met. For streaming event sources, defaults to as soon as records are available in the stream. If the batch it reads from the stream/queue only has one record in it, Lambda only sends one record to the function. Only available for stream sources (DynamoDB and Kinesis) and SQS standard queues. * `maximum_record_age_in_seconds`: - (Optional) The maximum age of a record that Lambda sends to a function for processing. Only available for stream sources (DynamoDB and Kinesis). Must be either -1 (forever, and the default value) or between 60 and 604800 (inclusive). * `maximum_retry_attempts`: - (Optional) The maximum number of times to retry when the function returns an error. Only available for stream sources (DynamoDB and Kinesis). Minimum and default of -1 (forever), maximum of 10000. +* `metrics_config`: - (Optional) CloudWatch metrics configuration of the event source. Only available for stream sources (DynamoDB and Kinesis) and SQS queues. Detailed below. * `parallelization_factor`: - (Optional) The number of batches to process from each shard concurrently. Only available for stream sources (DynamoDB and Kinesis). Minimum and default of 1, maximum of 10. +* `provisioned_poller_config`: - (Optional) Event poller configuration for the event source. Only valid for Amazon MSK or self-managed Apache Kafka sources. Detailed below. * `queues` - (Optional) The name of the Amazon MQ broker destination queue to consume. Only available for MQ sources. The list must contain exactly one queue name. * `scaling_config` - (Optional) Scaling configuration of the event source. Only available for SQS queues. Detailed below. * `self_managed_event_source`: - (Optional) For Self Managed Kafka sources, the location of the self managed cluster. If set, configuration must also include `source_access_configuration`. Detailed below. @@ -203,6 +210,15 @@ resource "aws_lambda_event_source_mapping" "example" { * `pattern` - (Optional) A filter pattern up to 4096 characters. See [Filter Rule Syntax](https://docs.aws.amazon.com/lambda/latest/dg/invocation-eventfiltering.html#filtering-syntax). +### metrics_config Configuration Block + +* `metrics` - (Required) A list containing the metrics to be produced by the event source mapping. Valid values: `EventCount`. + +### provisioned_poller_config Configuration Block + +* `maximum_pollers` - (Optional) The maximum number of event pollers this event source can scale up to. The range is between 1 and 2000. +* `minimum_pollers` - (Optional) The minimum number of event pollers this event source can scale down to. The range is between 1 and 200. + ### scaling_config Configuration Block * `maximum_concurrency` - (Optional) Limits the number of concurrent instances that the Amazon SQS event source can invoke. Must be greater than or equal to `2`. See [Configuring maximum concurrency for Amazon SQS event sources](https://docs.aws.amazon.com/lambda/latest/dg/with-sqs.html#events-sqs-max-concurrency). You need to raise a [Service Quota Ticket](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html) to increase the concurrency beyond 1000. diff --git a/website/docs/r/lb_target_group.html.markdown b/website/docs/r/lb_target_group.html.markdown index d39b53984b7d..2d352d3ddd49 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 4907b332497d..34eee0ae208b 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 f7a3900a9945..ee5e21860845 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 54bcfd3c0e13..fdb82be1ca5b 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 f251f483ea39..6783b199d81b 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 79e88377a585..10c355722377 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 d3af6428b260..5e579fc7ccc0 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/rds_cluster.html.markdown b/website/docs/r/rds_cluster.html.markdown index dec747b3720e..fb0a8dfa083f 100644 --- a/website/docs/r/rds_cluster.html.markdown +++ b/website/docs/r/rds_cluster.html.markdown @@ -252,7 +252,7 @@ This resource supports the following arguments: * `port` - (Optional) Port on which the DB accepts connections. * `preferred_backup_window` - (Optional) Daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per region, e.g. `04:00-09:00`. * `preferred_maintenance_window` - (Optional) Weekly time range during which system maintenance can occur, in (UTC) e.g., `wed:04:00-wed:04:30` -* `replication_source_identifier` - (Optional) ARN of a source DB cluster or DB instance if this DB cluster is to be created as a Read Replica. If DB Cluster is part of a Global Cluster, use the [`lifecycle` configuration block `ignore_changes` argument](https://www.terraform.io/docs/configuration/meta-arguments/lifecycle.html#ignore_changes) to prevent Terraform from showing differences for this argument instead of configuring this value. +* `replication_source_identifier` - (Optional) ARN of a source DB cluster or DB instance if this DB cluster is to be created as a Read Replica. **Note:** Removing this attribute after creation will promote the read replica to a standalone cluster. If DB Cluster is part of a Global Cluster, use the [`lifecycle` configuration block `ignore_changes` argument](https://www.terraform.io/docs/configuration/meta-arguments/lifecycle.html#ignore_changes) to prevent Terraform from showing differences for this argument instead of configuring this value. * `restore_to_point_in_time` - (Optional) Nested attribute for [point in time restore](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-pitr.html). More details below. * `scaling_configuration` - (Optional) Nested attribute with scaling properties. Only valid when `engine_mode` is set to `serverless`. More details below. * `serverlessv2_scaling_configuration`- (Optional) Nested attribute with scaling properties for ServerlessV2. Only valid when `engine_mode` is set to `provisioned`. More details below. diff --git a/website/docs/r/s3_bucket_lifecycle_configuration.html.markdown b/website/docs/r/s3_bucket_lifecycle_configuration.html.markdown index 16c0ad7de9fe..f7c434ba7f9d 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`: diff --git a/website/docs/r/s3_directory_bucket.html.markdown b/website/docs/r/s3_directory_bucket.html.markdown index 72268552922b..141296c2632d 100644 --- a/website/docs/r/s3_directory_bucket.html.markdown +++ b/website/docs/r/s3_directory_bucket.html.markdown @@ -36,8 +36,8 @@ This resource supports the following arguments: The `location` block supports the following: -* `name` - (Required) [Availability Zone ID](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html#az-ids). -* `type` - (Optional, Default:`AvailabilityZone`) Location type. Valid values: `AvailabilityZone`. +* `name` - (Required) [Availability Zone ID](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html#az-ids) or Local Zone ID. +* `type` - (Optional, Default:`AvailabilityZone`) Location type. Valid values: `AvailabilityZone`, `LocalZone`. ## Attribute Reference diff --git a/website/docs/r/s3tables_namespace.html.markdown b/website/docs/r/s3tables_namespace.html.markdown new file mode 100644 index 000000000000..73deb49dd71a --- /dev/null +++ b/website/docs/r/s3tables_namespace.html.markdown @@ -0,0 +1,60 @@ +--- +subcategory: "S3 Tables" +layout: "aws" +page_title: "AWS: aws_s3tables_namespace" +description: |- + Terraform resource for managing an Amazon S3 Tables Namespace. +--- + +# Resource: aws_s3tables_namespace + +Terraform resource for managing an Amazon S3 Tables Namespace. + +## Example Usage + +### Basic Usage + +```terraform +resource "aws_s3tables_namespace" "example" { + namespace = "example-namespace" + table_bucket_arn = aws_s3tables_table_bucket.example.arn +} + +resource "aws_s3tables_table_bucket" "example" { + name = "example-bucket" +} +``` + +## Argument Reference + +The following arguments are required: + +* `namespace` - (Required, Forces new resource) Name of the namespace. + Must be between 1 and 255 characters in length. + Can consist of lowercase letters, numbers, and underscores, and must begin and end with a lowercase letter or number. +* `table_bucket_arn` - (Required, Forces new resource) ARN referencing the Table Bucket that contains this Namespace. + +## Attribute Reference + +This resource exports the following attributes in addition to the arguments above: + +* `created_at` - Date and time when the namespace was created. +* `created_by` - Account ID of the account that created the namespace. +* `owner_account_id` - Account ID of the account that owns the namespace. + +## Import + +In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import S3 Tables Namespace using the `table_bucket_arn` and the value of `namespace`, separated by a semicolon (`;`). For example: + +```terraform +import { + to = aws_s3tables_namespace.example + id = "arn:aws:s3tables:us-west-2:123456789012:bucket/example-bucket;example-namespace" +} +``` + +Using `terraform import`, import S3 Tables Namespace using the `table_bucket_arn` and the value of `namespace`, separated by a semicolon (`;`). For example: + +```console +% terraform import aws_s3tables_namespace.example 'arn:aws:s3tables:us-west-2:123456789012:bucket/example-bucket;example-namespace' +``` diff --git a/website/docs/r/s3tables_table.html.markdown b/website/docs/r/s3tables_table.html.markdown new file mode 100644 index 000000000000..cc053b433db9 --- /dev/null +++ b/website/docs/r/s3tables_table.html.markdown @@ -0,0 +1,128 @@ +--- +subcategory: "S3 Tables" +layout: "aws" +page_title: "AWS: aws_s3tables_table" +description: |- + Terraform resource for managing an Amazon S3 Tables Table. +--- + +# Resource: aws_s3tables_table + +Terraform resource for managing an Amazon S3 Tables Table. + +## Example Usage + +### Basic Usage + +```terraform +resource "aws_s3tables_table" "example" { + name = "example-table" + namespace = aws_s3tables_namespace.example + table_bucket_arn = aws_s3tables_namespace.example.table_bucket_arn + format = "ICEBERG" +} + +resource "aws_s3tables_namespace" "example" { + namespace = "example-namespace" + table_bucket_arn = aws_s3tables_table_bucket.example.arn +} + +resource "aws_s3tables_table_bucket" "example" { + name = "example-bucket" +} +``` + +## Argument Reference + +The following arguments are required: + +* `format` - (Required) Format of the table. + Must be `ICEBERG`. +* `name` - (Required) Name of the table. + Must be between 1 and 255 characters in length. + Can consist of lowercase letters, numbers, and underscores, and must begin and end with a lowercase letter or number. +* `namespace` - (Required) Name of the namespace for this table. + Must be between 1 and 255 characters in length. + Can consist of lowercase letters, numbers, and underscores, and must begin and end with a lowercase letter or number. +* `table_bucket_arn` - (Required, Forces new resource) ARN referencing the Table Bucket that contains this Namespace. + +The following argument is optional: + +* `maintenance_configuration` - (Optional) A single table bucket maintenance configuration block. + [See `maintenance_configuration` below](#maintenance_configuration) + +### maintenance_configuration + +The `maintenance_configuration` configuration block supports the following arguments: + +* `iceberg_compaction` - (Required) A single Iceberg compaction settings block. + [See `iceberg_compaction` below](#iceberg_compaction) +* `iceberg_snapshot_management` - (Required) A single Iceberg snapshot management settings block. + [See `iceberg_snapshot_management` below](#iceberg_snapshot_management) + +### `iceberg_compaction` + +The `iceberg_compaction` configuration block supports the following arguments: + +* `settings` - (Required) Settings for compaction. + [See `iceberg_compaction.settings` below](#iceberg_compactionsettings) +* `status` - (Required) Whether the configuration is enabled. + Valid values are `enabled` and `disabled`. + +### `iceberg_compaction.settings` + +The `iceberg_compaction.settings` configuration block supports the following argument: + +* `target_file_size_mb` - (Required) Data objects smaller than this size may be combined with others to improve query performance. + Must be between `64` and `512`. + +### `iceberg_snapshot_management` + +The `iceberg_snapshot_management` configuration block supports the following arguments: + +* `settings` - (Required) Settings for snapshot management. + [See `iceberg_snapshot_management.settings` below](#iceberg_snapshot_managementsettings) +* `status` - (Required) Whether the configuration is enabled. + Valid values are `enabled` and `disabled`. + +### `iceberg_snapshot_management.settings` + +The `iceberg_snapshot_management.settings` configuration block supports the following argument: + +* `max_snapshot_age_hours` - (Required) Snapshots older than this will be marked for deletiion. + Must be at least `1`. +* `min_snapshots_to_keep` - (Required) Minimum number of snapshots to keep. + Must be at least `1`. + +## Attribute Reference + +This resource exports the following attributes in addition to the arguments above: + +* `arn` - ARN of the table. +* `created_at` - Date and time when the namespace was created. +* `created_by` - Account ID of the account that created the namespace. +* `metadata_location` - Location of table metadata. +* `modified_at` - Date and time when the namespace was last modified. +* `modified_by` - Account ID of the account that last modified the namespace. +* `owner_account_id` - Account ID of the account that owns the namespace. +* `type` - Type of the table. + One of `customer` or `aws`. +* `version_token` - Identifier for the current version of table data. +* `warehouse_location` - S3 URI pointing to the S3 Bucket that contains the table data. + +## Import + +In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import S3 Tables Table using the `table_bucket_arn`, the value of `namespace`, and the value of `name`, separated by a semicolon (`;`). For example: + +```terraform +import { + to = aws_s3tables_table.example + id = "arn:aws:s3tables:us-west-2:123456789012:bucket/example-bucket;example-namespace;example-table" +} +``` + +Using `terraform import`, import S3 Tables Table using the `table_bucket_arn`, the value of `namespace`, and the value of `name`, separated by a semicolon (`;`). For example: + +```console +% terraform import aws_s3tables_table.example 'arn:aws:s3tables:us-west-2:123456789012:bucket/example-bucket;example-namespace;example-table' +``` diff --git a/website/docs/r/s3tables_table_bucket.html.markdown b/website/docs/r/s3tables_table_bucket.html.markdown new file mode 100644 index 000000000000..a465d7fcf1a2 --- /dev/null +++ b/website/docs/r/s3tables_table_bucket.html.markdown @@ -0,0 +1,85 @@ +--- +subcategory: "S3 Tables" +layout: "aws" +page_title: "AWS: aws_s3tables_table_bucket" +description: |- + Terraform resource for managing an Amazon S3 Tables Table Bucket. +--- + +# Resource: aws_s3tables_table_bucket + +Terraform resource for managing an Amazon S3 Tables Table Bucket. + +## Example Usage + +### Basic Usage + +```terraform +resource "aws_s3tables_table_bucket" "example" { + name = "example-bucket" +} +``` + +## Argument Reference + +The following argument is required: + +* `name` - (Required, Forces new resource) Name of the table bucket. + Must be between 3 and 63 characters in length. + Can consist of lowercase letters, numbers, and hyphens, and must begin and end with a lowercase letter or number. + A full list of bucket naming rules may be found in [S3 Tables documentation](???). + +The following argument is optional: + +* `maintenance_configuration` - (Optional) A single table bucket maintenance configuration block. + [See `maintenance_configuration` below](#maintenance_configuration) + +### maintenance_configuration + +The `maintenance_configuration` configuration block supports the following argument: + +* `iceberg_unreferenced_file_removal` - (Required) A single Iceberg unreferenced file removal settings block. + [See `iceberg_unreferenced_file_removal` below](#iceberg_unreferenced_file_removal) + +### `iceberg_unreferenced_file_removal` + +The `iceberg_unreferenced_file_removal` configuration block supports the following arguments: + +* `settings` - (Required) Settings for unreferenced file removal. + [See `iceberg_unreferenced_file_removal.settings` below](#iceberg_unreferenced_file_removalsettings) +* `status` - (Required) Whether the configuration is enabled. + Valid values are `enabled` and `disabled`. + +### `iceberg_unreferenced_file_removal.settings` + +The `iceberg_unreferenced_file_removal.settings` configuration block supports the following arguments: + +* `non_current_days` - (Required) Data objects marked for deletion are deleted after this many days. + Must be at least `1`. +* `unreferenced_days` - (Required) Unreferenced data objects are marked for deletion after this many days. + Must be at least `1`. + +## Attribute Reference + +This resource exports the following attributes in addition to the arguments above: + +* `arn` - ARN of the table bucket. +* `created_at` - Date and time when the bucket was created. +* `owner_account_id` - Account ID of the account that owns the table bucket. + +## Import + +In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import S3 Tables Table Bucket using the `arn`. For example: + +```terraform +import { + to = aws_s3tables_table_bucket.example + id = "arn:aws:s3tables:us-west-2:123456789012:bucket/example-bucket" +} +``` + +Using `terraform import`, import S3 Tables Table Bucket using the `arn`. For example: + +```console +% terraform import aws_s3tables_table_bucket.example arn:aws:s3tables:us-west-2:123456789012:bucket/example-bucket +``` diff --git a/website/docs/r/s3tables_table_bucket_policy.html.markdown b/website/docs/r/s3tables_table_bucket_policy.html.markdown new file mode 100644 index 000000000000..003f49ff4d95 --- /dev/null +++ b/website/docs/r/s3tables_table_bucket_policy.html.markdown @@ -0,0 +1,60 @@ +--- +subcategory: "S3 Tables" +layout: "aws" +page_title: "AWS: aws_s3tables_table_bucket_policy" +description: |- + Terraform resource for managing an Amazon S3 Tables Table Bucket Policy. +--- + +# Resource: aws_s3tables_table_bucket_policy + +Terraform resource for managing an Amazon S3 Tables Table Bucket Policy. + +## Example Usage + +### Basic Usage + +```terraform +resource "aws_s3tables_table_bucket_policy" "example" { + resource_policy = data.aws_iam_policy_document.example.json + table_bucket_arn = aws_s3tables_table_bucket.example.arn +} + +data "aws_iam_policy_document" "example" { + statement { + # ... + } +} + +resource "aws_s3tables_table_bucket" "test" { + name = "example-bucket" +} +``` + +## Argument Reference + +The following arguments are required: + +* `resource_policy` - (Required) Amazon Web Services resource-based policy document in JSON format. +* `table_bucket_arn` - (Required, Forces new resource) ARN referencing the Table Bucket that owns this policy. + +## Attribute Reference + +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 import S3 Tables Table Bucket Policy using the `table_bucket_arn`. For example: + +```terraform +import { + to = aws_s3tables_table_bucket_policy.example + id = "arn:aws:s3tables:us-west-2:123456789012:bucket/example-bucket;example-namespace" +} +``` + +Using `terraform import`, import S3 Tables Table Bucket Policy using the `table_bucket_arn`. For example: + +```console +% terraform import aws_s3tables_table_bucket_policy.example 'arn:aws:s3tables:us-west-2:123456789012:bucket/example-bucket;example-namespace' +``` diff --git a/website/docs/r/s3tables_table_policy.html.markdown b/website/docs/r/s3tables_table_policy.html.markdown new file mode 100644 index 000000000000..32aeeaea50be --- /dev/null +++ b/website/docs/r/s3tables_table_policy.html.markdown @@ -0,0 +1,80 @@ +--- +subcategory: "S3 Tables" +layout: "aws" +page_title: "AWS: aws_s3tables_table_policy" +description: |- + Terraform resource for managing an Amazon S3 Tables Table Policy. +--- + +# Resource: aws_s3tables_table_policy + +Terraform resource for managing an Amazon S3 Tables Table Policy. + +## Example Usage + +### Basic Usage + +```terraform +resource "aws_s3tables_table_policy" "example" { + resource_policy = data.aws_iam_policy_document.example.json + name = aws_s3tables_table.test.name + namespace = aws_s3tables_table.test.namespace + table_bucket_arn = aws_s3tables_table.test.table_bucket_arn +} + +data "aws_iam_policy_document" "example" { + statement { + # ... + } +} + +resource "aws_s3tables_table" "example" { + name = "example-table" + namespace = aws_s3tables_namespace.example + table_bucket_arn = aws_s3tables_namespace.example.table_bucket_arn + format = "ICEBERG" +} + +resource "aws_s3tables_namespace" "example" { + namespace = ["example-namespace"] + table_bucket_arn = aws_s3tables_table_bucket.example.arn +} + +resource "aws_s3tables_table_bucket" "example" { + name = "example-bucket" +} +``` + +## Argument Reference + +The following arguments are required: + +* `resource_policy` - (Required) Amazon Web Services resource-based policy document in JSON format. +* `name` - (Required, Forces new resource) Name of the table. + Must be between 1 and 255 characters in length. + Can consist of lowercase letters, numbers, and underscores, and must begin and end with a lowercase letter or number. +* `namespace` - (Required, Forces new resource) Name of the namespace for this table. + Must be between 1 and 255 characters in length. + Can consist of lowercase letters, numbers, and underscores, and must begin and end with a lowercase letter or number. +* `table_bucket_arn` - (Required, Forces new resource) ARN referencing the Table Bucket that contains this Namespace. + +## Attribute Reference + +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 import S3 Tables Table Policy using the `table_bucket_arn`, the value of `namespace`, and the value of `name`, separated by a semicolon (`;`). For example: + +```terraform +import { + to = aws_s3tables_table_policy.example + id = "arn:aws:s3tables:us-west-2:123456789012:bucket/example-bucket;example-namespace;example-table" +} +``` + +Using `terraform import`, import S3 Tables Table Policy using the `table_bucket_arn`, the value of `namespace`, and the value of `name`, separated by a semicolon (`;`). For example: + +```console +% terraform import aws_s3tables_table_policy.example 'arn:aws:s3tables:us-west-2:123456789012:bucket/example-bucket;example-namespace;example-table' +``` diff --git a/website/docs/r/securityhub_standards_control_association.html.markdown b/website/docs/r/securityhub_standards_control_association.html.markdown index 9f0dd148cafd..8b9864b28b61 100644 --- a/website/docs/r/securityhub_standards_control_association.html.markdown +++ b/website/docs/r/securityhub_standards_control_association.html.markdown @@ -28,7 +28,7 @@ resource "aws_securityhub_standards_subscription" "cis_aws_foundations_benchmark depends_on = [aws_securityhub_account.example] } -resource "aws_standards_control_association" "cis_aws_foundations_benchmark_disable_iam_1" { +resource "aws_securityhub_standards_control_association" "cis_aws_foundations_benchmark_disable_iam_1" { standards_arn = aws_securityhub_standards_subscription.cis_aws_foundations_benchmark.standards_arn security_control_id = "IAM.1" association_status = "DISABLED" diff --git a/website/docs/r/vpc_block_public_access_exclusion.html.markdown b/website/docs/r/vpc_block_public_access_exclusion.html.markdown new file mode 100644 index 000000000000..ba9947525f8d --- /dev/null +++ b/website/docs/r/vpc_block_public_access_exclusion.html.markdown @@ -0,0 +1,89 @@ +--- +subcategory: "VPC (Virtual Private Cloud)" +layout: "aws" +page_title: "AWS: aws_vpc_block_public_access_exclusion" +description: |- + Terraform resource for managing an exception to the AWS VPC (Virtual Private Cloud) Block Public Access Exclusion. +--- + +# Resource: aws_vpc_block_public_access_exclusion + +Terraform resource for managing an AWS EC2 (Elastic Compute Cloud) VPC Block Public Access Exclusion. + +## Example Usage + +### Basic Usage + +```terraform +resource "aws_vpc" "test" { + cidr_block = "10.1.0.0/16" +} + +resource "aws_vpc_block_public_access_exclusion" "test" { + vpc_id = aws_vpc.test.id + internet_gateway_exclusion_mode = "allow-bidirectional" +} +``` + +### Usage with subnet id + +```terraform +resource "aws_vpc" "test" { + cidr_block = "10.1.0.0/16" +} + +resource "aws_subnet" "test" { + cidr_block = "10.1.1.0/24" + vpc_id = aws_vpc.test.id +} + +resource "aws_vpc_block_public_access_exclusion" "test" { + subnet_id = aws_subnet.test.id + internet_gateway_exclusion_mode = "allow-egress" +} +``` + +## Argument Reference + +The following arguments are required: + +* `internet_gateway_exclusion_mode` - (Required) Mode of exclusion from Block Public Access. The allowed values are `allow-egress` and `allow-bidirectional`. + +The following arguments are optional: + +* `vpc_id` - (Optional) Id of the VPC to which this exclusion applies. Either this or the subnet_id needs to be provided. +* `subnet_id` - (Optional) Id of the subnet to which this exclusion applies. Either this or the vpc_id needs to be provided. +* `tags` - (Optional) A map of tags to assign to the exclusion. If configured with a provider [`default_tags` configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-configuration-block) present, tags with matching keys will overwrite those defined at the provider-level. + +## Attribute Reference + +This resource exports the following attributes in addition to the arguments above: + +* `id` - The ID of the VPC Block Public Access Exclusion. +* `resource_arn` - The Amazon Resource Name (ARN) the excluded resource. +* `tags_all` - A map of tags assigned to the resource, including those inherited from the provider [`default_tags` configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-configuration-block). + +## Timeouts + +[Configuration options](https://developer.hashicorp.com/terraform/language/resources/syntax#operation-timeouts): + +* `create` - (Default `30m`) +* `update` - (Default `30m`) +* `delete` - (Default `30m`) + +## Import + +In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import VPC Block Public Access Exclusion using the `id`. For example: + +```terraform +import { + to = aws_vpc_block_public_access_exclusion.example + id = "vpcbpa-exclude-1234abcd" +} +``` + +Using `terraform import`, import EC2 (Elastic Compute Cloud) VPC Block Public Access Exclusion using the `id`. For example: + +```console +% terraform import aws_vpc_block_public_access_exclusion.example vpcbpa-exclude-1234abcd +``` diff --git a/website/docs/r/vpc_block_public_access_options.html.markdown b/website/docs/r/vpc_block_public_access_options.html.markdown new file mode 100644 index 000000000000..87c82d3ff217 --- /dev/null +++ b/website/docs/r/vpc_block_public_access_options.html.markdown @@ -0,0 +1,59 @@ +--- +subcategory: "VPC (Virtual Private Cloud)" +layout: "aws" +page_title: "AWS: aws_vpc_block_public_access_options" +description: |- + Terraform resource for managing AWS VPC Block Public Access Options in a region. +--- + +# Resource: aws_vpc_block_public_access_options + +Terraform resource for managing an AWS VPC Block Public Access Options. + +## Example Usage + +### Basic Usage + +```terraform +resource "aws_vpc_block_public_access_options" "example" { + internet_gateway_block_mode = "block-bidirectional" +} +``` + +## Argument Reference + +The following arguments are required: + +* `internet_gateway_block_mode` - (Required) Block mode. Needs to be one of `block-bidirectional`, `block-ingress`, `off`. If this resource is deleted, then this value will be set to `off` in the AWS account and region. + +## Attribute Reference + +This resource exports the following attributes in addition to the arguments above: + +* `aws_account_id` - The AWS account id to which these options apply. +* `aws_region` - The AWS region to which these options apply. + +## Timeouts + +[Configuration options](https://developer.hashicorp.com/terraform/language/resources/syntax#operation-timeouts): + +* `create` - (Default `30m`) +* `update` - (Default `30m`) +* `delete` - (Default `30m`) + +## Import + +In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import VPC Block Public Access Options using the `aws_region`. For example: + +```terraform +import { + to = aws_vpc_block_public_access_options.example + id = "us-east-1" +} +``` + +Using `terraform import`, import VPC Block Public Access Options using the `aws_region`. For example: + +```console +% terraform import aws_vpc_block_public_access_options.example us-east-1 +``` diff --git a/website/docs/r/vpc_endpoint_service.html.markdown b/website/docs/r/vpc_endpoint_service.html.markdown index fcdf49277a8d..ef4216efda82 100644 --- a/website/docs/r/vpc_endpoint_service.html.markdown +++ b/website/docs/r/vpc_endpoint_service.html.markdown @@ -48,6 +48,7 @@ This resource supports the following arguments: * `tags` - (Optional) A map of tags to assign to the resource. If configured with a provider [`default_tags` configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-configuration-block) present, tags with matching keys will overwrite those defined at the provider-level. * `private_dns_name` - (Optional) The private DNS name for the service. * `supported_ip_address_types` - (Optional) The supported IP address types. The possible values are `ipv4` and `ipv6`. +* `supported_regions` - (Optional) The set of regions from which service consumers can access the service. ## Attribute Reference