diff --git a/.changelog/28084.txt b/.changelog/28084.txt
new file mode 100644
index 000000000000..2f8b49742608
--- /dev/null
+++ b/.changelog/28084.txt
@@ -0,0 +1,3 @@
+```release-note:note
+provider: With AWS's retirement of EC2-Classic the `skip_get_ec2_platforms` attribute has been deprecated and will be removed in a future version
+```
\ No newline at end of file
diff --git a/.ci/.semgrep-service-name0.yml b/.ci/.semgrep-service-name0.yml
index 811f9fefe0a2..91419de84f59 100644
--- a/.ci/.semgrep-service-name0.yml
+++ b/.ci/.semgrep-service-name0.yml
@@ -3144,3 +3144,18 @@ rules:
- pattern-not-regex: "^TestAccConnect"
- pattern-regex: ^TestAcc.*
severity: WARNING
+ - id: connect-in-const-name
+ languages:
+ - go
+ message: Do not use "Connect" in const name inside connect package
+ paths:
+ include:
+ - internal/service/connect
+ patterns:
+ - pattern: const $NAME = ...
+ - metavariable-pattern:
+ metavariable: $NAME
+ patterns:
+ - pattern-regex: "(?i)Connect"
+ - pattern-not-regex: .*uickConnect.*
+ severity: WARNING
diff --git a/.ci/.semgrep-service-name1.yml b/.ci/.semgrep-service-name1.yml
index ad7e82fdfcd6..f06cd7e82aaf 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-const-name
- languages:
- - go
- message: Do not use "Connect" in const name inside connect package
- paths:
- include:
- - internal/service/connect
- patterns:
- - pattern: const $NAME = ...
- - metavariable-pattern:
- metavariable: $NAME
- patterns:
- - pattern-regex: "(?i)Connect"
- - pattern-not-regex: .*uickConnect.*
- severity: WARNING
- id: connect-in-var-name
languages:
- go
@@ -3131,3 +3116,33 @@ rules:
patterns:
- pattern-regex: "(?i)Inspector"
severity: WARNING
+ - id: inspector2-in-func-name
+ languages:
+ - go
+ message: Do not use "Inspector2" in func name inside inspector2 package
+ paths:
+ include:
+ - internal/service/inspector2
+ patterns:
+ - pattern: func $NAME( ... ) { ... }
+ - metavariable-pattern:
+ metavariable: $NAME
+ patterns:
+ - pattern-regex: "(?i)Inspector2"
+ - pattern-not-regex: ^TestAcc.*
+ severity: WARNING
+ - id: inspector2-in-test-name
+ languages:
+ - go
+ message: Include "Inspector2" in test name
+ paths:
+ include:
+ - internal/service/inspector2/*_test.go
+ patterns:
+ - pattern: func $NAME( ... ) { ... }
+ - metavariable-pattern:
+ metavariable: $NAME
+ patterns:
+ - pattern-not-regex: "^TestAccInspector2"
+ - pattern-regex: ^TestAcc.*
+ severity: WARNING
diff --git a/.ci/.semgrep-service-name2.yml b/.ci/.semgrep-service-name2.yml
index dc2675e8bf2e..713979a54053 100644
--- a/.ci/.semgrep-service-name2.yml
+++ b/.ci/.semgrep-service-name2.yml
@@ -1,35 +1,5 @@
# Generated by internal/generate/servicesemgrep/main.go; DO NOT EDIT.
rules:
- - id: inspector2-in-func-name
- languages:
- - go
- message: Do not use "Inspector2" in func name inside inspector2 package
- paths:
- include:
- - internal/service/inspector2
- patterns:
- - pattern: func $NAME( ... ) { ... }
- - metavariable-pattern:
- metavariable: $NAME
- patterns:
- - pattern-regex: "(?i)Inspector2"
- - pattern-not-regex: ^TestAcc.*
- severity: WARNING
- - id: inspector2-in-test-name
- languages:
- - go
- message: Include "Inspector2" in test name
- paths:
- include:
- - internal/service/inspector2/*_test.go
- patterns:
- - pattern: func $NAME( ... ) { ... }
- - metavariable-pattern:
- metavariable: $NAME
- patterns:
- - pattern-not-regex: "^TestAccInspector2"
- - pattern-regex: ^TestAcc.*
- severity: WARNING
- id: inspector2-in-const-name
languages:
- go
@@ -3128,3 +3098,46 @@ rules:
- pattern-regex: "(?i)Redshift"
- pattern-not-regex: ^TestAcc.*
severity: WARNING
+ - id: redshift-in-test-name
+ languages:
+ - go
+ message: Include "Redshift" in test name
+ paths:
+ include:
+ - internal/service/redshift/*_test.go
+ patterns:
+ - pattern: func $NAME( ... ) { ... }
+ - metavariable-pattern:
+ metavariable: $NAME
+ patterns:
+ - pattern-not-regex: "^TestAccRedshift"
+ - pattern-regex: ^TestAcc.*
+ severity: WARNING
+ - id: redshift-in-const-name
+ languages:
+ - go
+ message: Do not use "Redshift" in const name inside redshift package
+ paths:
+ include:
+ - internal/service/redshift
+ patterns:
+ - pattern: const $NAME = ...
+ - metavariable-pattern:
+ metavariable: $NAME
+ patterns:
+ - pattern-regex: "(?i)Redshift"
+ severity: WARNING
+ - id: redshift-in-var-name
+ languages:
+ - go
+ message: Do not use "Redshift" in var name inside redshift package
+ paths:
+ include:
+ - internal/service/redshift
+ patterns:
+ - pattern: var $NAME = ...
+ - metavariable-pattern:
+ metavariable: $NAME
+ patterns:
+ - pattern-regex: "(?i)Redshift"
+ severity: WARNING
diff --git a/.ci/.semgrep-service-name3.yml b/.ci/.semgrep-service-name3.yml
index 00ed524df53d..f989f12b09c8 100644
--- a/.ci/.semgrep-service-name3.yml
+++ b/.ci/.semgrep-service-name3.yml
@@ -1,48 +1,5 @@
# Generated by internal/generate/servicesemgrep/main.go; DO NOT EDIT.
rules:
- - id: redshift-in-test-name
- languages:
- - go
- message: Include "Redshift" in test name
- paths:
- include:
- - internal/service/redshift/*_test.go
- patterns:
- - pattern: func $NAME( ... ) { ... }
- - metavariable-pattern:
- metavariable: $NAME
- patterns:
- - pattern-not-regex: "^TestAccRedshift"
- - pattern-regex: ^TestAcc.*
- severity: WARNING
- - id: redshift-in-const-name
- languages:
- - go
- message: Do not use "Redshift" in const name inside redshift package
- paths:
- include:
- - internal/service/redshift
- patterns:
- - pattern: const $NAME = ...
- - metavariable-pattern:
- metavariable: $NAME
- patterns:
- - pattern-regex: "(?i)Redshift"
- severity: WARNING
- - id: redshift-in-var-name
- languages:
- - go
- message: Do not use "Redshift" in var name inside redshift package
- paths:
- include:
- - internal/service/redshift
- patterns:
- - pattern: var $NAME = ...
- - metavariable-pattern:
- metavariable: $NAME
- patterns:
- - pattern-regex: "(?i)Redshift"
- severity: WARNING
- id: redshiftdata-in-func-name
languages:
- go
@@ -202,6 +159,64 @@ rules:
patterns:
- pattern-regex: "(?i)RedshiftServerless"
severity: WARNING
+ - id: resourceexplorer2-in-func-name
+ languages:
+ - go
+ message: Do not use "ResourceExplorer2" in func name inside resourceexplorer2 package
+ paths:
+ include:
+ - internal/service/resourceexplorer2
+ patterns:
+ - pattern: func $NAME( ... ) { ... }
+ - metavariable-pattern:
+ metavariable: $NAME
+ patterns:
+ - pattern-regex: "(?i)ResourceExplorer2"
+ - pattern-not-regex: ^TestAcc.*
+ severity: WARNING
+ - id: resourceexplorer2-in-test-name
+ languages:
+ - go
+ message: Include "ResourceExplorer2" in test name
+ paths:
+ include:
+ - internal/service/resourceexplorer2/*_test.go
+ patterns:
+ - pattern: func $NAME( ... ) { ... }
+ - metavariable-pattern:
+ metavariable: $NAME
+ patterns:
+ - pattern-not-regex: "^TestAccResourceExplorer2"
+ - pattern-regex: ^TestAcc.*
+ severity: WARNING
+ - id: resourceexplorer2-in-const-name
+ languages:
+ - go
+ message: Do not use "ResourceExplorer2" in const name inside resourceexplorer2 package
+ paths:
+ include:
+ - internal/service/resourceexplorer2
+ patterns:
+ - pattern: const $NAME = ...
+ - metavariable-pattern:
+ metavariable: $NAME
+ patterns:
+ - pattern-regex: "(?i)ResourceExplorer2"
+ severity: WARNING
+ - id: resourceexplorer2-in-var-name
+ languages:
+ - go
+ message: Do not use "ResourceExplorer2" in var name inside resourceexplorer2 package
+ paths:
+ include:
+ - internal/service/resourceexplorer2
+ patterns:
+ - pattern: var $NAME = ...
+ - metavariable-pattern:
+ metavariable: $NAME
+ patterns:
+ - pattern-regex: "(?i)ResourceExplorer2"
+ severity: WARNING
- id: resourcegroups-in-func-name
languages:
- go
diff --git a/.github/labeler-issue-triage.yml b/.github/labeler-issue-triage.yml
index 82507af3ae84..39ea7806af19 100644
--- a/.github/labeler-issue-triage.yml
+++ b/.github/labeler-issue-triage.yml
@@ -503,6 +503,8 @@ service/rekognition:
- '((\*|-)\s*`?|(data|resource)\s+"?)aws_rekognition_'
service/resiliencehub:
- '((\*|-)\s*`?|(data|resource)\s+"?)aws_resiliencehub_'
+service/resourceexplorer2:
+ - '((\*|-)\s*`?|(data|resource)\s+"?)aws_resourceexplorer2_'
service/resourcegroups:
- '((\*|-)\s*`?|(data|resource)\s+"?)aws_resourcegroups_'
service/resourcegroupstaggingapi:
diff --git a/.github/labeler-pr-triage.yml b/.github/labeler-pr-triage.yml
index 433300aabef1..52d09f7225f2 100644
--- a/.github/labeler-pr-triage.yml
+++ b/.github/labeler-pr-triage.yml
@@ -818,6 +818,9 @@ service/rekognition:
service/resiliencehub:
- 'internal/service/resiliencehub/**/*'
- 'website/**/resiliencehub_*'
+service/resourceexplorer2:
+ - 'internal/service/resourceexplorer2/**/*'
+ - 'website/**/resourceexplorer2_*'
service/resourcegroups:
- 'internal/service/resourcegroups/**/*'
- 'website/**/resourcegroups_*'
diff --git a/.teamcity/components/generated/services_all.kt b/.teamcity/components/generated/services_all.kt
index ac200328863b..5a0eeb670bd4 100644
--- a/.teamcity/components/generated/services_all.kt
+++ b/.teamcity/components/generated/services_all.kt
@@ -138,6 +138,7 @@ val services = mapOf(
"redshift" to ServiceSpec("Redshift", vpcLock = true),
"redshiftdata" to ServiceSpec("Redshift Data"),
"redshiftserverless" to ServiceSpec("Redshift Serverless"),
+ "resourceexplorer2" to ServiceSpec("Resource Explorer"),
"resourcegroups" to ServiceSpec("Resource Groups"),
"resourcegroupstaggingapi" to ServiceSpec("Resource Groups Tagging"),
"rolesanywhere" to ServiceSpec("Roles Anywhere"),
diff --git a/go.mod b/go.mod
index a10578c9738a..1d4d43d5fe11 100644
--- a/go.mod
+++ b/go.mod
@@ -18,6 +18,7 @@ require (
github.com/aws/aws-sdk-go-v2/service/kendra v1.36.0
github.com/aws/aws-sdk-go-v2/service/medialive v1.24.2
github.com/aws/aws-sdk-go-v2/service/rds v1.31.0
+ github.com/aws/aws-sdk-go-v2/service/resourceexplorer2 v1.0.2
github.com/aws/aws-sdk-go-v2/service/rolesanywhere v1.0.12
github.com/aws/aws-sdk-go-v2/service/route53domains v1.12.19
github.com/aws/aws-sdk-go-v2/service/s3control v1.26.1
diff --git a/go.sum b/go.sum
index a386ba038858..5f62fb2ddf12 100644
--- a/go.sum
+++ b/go.sum
@@ -76,6 +76,8 @@ github.com/aws/aws-sdk-go-v2/service/medialive v1.24.2 h1:qQGI444VIllp+BlfPUAEO7
github.com/aws/aws-sdk-go-v2/service/medialive v1.24.2/go.mod h1:ToDxovZoXnH2AbxzTQ26ySXjpmME5gGa7aiH2rnAVv8=
github.com/aws/aws-sdk-go-v2/service/rds v1.31.0 h1:lx8pflhN7oogISvAorwqPGFHN7eiVlGEwk21ThYcyoA=
github.com/aws/aws-sdk-go-v2/service/rds v1.31.0/go.mod h1:wPFe1Cj3nZWmNWKKdkXw961l1dJheTZQ5JjPImqbMuI=
+github.com/aws/aws-sdk-go-v2/service/resourceexplorer2 v1.0.2 h1:IirJpFu/wVrDitXuapCp+JqU+tSen1WwtJMvtrVzzyI=
+github.com/aws/aws-sdk-go-v2/service/resourceexplorer2 v1.0.2/go.mod h1:24lb9a+B8Ckl81TXecnjnKmgAMOW0Dgn7yLTNDejOgw=
github.com/aws/aws-sdk-go-v2/service/rolesanywhere v1.0.12 h1:lP9dP8V4ow1YKEZt/zcPfHu2/lAWGmW1pIzgt2iPGRY=
github.com/aws/aws-sdk-go-v2/service/rolesanywhere v1.0.12/go.mod h1:pj8fwktY8PHz60AlgCg/Mwb3nG7JDomW/4eeeud+66w=
github.com/aws/aws-sdk-go-v2/service/route53domains v1.12.19 h1:UNe7/1LUyQ9udyVIdAg++HfuqnBgm3Or8f2nFCfSl0U=
diff --git a/infrastructure/repository/labels-service.tf b/infrastructure/repository/labels-service.tf
index f31bd1b791e3..69463c4c94d0 100644
--- a/infrastructure/repository/labels-service.tf
+++ b/infrastructure/repository/labels-service.tf
@@ -239,6 +239,7 @@ variable "service_labels" {
"redshiftserverless",
"rekognition",
"resiliencehub",
+ "resourceexplorer2",
"resourcegroups",
"resourcegroupstaggingapi",
"robomaker",
diff --git a/internal/conns/awsclient.go b/internal/conns/awsclient.go
index 279bc3d9c8a1..9e14e2d83864 100644
--- a/internal/conns/awsclient.go
+++ b/internal/conns/awsclient.go
@@ -2,10 +2,6 @@ package conns
import (
"fmt"
-
- "github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs"
- "github.com/aws/aws-sdk-go-v2/service/rds"
- "github.com/aws/aws-sdk-go-v2/service/ssm"
)
// PartitionHostname returns a hostname with the provider domain suffix for the partition
@@ -21,15 +17,3 @@ func (client *AWSClient) PartitionHostname(prefix string) string {
func (client *AWSClient) RegionalHostname(prefix string) string {
return fmt.Sprintf("%s.%s.%s", prefix, client.Region, client.DNSSuffix)
}
-
-func (client *AWSClient) LogsClient() *cloudwatchlogs.Client {
- return client.logsClient.Client()
-}
-
-func (client *AWSClient) RDSClient() *rds.Client {
- return client.rdsClient.Client()
-}
-
-func (client *AWSClient) SSMClient() *ssm.Client {
- return client.ssmClient.Client()
-}
diff --git a/internal/conns/awsclient_gen.go b/internal/conns/awsclient_gen.go
index 24fc57328332..c9ad11981f4f 100644
--- a/internal/conns/awsclient_gen.go
+++ b/internal/conns/awsclient_gen.go
@@ -13,6 +13,7 @@ import (
"github.com/aws/aws-sdk-go-v2/service/kendra"
"github.com/aws/aws-sdk-go-v2/service/medialive"
rds_sdkv2 "github.com/aws/aws-sdk-go-v2/service/rds"
+ "github.com/aws/aws-sdk-go-v2/service/resourceexplorer2"
"github.com/aws/aws-sdk-go-v2/service/rolesanywhere"
"github.com/aws/aws-sdk-go-v2/service/route53domains"
s3control_sdkv2 "github.com/aws/aws-sdk-go-v2/service/s3control"
@@ -328,12 +329,12 @@ type AWSClient struct {
S3ConnURICleaningDisabled *s3.S3
ServicePackages []intf.ServicePackageData
Session *session.Session
- SupportedPlatforms []string
TerraformVersion string
- logsClient lazyClient[*cloudwatchlogs_sdkv2.Client]
- rdsClient lazyClient[*rds_sdkv2.Client]
- ssmClient lazyClient[*ssm_sdkv2.Client]
+ logsClient lazyClient[*cloudwatchlogs_sdkv2.Client]
+ rdsClient lazyClient[*rds_sdkv2.Client]
+ s3controlClient lazyClient[*s3control_sdkv2.Client]
+ ssmClient lazyClient[*ssm_sdkv2.Client]
ACMConn *acm.ACM
ACMPCAConn *acmpca.ACMPCA
@@ -570,6 +571,7 @@ type AWSClient struct {
RedshiftServerlessConn *redshiftserverless.RedshiftServerless
RekognitionConn *rekognition.Rekognition
ResilienceHubConn *resiliencehub.ResilienceHub
+ ResourceExplorer2Client *resourceexplorer2.Client
ResourceGroupsConn *resourcegroups.ResourceGroups
ResourceGroupsTaggingAPIConn *resourcegroupstaggingapi.ResourceGroupsTaggingAPI
RoboMakerConn *robomaker.RoboMaker
@@ -582,7 +584,6 @@ type AWSClient struct {
Route53ResolverConn *route53resolver.Route53Resolver
S3Conn *s3.S3
S3ControlConn *s3control.S3Control
- S3ControlClient *s3control_sdkv2.Client
S3OutpostsConn *s3outposts.S3Outposts
SESConn *ses.SES
SESV2Client *sesv2.Client
@@ -642,3 +643,19 @@ type AWSClient struct {
WorkSpacesWebConn *workspacesweb.WorkSpacesWeb
XRayConn *xray.XRay
}
+
+func (client *AWSClient) LogsClient() *cloudwatchlogs_sdkv2.Client {
+ return client.logsClient.Client()
+}
+
+func (client *AWSClient) RDSClient() *rds_sdkv2.Client {
+ return client.rdsClient.Client()
+}
+
+func (client *AWSClient) S3ControlClient() *s3control_sdkv2.Client {
+ return client.s3controlClient.Client()
+}
+
+func (client *AWSClient) SSMClient() *ssm_sdkv2.Client {
+ return client.ssmClient.Client()
+}
diff --git a/internal/conns/config.go b/internal/conns/config.go
index ce96dd451cec..f649e27889c9 100644
--- a/internal/conns/config.go
+++ b/internal/conns/config.go
@@ -6,23 +6,7 @@ import (
"strings"
"github.com/aws/aws-sdk-go-v2/feature/ec2/imds"
- "github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs"
- "github.com/aws/aws-sdk-go-v2/service/comprehend"
- "github.com/aws/aws-sdk-go-v2/service/computeoptimizer"
- "github.com/aws/aws-sdk-go-v2/service/fis"
- "github.com/aws/aws-sdk-go-v2/service/identitystore"
- "github.com/aws/aws-sdk-go-v2/service/inspector2"
- "github.com/aws/aws-sdk-go-v2/service/ivschat"
- "github.com/aws/aws-sdk-go-v2/service/kendra"
- "github.com/aws/aws-sdk-go-v2/service/medialive"
- "github.com/aws/aws-sdk-go-v2/service/rds"
- "github.com/aws/aws-sdk-go-v2/service/rolesanywhere"
"github.com/aws/aws-sdk-go-v2/service/route53domains"
- "github.com/aws/aws-sdk-go-v2/service/s3control"
- "github.com/aws/aws-sdk-go-v2/service/scheduler"
- "github.com/aws/aws-sdk-go-v2/service/sesv2"
- "github.com/aws/aws-sdk-go-v2/service/ssm"
- "github.com/aws/aws-sdk-go-v2/service/transcribe"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/endpoints"
"github.com/aws/aws-sdk-go/aws/request"
@@ -145,7 +129,7 @@ func (c *Config) ConfigureProvider(ctx context.Context, client *AWSClient) (*AWS
cfg, err := awsbase.GetAwsConfig(ctx, &awsbaseConfig)
if err != nil {
- return nil, diag.Errorf("error configuring Terraform AWS Provider: %s", err)
+ return nil, diag.Errorf("configuring Terraform AWS Provider: %s", err)
}
if !c.SkipRegionValidation {
@@ -157,12 +141,12 @@ func (c *Config) ConfigureProvider(ctx context.Context, client *AWSClient) (*AWS
sess, err := awsbasev1.GetSession(&cfg, &awsbaseConfig)
if err != nil {
- return nil, diag.Errorf("error creating AWS SDK v1 session: %s", err)
+ return nil, diag.Errorf("creating AWS SDK v1 session: %s", err)
}
accountID, partition, err := awsbase.GetAwsAccountIDAndPartition(ctx, cfg, &awsbaseConfig)
if err != nil {
- return nil, diag.Errorf("error retrieving account details: %s", err)
+ return nil, diag.Errorf("retrieving AWS account details: %s", err)
}
if accountID == "" {
@@ -172,7 +156,7 @@ func (c *Config) ConfigureProvider(ctx context.Context, client *AWSClient) (*AWS
if len(c.ForbiddenAccountIds) > 0 {
for _, forbiddenAccountID := range c.AllowedAccountIds {
if accountID == forbiddenAccountID {
- return nil, diag.Errorf("AWS Account ID not allowed: %s", accountID)
+ return nil, diag.Errorf("AWS account ID not allowed: %s", accountID)
}
}
}
@@ -185,7 +169,7 @@ func (c *Config) ConfigureProvider(ctx context.Context, client *AWSClient) (*AWS
}
}
if !found {
- return nil, diag.Errorf("AWS Account ID not allowed: %s", accountID)
+ return nil, diag.Errorf("AWS account ID not allowed: %s", accountID)
}
}
@@ -194,8 +178,6 @@ func (c *Config) ConfigureProvider(ctx context.Context, client *AWSClient) (*AWS
DNSSuffix = p.DNSSuffix()
}
- c.clientConns(client, sess)
-
client.AccountID = accountID
client.DefaultTagsConfig = c.DefaultTagsConfig
client.DNSSuffix = DNSSuffix
@@ -206,129 +188,33 @@ func (c *Config) ConfigureProvider(ctx context.Context, client *AWSClient) (*AWS
client.Session = sess
client.TerraformVersion = c.TerraformVersion
- client.ComprehendClient = comprehend.NewFromConfig(cfg, func(o *comprehend.Options) {
- if endpoint := c.Endpoints[names.Comprehend]; endpoint != "" {
- o.EndpointResolver = comprehend.EndpointResolverFromURL(endpoint)
- }
- })
-
- client.ComputeOptimizerClient = computeoptimizer.NewFromConfig(cfg, func(o *computeoptimizer.Options) {
- if endpoint := c.Endpoints[names.ComputeOptimizer]; endpoint != "" {
- o.EndpointResolver = computeoptimizer.EndpointResolverFromURL(endpoint)
- }
- })
-
- client.FISClient = fis.NewFromConfig(cfg, func(o *fis.Options) {
- if endpoint := c.Endpoints[names.FIS]; endpoint != "" {
- o.EndpointResolver = fis.EndpointResolverFromURL(endpoint)
- }
- })
-
- client.IdentityStoreClient = identitystore.NewFromConfig(cfg, func(o *identitystore.Options) {
- if endpoint := c.Endpoints[names.IdentityStore]; endpoint != "" {
- o.EndpointResolver = identitystore.EndpointResolverFromURL(endpoint)
- }
- })
-
- client.Inspector2Client = inspector2.NewFromConfig(cfg, func(o *inspector2.Options) {
- if endpoint := c.Endpoints[names.Inspector2]; endpoint != "" {
- o.EndpointResolver = inspector2.EndpointResolverFromURL(endpoint)
- }
- })
-
- client.IVSChatClient = ivschat.NewFromConfig(cfg, func(o *ivschat.Options) {
- if endpoint := c.Endpoints[names.IVSChat]; endpoint != "" {
- o.EndpointResolver = ivschat.EndpointResolverFromURL(endpoint)
- }
- })
-
- client.KendraClient = kendra.NewFromConfig(cfg, func(o *kendra.Options) {
- if endpoint := c.Endpoints[names.Kendra]; endpoint != "" {
- o.EndpointResolver = kendra.EndpointResolverFromURL(endpoint)
- }
- })
-
- client.MediaLiveClient = medialive.NewFromConfig(cfg, func(o *medialive.Options) {
- if endpoint := c.Endpoints[names.MediaLive]; endpoint != "" {
- o.EndpointResolver = medialive.EndpointResolverFromURL(endpoint)
- }
- })
-
- client.RolesAnywhereClient = rolesanywhere.NewFromConfig(cfg, func(o *rolesanywhere.Options) {
- if endpoint := c.Endpoints[names.RolesAnywhere]; endpoint != "" {
- o.EndpointResolver = rolesanywhere.EndpointResolverFromURL(endpoint)
- }
- })
-
- client.Route53DomainsClient = route53domains.NewFromConfig(cfg, func(o *route53domains.Options) {
- if endpoint := c.Endpoints[names.Route53Domains]; endpoint != "" {
- o.EndpointResolver = route53domains.EndpointResolverFromURL(endpoint)
- } else if partition == endpoints.AwsPartitionID {
- // Route 53 Domains is only available in AWS Commercial us-east-1 Region.
- o.Region = endpoints.UsEast1RegionID
- }
- })
-
- client.S3ControlClient = s3control.NewFromConfig(cfg, func(o *s3control.Options) {
- if endpoint := c.Endpoints[names.S3Control]; endpoint != "" {
- o.EndpointResolver = s3control.EndpointResolverFromURL(endpoint)
- }
- })
-
- client.SchedulerClient = scheduler.NewFromConfig(cfg, func(o *scheduler.Options) {
- if endpoint := c.Endpoints[names.Scheduler]; endpoint != "" {
- o.EndpointResolver = scheduler.EndpointResolverFromURL(endpoint)
- }
- })
-
- client.SESV2Client = sesv2.NewFromConfig(cfg, func(o *sesv2.Options) {
- if endpoint := c.Endpoints[names.SESV2]; endpoint != "" {
- o.EndpointResolver = sesv2.EndpointResolverFromURL(endpoint)
- }
- })
-
- client.TranscribeClient = transcribe.NewFromConfig(cfg, func(o *transcribe.Options) {
- if endpoint := c.Endpoints[names.Transcribe]; endpoint != "" {
- o.EndpointResolver = transcribe.EndpointResolverFromURL(endpoint)
- }
- })
-
- client.logsClient.init(&cfg, func() *cloudwatchlogs.Client {
- return cloudwatchlogs.NewFromConfig(cfg, func(o *cloudwatchlogs.Options) {
- if endpoint := c.Endpoints[names.Logs]; endpoint != "" {
- o.EndpointResolver = cloudwatchlogs.EndpointResolverFromURL(endpoint)
- }
- })
- })
-
- client.rdsClient.init(&cfg, func() *rds.Client {
- return rds.NewFromConfig(cfg, func(o *rds.Options) {
- if endpoint := c.Endpoints[names.RDS]; endpoint != "" {
- o.EndpointResolver = rds.EndpointResolverFromURL(endpoint)
- }
- })
- })
+ // API clients (generated).
+ c.sdkv1Conns(client, sess)
+ c.sdkv2Conns(client, cfg)
+ c.sdkv2LazyConns(client, cfg)
- client.ssmClient.init(&cfg, func() *ssm.Client {
- return ssm.NewFromConfig(cfg, func(o *ssm.Options) {
- if endpoint := c.Endpoints[names.SSM]; endpoint != "" {
- o.EndpointResolver = ssm.EndpointResolverFromURL(endpoint)
- }
- })
- })
+ // AWS SDK for Go v1 custom API clients.
- // sts
+ // STS.
stsConfig := &aws.Config{
Endpoint: aws.String(c.Endpoints[names.STS]),
}
-
if c.STSRegion != "" {
stsConfig.Region = aws.String(c.STSRegion)
}
-
client.STSConn = sts.New(sess.Copy(stsConfig))
- // "Global" services that require customizations
+ // Services that require multiple client configurations.
+ s3Config := &aws.Config{
+ Endpoint: aws.String(c.Endpoints[names.S3]),
+ S3ForcePathStyle: aws.Bool(c.S3UsePathStyle),
+ }
+ client.S3Conn = s3.New(sess.Copy(s3Config))
+
+ s3Config.DisableRestProtocolURICleaning = aws.Bool(true)
+ client.S3ConnURICleaningDisabled = s3.New(sess.Copy(s3Config))
+
+ // "Global" services that require customizations.
globalAcceleratorConfig := &aws.Config{
Endpoint: aws.String(c.Endpoints[names.GlobalAccelerator]),
}
@@ -345,18 +231,7 @@ func (c *Config) ConfigureProvider(ctx context.Context, client *AWSClient) (*AWS
Endpoint: aws.String(c.Endpoints[names.Shield]),
}
- // Services that require multiple client configurations
- s3Config := &aws.Config{
- Endpoint: aws.String(c.Endpoints[names.S3]),
- S3ForcePathStyle: aws.Bool(c.S3UsePathStyle),
- }
-
- client.S3Conn = s3.New(sess.Copy(s3Config))
-
- s3Config.DisableRestProtocolURICleaning = aws.Bool(true)
- client.S3ConnURICleaningDisabled = s3.New(sess.Copy(s3Config))
-
- // Force "global" services to correct regions
+ // Force "global" services to correct Regions.
switch partition {
case endpoints.AwsPartitionID:
globalAcceleratorConfig.Region = aws.String(endpoints.UsWest2RegionID)
@@ -638,16 +513,16 @@ func (c *Config) ConfigureProvider(ctx context.Context, client *AWSClient) (*AWS
}
})
- if !c.SkipGetEC2Platforms {
- supportedPlatforms, err := GetSupportedEC2Platforms(client.EC2Conn)
- if err != nil {
- // We intentionally fail *silently* because there's a chance
- // user just doesn't have ec2:DescribeAccountAttributes permissions
- log.Printf("[WARN] Unable to get supported EC2 platforms: %s", err)
- } else {
- client.SupportedPlatforms = supportedPlatforms
+ // AWS SDK for Go v2 custom API clients.
+
+ client.Route53DomainsClient = route53domains.NewFromConfig(cfg, func(o *route53domains.Options) {
+ if endpoint := c.Endpoints[names.Route53Domains]; endpoint != "" {
+ o.EndpointResolver = route53domains.EndpointResolverFromURL(endpoint)
+ } else if partition == endpoints.AwsPartitionID {
+ // Route 53 Domains is only available in AWS Commercial us-east-1 Region.
+ o.Region = endpoints.UsEast1RegionID
}
- }
+ })
return client, nil
}
diff --git a/internal/conns/config_gen.go b/internal/conns/config_gen.go
index 54d3d5fd1322..fdce5e230fe1 100644
--- a/internal/conns/config_gen.go
+++ b/internal/conns/config_gen.go
@@ -2,6 +2,25 @@
package conns
import (
+ aws_sdkv2 "github.com/aws/aws-sdk-go-v2/aws"
+ "github.com/aws/aws-sdk-go-v2/service/auditmanager"
+ cloudwatchlogs_sdkv2 "github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs"
+ "github.com/aws/aws-sdk-go-v2/service/comprehend"
+ "github.com/aws/aws-sdk-go-v2/service/computeoptimizer"
+ "github.com/aws/aws-sdk-go-v2/service/fis"
+ "github.com/aws/aws-sdk-go-v2/service/identitystore"
+ "github.com/aws/aws-sdk-go-v2/service/inspector2"
+ "github.com/aws/aws-sdk-go-v2/service/ivschat"
+ "github.com/aws/aws-sdk-go-v2/service/kendra"
+ "github.com/aws/aws-sdk-go-v2/service/medialive"
+ rds_sdkv2 "github.com/aws/aws-sdk-go-v2/service/rds"
+ "github.com/aws/aws-sdk-go-v2/service/resourceexplorer2"
+ "github.com/aws/aws-sdk-go-v2/service/rolesanywhere"
+ s3control_sdkv2 "github.com/aws/aws-sdk-go-v2/service/s3control"
+ "github.com/aws/aws-sdk-go-v2/service/scheduler"
+ "github.com/aws/aws-sdk-go-v2/service/sesv2"
+ ssm_sdkv2 "github.com/aws/aws-sdk-go-v2/service/ssm"
+ "github.com/aws/aws-sdk-go-v2/service/transcribe"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/accessanalyzer"
@@ -291,7 +310,8 @@ import (
"github.com/hashicorp/terraform-provider-aws/names"
)
-func (c *Config) clientConns(client *AWSClient, sess *session.Session) {
+// sdkv1Conns initializes AWS SDK for Go v1 clients.
+func (c *Config) sdkv1Conns(client *AWSClient, sess *session.Session) {
client.ACMConn = acm.New(sess.Copy(&aws.Config{Endpoint: aws.String(c.Endpoints[names.ACM])}))
client.ACMPCAConn = acmpca.New(sess.Copy(&aws.Config{Endpoint: aws.String(c.Endpoints[names.ACMPCA])}))
client.AMPConn = prometheusservice.New(sess.Copy(&aws.Config{Endpoint: aws.String(c.Endpoints[names.AMP])}))
@@ -577,3 +597,109 @@ func (c *Config) clientConns(client *AWSClient, sess *session.Session) {
client.WorkSpacesWebConn = workspacesweb.New(sess.Copy(&aws.Config{Endpoint: aws.String(c.Endpoints[names.WorkSpacesWeb])}))
client.XRayConn = xray.New(sess.Copy(&aws.Config{Endpoint: aws.String(c.Endpoints[names.XRay])}))
}
+
+// sdkv2Conns initializes AWS SDK for Go v2 clients.
+func (c *Config) sdkv2Conns(client *AWSClient, cfg aws_sdkv2.Config) {
+ client.AuditManagerClient = auditmanager.NewFromConfig(cfg, func(o *auditmanager.Options) {
+ if endpoint := c.Endpoints[names.AuditManager]; endpoint != "" {
+ o.EndpointResolver = auditmanager.EndpointResolverFromURL(endpoint)
+ }
+ })
+ client.ComprehendClient = comprehend.NewFromConfig(cfg, func(o *comprehend.Options) {
+ if endpoint := c.Endpoints[names.Comprehend]; endpoint != "" {
+ o.EndpointResolver = comprehend.EndpointResolverFromURL(endpoint)
+ }
+ })
+ client.ComputeOptimizerClient = computeoptimizer.NewFromConfig(cfg, func(o *computeoptimizer.Options) {
+ if endpoint := c.Endpoints[names.ComputeOptimizer]; endpoint != "" {
+ o.EndpointResolver = computeoptimizer.EndpointResolverFromURL(endpoint)
+ }
+ })
+ client.FISClient = fis.NewFromConfig(cfg, func(o *fis.Options) {
+ if endpoint := c.Endpoints[names.FIS]; endpoint != "" {
+ o.EndpointResolver = fis.EndpointResolverFromURL(endpoint)
+ }
+ })
+ client.IVSChatClient = ivschat.NewFromConfig(cfg, func(o *ivschat.Options) {
+ if endpoint := c.Endpoints[names.IVSChat]; endpoint != "" {
+ o.EndpointResolver = ivschat.EndpointResolverFromURL(endpoint)
+ }
+ })
+ client.IdentityStoreClient = identitystore.NewFromConfig(cfg, func(o *identitystore.Options) {
+ if endpoint := c.Endpoints[names.IdentityStore]; endpoint != "" {
+ o.EndpointResolver = identitystore.EndpointResolverFromURL(endpoint)
+ }
+ })
+ client.Inspector2Client = inspector2.NewFromConfig(cfg, func(o *inspector2.Options) {
+ if endpoint := c.Endpoints[names.Inspector2]; endpoint != "" {
+ o.EndpointResolver = inspector2.EndpointResolverFromURL(endpoint)
+ }
+ })
+ client.KendraClient = kendra.NewFromConfig(cfg, func(o *kendra.Options) {
+ if endpoint := c.Endpoints[names.Kendra]; endpoint != "" {
+ o.EndpointResolver = kendra.EndpointResolverFromURL(endpoint)
+ }
+ })
+ client.MediaLiveClient = medialive.NewFromConfig(cfg, func(o *medialive.Options) {
+ if endpoint := c.Endpoints[names.MediaLive]; endpoint != "" {
+ o.EndpointResolver = medialive.EndpointResolverFromURL(endpoint)
+ }
+ })
+ client.ResourceExplorer2Client = resourceexplorer2.NewFromConfig(cfg, func(o *resourceexplorer2.Options) {
+ if endpoint := c.Endpoints[names.ResourceExplorer2]; endpoint != "" {
+ o.EndpointResolver = resourceexplorer2.EndpointResolverFromURL(endpoint)
+ }
+ })
+ client.RolesAnywhereClient = rolesanywhere.NewFromConfig(cfg, func(o *rolesanywhere.Options) {
+ if endpoint := c.Endpoints[names.RolesAnywhere]; endpoint != "" {
+ o.EndpointResolver = rolesanywhere.EndpointResolverFromURL(endpoint)
+ }
+ })
+ client.SESV2Client = sesv2.NewFromConfig(cfg, func(o *sesv2.Options) {
+ if endpoint := c.Endpoints[names.SESV2]; endpoint != "" {
+ o.EndpointResolver = sesv2.EndpointResolverFromURL(endpoint)
+ }
+ })
+ client.SchedulerClient = scheduler.NewFromConfig(cfg, func(o *scheduler.Options) {
+ if endpoint := c.Endpoints[names.Scheduler]; endpoint != "" {
+ o.EndpointResolver = scheduler.EndpointResolverFromURL(endpoint)
+ }
+ })
+ client.TranscribeClient = transcribe.NewFromConfig(cfg, func(o *transcribe.Options) {
+ if endpoint := c.Endpoints[names.Transcribe]; endpoint != "" {
+ o.EndpointResolver = transcribe.EndpointResolverFromURL(endpoint)
+ }
+ })
+}
+
+// sdkv2LazyConns initializes AWS SDK for Go v2 lazy-load clients.
+func (c *Config) sdkv2LazyConns(client *AWSClient, cfg aws_sdkv2.Config) {
+ client.logsClient.init(&cfg, func() *cloudwatchlogs_sdkv2.Client {
+ return cloudwatchlogs_sdkv2.NewFromConfig(cfg, func(o *cloudwatchlogs_sdkv2.Options) {
+ if endpoint := c.Endpoints[names.Logs]; endpoint != "" {
+ o.EndpointResolver = cloudwatchlogs_sdkv2.EndpointResolverFromURL(endpoint)
+ }
+ })
+ })
+ client.rdsClient.init(&cfg, func() *rds_sdkv2.Client {
+ return rds_sdkv2.NewFromConfig(cfg, func(o *rds_sdkv2.Options) {
+ if endpoint := c.Endpoints[names.RDS]; endpoint != "" {
+ o.EndpointResolver = rds_sdkv2.EndpointResolverFromURL(endpoint)
+ }
+ })
+ })
+ client.s3controlClient.init(&cfg, func() *s3control_sdkv2.Client {
+ return s3control_sdkv2.NewFromConfig(cfg, func(o *s3control_sdkv2.Options) {
+ if endpoint := c.Endpoints[names.S3Control]; endpoint != "" {
+ o.EndpointResolver = s3control_sdkv2.EndpointResolverFromURL(endpoint)
+ }
+ })
+ })
+ client.ssmClient.init(&cfg, func() *ssm_sdkv2.Client {
+ return ssm_sdkv2.NewFromConfig(cfg, func(o *ssm_sdkv2.Options) {
+ if endpoint := c.Endpoints[names.SSM]; endpoint != "" {
+ o.EndpointResolver = ssm_sdkv2.EndpointResolverFromURL(endpoint)
+ }
+ })
+ })
+}
diff --git a/internal/conns/conns.go b/internal/conns/conns.go
index 1eeab04175e9..2dcb3fca3af8 100644
--- a/internal/conns/conns.go
+++ b/internal/conns/conns.go
@@ -1,12 +1,10 @@
package conns
import (
- "fmt"
"strings"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/session"
- "github.com/aws/aws-sdk-go/service/ec2"
awsbase "github.com/hashicorp/aws-sdk-go-base/v2"
awsbasev1 "github.com/hashicorp/aws-sdk-go-base/v2/awsv1shim/v2"
"github.com/hashicorp/terraform-provider-aws/version"
@@ -36,43 +34,6 @@ func StdUserAgentProducts(terraformVersion string) *awsbase.APNInfo {
}
}
-func HasEC2Classic(platforms []string) bool {
- for _, p := range platforms {
- if p == "EC2" {
- return true
- }
- }
- return false
-}
-
-func GetSupportedEC2Platforms(conn *ec2.EC2) ([]string, error) {
- attrName := "supported-platforms"
-
- input := ec2.DescribeAccountAttributesInput{
- AttributeNames: []*string{aws.String(attrName)},
- }
- attributes, err := conn.DescribeAccountAttributes(&input)
- if err != nil {
- return nil, err
- }
-
- var platforms []string
- for _, attr := range attributes.AccountAttributes {
- if *attr.AttributeName == attrName {
- for _, v := range attr.AttributeValues {
- platforms = append(platforms, *v.AttributeValue)
- }
- break
- }
- }
-
- if len(platforms) == 0 {
- return nil, fmt.Errorf("no EC2 platforms detected")
- }
-
- return platforms, nil
-}
-
// ReverseDNS switches a DNS hostname to reverse DNS and vice-versa.
func ReverseDNS(hostname string) string {
parts := strings.Split(hostname, ".")
diff --git a/internal/conns/conns_test.go b/internal/conns/conns_test.go
deleted file mode 100644
index 4c82b52167b2..000000000000
--- a/internal/conns/conns_test.go
+++ /dev/null
@@ -1,59 +0,0 @@
-package conns
-
-import (
- "reflect"
- "testing"
-
- "github.com/aws/aws-sdk-go/service/ec2"
- mockdatav1 "github.com/hashicorp/aws-sdk-go-base/v2/awsv1shim/v2/mockdata"
- "github.com/hashicorp/aws-sdk-go-base/v2/servicemocks"
-)
-
-func TestGetSupportedEC2Platforms(t *testing.T) {
- ec2Endpoints := []*servicemocks.MockEndpoint{
- {
- Request: &servicemocks.MockRequest{
- Method: "POST",
- Uri: "/",
- Body: "Action=DescribeAccountAttributes&AttributeName.1=supported-platforms&Version=2016-11-15",
- },
- Response: &servicemocks.MockResponse{
- StatusCode: 200,
- Body: test_ec2_describeAccountAttributes_response,
- ContentType: "text/xml",
- },
- },
- }
- closeFunc, sess, err := mockdatav1.GetMockedAwsApiSession("EC2", ec2Endpoints)
- if err != nil {
- t.Fatal(err)
- }
- defer closeFunc()
- conn := ec2.New(sess)
-
- platforms, err := GetSupportedEC2Platforms(conn)
- if err != nil {
- t.Fatalf("Expected no error, received: %s", err)
- }
- expectedPlatforms := []string{"VPC", "EC2"}
- if !reflect.DeepEqual(platforms, expectedPlatforms) {
- t.Fatalf("Received platforms: %q\nExpected: %q\n", platforms, expectedPlatforms)
- }
-}
-
-var test_ec2_describeAccountAttributes_response = `
- 7a62c49f-347e-4fc4-9331-6e8eEXAMPLE
-
- -
- supported-platforms
-
-
-
- VPC
-
- -
- EC2
-
-
-
-
-`
diff --git a/internal/generate/awsclient/file.tmpl b/internal/generate/awsclient/file.tmpl
index 7bdf60630925..ac8117d49d4f 100644
--- a/internal/generate/awsclient/file.tmpl
+++ b/internal/generate/awsclient/file.tmpl
@@ -3,11 +3,15 @@ package conns
import (
{{ range .Services }}
- {{ if ne .GoPackageOverride "" }}{{ .GoPackageOverride }}{{ end -}} "github.com/aws/aws-sdk-go{{ if eq .SDKVersion "2" }}-v2{{ end }}/service/{{ .GoPackage }}"
+ {{- if eq .SDKVersion "1" }}
+ "github.com/aws/aws-sdk-go/service/{{ .GoV1Package }}"
+ {{- else if eq .SDKVersion "2" }}
+ "github.com/aws/aws-sdk-go-v2/service/{{ .GoV2Package }}"
+ {{- else if eq .SDKVersion "1,2" }}
+ "github.com/aws/aws-sdk-go/service/{{ .GoV1Package }}"
+ {{ .GoV2PackageOverride }} "github.com/aws/aws-sdk-go-v2/service/{{ .GoV2Package }}"
+ {{- end }}
{{- end }}
- cloudwatchlogs_sdkv2 "github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs"
- rds_sdkv2 "github.com/aws/aws-sdk-go-v2/service/rds"
- ssm_sdkv2 "github.com/aws/aws-sdk-go-v2/service/ssm"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/hashicorp/terraform-provider-aws/internal/experimental/intf"
tftags "github.com/hashicorp/terraform-provider-aws/internal/tags"
@@ -25,14 +29,25 @@ type AWSClient struct {
S3ConnURICleaningDisabled *s3.S3
ServicePackages []intf.ServicePackageData
Session *session.Session
- SupportedPlatforms []string
TerraformVersion string
- logsClient lazyClient[*cloudwatchlogs_sdkv2.Client]
- rdsClient lazyClient[*rds_sdkv2.Client]
- ssmClient lazyClient[*ssm_sdkv2.Client]
+{{ range .Services }}
+ {{- if ne .SDKVersion "1,2" }}{{continue}}{{- end }}
+ {{ .ProviderPackage }}Client lazyClient[*{{ .GoV2PackageOverride }}.{{ .ClientTypeName }}]
+{{- end }}
- {{ range .Services }}
- {{ .ProviderNameUpper }}{{ if eq .SDKVersion "1" }}Conn{{ else }}Client{{end}} *{{ if ne .GoPackageOverride "" }}{{ .GoPackageOverride }}{{ else }}{{ .GoPackage }}{{ end }}.{{ .ClientTypeName }}
+{{ range .Services }}
+ {{- if eq .SDKVersion "1" }}
+ {{ .ProviderNameUpper }}Conn *{{ .GoV1Package }}.{{ .ClientTypeName }}
+ {{- else if eq .SDKVersion "2" }}
+ {{ .ProviderNameUpper }}Client *{{ .GoV2Package }}.{{ .ClientTypeName }}
{{- end }}
+{{- end }}
+}
+
+{{ range .Services }}
+ {{- if ne .SDKVersion "1,2" }}{{continue}}{{- end }}
+func (client *AWSClient) {{ .ProviderNameUpper }}Client() *{{ .GoV2PackageOverride }}.{{ .ClientTypeName }} {
+ return client.{{ .ProviderPackage }}Client.Client()
}
+{{ end }}
diff --git a/internal/generate/awsclient/main.go b/internal/generate/awsclient/main.go
index 98e9ebba5407..3d7943aff57b 100644
--- a/internal/generate/awsclient/main.go
+++ b/internal/generate/awsclient/main.go
@@ -4,16 +4,11 @@
package main
import (
- "bytes"
_ "embed"
- "encoding/csv"
"fmt"
- "go/format"
- "log"
- "os"
"sort"
- "text/template"
+ "github.com/hashicorp/terraform-provider-aws/internal/generate/common"
"github.com/hashicorp/terraform-provider-aws/names"
)
@@ -23,11 +18,13 @@ const (
)
type ServiceDatum struct {
- SDKVersion string
- GoPackage string
- GoPackageOverride string
- ProviderNameUpper string
- ClientTypeName string
+ SDKVersion string
+ GoV1Package string
+ GoV2Package string
+ GoV2PackageOverride string
+ ProviderNameUpper string
+ ClientTypeName string
+ ProviderPackage string
}
type TemplateData struct {
@@ -35,20 +32,14 @@ type TemplateData struct {
}
func main() {
- fmt.Printf("Generating internal/conns/%s\n", filename)
+ g := common.NewGenerator()
- f, err := os.Open(namesDataFile)
- if err != nil {
- log.Fatal(err)
- }
-
- defer f.Close()
+ g.Infof("generating internal/conns/%s\n", filename)
- csvReader := csv.NewReader(f)
+ data, err := common.ReadAllNamesData(namesDataFile)
- data, err := csvReader.ReadAll()
if err != nil {
- log.Fatal(err)
+ g.Fatalf("error reading %s: %s", namesDataFile, err.Error())
}
td := TemplateData{}
@@ -70,20 +61,25 @@ func main() {
td.Services = append(td.Services, ServiceDatum{
ProviderNameUpper: l[names.ColProviderNameUpper],
SDKVersion: "1",
- GoPackage: l[names.ColGoV1Package],
+ GoV1Package: l[names.ColGoV1Package],
+ GoV2Package: l[names.ColGoV2Package],
ClientTypeName: l[names.ColGoV1ClientTypeName],
+ ProviderPackage: l[names.ColProviderPackageCorrect],
})
}
if l[names.ColClientSDKV2] != "" {
sd := ServiceDatum{
ProviderNameUpper: l[names.ColProviderNameUpper],
SDKVersion: "2",
- GoPackage: l[names.ColGoV2Package],
+ GoV1Package: l[names.ColGoV1Package],
+ GoV2Package: l[names.ColGoV2Package],
ClientTypeName: "Client",
+ ProviderPackage: l[names.ColProviderPackageCorrect],
}
if l[names.ColClientSDKV1] != "" {
- // Use `sdkv2` instead of `v2` to prevent collisions with e.g., `elbv2`
- sd.GoPackageOverride = fmt.Sprintf("%s_sdkv2", l[names.ColGoV2Package])
+ // Use `sdkv2` instead of `v2` to prevent collisions with e.g., `elbv2`.
+ sd.GoV2PackageOverride = fmt.Sprintf("%s_sdkv2", l[names.ColGoV2Package])
+ sd.SDKVersion = "1,2"
}
td.Services = append(td.Services, sd)
}
@@ -93,38 +89,8 @@ func main() {
return td.Services[i].ProviderNameUpper < td.Services[j].ProviderNameUpper
})
- writeTemplate(tmpl, "awsclient", td)
-}
-
-func writeTemplate(body string, templateName string, td TemplateData) {
- f, err := os.OpenFile(filename, os.O_TRUNC|os.O_CREATE|os.O_WRONLY, 0644)
- if err != nil {
- log.Fatalf("error opening file (%s): %s", filename, err)
- }
-
- tplate, err := template.New(templateName).Parse(body)
- if err != nil {
- log.Fatalf("error parsing template: %s", err)
- }
-
- var buffer bytes.Buffer
- err = tplate.Execute(&buffer, td)
- if err != nil {
- log.Fatalf("error executing template: %s", err)
- }
-
- contents, err := format.Source(buffer.Bytes())
- if err != nil {
- log.Fatalf("error formatting generated file: %s", err)
- }
-
- if _, err := f.Write(contents); err != nil {
- f.Close()
- log.Fatalf("error writing to file (%s): %s", filename, err)
- }
-
- if err := f.Close(); err != nil {
- log.Fatalf("error closing file (%s): %s", filename, err)
+ if err := g.ApplyAndWriteTemplate(filename, "awsclient", tmpl, td); err != nil {
+ g.Fatalf("error: %s", err.Error())
}
}
diff --git a/internal/generate/clientconfig/file.tmpl b/internal/generate/clientconfig/file.tmpl
index 1e235a05907f..bfd08ef1fa8e 100644
--- a/internal/generate/clientconfig/file.tmpl
+++ b/internal/generate/clientconfig/file.tmpl
@@ -2,16 +2,55 @@
package conns
import (
+{{ range .Services }}
+ {{- if eq .SDKVersion "1" }}
+ "github.com/aws/aws-sdk-go/service/{{ .GoV1Package }}"
+ {{- else if eq .SDKVersion "2" }}
+ "github.com/aws/aws-sdk-go-v2/service/{{ .GoV2Package }}"
+ {{- else if eq .SDKVersion "1,2" }}
+ "github.com/aws/aws-sdk-go/service/{{ .GoV1Package }}"
+ {{ .GoV2PackageOverride }} "github.com/aws/aws-sdk-go-v2/service/{{ .GoV2Package }}"
+ {{- end }}
+{{- end }}
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/session"
-{{- range .Services }}
- "github.com/aws/aws-sdk-go{{ if eq .SDKVersion "2" }}-v2{{ end }}/service/{{ .GoPackage }}"
-{{- end }}
+ aws_sdkv2 "github.com/aws/aws-sdk-go-v2/aws"
"github.com/hashicorp/terraform-provider-aws/names"
)
-func (c *Config) clientConns(client *AWSClient, sess *session.Session) {
- {{- range .Services }}
- client.{{ .ProviderNameUpper }}Conn = {{ .GoPackage }}.New(sess.Copy(&aws.Config{Endpoint: aws.String(c.Endpoints[names.{{ .ProviderNameUpper }}])}))
+// sdkv1Conns initializes AWS SDK for Go v1 clients.
+func (c *Config) sdkv1Conns(client *AWSClient, sess *session.Session) {
+{{- range .Services }}
+ {{- if eq .SDKVersion "1" }}
+ client.{{ .ProviderNameUpper }}Conn = {{ .GoV1Package }}.New(sess.Copy(&aws.Config{Endpoint: aws.String(c.Endpoints[names.{{ .ProviderNameUpper }}])}))
{{- end }}
+{{- end }}
}
+
+// sdkv2Conns initializes AWS SDK for Go v2 clients.
+func (c *Config) sdkv2Conns(client *AWSClient, cfg aws_sdkv2.Config) {
+{{- range .Services }}
+ {{- if eq .SDKVersion "2" }}
+ client.{{ .ProviderNameUpper }}Client = {{ .GoV2Package }}.NewFromConfig(cfg, func(o *{{ .GoV2Package }}.Options) {
+ if endpoint := c.Endpoints[names.{{ .ProviderNameUpper }}]; endpoint != "" {
+ o.EndpointResolver = {{ .GoV2Package }}.EndpointResolverFromURL(endpoint)
+ }
+ })
+ {{- end }}
+{{- end }}
+}
+
+// sdkv2LazyConns initializes AWS SDK for Go v2 lazy-load clients.
+func (c *Config) sdkv2LazyConns(client *AWSClient, cfg aws_sdkv2.Config) {
+{{- range .Services }}
+ {{- if eq .SDKVersion "1,2" }}
+ client.{{ .ProviderPackage }}Client.init(&cfg, func() *{{ .GoV2PackageOverride }}.{{ .ClientTypeName }} {
+ return {{ .GoV2PackageOverride }}.NewFromConfig(cfg, func(o *{{ .GoV2PackageOverride }}.Options) {
+ if endpoint := c.Endpoints[names.{{ .ProviderNameUpper }}]; endpoint != "" {
+ o.EndpointResolver = {{ .GoV2PackageOverride }}.EndpointResolverFromURL(endpoint)
+ }
+ })
+ })
+ {{- end }}
+{{- end }}
+}
\ No newline at end of file
diff --git a/internal/generate/clientconfig/main.go b/internal/generate/clientconfig/main.go
index d899f4515349..212971cb1aa2 100644
--- a/internal/generate/clientconfig/main.go
+++ b/internal/generate/clientconfig/main.go
@@ -4,16 +4,11 @@
package main
import (
- "bytes"
_ "embed"
- "encoding/csv"
"fmt"
- "go/format"
- "log"
- "os"
"sort"
- "text/template"
+ "github.com/hashicorp/terraform-provider-aws/internal/generate/common"
"github.com/hashicorp/terraform-provider-aws/names"
)
@@ -23,9 +18,13 @@ const (
)
type ServiceDatum struct {
- SDKVersion string
- GoPackage string
- ProviderNameUpper string
+ SDKVersion string
+ GoV1Package string
+ GoV2Package string
+ GoV2PackageOverride string
+ ProviderNameUpper string
+ ClientTypeName string
+ ProviderPackage string
}
type TemplateData struct {
@@ -33,20 +32,14 @@ type TemplateData struct {
}
func main() {
- fmt.Printf("Generating internal/conns/%s\n", filename)
+ g := common.NewGenerator()
- f, err := os.Open(namesDataFile)
- if err != nil {
- log.Fatal(err)
- }
-
- defer f.Close()
+ g.Infof("generating internal/conns/%s\n", filename)
- csvReader := csv.NewReader(f)
+ data, err := common.ReadAllNamesData(namesDataFile)
- data, err := csvReader.ReadAll()
if err != nil {
- log.Fatal(err)
+ g.Fatalf("error reading %s: %s", namesDataFile, err.Error())
}
td := TemplateData{}
@@ -68,59 +61,36 @@ func main() {
td.Services = append(td.Services, ServiceDatum{
ProviderNameUpper: l[names.ColProviderNameUpper],
SDKVersion: "1",
- GoPackage: l[names.ColGoV1Package],
+ GoV1Package: l[names.ColGoV1Package],
+ GoV2Package: l[names.ColGoV2Package],
+ ClientTypeName: l[names.ColGoV1ClientTypeName],
+ ProviderPackage: l[names.ColProviderPackageCorrect],
})
}
- // if l[names.ColClientSDKV2] != "" {
- // sd := ServiceDatum{
- // ProviderNameUpper: l[names.ColProviderNameUpper],
- // SDKVersion: "2",
- // GoPackage: l[names.ColGoV2Package],
- // }
- // if l[names.ColClientSDKV1] != "" {
- // // Use `sdkv2` instead of `v2` to prevent collisions with e.g., `elbv2`
- // sd.GoPackage = fmt.Sprintf("%s_sdkv2", l[names.ColGoV2Package])
- // }
- // td.Services = append(td.Services, sd)
- // }
+ if l[names.ColClientSDKV2] != "" {
+ sd := ServiceDatum{
+ ProviderNameUpper: l[names.ColProviderNameUpper],
+ SDKVersion: "2",
+ GoV1Package: l[names.ColGoV1Package],
+ GoV2Package: l[names.ColGoV2Package],
+ ClientTypeName: "Client",
+ ProviderPackage: l[names.ColProviderPackageCorrect],
+ }
+ if l[names.ColClientSDKV1] != "" {
+ // Use `sdkv2` instead of `v2` to prevent collisions with e.g., `elbv2`.
+ sd.GoV2PackageOverride = fmt.Sprintf("%s_sdkv2", l[names.ColGoV2Package])
+ sd.SDKVersion = "1,2"
+ }
+ td.Services = append(td.Services, sd)
+ }
}
sort.SliceStable(td.Services, func(i, j int) bool {
return td.Services[i].ProviderNameUpper < td.Services[j].ProviderNameUpper
})
- writeTemplate(tmpl, "awsclient", td)
-}
-
-func writeTemplate(body string, templateName string, td TemplateData) {
- f, err := os.OpenFile(filename, os.O_TRUNC|os.O_CREATE|os.O_WRONLY, 0644)
- if err != nil {
- log.Fatalf("error opening file (%s): %s", filename, err)
- }
-
- tplate, err := template.New(templateName).Parse(body)
- if err != nil {
- log.Fatalf("error parsing template: %s", err)
- }
-
- var buffer bytes.Buffer
- err = tplate.Execute(&buffer, td)
- if err != nil {
- log.Fatalf("error executing template: %s", err)
- }
-
- contents, err := format.Source(buffer.Bytes())
- if err != nil {
- log.Fatalf("error formatting generated file: %s", err)
- }
-
- if _, err := f.Write(contents); err != nil {
- f.Close()
- log.Fatalf("error writing to file (%s): %s", filename, err)
- }
-
- if err := f.Close(); err != nil {
- log.Fatalf("error closing file (%s): %s", filename, err)
+ if err := g.ApplyAndWriteTemplate(filename, "config", tmpl, td); err != nil {
+ g.Fatalf("error: %s", err.Error())
}
}
diff --git a/internal/generate/common/generator.go b/internal/generate/common/generator.go
new file mode 100644
index 000000000000..b85156f63425
--- /dev/null
+++ b/internal/generate/common/generator.go
@@ -0,0 +1,76 @@
+package common
+
+import (
+ "bytes"
+ "fmt"
+ "go/format"
+ "os"
+ "text/template"
+
+ "github.com/mitchellh/cli"
+)
+
+type Generator struct {
+ ui cli.Ui
+}
+
+func NewGenerator() *Generator {
+ return &Generator{
+ ui: &cli.BasicUi{
+ Reader: os.Stdin,
+ Writer: os.Stdout,
+ ErrorWriter: os.Stderr,
+ },
+ }
+}
+
+func (g *Generator) ApplyAndWriteTemplate(filename, templateName, templateBody string, templateData any) error {
+ tmpl, err := template.New(templateName).Parse(templateBody)
+
+ if err != nil {
+ return fmt.Errorf("parsing function template: %w", err)
+ }
+
+ var buffer bytes.Buffer
+ err = tmpl.Execute(&buffer, templateData)
+
+ if err != nil {
+ return fmt.Errorf("executing template: %w", err)
+ }
+
+ generatedFileContents, err := format.Source(buffer.Bytes())
+
+ if err != nil {
+ g.Infof("%s", buffer.String())
+ return fmt.Errorf("formatting generated source code: %w", err)
+ }
+
+ f, err := os.OpenFile(filename, os.O_TRUNC|os.O_CREATE|os.O_WRONLY, 0644) //nolint:gomnd
+
+ if err != nil {
+ return fmt.Errorf("opening file (%s): %w", filename, err)
+ }
+
+ defer f.Close()
+
+ _, err = f.Write(generatedFileContents)
+
+ if err != nil {
+ return fmt.Errorf("writing to file (%s): %w", filename, err)
+ }
+
+ return nil
+}
+
+func (g *Generator) Errorf(format string, a ...interface{}) {
+ g.ui.Error(fmt.Sprintf(format, a...))
+}
+
+func (g *Generator) Fatalf(format string, a ...interface{}) {
+ g.Errorf(format, a...)
+ os.Exit(1)
+}
+
+func (g *Generator) Infof(format string, a ...interface{}) {
+ g.ui.Info(fmt.Sprintf(format, a...))
+}
diff --git a/internal/generate/common/namesdata.go b/internal/generate/common/namesdata.go
new file mode 100644
index 000000000000..0ce92391bb46
--- /dev/null
+++ b/internal/generate/common/namesdata.go
@@ -0,0 +1,19 @@
+package common
+
+import (
+ "encoding/csv"
+ "fmt"
+ "os"
+)
+
+func ReadAllNamesData(filename string) ([][]string, error) {
+ f, err := os.Open(filename)
+
+ if err != nil {
+ return nil, fmt.Errorf("opening file (%s): %w", filename, err)
+ }
+
+ defer f.Close()
+
+ return csv.NewReader(f).ReadAll()
+}
diff --git a/internal/generate/servicepackagedata/main.go b/internal/generate/servicepackagedata/main.go
index 735437c46751..4d23dd8138ac 100644
--- a/internal/generate/servicepackagedata/main.go
+++ b/internal/generate/servicepackagedata/main.go
@@ -4,15 +4,12 @@
package main
import (
- "bytes"
_ "embed"
"flag"
"fmt"
- "go/format"
"os"
- "text/template"
- "github.com/mitchellh/cli"
+ "github.com/hashicorp/terraform-provider-aws/internal/generate/common"
)
func usage() {
@@ -31,68 +28,14 @@ func main() {
filename = args[0]
}
- ui := &cli.BasicUi{
- Reader: os.Stdin,
- Writer: os.Stdout,
- ErrorWriter: os.Stderr,
- }
- generator := &Generator{
- UI: ui,
- }
+ g := common.NewGenerator()
templateData := &TemplateData{
PackageName: os.Getenv("GOPACKAGE"),
}
- if err := generator.ApplyAndWriteTemplate(filename, tmpl, templateData); err != nil {
- ui.Error(fmt.Sprintf("error generating %s service package data: %s", templateData.PackageName, err.Error()))
- os.Exit(1)
- }
-}
-
-type Generator struct {
- UI cli.Ui
-}
-
-func (g *Generator) ApplyAndWriteTemplate(filename, templateBody string, templateData *TemplateData) error {
- tmpl, err := template.New("servicepackagedata").Parse(templateBody)
-
- if err != nil {
- return fmt.Errorf("parsing function template: %w", err)
- }
-
- var buffer bytes.Buffer
- err = tmpl.Execute(&buffer, templateData)
-
- if err != nil {
- return fmt.Errorf("executing template: %w", err)
- }
-
- generatedFileContents, err := format.Source(buffer.Bytes())
-
- if err != nil {
- g.Infof("%s", buffer.String())
- return fmt.Errorf("formatting generated source code: %w", err)
- }
-
- f, err := os.Create(filename)
-
- if err != nil {
- return fmt.Errorf("creating file (%s): %w", filename, err)
- }
-
- defer f.Close()
-
- _, err = f.Write(generatedFileContents)
-
- if err != nil {
- return fmt.Errorf("writing to file (%s): %w", filename, err)
+ if err := g.ApplyAndWriteTemplate(filename, "servicepackagedata", tmpl, templateData); err != nil {
+ g.Fatalf("error generating %s service package data: %s", templateData.PackageName, err.Error())
}
-
- return nil
-}
-
-func (g *Generator) Infof(format string, a ...interface{}) {
- g.UI.Info(fmt.Sprintf(format, a...))
}
type TemplateData struct {
diff --git a/internal/provider/fwprovider/provider.go b/internal/provider/fwprovider/provider.go
index 621a5dbf4563..329abd15c65b 100644
--- a/internal/provider/fwprovider/provider.go
+++ b/internal/provider/fwprovider/provider.go
@@ -128,9 +128,10 @@ func (p *fwprovider) GetSchema(ctx context.Context) (tfsdk.Schema, diag.Diagnost
Description: "Skip the credentials validation via STS API. Used for AWS API implementations that do not have STS available/implemented.",
},
"skip_get_ec2_platforms": {
- Type: types.BoolType,
- Optional: true,
- Description: "Skip getting the supported EC2 platforms. Used by users that don't have ec2:DescribeAccountAttributes permissions.",
+ Type: types.BoolType,
+ Optional: true,
+ Description: "Skip getting the supported EC2 platforms. Used by users that don't have ec2:DescribeAccountAttributes permissions.",
+ DeprecationMessage: `With the retirement of EC2-Classic the skip_get_ec2_platforms attribute has been deprecated and will be removed in a future version.`,
},
"skip_metadata_api_check": {
Type: types.StringType,
diff --git a/internal/provider/provider.go b/internal/provider/provider.go
index 014a3aa964b4..b2c019573339 100644
--- a/internal/provider/provider.go
+++ b/internal/provider/provider.go
@@ -376,6 +376,7 @@ func New(_ context.Context) (*schema.Provider, error) {
Optional: true,
Description: "Skip getting the supported EC2 platforms. " +
"Used by users that don't have ec2:DescribeAccountAttributes permissions.",
+ Deprecated: `With the retirement of EC2-Classic the skip_get_ec2_platforms attribute has been deprecated and will be removed in a future version.`,
},
"skip_metadata_api_check": {
Type: nullable.TypeNullableBool,
diff --git a/internal/service/resourceexplorer2/README.md b/internal/service/resourceexplorer2/README.md
new file mode 100644
index 000000000000..0353122ce253
--- /dev/null
+++ b/internal/service/resourceexplorer2/README.md
@@ -0,0 +1,7 @@
+# Terraform AWS Provider ResourceExplorer2 Package
+
+This area is primarily for AWS provider contributors and maintainers. For information on _using_ Terraform and the AWS provider, see the links below.
+
+## Handy Links
+
+* [Find out about contributing](https://hashicorp.github.io/terraform-provider-aws/#contribute) to the AWS provider!
diff --git a/internal/service/s3control/storage_lens_configuration.go b/internal/service/s3control/storage_lens_configuration.go
index b279dfbbd260..ccb967a9f0af 100644
--- a/internal/service/s3control/storage_lens_configuration.go
+++ b/internal/service/s3control/storage_lens_configuration.go
@@ -311,7 +311,7 @@ func ResourceStorageLensConfiguration() *schema.Resource {
}
func resourceStorageLensConfigurationCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
- conn := meta.(*conns.AWSClient).S3ControlClient
+ conn := meta.(*conns.AWSClient).S3ControlClient()
defaultTagsConfig := meta.(*conns.AWSClient).DefaultTagsConfig
tags := defaultTagsConfig.MergeTags(tftags.New(d.Get("tags").(map[string]interface{})))
@@ -348,7 +348,7 @@ func resourceStorageLensConfigurationCreate(ctx context.Context, d *schema.Resou
}
func resourceStorageLensConfigurationRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
- conn := meta.(*conns.AWSClient).S3ControlClient
+ conn := meta.(*conns.AWSClient).S3ControlClient()
defaultTagsConfig := meta.(*conns.AWSClient).DefaultTagsConfig
ignoreTagsConfig := meta.(*conns.AWSClient).IgnoreTagsConfig
@@ -398,7 +398,7 @@ func resourceStorageLensConfigurationRead(ctx context.Context, d *schema.Resourc
}
func resourceStorageLensConfigurationUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
- conn := meta.(*conns.AWSClient).S3ControlClient
+ conn := meta.(*conns.AWSClient).S3ControlClient()
accountID, configID, err := StorageLensConfigurationParseResourceID(d.Id())
@@ -436,7 +436,7 @@ func resourceStorageLensConfigurationUpdate(ctx context.Context, d *schema.Resou
}
func resourceStorageLensConfigurationDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
- conn := meta.(*conns.AWSClient).S3ControlClient
+ conn := meta.(*conns.AWSClient).S3ControlClient()
accountID, configID, err := StorageLensConfigurationParseResourceID(d.Id())
diff --git a/internal/service/s3control/storage_lens_configuration_test.go b/internal/service/s3control/storage_lens_configuration_test.go
index 6dce6d14e497..09c427588b37 100644
--- a/internal/service/s3control/storage_lens_configuration_test.go
+++ b/internal/service/s3control/storage_lens_configuration_test.go
@@ -214,7 +214,7 @@ func TestAccS3ControlStorageLensConfiguration_update(t *testing.T) {
}
func testAccCheckStorageLensConfigurationDestroy(s *terraform.State) error {
- conn := acctest.Provider.Meta().(*conns.AWSClient).S3ControlClient
+ conn := acctest.Provider.Meta().(*conns.AWSClient).S3ControlClient()
for _, rs := range s.RootModule().Resources {
if rs.Type != "aws_s3control_object_lambda_access_point" {
@@ -260,7 +260,7 @@ func testAccCheckStorageLensConfigurationExists(n string) resource.TestCheckFunc
return err
}
- conn := acctest.Provider.Meta().(*conns.AWSClient).S3ControlClient
+ conn := acctest.Provider.Meta().(*conns.AWSClient).S3ControlClient()
_, err = tfs3control.FindStorageLensConfigurationByAccountIDAndConfigID(context.Background(), conn, accountID, configID)
diff --git a/names/consts_gen.go b/names/consts_gen.go
index 365e9fb3882c..7a02b2fbd7fa 100644
--- a/names/consts_gen.go
+++ b/names/consts_gen.go
@@ -237,6 +237,7 @@ const (
RedshiftServerless = "redshiftserverless"
Rekognition = "rekognition"
ResilienceHub = "resiliencehub"
+ ResourceExplorer2 = "resourceexplorer2"
ResourceGroups = "resourcegroups"
ResourceGroupsTaggingAPI = "resourcegroupstaggingapi"
RoboMaker = "robomaker"
diff --git a/names/names_data.csv b/names/names_data.csv
index 4ccd0c72aaf7..aeab667949da 100644
--- a/names/names_data.csv
+++ b/names/names_data.csv
@@ -1,367 +1,368 @@
-AWSCLIV2Command,AWSCLIV2CommandNoDashes,GoV1Package,GoV2Package,ProviderPackageActual,ProviderPackageCorrect,SplitPackageRealPackage,Aliases,ProviderNameUpper,GoV1ClientTypeName,SkipClientGenerate,ClientSDKV1,ClientSDKV2,ResourcePrefixActual,ResourcePrefixCorrect,FilePrefix,DocPrefix,HumanFriendly,Brand,Exclude,AllowedSubcategory,DeprecatedEnvVar,EnvVar,Note
-account,account,account,account,,account,,,Account,Account,,1,,,aws_account_,,account_,Account Management,AWS,,,,,
-acm,acm,acm,acm,,acm,,,ACM,ACM,,1,,,aws_acm_,,acm_,ACM (Certificate Manager),AWS,,,,,
-acm-pca,acmpca,acmpca,acmpca,,acmpca,,,ACMPCA,ACMPCA,,1,,,aws_acmpca_,,acmpca_,ACM PCA (Certificate Manager Private Certificate Authority),AWS,,,,,
-alexaforbusiness,alexaforbusiness,alexaforbusiness,alexaforbusiness,,alexaforbusiness,,,AlexaForBusiness,AlexaForBusiness,,1,,,aws_alexaforbusiness_,,alexaforbusiness_,Alexa for Business,,,,,,
-amp,amp,prometheusservice,amp,,amp,,prometheus;prometheusservice,AMP,PrometheusService,,1,,aws_prometheus_,aws_amp_,,prometheus_,AMP (Managed Prometheus),Amazon,,,,,
-amplify,amplify,amplify,amplify,,amplify,,,Amplify,Amplify,,1,,,aws_amplify_,,amplify_,Amplify,AWS,,,,,
-amplifybackend,amplifybackend,amplifybackend,amplifybackend,,amplifybackend,,,AmplifyBackend,AmplifyBackend,,1,,,aws_amplifybackend_,,amplifybackend_,Amplify Backend,AWS,,,,,
-amplifyuibuilder,amplifyuibuilder,amplifyuibuilder,amplifyuibuilder,,amplifyuibuilder,,,AmplifyUIBuilder,AmplifyUIBuilder,,1,,,aws_amplifyuibuilder_,,amplifyuibuilder_,Amplify UI Builder,AWS,,,,,
-,,,,,,,,,,,,,,,,,Apache MXNet on AWS,AWS,x,,,,Documentation
-apigateway,apigateway,apigateway,apigateway,,apigateway,,,APIGateway,APIGateway,,1,,aws_api_gateway_,aws_apigateway_,,api_gateway_,API Gateway,Amazon,,,,,
-apigatewaymanagementapi,apigatewaymanagementapi,apigatewaymanagementapi,apigatewaymanagementapi,,apigatewaymanagementapi,,,APIGatewayManagementAPI,ApiGatewayManagementApi,,1,,,aws_apigatewaymanagementapi_,,apigatewaymanagementapi_,API Gateway Management API,Amazon,,,,,
-apigatewayv2,apigatewayv2,apigatewayv2,apigatewayv2,,apigatewayv2,,,APIGatewayV2,ApiGatewayV2,,1,,,aws_apigatewayv2_,,apigatewayv2_,API Gateway V2,Amazon,,,,,
-appmesh,appmesh,appmesh,appmesh,,appmesh,,,AppMesh,AppMesh,,1,,,aws_appmesh_,,appmesh_,App Mesh,AWS,,,,,
-apprunner,apprunner,apprunner,apprunner,,apprunner,,,AppRunner,AppRunner,,1,,,aws_apprunner_,,apprunner_,App Runner,AWS,,,,,
-,,,,,,,,,,,,,,,,,App2Container,AWS,x,,,,No SDK support
-appconfig,appconfig,appconfig,appconfig,,appconfig,,,AppConfig,AppConfig,,1,,,aws_appconfig_,,appconfig_,AppConfig,AWS,,,,,
-appconfigdata,appconfigdata,appconfigdata,appconfigdata,,appconfigdata,,,AppConfigData,AppConfigData,,1,,,aws_appconfigdata_,,appconfigdata_,AppConfig Data,AWS,,,,,
-appflow,appflow,appflow,appflow,,appflow,,,AppFlow,Appflow,,1,,,aws_appflow_,,appflow_,AppFlow,Amazon,,,,,
-appintegrations,appintegrations,appintegrationsservice,appintegrations,,appintegrations,,appintegrationsservice,AppIntegrations,AppIntegrationsService,,1,,,aws_appintegrations_,,appintegrations_,AppIntegrations,Amazon,,,,,
-application-autoscaling,applicationautoscaling,applicationautoscaling,applicationautoscaling,appautoscaling,applicationautoscaling,,applicationautoscaling,AppAutoScaling,ApplicationAutoScaling,,1,,aws_appautoscaling_,aws_applicationautoscaling_,,appautoscaling_,Application Auto Scaling,,,,,,
-applicationcostprofiler,applicationcostprofiler,applicationcostprofiler,applicationcostprofiler,,applicationcostprofiler,,,ApplicationCostProfiler,ApplicationCostProfiler,,1,,,aws_applicationcostprofiler_,,applicationcostprofiler_,Application Cost Profiler,AWS,,,,,
-discovery,discovery,applicationdiscoveryservice,applicationdiscoveryservice,,discovery,,applicationdiscovery;applicationdiscoveryservice,Discovery,ApplicationDiscoveryService,,1,,,aws_discovery_,,discovery_,Application Discovery,AWS,,,,,
-mgn,mgn,mgn,mgn,,mgn,,,Mgn,Mgn,,1,,,aws_mgn_,,mgn_,Application Migration (Mgn),AWS,,,,,
-appstream,appstream,appstream,appstream,,appstream,,,AppStream,AppStream,,1,,,aws_appstream_,,appstream_,AppStream 2.0,Amazon,,,,,
-appsync,appsync,appsync,appsync,,appsync,,,AppSync,AppSync,,1,,,aws_appsync_,,appsync_,AppSync,AWS,,,,,
-,,,,,,,,,,,,,,,,,Artifact,AWS,x,,,,No SDK support
-athena,athena,athena,athena,,athena,,,Athena,Athena,,1,,,aws_athena_,,athena_,Athena,Amazon,,,,,
-auditmanager,auditmanager,auditmanager,auditmanager,,auditmanager,,,AuditManager,AuditManager,,,2,,aws_auditmanager_,,auditmanager_,Audit Manager,AWS,,,,,
-autoscaling,autoscaling,autoscaling,autoscaling,,autoscaling,,,AutoScaling,AutoScaling,,1,,aws_(autoscaling_|launch_configuration),aws_autoscaling_,,autoscaling_;launch_configuration,Auto Scaling,,,,,,
-autoscaling-plans,autoscalingplans,autoscalingplans,autoscalingplans,,autoscalingplans,,,AutoScalingPlans,AutoScalingPlans,,1,,,aws_autoscalingplans_,,autoscalingplans_,Auto Scaling Plans,,,,,,
-,,,,,,,,,,,,,,,,,Backint Agent for SAP HANA,AWS,x,,,,No SDK support
-backup,backup,backup,backup,,backup,,,Backup,Backup,,1,,,aws_backup_,,backup_,Backup,AWS,,,,,
-backup-gateway,backupgateway,backupgateway,backupgateway,,backupgateway,,,BackupGateway,BackupGateway,,1,,,aws_backupgateway_,,backupgateway_,Backup Gateway,AWS,,,,,
-batch,batch,batch,batch,,batch,,,Batch,Batch,,1,,,aws_batch_,,batch_,Batch,AWS,,,,,
-billingconductor,billingconductor,billingconductor,,,billingconductor,,,BillingConductor,BillingConductor,,1,,,aws_billingconductor_,,billingconductor_,Billing Conductor,AWS,,,,,
-braket,braket,braket,braket,,braket,,,Braket,Braket,,1,,,aws_braket_,,braket_,Braket,Amazon,,,,,
-ce,ce,costexplorer,costexplorer,,ce,,costexplorer,CE,CostExplorer,,1,,,aws_ce_,,ce_,CE (Cost Explorer),AWS,,,,,
-,,,,,,,,,,,,,,,,,Chatbot,AWS,x,,,,No SDK support
-chime,chime,chime,chime,,chime,,,Chime,Chime,,1,,,aws_chime_,,chime_,Chime,Amazon,,,,,
-chime-sdk-identity,chimesdkidentity,chimesdkidentity,chimesdkidentity,,chimesdkidentity,,,ChimeSDKIdentity,ChimeSDKIdentity,,1,,,aws_chimesdkidentity_,,chimesdkidentity_,Chime SDK Identity,Amazon,,,,,
-chime-sdk-meetings,chimesdkmeetings,chimesdkmeetings,chimesdkmeetings,,chimesdkmeetings,,,ChimeSDKMeetings,ChimeSDKMeetings,,1,,,aws_chimesdkmeetings_,,chimesdkmeetings_,Chime SDK Meetings,Amazon,,,,,
-chime-sdk-messaging,chimesdkmessaging,chimesdkmessaging,chimesdkmessaging,,chimesdkmessaging,,,ChimeSDKMessaging,ChimeSDKMessaging,,1,,,aws_chimesdkmessaging_,,chimesdkmessaging_,Chime SDK Messaging,Amazon,,,,,
-,,,,,,,,,,,,,,,,,CLI (Command Line Interface),AWS,x,,,,No SDK support
-configure,configure,,,,,,,,,,,,,,,,CLI Configure options,AWS,x,,,,CLI only
-ddb,ddb,,,,,,,,,,,,,,,,CLI High-level DynamoDB commands,AWS,x,,,,Part of DynamoDB
-s3,s3,,,,,,,,,,,,,,,,CLI High-level S3 commands,AWS,x,,,,CLI only
-history,history,,,,,,,,,,,,,,,,CLI History of commands,AWS,x,,,,CLI only
-importexport,importexport,,,,,,,,,,,,,,,,CLI Import/Export,AWS,x,,,,CLI only
-cli-dev,clidev,,,,,,,,,,,,,,,,CLI Internal commands for development,AWS,x,,,,CLI only
-cloudcontrol,cloudcontrol,cloudcontrolapi,cloudcontrol,,cloudcontrol,,cloudcontrolapi,CloudControl,CloudControlApi,,1,,aws_cloudcontrolapi_,aws_cloudcontrol_,,cloudcontrolapi_,Cloud Control API,AWS,,,,,
-,,,,,,,,,,,,,,,,,Cloud Digital Interface SDK,AWS,x,,,,No SDK support
-clouddirectory,clouddirectory,clouddirectory,clouddirectory,,clouddirectory,,,CloudDirectory,CloudDirectory,,1,,,aws_clouddirectory_,,clouddirectory_,Cloud Directory,Amazon,,,,,
-servicediscovery,servicediscovery,servicediscovery,servicediscovery,,servicediscovery,,,ServiceDiscovery,ServiceDiscovery,,1,,aws_service_discovery_,aws_servicediscovery_,,service_discovery_,Cloud Map,AWS,,,,,
-cloud9,cloud9,cloud9,cloud9,,cloud9,,,Cloud9,Cloud9,,1,,,aws_cloud9_,,cloud9_,Cloud9,AWS,,,,,
-cloudformation,cloudformation,cloudformation,cloudformation,,cloudformation,,,CloudFormation,CloudFormation,,1,,,aws_cloudformation_,,cloudformation_,CloudFormation,AWS,,,,,
-cloudfront,cloudfront,cloudfront,cloudfront,,cloudfront,,,CloudFront,CloudFront,,1,,,aws_cloudfront_,,cloudfront_,CloudFront,Amazon,,,,,
-cloudhsm,cloudhsm,cloudhsm,cloudhsm,,,,,,,,,,,,,,CloudHSM,AWS,x,,,,Legacy
-cloudhsmv2,cloudhsmv2,cloudhsmv2,cloudhsmv2,,cloudhsmv2,,cloudhsm,CloudHSMV2,CloudHSMV2,,1,,aws_cloudhsm_v2_,aws_cloudhsmv2_,,cloudhsm,CloudHSM,AWS,,,,,
-cloudsearch,cloudsearch,cloudsearch,cloudsearch,,cloudsearch,,,CloudSearch,CloudSearch,,1,,,aws_cloudsearch_,,cloudsearch_,CloudSearch,Amazon,,,,,
-cloudsearchdomain,cloudsearchdomain,cloudsearchdomain,cloudsearchdomain,,cloudsearchdomain,,,CloudSearchDomain,CloudSearchDomain,,1,,,aws_cloudsearchdomain_,,cloudsearchdomain_,CloudSearch Domain,Amazon,,,,,
-,,,,,,,,,,,,,,,,,CloudShell,AWS,x,,,,No SDK support
-cloudtrail,cloudtrail,cloudtrail,cloudtrail,,cloudtrail,,,CloudTrail,CloudTrail,,1,,aws_cloudtrail,aws_cloudtrail_,,cloudtrail,CloudTrail,AWS,,,,,
-cloudwatch,cloudwatch,cloudwatch,cloudwatch,,cloudwatch,,,CloudWatch,CloudWatch,,1,,aws_cloudwatch_(?!(event_|log_|query_)),aws_cloudwatch_,,cloudwatch_dashboard;cloudwatch_metric_;cloudwatch_composite_,CloudWatch,Amazon,,,,,
-application-insights,applicationinsights,applicationinsights,applicationinsights,,applicationinsights,,,ApplicationInsights,ApplicationInsights,,1,,,aws_applicationinsights_,,applicationinsights_,CloudWatch Application Insights,Amazon,,,,,
-evidently,evidently,cloudwatchevidently,evidently,,evidently,,cloudwatchevidently,Evidently,CloudWatchEvidently,,1,,,aws_evidently_,,evidently_,CloudWatch Evidently,Amazon,,,,,
-logs,logs,cloudwatchlogs,cloudwatchlogs,,logs,,cloudwatchlog;cloudwatchlogs,Logs,CloudWatchLogs,,1,,aws_cloudwatch_(log_|query_),aws_logs_,,cloudwatch_log_;cloudwatch_query_,CloudWatch Logs,Amazon,,,,,
-rum,rum,cloudwatchrum,rum,,rum,,cloudwatchrum,RUM,CloudWatchRUM,,1,,,aws_rum_,,rum_,CloudWatch RUM,Amazon,,,,,
-synthetics,synthetics,synthetics,synthetics,,synthetics,,,Synthetics,Synthetics,,1,,,aws_synthetics_,,synthetics_,CloudWatch Synthetics,Amazon,,,,,
-codeartifact,codeartifact,codeartifact,codeartifact,,codeartifact,,,CodeArtifact,CodeArtifact,,1,,,aws_codeartifact_,,codeartifact_,CodeArtifact,AWS,,,,,
-codebuild,codebuild,codebuild,codebuild,,codebuild,,,CodeBuild,CodeBuild,,1,,,aws_codebuild_,,codebuild_,CodeBuild,AWS,,,,,
-codecommit,codecommit,codecommit,codecommit,,codecommit,,,CodeCommit,CodeCommit,,1,,,aws_codecommit_,,codecommit_,CodeCommit,AWS,,,,,
-deploy,deploy,codedeploy,codedeploy,,deploy,,codedeploy,Deploy,CodeDeploy,,1,,aws_codedeploy_,aws_deploy_,,codedeploy_,CodeDeploy,AWS,,,,,
-codeguruprofiler,codeguruprofiler,codeguruprofiler,codeguruprofiler,,codeguruprofiler,,,CodeGuruProfiler,CodeGuruProfiler,,1,,,aws_codeguruprofiler_,,codeguruprofiler_,CodeGuru Profiler,Amazon,,,,,
-codeguru-reviewer,codegurureviewer,codegurureviewer,codegurureviewer,,codegurureviewer,,,CodeGuruReviewer,CodeGuruReviewer,,1,,,aws_codegurureviewer_,,codegurureviewer_,CodeGuru Reviewer,Amazon,,,,,
-codepipeline,codepipeline,codepipeline,codepipeline,,codepipeline,,,CodePipeline,CodePipeline,,1,,aws_codepipeline,aws_codepipeline_,,codepipeline,CodePipeline,AWS,,,,,
-codestar,codestar,codestar,codestar,,codestar,,,CodeStar,CodeStar,,1,,,aws_codestar_,,codestar_,CodeStar,AWS,,,,,
-codestar-connections,codestarconnections,codestarconnections,codestarconnections,,codestarconnections,,,CodeStarConnections,CodeStarConnections,,1,,,aws_codestarconnections_,,codestarconnections_,CodeStar Connections,AWS,,,,,
-codestar-notifications,codestarnotifications,codestarnotifications,codestarnotifications,,codestarnotifications,,,CodeStarNotifications,CodeStarNotifications,,1,,,aws_codestarnotifications_,,codestarnotifications_,CodeStar Notifications,AWS,,,,,
-cognito-identity,cognitoidentity,cognitoidentity,cognitoidentity,,cognitoidentity,,,CognitoIdentity,CognitoIdentity,,1,,aws_cognito_identity_(?!provider),aws_cognitoidentity_,,cognito_identity_pool,Cognito Identity,Amazon,,,,,
-cognito-idp,cognitoidp,cognitoidentityprovider,cognitoidentityprovider,,cognitoidp,,cognitoidentityprovider,CognitoIDP,CognitoIdentityProvider,,1,,aws_cognito_(identity_provider|resource|user|risk),aws_cognitoidp_,,cognito_identity_provider;cognito_resource_;cognito_user;cognito_risk,Cognito IDP (Identity Provider),Amazon,,,,,
-cognito-sync,cognitosync,cognitosync,cognitosync,,cognitosync,,,CognitoSync,CognitoSync,,1,,,aws_cognitosync_,,cognitosync_,Cognito Sync,Amazon,,,,,
-comprehend,comprehend,comprehend,comprehend,,comprehend,,,Comprehend,Comprehend,x,,2,,aws_comprehend_,,comprehend_,Comprehend,Amazon,,,,,
-comprehendmedical,comprehendmedical,comprehendmedical,comprehendmedical,,comprehendmedical,,,ComprehendMedical,ComprehendMedical,,1,,,aws_comprehendmedical_,,comprehendmedical_,Comprehend Medical,Amazon,,,,,
-compute-optimizer,computeoptimizer,computeoptimizer,computeoptimizer,,computeoptimizer,,,ComputeOptimizer,ComputeOptimizer,x,,2,,aws_computeoptimizer_,,computeoptimizer_,Compute Optimizer,AWS,,,,,
-configservice,configservice,configservice,configservice,,configservice,,config,ConfigService,ConfigService,,1,,aws_config_,aws_configservice_,,config_,Config,AWS,,,,,
-connect,connect,connect,connect,,connect,,,Connect,Connect,,1,,,aws_connect_,,connect_,Connect,Amazon,,,,,
-connect-contact-lens,connectcontactlens,connectcontactlens,connectcontactlens,,connectcontactlens,,,ConnectContactLens,ConnectContactLens,,1,,,aws_connectcontactlens_,,connectcontactlens_,Connect Contact Lens,Amazon,,,,,
-customer-profiles,customerprofiles,customerprofiles,customerprofiles,,customerprofiles,,,CustomerProfiles,CustomerProfiles,,1,,,aws_customerprofiles_,,customerprofiles_,Connect Customer Profiles,Amazon,,,,,
-connectparticipant,connectparticipant,connectparticipant,connectparticipant,,connectparticipant,,,ConnectParticipant,ConnectParticipant,,1,,,aws_connectparticipant_,,connectparticipant_,Connect Participant,Amazon,,,,,
-voice-id,voiceid,voiceid,voiceid,,voiceid,,,VoiceID,VoiceID,,1,,,aws_voiceid_,,voiceid_,Connect Voice ID,Amazon,,,,,
-wisdom,wisdom,connectwisdomservice,wisdom,,wisdom,,connectwisdomservice,Wisdom,ConnectWisdomService,,1,,,aws_wisdom_,,wisdom_,Connect Wisdom,Amazon,,,,,
-,,,,,,,,,,,,,,,,,Console Mobile Application,AWS,x,,,,No SDK support
-controltower,controltower,controltower,controltower,,controltower,,,ControlTower,ControlTower,,1,,,aws_controltower_,,controltower_,Control Tower,AWS,,,,,
-cur,cur,costandusagereportservice,costandusagereportservice,,cur,,costandusagereportservice,CUR,CostandUsageReportService,,1,,,aws_cur_,,cur_,Cost and Usage Report,AWS,,,,,
-,,,,,,,,,,,,,,,,,Crypto Tools,AWS,x,,,,No SDK support
-,,,,,,,,,,,,,,,,,Cryptographic Services Overview,AWS,x,,,,No SDK support
-dataexchange,dataexchange,dataexchange,dataexchange,,dataexchange,,,DataExchange,DataExchange,,1,,,aws_dataexchange_,,dataexchange_,Data Exchange,AWS,,,,,
-datapipeline,datapipeline,datapipeline,datapipeline,,datapipeline,,,DataPipeline,DataPipeline,,1,,,aws_datapipeline_,,datapipeline_,Data Pipeline,AWS,,,,,
-datasync,datasync,datasync,datasync,,datasync,,,DataSync,DataSync,,1,,,aws_datasync_,,datasync_,DataSync,AWS,,,,,
-,,,,,,,,,,,,,,,,,Deep Learning AMIs,AWS,x,,,,No SDK support
-,,,,,,,,,,,,,,,,,Deep Learning Containers,AWS,x,,,,No SDK support
-,,,,,,,,,,,,,,,,,DeepComposer,AWS,x,,,,No SDK support
-,,,,,,,,,,,,,,,,,DeepLens,AWS,x,,,,No SDK support
-,,,,,,,,,,,,,,,,,DeepRacer,AWS,x,,,,No SDK support
-detective,detective,detective,detective,,detective,,,Detective,Detective,,1,,,aws_detective_,,detective_,Detective,Amazon,,,,,
-devicefarm,devicefarm,devicefarm,devicefarm,,devicefarm,,,DeviceFarm,DeviceFarm,,1,,,aws_devicefarm_,,devicefarm_,Device Farm,AWS,,,,,
-devops-guru,devopsguru,devopsguru,devopsguru,,devopsguru,,,DevOpsGuru,DevOpsGuru,,1,,,aws_devopsguru_,,devopsguru_,DevOps Guru,Amazon,,,,,
-directconnect,directconnect,directconnect,directconnect,,directconnect,,,DirectConnect,DirectConnect,,1,,aws_dx_,aws_directconnect_,,dx_,Direct Connect,AWS,,,,,
-dlm,dlm,dlm,dlm,,dlm,,,DLM,DLM,,1,,,aws_dlm_,,dlm_,DLM (Data Lifecycle Manager),Amazon,,,,,
-dms,dms,databasemigrationservice,databasemigrationservice,,dms,,databasemigration;databasemigrationservice,DMS,DatabaseMigrationService,,1,,,aws_dms_,,dms_,DMS (Database Migration),AWS,,,,,
-docdb,docdb,docdb,docdb,,docdb,,,DocDB,DocDB,,1,,,aws_docdb_,,docdb_,DocDB (DocumentDB),Amazon,,,,,
-drs,drs,drs,drs,,drs,,,DRS,Drs,,1,,,aws_drs_,,drs_,DRS (Elastic Disaster Recovery),AWS,,,,,
-ds,ds,directoryservice,directoryservice,,ds,,directoryservice,DS,DirectoryService,,1,,aws_directory_service_,aws_ds_,,directory_service_,DS (Directory Service),AWS,,,,,
-dynamodb,dynamodb,dynamodb,dynamodb,,dynamodb,,,DynamoDB,DynamoDB,,1,,,aws_dynamodb_,,dynamodb_,DynamoDB,Amazon,,,AWS_DYNAMODB_ENDPOINT,TF_AWS_DYNAMODB_ENDPOINT,
-dax,dax,dax,dax,,dax,,,DAX,DAX,,1,,,aws_dax_,,dax_,DynamoDB Accelerator (DAX),Amazon,,,,,
-dynamodbstreams,dynamodbstreams,dynamodbstreams,dynamodbstreams,,dynamodbstreams,,,DynamoDBStreams,DynamoDBStreams,,1,,,aws_dynamodbstreams_,,dynamodbstreams_,DynamoDB Streams,Amazon,,,,,
-,,,,,ec2ebs,ec2,,EC2EBS,,,,,aws_(ebs_|volume_attach|snapshot_create),aws_ec2ebs_,ebs_,ebs_;volume_attachment;snapshot_,EBS (EC2),Amazon,x,x,,,Part of EC2
-ebs,ebs,ebs,ebs,,ebs,,,EBS,EBS,,1,,,aws_ebs_,,changewhenimplemented,EBS (Elastic Block Store),Amazon,,,,,
-ec2,ec2,ec2,ec2,,ec2,ec2,,EC2,EC2,,1,,aws_(ami|availability_zone|ec2_(availability|capacity|fleet|host|instance|serial|spot|tag)|eip|instance|key_pair|launch_template|placement_group|spot),aws_ec2_,ec2_,ami;availability_zone;ec2_availability_;ec2_capacity_;ec2_fleet;ec2_host;ec2_instance_;ec2_serial_;ec2_spot_;ec2_tag;eip;instance;key_pair;launch_template;placement_group;spot_,EC2 (Elastic Compute Cloud),Amazon,,,,,
-imagebuilder,imagebuilder,imagebuilder,imagebuilder,,imagebuilder,,,ImageBuilder,Imagebuilder,,1,,,aws_imagebuilder_,,imagebuilder_,EC2 Image Builder,Amazon,,,,,
-ec2-instance-connect,ec2instanceconnect,ec2instanceconnect,ec2instanceconnect,,ec2instanceconnect,,,EC2InstanceConnect,EC2InstanceConnect,,1,,,aws_ec2instanceconnect_,,ec2instanceconnect_,EC2 Instance Connect,AWS,,,,,
-ecr,ecr,ecr,ecr,,ecr,,,ECR,ECR,,1,,,aws_ecr_,,ecr_,ECR (Elastic Container Registry),Amazon,,,,,
-ecr-public,ecrpublic,ecrpublic,ecrpublic,,ecrpublic,,,ECRPublic,ECRPublic,,1,,,aws_ecrpublic_,,ecrpublic_,ECR Public,Amazon,,,,,
-ecs,ecs,ecs,ecs,,ecs,,,ECS,ECS,,1,,,aws_ecs_,,ecs_,ECS (Elastic Container),Amazon,,,,,
-efs,efs,efs,efs,,efs,,,EFS,EFS,,1,,,aws_efs_,,efs_,EFS (Elastic File System),Amazon,,,,,
-eks,eks,eks,eks,,eks,,,EKS,EKS,,1,,,aws_eks_,,eks_,EKS (Elastic Kubernetes),Amazon,,,,,
-elasticbeanstalk,elasticbeanstalk,elasticbeanstalk,elasticbeanstalk,,elasticbeanstalk,,beanstalk,ElasticBeanstalk,ElasticBeanstalk,,1,,aws_elastic_beanstalk_,aws_elasticbeanstalk_,,elastic_beanstalk_,Elastic Beanstalk,AWS,,,,,
-elastic-inference,elasticinference,elasticinference,elasticinference,,elasticinference,,,ElasticInference,ElasticInference,,1,,,aws_elasticinference_,,elasticinference_,Elastic Inference,Amazon,,,,,
-elastictranscoder,elastictranscoder,elastictranscoder,elastictranscoder,,elastictranscoder,,,ElasticTranscoder,ElasticTranscoder,,1,,,aws_elastictranscoder_,,elastictranscoder_,Elastic Transcoder,Amazon,,,,,
-elasticache,elasticache,elasticache,elasticache,,elasticache,,,ElastiCache,ElastiCache,,1,,,aws_elasticache_,,elasticache_,ElastiCache,Amazon,,,,,
-es,es,elasticsearchservice,elasticsearchservice,elasticsearch,es,,es;elasticsearchservice,Elasticsearch,ElasticsearchService,,1,,aws_elasticsearch_,aws_es_,,elasticsearch_,Elasticsearch,Amazon,,,,,
-elbv2,elbv2,elbv2,elasticloadbalancingv2,,elbv2,,elasticloadbalancingv2,ELBV2,ELBV2,,1,,aws_a?lb(\b|_listener|_target_group),aws_elbv2_,,lb\.;lb_listener;lb_target_group;lb_hosted,ELB (Elastic Load Balancing),,,,,,
-elb,elb,elb,elasticloadbalancing,,elb,,elasticloadbalancing,ELB,ELB,,1,,aws_(app_cookie_stickiness_policy|elb|lb_cookie_stickiness_policy|lb_ssl_negotiation_policy|load_balancer_|proxy_protocol_policy),aws_elb_,,app_cookie_stickiness_policy;elb;lb_cookie_stickiness_policy;lb_ssl_negotiation_policy;load_balancer;proxy_protocol_policy,ELB Classic,,,,,,
-mediaconnect,mediaconnect,mediaconnect,mediaconnect,,mediaconnect,,,MediaConnect,MediaConnect,,1,,,aws_mediaconnect_,,media_connect_,Elemental MediaConnect,AWS,,,,,
-mediaconvert,mediaconvert,mediaconvert,mediaconvert,,mediaconvert,,,MediaConvert,MediaConvert,,1,,aws_media_convert_,aws_mediaconvert_,,media_convert_,Elemental MediaConvert,AWS,,,,,
-medialive,medialive,medialive,medialive,,medialive,,,MediaLive,MediaLive,x,,2,,aws_medialive_,,medialive_,Elemental MediaLive,AWS,,,,,
-mediapackage,mediapackage,mediapackage,mediapackage,,mediapackage,,,MediaPackage,MediaPackage,,1,,aws_media_package_,aws_mediapackage_,,media_package_,Elemental MediaPackage,AWS,,,,,
-mediapackage-vod,mediapackagevod,mediapackagevod,mediapackagevod,,mediapackagevod,,,MediaPackageVOD,MediaPackageVod,,1,,,aws_mediapackagevod_,,mediapackagevod_,Elemental MediaPackage VOD,AWS,,,,,
-mediastore,mediastore,mediastore,mediastore,,mediastore,,,MediaStore,MediaStore,,1,,aws_media_store_,aws_mediastore_,,media_store_,Elemental MediaStore,AWS,,,,,
-mediastore-data,mediastoredata,mediastoredata,mediastoredata,,mediastoredata,,,MediaStoreData,MediaStoreData,,1,,,aws_mediastoredata_,,mediastoredata_,Elemental MediaStore Data,AWS,,,,,
-mediatailor,mediatailor,mediatailor,mediatailor,,mediatailor,,,MediaTailor,MediaTailor,,1,,,aws_mediatailor_,,media_tailor_,Elemental MediaTailor,AWS,,,,,
-,,,,,,,,,,,,,,,,,Elemental On-Premises,AWS,x,,,,No SDK support
-emr,emr,emr,emr,,emr,,,EMR,EMR,,1,,,aws_emr_,,emr_,EMR,Amazon,,,,,
-emr-containers,emrcontainers,emrcontainers,emrcontainers,,emrcontainers,,,EMRContainers,EMRContainers,,1,,,aws_emrcontainers_,,emrcontainers_,EMR Containers,Amazon,,,,,
-emr-serverless,emrserverless,emrserverless,emrserverless,,emrserverless,,,EMRServerless,EMRServerless,,1,,,aws_emrserverless_,,emrserverless_,EMR Serverless,Amazon,,,,,
-,,,,,,,,,,,,,,,,,End-of-Support Migration Program (EMP) for Windows Server,AWS,x,,,,No SDK support
-events,events,eventbridge,eventbridge,,events,,eventbridge;cloudwatchevents,Events,EventBridge,,1,,aws_cloudwatch_event_,aws_events_,,cloudwatch_event_,EventBridge,Amazon,,,,,
-schemas,schemas,schemas,schemas,,schemas,,,Schemas,Schemas,,1,,,aws_schemas_,,schemas_,EventBridge Schemas,Amazon,,,,,
-fis,fis,fis,fis,,fis,,,FIS,FIS,x,,2,,aws_fis_,,fis_,FIS (Fault Injection Simulator),AWS,,,,,
-finspace,finspace,finspace,finspace,,finspace,,,FinSpace,Finspace,,1,,,aws_finspace_,,finspace_,FinSpace,Amazon,,,,,
-finspace-data,finspacedata,finspacedata,finspacedata,,finspacedata,,,FinSpaceData,FinSpaceData,,1,,,aws_finspacedata_,,finspacedata_,FinSpace Data,Amazon,,,,,
-fms,fms,fms,fms,,fms,,,FMS,FMS,,1,,,aws_fms_,,fms_,FMS (Firewall Manager),AWS,,,,,
-forecast,forecast,forecastservice,forecast,,forecast,,forecastservice,Forecast,ForecastService,,1,,,aws_forecast_,,forecast_,Forecast,Amazon,,,,,
-forecastquery,forecastquery,forecastqueryservice,forecastquery,,forecastquery,,forecastqueryservice,ForecastQuery,ForecastQueryService,,1,,,aws_forecastquery_,,forecastquery_,Forecast Query,Amazon,,,,,
-frauddetector,frauddetector,frauddetector,frauddetector,,frauddetector,,,FraudDetector,FraudDetector,,1,,,aws_frauddetector_,,frauddetector_,Fraud Detector,Amazon,,,,,
-,,,,,,,,,,,,,,,,,FreeRTOS,,x,,,,No SDK support
-fsx,fsx,fsx,fsx,,fsx,,,FSx,FSx,,1,,,aws_fsx_,,fsx_,FSx,Amazon,,,,,
-gamelift,gamelift,gamelift,gamelift,,gamelift,,,GameLift,GameLift,,1,,,aws_gamelift_,,gamelift_,GameLift,Amazon,,,,,
-globalaccelerator,globalaccelerator,globalaccelerator,globalaccelerator,,globalaccelerator,,,GlobalAccelerator,GlobalAccelerator,x,1,,,aws_globalaccelerator_,,globalaccelerator_,Global Accelerator,AWS,,,,,
-glue,glue,glue,glue,,glue,,,Glue,Glue,,1,,,aws_glue_,,glue_,Glue,AWS,,,,,
-databrew,databrew,gluedatabrew,databrew,,databrew,,gluedatabrew,DataBrew,GlueDataBrew,,1,,,aws_databrew_,,databrew_,Glue DataBrew,AWS,,,,,
-groundstation,groundstation,groundstation,groundstation,,groundstation,,,GroundStation,GroundStation,,1,,,aws_groundstation_,,groundstation_,Ground Station,AWS,,,,,
-guardduty,guardduty,guardduty,guardduty,,guardduty,,,GuardDuty,GuardDuty,,1,,,aws_guardduty_,,guardduty_,GuardDuty,Amazon,,,,,
-health,health,health,health,,health,,,Health,Health,,1,,,aws_health_,,health_,Health,AWS,,,,,
-healthlake,healthlake,healthlake,healthlake,,healthlake,,,HealthLake,HealthLake,,1,,,aws_healthlake_,,healthlake_,HealthLake,Amazon,,,,,
-honeycode,honeycode,honeycode,honeycode,,honeycode,,,Honeycode,Honeycode,,1,,,aws_honeycode_,,honeycode_,Honeycode,Amazon,,,,,
-iam,iam,iam,iam,,iam,,,IAM,IAM,,1,,,aws_iam_,,iam_,IAM (Identity & Access Management),AWS,,,AWS_IAM_ENDPOINT,TF_AWS_IAM_ENDPOINT,
-accessanalyzer,accessanalyzer,accessanalyzer,accessanalyzer,,accessanalyzer,,,AccessAnalyzer,AccessAnalyzer,,1,,,aws_accessanalyzer_,,accessanalyzer_,IAM Access Analyzer,AWS,,,,,
-inspector,inspector,inspector,inspector,,inspector,,,Inspector,Inspector,,1,,,aws_inspector_,,inspector_,Inspector,Amazon,,,,,
-inspector2,inspector2,inspector2,inspector2,,inspector2,,inspectorv2,Inspector2,Inspector2,x,,2,,aws_inspector2_,,inspector2_,Inspector V2,Amazon,,,,,
-iot1click-devices,iot1clickdevices,iot1clickdevicesservice,iot1clickdevicesservice,,iot1clickdevices,,iot1clickdevicesservice,IoT1ClickDevices,IoT1ClickDevicesService,,1,,,aws_iot1clickdevices_,,iot1clickdevices_,IoT 1-Click Devices,AWS,,,,,
-iot1click-projects,iot1clickprojects,iot1clickprojects,iot1clickprojects,,iot1clickprojects,,,IoT1ClickProjects,IoT1ClickProjects,,1,,,aws_iot1clickprojects_,,iot1clickprojects_,IoT 1-Click Projects,AWS,,,,,
-iotanalytics,iotanalytics,iotanalytics,iotanalytics,,iotanalytics,,,IoTAnalytics,IoTAnalytics,,1,,,aws_iotanalytics_,,iotanalytics_,IoT Analytics,AWS,,,,,
-iot,iot,iot,iot,,iot,,,IoT,IoT,,1,,,aws_iot_,,iot_,IoT Core,AWS,,,,,
-iot-data,iotdata,iotdataplane,iotdataplane,,iotdata,,iotdataplane,IoTData,IoTDataPlane,,1,,,aws_iotdata_,,iotdata_,IoT Data Plane,AWS,,,,,
-,,,,,,,,,,,,,,,,,IoT Device Defender,AWS,x,,,,Part of IoT
-iotdeviceadvisor,iotdeviceadvisor,iotdeviceadvisor,iotdeviceadvisor,,iotdeviceadvisor,,,IoTDeviceAdvisor,IoTDeviceAdvisor,,1,,,aws_iotdeviceadvisor_,,iotdeviceadvisor_,IoT Device Management,AWS,,,,,
-iotevents,iotevents,iotevents,iotevents,,iotevents,,,IoTEvents,IoTEvents,,1,,,aws_iotevents_,,iotevents_,IoT Events,AWS,,,,,
-iotevents-data,ioteventsdata,ioteventsdata,ioteventsdata,,ioteventsdata,,,IoTEventsData,IoTEventsData,,1,,,aws_ioteventsdata_,,ioteventsdata_,IoT Events Data,AWS,,,,,
-,,,,,,,,,,,,,,,,,IoT ExpressLink,AWS,x,,,,No SDK support
-iotfleethub,iotfleethub,iotfleethub,iotfleethub,,iotfleethub,,,IoTFleetHub,IoTFleetHub,,1,,,aws_iotfleethub_,,iotfleethub_,IoT Fleet Hub,AWS,,,,,
-,,,,,,,,,,,,,,,,,IoT FleetWise,AWS,x,,,,No SDK support
-greengrass,greengrass,greengrass,greengrass,,greengrass,,,Greengrass,Greengrass,,1,,,aws_greengrass_,,greengrass_,IoT Greengrass,AWS,,,,,
-greengrassv2,greengrassv2,greengrassv2,greengrassv2,,greengrassv2,,,GreengrassV2,GreengrassV2,,1,,,aws_greengrassv2_,,greengrassv2_,IoT Greengrass V2,AWS,,,,,
-iot-jobs-data,iotjobsdata,iotjobsdataplane,iotjobsdataplane,,iotjobsdata,,iotjobsdataplane,IoTJobsData,IoTJobsDataPlane,,1,,,aws_iotjobsdata_,,iotjobsdata_,IoT Jobs Data Plane,AWS,,,,,
-,,,,,,,,,,,,,,,,,IoT RoboRunner,AWS,x,,,,No SDK support
-iotsecuretunneling,iotsecuretunneling,iotsecuretunneling,iotsecuretunneling,,iotsecuretunneling,,,IoTSecureTunneling,IoTSecureTunneling,,1,,,aws_iotsecuretunneling_,,iotsecuretunneling_,IoT Secure Tunneling,AWS,,,,,
-iotsitewise,iotsitewise,iotsitewise,iotsitewise,,iotsitewise,,,IoTSiteWise,IoTSiteWise,,1,,,aws_iotsitewise_,,iotsitewise_,IoT SiteWise,AWS,,,,,
-iotthingsgraph,iotthingsgraph,iotthingsgraph,iotthingsgraph,,iotthingsgraph,,,IoTThingsGraph,IoTThingsGraph,,1,,,aws_iotthingsgraph_,,iotthingsgraph_,IoT Things Graph,AWS,,,,,
-iottwinmaker,iottwinmaker,iottwinmaker,iottwinmaker,,iottwinmaker,,,IoTTwinMaker,IoTTwinMaker,,1,,,aws_iottwinmaker_,,iottwinmaker_,IoT TwinMaker,AWS,,,,,
-iotwireless,iotwireless,iotwireless,iotwireless,,iotwireless,,,IoTWireless,IoTWireless,,1,,,aws_iotwireless_,,iotwireless_,IoT Wireless,AWS,,,,,
-,,,,,,,,,,,,,,,,,IQ,AWS,x,,,,No SDK support
-ivs,ivs,ivs,ivs,,ivs,,,IVS,IVS,,1,,,aws_ivs_,,ivs_,IVS (Interactive Video),Amazon,,,,,
-ivschat,ivschat,ivschat,ivschat,,ivschat,,,IVSChat,Ivschat,,,2,,aws_ivschat_,,ivschat_,IVS (Interactive Video) Chat,Amazon,,,,,
-kendra,kendra,kendra,kendra,,kendra,,,Kendra,Kendra,x,,2,,aws_kendra_,,kendra_,Kendra,Amazon,,,,,
-keyspaces,keyspaces,keyspaces,,,keyspaces,,,Keyspaces,Keyspaces,,1,,,aws_keyspaces_,,keyspaces_,Keyspaces (for Apache Cassandra),Amazon,,,,,
-kinesis,kinesis,kinesis,kinesis,,kinesis,,,Kinesis,Kinesis,,1,,aws_kinesis_stream,aws_kinesis_,,kinesis_stream,Kinesis,Amazon,,,,,
-kinesisanalytics,kinesisanalytics,kinesisanalytics,kinesisanalytics,,kinesisanalytics,,,KinesisAnalytics,KinesisAnalytics,,1,,aws_kinesis_analytics_,aws_kinesisanalytics_,,kinesis_analytics_,Kinesis Analytics,Amazon,,,,,
-kinesisanalyticsv2,kinesisanalyticsv2,kinesisanalyticsv2,kinesisanalyticsv2,,kinesisanalyticsv2,,,KinesisAnalyticsV2,KinesisAnalyticsV2,,1,,,aws_kinesisanalyticsv2_,,kinesisanalyticsv2_,Kinesis Analytics V2,Amazon,,,,,
-firehose,firehose,firehose,firehose,,firehose,,,Firehose,Firehose,,1,,aws_kinesis_firehose_,aws_firehose_,,kinesis_firehose_,Kinesis Firehose,Amazon,,,,,
-kinesisvideo,kinesisvideo,kinesisvideo,kinesisvideo,,kinesisvideo,,,KinesisVideo,KinesisVideo,,1,,,aws_kinesisvideo_,,kinesis_video_,Kinesis Video,Amazon,,,,,
-kinesis-video-archived-media,kinesisvideoarchivedmedia,kinesisvideoarchivedmedia,kinesisvideoarchivedmedia,,kinesisvideoarchivedmedia,,,KinesisVideoArchivedMedia,KinesisVideoArchivedMedia,,1,,,aws_kinesisvideoarchivedmedia_,,kinesisvideoarchivedmedia_,Kinesis Video Archived Media,Amazon,,,,,
-kinesis-video-media,kinesisvideomedia,kinesisvideomedia,kinesisvideomedia,,kinesisvideomedia,,,KinesisVideoMedia,KinesisVideoMedia,,1,,,aws_kinesisvideomedia_,,kinesisvideomedia_,Kinesis Video Media,Amazon,,,,,
-kinesis-video-signaling,kinesisvideosignaling,kinesisvideosignalingchannels,kinesisvideosignaling,,kinesisvideosignaling,,kinesisvideosignalingchannels,KinesisVideoSignaling,KinesisVideoSignalingChannels,,1,,,aws_kinesisvideosignaling_,,kinesisvideosignaling_,Kinesis Video Signaling,Amazon,,,,,
-kms,kms,kms,kms,,kms,,,KMS,KMS,,1,,,aws_kms_,,kms_,KMS (Key Management),AWS,,,,,
-lakeformation,lakeformation,lakeformation,lakeformation,,lakeformation,,,LakeFormation,LakeFormation,,1,,,aws_lakeformation_,,lakeformation_,Lake Formation,AWS,,,,,
-lambda,lambda,lambda,lambda,,lambda,,,Lambda,Lambda,,1,,,aws_lambda_,,lambda_,Lambda,AWS,,,,,
-,,,,,,,,,,,,,,,,,Launch Wizard,AWS,x,,,,No SDK support
-lex-models,lexmodels,lexmodelbuildingservice,lexmodelbuildingservice,,lexmodels,,lexmodelbuilding;lexmodelbuildingservice;lex,LexModels,LexModelBuildingService,,1,,aws_lex_,aws_lexmodels_,,lex_,Lex Model Building,Amazon,,,,,
-lexv2-models,lexv2models,lexmodelsv2,lexmodelsv2,,lexmodelsv2,,lexv2models,LexModelsV2,LexModelsV2,,1,,,aws_lexmodelsv2_,,lexmodelsv2_,Lex Models V2,Amazon,,,,,
-lex-runtime,lexruntime,lexruntimeservice,lexruntimeservice,,lexruntime,,lexruntimeservice,LexRuntime,LexRuntimeService,,1,,,aws_lexruntime_,,lexruntime_,Lex Runtime,Amazon,,,,,
-lexv2-runtime,lexv2runtime,lexruntimev2,lexruntimev2,,lexruntimev2,,lexv2runtime,LexRuntimeV2,LexRuntimeV2,,1,,,aws_lexruntimev2_,,lexruntimev2_,Lex Runtime V2,Amazon,,,,,
-license-manager,licensemanager,licensemanager,licensemanager,,licensemanager,,,LicenseManager,LicenseManager,,1,,,aws_licensemanager_,,licensemanager_,License Manager,AWS,,,,,
-lightsail,lightsail,lightsail,lightsail,,lightsail,,,Lightsail,Lightsail,,1,,,aws_lightsail_,,lightsail_,Lightsail,Amazon,,,,,
-location,location,locationservice,location,,location,,locationservice,Location,LocationService,,1,,,aws_location_,,location_,Location,Amazon,,,,,
-lookoutequipment,lookoutequipment,lookoutequipment,lookoutequipment,,lookoutequipment,,,LookoutEquipment,LookoutEquipment,,1,,,aws_lookoutequipment_,,lookoutequipment_,Lookout for Equipment,Amazon,,,,,
-lookoutmetrics,lookoutmetrics,lookoutmetrics,lookoutmetrics,,lookoutmetrics,,,LookoutMetrics,LookoutMetrics,,1,,,aws_lookoutmetrics_,,lookoutmetrics_,Lookout for Metrics,Amazon,,,,,
-lookoutvision,lookoutvision,lookoutforvision,lookoutvision,,lookoutvision,,lookoutforvision,LookoutVision,LookoutForVision,,1,,,aws_lookoutvision_,,lookoutvision_,Lookout for Vision,Amazon,,,,,
-,,,,,,,,,,,,,,,,,Lumberyard,Amazon,x,,,,No SDK support
-machinelearning,machinelearning,machinelearning,machinelearning,,machinelearning,,,MachineLearning,MachineLearning,,1,,,aws_machinelearning_,,machinelearning_,Machine Learning,Amazon,,,,,
-macie2,macie2,macie2,macie2,,macie2,,,Macie2,Macie2,,1,,,aws_macie2_,,macie2_,Macie,Amazon,,,,,
-macie,macie,macie,macie,,macie,,,Macie,Macie,,1,,,aws_macie_,,macie_,Macie Classic,Amazon,,,,,
-,,,,,,,,,,,,,,,,,Mainframe Modernization,AWS,x,,,,No SDK support
-managedblockchain,managedblockchain,managedblockchain,managedblockchain,,managedblockchain,,,ManagedBlockchain,ManagedBlockchain,,1,,,aws_managedblockchain_,,managedblockchain_,Managed Blockchain,Amazon,,,,,
-grafana,grafana,managedgrafana,grafana,,grafana,,managedgrafana;amg,Grafana,ManagedGrafana,,1,,,aws_grafana_,,grafana_,Managed Grafana,Amazon,,,,,
-kafka,kafka,kafka,kafka,,kafka,,msk,Kafka,Kafka,,1,,aws_msk_,aws_kafka_,,msk_,Managed Streaming for Kafka,Amazon,,,,,
-kafkaconnect,kafkaconnect,kafkaconnect,kafkaconnect,,kafkaconnect,,,KafkaConnect,KafkaConnect,,1,,aws_mskconnect_,aws_kafkaconnect_,,mskconnect_,Managed Streaming for Kafka Connect,Amazon,,,,,
-,,,,,,,,,,,,,,,,,Management Console,AWS,x,,,,No SDK support
-marketplace-catalog,marketplacecatalog,marketplacecatalog,marketplacecatalog,,marketplacecatalog,,,MarketplaceCatalog,MarketplaceCatalog,,1,,,aws_marketplacecatalog_,,marketplace_catalog_,Marketplace Catalog,AWS,,,,,
-marketplacecommerceanalytics,marketplacecommerceanalytics,marketplacecommerceanalytics,marketplacecommerceanalytics,,marketplacecommerceanalytics,,,MarketplaceCommerceAnalytics,MarketplaceCommerceAnalytics,,1,,,aws_marketplacecommerceanalytics_,,marketplacecommerceanalytics_,Marketplace Commerce Analytics,AWS,,,,,
-marketplace-entitlement,marketplaceentitlement,marketplaceentitlementservice,marketplaceentitlementservice,,marketplaceentitlement,,marketplaceentitlementservice,MarketplaceEntitlement,MarketplaceEntitlementService,,1,,,aws_marketplaceentitlement_,,marketplaceentitlement_,Marketplace Entitlement,AWS,,,,,
-meteringmarketplace,meteringmarketplace,marketplacemetering,marketplacemetering,,marketplacemetering,,meteringmarketplace,MarketplaceMetering,MarketplaceMetering,,1,,,aws_marketplacemetering_,,marketplacemetering_,Marketplace Metering,AWS,,,,,
-memorydb,memorydb,memorydb,memorydb,,memorydb,,,MemoryDB,MemoryDB,,1,,,aws_memorydb_,,memorydb_,MemoryDB for Redis,Amazon,,,,,
-,,,,,meta,,,Meta,,,,,aws_(arn|billing_service_account|default_tags|ip_ranges|partition|regions?|service)$,aws_meta_,,arn;ip_ranges;billing_service_account;default_tags;partition;region;service\.,Meta Data Sources,,x,x,,,Not an AWS service (metadata)
-mgh,mgh,migrationhub,migrationhub,,mgh,,migrationhub,MgH,MigrationHub,,1,,,aws_mgh_,,mgh_,MgH (Migration Hub),AWS,,,,,
-,,,,,,,,,,,,,,,,,Microservice Extractor for .NET,AWS,x,,,,No SDK support
-migrationhub-config,migrationhubconfig,migrationhubconfig,migrationhubconfig,,migrationhubconfig,,,MigrationHubConfig,MigrationHubConfig,,1,,,aws_migrationhubconfig_,,migrationhubconfig_,Migration Hub Config,AWS,,,,,
-migration-hub-refactor-spaces,migrationhubrefactorspaces,migrationhubrefactorspaces,migrationhubrefactorspaces,,migrationhubrefactorspaces,,,MigrationHubRefactorSpaces,MigrationHubRefactorSpaces,,1,,,aws_migrationhubrefactorspaces_,,migrationhubrefactorspaces_,Migration Hub Refactor Spaces,AWS,,,,,
-migrationhubstrategy,migrationhubstrategy,migrationhubstrategyrecommendations,migrationhubstrategy,,migrationhubstrategy,,migrationhubstrategyrecommendations,MigrationHubStrategy,MigrationHubStrategyRecommendations,,1,,,aws_migrationhubstrategy_,,migrationhubstrategy_,Migration Hub Strategy,AWS,,,,,
-mobile,mobile,mobile,mobile,,mobile,,,Mobile,Mobile,,1,,,aws_mobile_,,mobile_,Mobile,AWS,,,,,
-,,mobileanalytics,,,,,,MobileAnalytics,MobileAnalytics,,,,,,,,Mobile Analytics,AWS,x,,,,Only in Go SDK v1
-,,,,,,,,,,,,,,,,,Mobile SDK for Unity,AWS,x,,,,No SDK support
-,,,,,,,,,,,,,,,,,Mobile SDK for Xamarin,AWS,x,,,,No SDK support
-,,,,,,,,,,,,,,,,,Monitron,Amazon,x,,,,No SDK support
-mq,mq,mq,mq,,mq,,,MQ,MQ,,1,,,aws_mq_,,mq_,MQ,Amazon,,,,,
-mturk,mturk,mturk,mturk,,mturk,,,MTurk,MTurk,,1,,,aws_mturk_,,mturk_,MTurk (Mechanical Turk),Amazon,,,,,
-mwaa,mwaa,mwaa,mwaa,,mwaa,,,MWAA,MWAA,,1,,,aws_mwaa_,,mwaa_,MWAA (Managed Workflows for Apache Airflow),Amazon,,,,,
-neptune,neptune,neptune,neptune,,neptune,,,Neptune,Neptune,,1,,,aws_neptune_,,neptune_,Neptune,Amazon,,,,,
-network-firewall,networkfirewall,networkfirewall,networkfirewall,,networkfirewall,,,NetworkFirewall,NetworkFirewall,,1,,,aws_networkfirewall_,,networkfirewall_,Network Firewall,AWS,,,,,
-networkmanager,networkmanager,networkmanager,networkmanager,,networkmanager,,,NetworkManager,NetworkManager,,1,,,aws_networkmanager_,,networkmanager_,Network Manager,AWS,,,,,
-,,,,,,,,,,,,,,,,,NICE DCV,,x,,,,No SDK support
-nimble,nimble,nimblestudio,nimble,,nimble,,nimblestudio,Nimble,NimbleStudio,,1,,,aws_nimble_,,nimble_,Nimble Studio,Amazon,,,,,
-opensearch,opensearch,opensearchservice,opensearch,,opensearch,,opensearchservice,OpenSearch,OpenSearchService,,1,,,aws_opensearch_,,opensearch_,OpenSearch,Amazon,,,,,
-opsworks,opsworks,opsworks,opsworks,,opsworks,,,OpsWorks,OpsWorks,,1,,,aws_opsworks_,,opsworks_,OpsWorks,AWS,,,,,
-opsworks-cm,opsworkscm,opsworkscm,opsworkscm,,opsworkscm,,,OpsWorksCM,OpsWorksCM,,1,,,aws_opsworkscm_,,opsworkscm_,OpsWorks CM,AWS,,,,,
-organizations,organizations,organizations,organizations,,organizations,,,Organizations,Organizations,,1,,,aws_organizations_,,organizations_,Organizations,AWS,,,,,
-outposts,outposts,outposts,outposts,,outposts,,,Outposts,Outposts,,1,,,aws_outposts_,,outposts_,Outposts,AWS,,,,,
-,,,,,ec2outposts,ec2,,EC2Outposts,,,,,aws_ec2_(coip_pool|local_gateway),aws_ec2outposts_,outposts_,ec2_coip_pool;ec2_local_gateway,Outposts (EC2),AWS,x,x,,,Part of EC2
-panorama,panorama,panorama,panorama,,panorama,,,Panorama,Panorama,,1,,,aws_panorama_,,panorama_,Panorama,AWS,,,,,
-,,,,,,,,,,,,,,,,,ParallelCluster,AWS,x,,,,No SDK support
-personalize,personalize,personalize,personalize,,personalize,,,Personalize,Personalize,,1,,,aws_personalize_,,personalize_,Personalize,Amazon,,,,,
-personalize-events,personalizeevents,personalizeevents,personalizeevents,,personalizeevents,,,PersonalizeEvents,PersonalizeEvents,,1,,,aws_personalizeevents_,,personalizeevents_,Personalize Events,Amazon,,,,,
-personalize-runtime,personalizeruntime,personalizeruntime,personalizeruntime,,personalizeruntime,,,PersonalizeRuntime,PersonalizeRuntime,,1,,,aws_personalizeruntime_,,personalizeruntime_,Personalize Runtime,Amazon,,,,,
-pinpoint,pinpoint,pinpoint,pinpoint,,pinpoint,,,Pinpoint,Pinpoint,,1,,,aws_pinpoint_,,pinpoint_,Pinpoint,Amazon,,,,,
-pinpoint-email,pinpointemail,pinpointemail,pinpointemail,,pinpointemail,,,PinpointEmail,PinpointEmail,,1,,,aws_pinpointemail_,,pinpointemail_,Pinpoint Email,Amazon,,,,,
-pinpoint-sms-voice,pinpointsmsvoice,pinpointsmsvoice,pinpointsmsvoice,,pinpointsmsvoice,,,PinpointSMSVoice,PinpointSMSVoice,,1,,,aws_pinpointsmsvoice_,,pinpointsmsvoice_,Pinpoint SMS and Voice,Amazon,,,,,
-polly,polly,polly,polly,,polly,,,Polly,Polly,,1,,,aws_polly_,,polly_,Polly,Amazon,,,,,
-,,,,,,,,,,,,,,,,,Porting Assistant for .NET,,x,,,,No SDK support
-pricing,pricing,pricing,pricing,,pricing,,,Pricing,Pricing,,1,,,aws_pricing_,,pricing_,Pricing Calculator,AWS,,,,,
-proton,proton,proton,proton,,proton,,,Proton,Proton,,1,,,aws_proton_,,proton_,Proton,AWS,,,,,
-qldb,qldb,qldb,qldb,,qldb,,,QLDB,QLDB,,1,,,aws_qldb_,,qldb_,QLDB (Quantum Ledger Database),Amazon,,,,,
-qldb-session,qldbsession,qldbsession,qldbsession,,qldbsession,,,QLDBSession,QLDBSession,,1,,,aws_qldbsession_,,qldbsession_,QLDB Session,Amazon,,,,,
-quicksight,quicksight,quicksight,quicksight,,quicksight,,,QuickSight,QuickSight,,1,,,aws_quicksight_,,quicksight_,QuickSight,Amazon,,,,,
-ram,ram,ram,ram,,ram,,,RAM,RAM,,1,,,aws_ram_,,ram_,RAM (Resource Access Manager),AWS,,,,,
-rds,rds,rds,rds,,rds,,,RDS,RDS,,1,,aws_(db_|rds_),aws_rds_,,rds_;db_,RDS (Relational Database),Amazon,,,,,
-rds-data,rdsdata,rdsdataservice,rdsdata,,rdsdata,,rdsdataservice,RDSData,RDSDataService,,1,,,aws_rdsdata_,,rdsdata_,RDS Data,Amazon,,,,,
-pi,pi,pi,pi,,pi,,,PI,PI,,1,,,aws_pi_,,pi_,RDS Performance Insights (PI),Amazon,,,,,
-rbin,rbin,recyclebin,rbin,,rbin,,recyclebin,RBin,RecycleBin,,1,,,aws_rbin_,,rbin_,Recycle Bin (RBin),Amazon,,,,,
-,,,,,,,,,,,,,,,,,Red Hat OpenShift Service on AWS (ROSA),AWS,x,,,,No SDK support
-redshift,redshift,redshift,redshift,,redshift,,,Redshift,Redshift,,1,,,aws_redshift_,,redshift_,Redshift,Amazon,,,,,
-redshift-data,redshiftdata,redshiftdataapiservice,redshiftdata,,redshiftdata,,redshiftdataapiservice,RedshiftData,RedshiftDataAPIService,,1,,,aws_redshiftdata_,,redshiftdata_,Redshift Data,Amazon,,,,,
-redshift-serverless,redshiftserverless,redshiftserverless,redshiftserverless,,redshiftserverless,,,RedshiftServerless,RedshiftServerless,,1,,,aws_redshiftserverless_,,redshiftserverless_,Redshift Serverless,Amazon,,,,,
-rekognition,rekognition,rekognition,rekognition,,rekognition,,,Rekognition,Rekognition,,1,,,aws_rekognition_,,rekognition_,Rekognition,Amazon,,,,,
-resiliencehub,resiliencehub,resiliencehub,resiliencehub,,resiliencehub,,,ResilienceHub,ResilienceHub,,1,,,aws_resiliencehub_,,resiliencehub_,Resilience Hub,AWS,,,,,
-resource-groups,resourcegroups,resourcegroups,resourcegroups,,resourcegroups,,,ResourceGroups,ResourceGroups,,1,,,aws_resourcegroups_,,resourcegroups_,Resource Groups,AWS,,,,,
-resourcegroupstaggingapi,resourcegroupstaggingapi,resourcegroupstaggingapi,resourcegroupstaggingapi,,resourcegroupstaggingapi,,resourcegroupstagging,ResourceGroupsTaggingAPI,ResourceGroupsTaggingAPI,,1,,,aws_resourcegroupstaggingapi_,,resourcegroupstaggingapi_,Resource Groups Tagging,AWS,,,,,
-robomaker,robomaker,robomaker,robomaker,,robomaker,,,RoboMaker,RoboMaker,,1,,,aws_robomaker_,,robomaker_,RoboMaker,AWS,,,,,
-rolesanywhere,rolesanywhere,rolesanywhere,rolesanywhere,,rolesanywhere,,,RolesAnywhere,RolesAnywhere,x,,2,,aws_rolesanywhere_,,rolesanywhere_,Roles Anywhere,AWS,,,,,
-route53,route53,route53,route53,,route53,,,Route53,Route53,x,1,,aws_route53_(?!resolver_),aws_route53_,,route53_delegation_;route53_health_;route53_hosted_;route53_key_;route53_query_;route53_record;route53_traffic_;route53_vpc_;route53_zone,Route 53,Amazon,,,,,
-route53domains,route53domains,route53domains,route53domains,,route53domains,,,Route53Domains,Route53Domains,x,,2,,aws_route53domains_,,route53domains_,Route 53 Domains,Amazon,,,,,
-route53-recovery-cluster,route53recoverycluster,route53recoverycluster,route53recoverycluster,,route53recoverycluster,,,Route53RecoveryCluster,Route53RecoveryCluster,,1,,,aws_route53recoverycluster_,,route53recoverycluster_,Route 53 Recovery Cluster,Amazon,,,,,
-route53-recovery-control-config,route53recoverycontrolconfig,route53recoverycontrolconfig,route53recoverycontrolconfig,,route53recoverycontrolconfig,,,Route53RecoveryControlConfig,Route53RecoveryControlConfig,x,1,,,aws_route53recoverycontrolconfig_,,route53recoverycontrolconfig_,Route 53 Recovery Control Config,Amazon,,,,,
-route53-recovery-readiness,route53recoveryreadiness,route53recoveryreadiness,route53recoveryreadiness,,route53recoveryreadiness,,,Route53RecoveryReadiness,Route53RecoveryReadiness,x,1,,,aws_route53recoveryreadiness_,,route53recoveryreadiness_,Route 53 Recovery Readiness,Amazon,,,,,
-route53resolver,route53resolver,route53resolver,route53resolver,,route53resolver,,,Route53Resolver,Route53Resolver,,1,,aws_route53_resolver_,aws_route53resolver_,,route53_resolver_,Route 53 Resolver,Amazon,,,,,
-s3api,s3api,s3,s3,,s3,,s3api,S3,S3,x,1,,aws_(canonical_user_id|s3_bucket|s3_object),aws_s3_,,s3_bucket;s3_object;canonical_user_id,S3 (Simple Storage),Amazon,,,AWS_S3_ENDPOINT,TF_AWS_S3_ENDPOINT,
-s3control,s3control,s3control,s3control,,s3control,,,S3Control,S3Control,,1,2,aws_(s3_account_|s3control_|s3_access_),aws_s3control_,,s3control;s3_account_;s3_access_,S3 Control,Amazon,,,,,
-glacier,glacier,glacier,glacier,,glacier,,,Glacier,Glacier,,1,,,aws_glacier_,,glacier_,S3 Glacier,Amazon,,,,,
-s3outposts,s3outposts,s3outposts,s3outposts,,s3outposts,,,S3Outposts,S3Outposts,,1,,,aws_s3outposts_,,s3outposts_,S3 on Outposts,Amazon,,,,,
-sagemaker,sagemaker,sagemaker,sagemaker,,sagemaker,,,SageMaker,SageMaker,,1,,,aws_sagemaker_,,sagemaker_,SageMaker,Amazon,,,,,
-sagemaker-a2i-runtime,sagemakera2iruntime,augmentedairuntime,sagemakera2iruntime,,sagemakera2iruntime,,augmentedairuntime,SageMakerA2IRuntime,AugmentedAIRuntime,,1,,,aws_sagemakera2iruntime_,,sagemakera2iruntime_,SageMaker A2I (Augmented AI),Amazon,,,,,
-sagemaker-edge,sagemakeredge,sagemakeredgemanager,sagemakeredge,,sagemakeredge,,sagemakeredgemanager,SageMakerEdge,SagemakerEdgeManager,,1,,,aws_sagemakeredge_,,sagemakeredge_,SageMaker Edge Manager,Amazon,,,,,
-sagemaker-featurestore-runtime,sagemakerfeaturestoreruntime,sagemakerfeaturestoreruntime,sagemakerfeaturestoreruntime,,sagemakerfeaturestoreruntime,,,SageMakerFeatureStoreRuntime,SageMakerFeatureStoreRuntime,,1,,,aws_sagemakerfeaturestoreruntime_,,sagemakerfeaturestoreruntime_,SageMaker Feature Store Runtime,Amazon,,,,,
-sagemaker-runtime,sagemakerruntime,sagemakerruntime,sagemakerruntime,,sagemakerruntime,,,SageMakerRuntime,SageMakerRuntime,,1,,,aws_sagemakerruntime_,,sagemakerruntime_,SageMaker Runtime,Amazon,,,,,
-,,,,,,,,,,,,,,,,,SAM (Serverless Application Model),AWS,x,,,,No SDK support
-savingsplans,savingsplans,savingsplans,savingsplans,,savingsplans,,,SavingsPlans,SavingsPlans,,1,,,aws_savingsplans_,,savingsplans_,Savings Plans,AWS,,,,,
-,,,,,,,,,,,,,,,,,Schema Conversion Tool,AWS,x,,,,No SDK support
-sdb,sdb,simpledb,,simpledb,sdb,,sdb,SimpleDB,SimpleDB,,1,,aws_simpledb_,aws_sdb_,,simpledb_,SDB (SimpleDB),Amazon,,,,,
-scheduler,scheduler,scheduler,scheduler,,scheduler,,,Scheduler,Scheduler,x,,2,,aws_scheduler_,,scheduler_,EventBridge Scheduler,Amazon,,,,,
-secretsmanager,secretsmanager,secretsmanager,secretsmanager,,secretsmanager,,,SecretsManager,SecretsManager,,1,,,aws_secretsmanager_,,secretsmanager_,Secrets Manager,AWS,,,,,
-securityhub,securityhub,securityhub,securityhub,,securityhub,,,SecurityHub,SecurityHub,,1,,,aws_securityhub_,,securityhub_,Security Hub,AWS,,,,,
-serverlessrepo,serverlessrepo,serverlessapplicationrepository,serverlessapplicationrepository,,serverlessrepo,,serverlessapprepo;serverlessapplicationrepository,ServerlessRepo,ServerlessApplicationRepository,,1,,aws_serverlessapplicationrepository_,aws_serverlessrepo_,,serverlessapplicationrepository_,Serverless Application Repository,AWS,,,,,
-servicecatalog,servicecatalog,servicecatalog,servicecatalog,,servicecatalog,,,ServiceCatalog,ServiceCatalog,,1,,,aws_servicecatalog_,,servicecatalog_,Service Catalog,AWS,,,,,
-servicecatalog-appregistry,servicecatalogappregistry,appregistry,servicecatalogappregistry,,servicecatalogappregistry,,appregistry,ServiceCatalogAppRegistry,AppRegistry,,1,,,aws_servicecatalogappregistry_,,servicecatalogappregistry_,Service Catalog AppRegistry,AWS,,,,,
-service-quotas,servicequotas,servicequotas,servicequotas,,servicequotas,,,ServiceQuotas,ServiceQuotas,,1,,,aws_servicequotas_,,servicequotas_,Service Quotas,,,,,,
-ses,ses,ses,ses,,ses,,,SES,SES,,1,,,aws_ses_,,ses_,SES (Simple Email),Amazon,,,,,
-sesv2,sesv2,sesv2,sesv2,,sesv2,,,SESV2,SESV2,x,,2,,aws_sesv2_,,sesv2_,SESv2 (Simple Email V2),Amazon,,,,,
-stepfunctions,stepfunctions,sfn,sfn,,sfn,,stepfunctions,SFN,SFN,,1,,,aws_sfn_,,sfn_,SFN (Step Functions),AWS,,,,,
-shield,shield,shield,shield,,shield,,,Shield,Shield,x,1,,,aws_shield_,,shield_,Shield,AWS,,,,,
-signer,signer,signer,signer,,signer,,,Signer,Signer,,1,,,aws_signer_,,signer_,Signer,AWS,,,,,
-sms,sms,sms,sms,,sms,,,SMS,SMS,,1,,,aws_sms_,,sms_,SMS (Server Migration),AWS,,,,,
-snow-device-management,snowdevicemanagement,snowdevicemanagement,snowdevicemanagement,,snowdevicemanagement,,,SnowDeviceManagement,SnowDeviceManagement,,1,,,aws_snowdevicemanagement_,,snowdevicemanagement_,Snow Device Management,AWS,,,,,
-snowball,snowball,snowball,snowball,,snowball,,,Snowball,Snowball,,1,,,aws_snowball_,,snowball_,Snow Family,AWS,,,,,
-sns,sns,sns,sns,,sns,,,SNS,SNS,,1,,,aws_sns_,,sns_,SNS (Simple Notification),Amazon,,,,,
-sqs,sqs,sqs,sqs,,sqs,,,SQS,SQS,,1,,,aws_sqs_,,sqs_,SQS (Simple Queue),Amazon,,,,,
-ssm,ssm,ssm,ssm,,ssm,,,SSM,SSM,,1,,,aws_ssm_,,ssm_,SSM (Systems Manager),AWS,,,,,
-ssm-contacts,ssmcontacts,ssmcontacts,ssmcontacts,,ssmcontacts,,,SSMContacts,SSMContacts,,1,,,aws_ssmcontacts_,,ssmcontacts_,SSM Incident Manager Contacts,AWS,,,,,
-ssm-incidents,ssmincidents,ssmincidents,ssmincidents,,ssmincidents,,,SSMIncidents,SSMIncidents,,1,,,aws_ssmincidents_,,ssmincidents_,SSM Incident Manager Incidents,AWS,,,,,
-sso,sso,sso,sso,,sso,,,SSO,SSO,,1,,,aws_sso_,,sso_,SSO (Single Sign-On),AWS,,,,,
-sso-admin,ssoadmin,ssoadmin,ssoadmin,,ssoadmin,,,SSOAdmin,SSOAdmin,,1,,,aws_ssoadmin_,,ssoadmin_,SSO Admin,AWS,,,,,
-identitystore,identitystore,identitystore,identitystore,,identitystore,,,IdentityStore,IdentityStore,x,,2,,aws_identitystore_,,identitystore_,SSO Identity Store,AWS,,,,,
-sso-oidc,ssooidc,ssooidc,ssooidc,,ssooidc,,,SSOOIDC,SSOOIDC,,1,,,aws_ssooidc_,,ssooidc_,SSO OIDC,AWS,,,,,
-storagegateway,storagegateway,storagegateway,storagegateway,,storagegateway,,,StorageGateway,StorageGateway,,1,,,aws_storagegateway_,,storagegateway_,Storage Gateway,AWS,,,,,
-sts,sts,sts,sts,,sts,,,STS,STS,x,1,,aws_caller_identity,aws_sts_,,caller_identity,STS (Security Token),AWS,,,AWS_STS_ENDPOINT,TF_AWS_STS_ENDPOINT,
-,,,,,,,,,,,,,,,,,Sumerian,Amazon,x,,,,No SDK support
-support,support,support,support,,support,,,Support,Support,,1,,,aws_support_,,support_,Support,AWS,,,,,
-swf,swf,swf,swf,,swf,,,SWF,SWF,,1,,,aws_swf_,,swf_,SWF (Simple Workflow),Amazon,,,,,
-,,,,,,,,,,,,,,,,,Tag Editor,AWS,x,,,,Part of Resource Groups Tagging
-textract,textract,textract,textract,,textract,,,Textract,Textract,,1,,,aws_textract_,,textract_,Textract,Amazon,,,,,
-timestream-query,timestreamquery,timestreamquery,timestreamquery,,timestreamquery,,,TimestreamQuery,TimestreamQuery,,1,,,aws_timestreamquery_,,timestreamquery_,Timestream Query,Amazon,,,,,
-timestream-write,timestreamwrite,timestreamwrite,timestreamwrite,,timestreamwrite,,,TimestreamWrite,TimestreamWrite,,1,,,aws_timestreamwrite_,,timestreamwrite_,Timestream Write,Amazon,,,,,
-,,,,,,,,,,,,,,,,,Tools for PowerShell,AWS,x,,,,No SDK support
-,,,,,,,,,,,,,,,,,Training and Certification,AWS,x,,,,No SDK support
-transcribe,transcribe,transcribeservice,transcribe,,transcribe,,transcribeservice,Transcribe,TranscribeService,x,,2,,aws_transcribe_,,transcribe_,Transcribe,Amazon,,,,,
-,,transcribestreamingservice,transcribestreaming,,transcribestreaming,,transcribestreamingservice,TranscribeStreaming,TranscribeStreamingService,,1,,,aws_transcribestreaming_,,transcribestreaming_,Transcribe Streaming,Amazon,,,,,
-transfer,transfer,transfer,transfer,,transfer,,,Transfer,Transfer,,1,,,aws_transfer_,,transfer_,Transfer Family,AWS,,,,,
-,,,,,transitgateway,ec2,,TransitGateway,,,,,aws_ec2_transit_gateway,aws_transitgateway_,transitgateway_,ec2_transit_gateway,Transit Gateway,AWS,x,x,,,Part of EC2
-translate,translate,translate,translate,,translate,,,Translate,Translate,,1,,,aws_translate_,,translate_,Translate,Amazon,,,,,
-,,,,,,,,,,,,,,,,,Trusted Advisor,AWS,x,,,,Part of Support
-,,,,,vpc,ec2,,VPC,,,,,aws_((default_)?(network_acl|route_table|security_group|subnet|vpc(?!_ipam))|ec2_(managed|network|subnet|traffic)|egress_only_internet|flow_log|internet_gateway|main_route_table_association|nat_gateway|network_interface|prefix_list|route\b),aws_vpc_,vpc_,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_peering_;vpc\.;vpcs\.,VPC (Virtual Private Cloud),Amazon,x,x,,,Part of EC2
-,,,,,ipam,ec2,,IPAM,,,,,aws_vpc_ipam,aws_ipam_,ipam_,vpc_ipam,VPC IPAM (IP Address Manager),Amazon,x,x,,,Part of EC2
-,,,,,vpnclient,ec2,,ClientVPN,,,,,aws_ec2_client_vpn,aws_vpnclient_,vpnclient_,ec2_client_vpn_,VPN (Client),AWS,x,x,,,Part of EC2
-,,,,,vpnsite,ec2,,SiteVPN,,,,,aws_(customer_gateway|vpn_),aws_vpnsite_,vpnsite_,customer_gateway;vpn_,VPN (Site-to-Site),AWS,x,x,,,Part of EC2
-wafv2,wafv2,wafv2,wafv2,,wafv2,,,WAFV2,WAFV2,,1,,,aws_wafv2_,,wafv2_,WAF,AWS,,,,,
-waf,waf,waf,waf,,waf,,,WAF,WAF,,1,,,aws_waf_,,waf_,WAF Classic,AWS,,,,,
-waf-regional,wafregional,wafregional,wafregional,,wafregional,,,WAFRegional,WAFRegional,,1,,,aws_wafregional_,,wafregional_,WAF Classic Regional,AWS,,,,,
-,,,,,,,,,,,,,,,,,WAM (WorkSpaces Application Manager),Amazon,x,,,,No SDK support
-,,,,,wavelength,ec2,,Wavelength,,,,,aws_ec2_carrier_gateway,aws_wavelength_,wavelength_,ec2_carrier_,Wavelength,AWS,x,x,,,Part of EC2
-budgets,budgets,budgets,budgets,,budgets,,,Budgets,Budgets,,1,,,aws_budgets_,,budgets_,Web Services Budgets,Amazon,,,,,
-wellarchitected,wellarchitected,wellarchitected,wellarchitected,,wellarchitected,,,WellArchitected,WellArchitected,,1,,,aws_wellarchitected_,,wellarchitected_,Well-Architected Tool,AWS,,,,,
-workdocs,workdocs,workdocs,workdocs,,workdocs,,,WorkDocs,WorkDocs,,1,,,aws_workdocs_,,workdocs_,WorkDocs,Amazon,,,,,
-worklink,worklink,worklink,worklink,,worklink,,,WorkLink,WorkLink,,1,,,aws_worklink_,,worklink_,WorkLink,Amazon,,,,,
-workmail,workmail,workmail,workmail,,workmail,,,WorkMail,WorkMail,,1,,,aws_workmail_,,workmail_,WorkMail,Amazon,,,,,
-workmailmessageflow,workmailmessageflow,workmailmessageflow,workmailmessageflow,,workmailmessageflow,,,WorkMailMessageFlow,WorkMailMessageFlow,,1,,,aws_workmailmessageflow_,,workmailmessageflow_,WorkMail Message Flow,Amazon,,,,,
-workspaces,workspaces,workspaces,workspaces,,workspaces,,,WorkSpaces,WorkSpaces,,1,,,aws_workspaces_,,workspaces_,WorkSpaces,Amazon,,,,,
-workspaces-web,workspacesweb,workspacesweb,workspacesweb,,workspacesweb,,,WorkSpacesWeb,WorkSpacesWeb,,1,,,aws_workspacesweb_,,workspacesweb_,WorkSpaces Web,Amazon,,,,,
-xray,xray,xray,xray,,xray,,,XRay,XRay,,1,,,aws_xray_,,xray_,X-Ray,AWS,,,,,
+AWSCLIV2Command,AWSCLIV2CommandNoDashes,GoV1Package,GoV2Package,ProviderPackageActual,ProviderPackageCorrect,SplitPackageRealPackage,Aliases,ProviderNameUpper,GoV1ClientTypeName,SkipClientGenerate,ClientSDKV1,ClientSDKV2,ResourcePrefixActual,ResourcePrefixCorrect,FilePrefix,DocPrefix,HumanFriendly,Brand,Exclude,AllowedSubcategory,DeprecatedEnvVar,EnvVar,Note
+account,account,account,account,,account,,,Account,Account,,1,,,aws_account_,,account_,Account Management,AWS,,,,,
+acm,acm,acm,acm,,acm,,,ACM,ACM,,1,,,aws_acm_,,acm_,ACM (Certificate Manager),AWS,,,,,
+acm-pca,acmpca,acmpca,acmpca,,acmpca,,,ACMPCA,ACMPCA,,1,,,aws_acmpca_,,acmpca_,ACM PCA (Certificate Manager Private Certificate Authority),AWS,,,,,
+alexaforbusiness,alexaforbusiness,alexaforbusiness,alexaforbusiness,,alexaforbusiness,,,AlexaForBusiness,AlexaForBusiness,,1,,,aws_alexaforbusiness_,,alexaforbusiness_,Alexa for Business,,,,,,
+amp,amp,prometheusservice,amp,,amp,,prometheus;prometheusservice,AMP,PrometheusService,,1,,aws_prometheus_,aws_amp_,,prometheus_,AMP (Managed Prometheus),Amazon,,,,,
+amplify,amplify,amplify,amplify,,amplify,,,Amplify,Amplify,,1,,,aws_amplify_,,amplify_,Amplify,AWS,,,,,
+amplifybackend,amplifybackend,amplifybackend,amplifybackend,,amplifybackend,,,AmplifyBackend,AmplifyBackend,,1,,,aws_amplifybackend_,,amplifybackend_,Amplify Backend,AWS,,,,,
+amplifyuibuilder,amplifyuibuilder,amplifyuibuilder,amplifyuibuilder,,amplifyuibuilder,,,AmplifyUIBuilder,AmplifyUIBuilder,,1,,,aws_amplifyuibuilder_,,amplifyuibuilder_,Amplify UI Builder,AWS,,,,,
+,,,,,,,,,,,,,,,,,Apache MXNet on AWS,AWS,x,,,,Documentation
+apigateway,apigateway,apigateway,apigateway,,apigateway,,,APIGateway,APIGateway,,1,,aws_api_gateway_,aws_apigateway_,,api_gateway_,API Gateway,Amazon,,,,,
+apigatewaymanagementapi,apigatewaymanagementapi,apigatewaymanagementapi,apigatewaymanagementapi,,apigatewaymanagementapi,,,APIGatewayManagementAPI,ApiGatewayManagementApi,,1,,,aws_apigatewaymanagementapi_,,apigatewaymanagementapi_,API Gateway Management API,Amazon,,,,,
+apigatewayv2,apigatewayv2,apigatewayv2,apigatewayv2,,apigatewayv2,,,APIGatewayV2,ApiGatewayV2,,1,,,aws_apigatewayv2_,,apigatewayv2_,API Gateway V2,Amazon,,,,,
+appmesh,appmesh,appmesh,appmesh,,appmesh,,,AppMesh,AppMesh,,1,,,aws_appmesh_,,appmesh_,App Mesh,AWS,,,,,
+apprunner,apprunner,apprunner,apprunner,,apprunner,,,AppRunner,AppRunner,,1,,,aws_apprunner_,,apprunner_,App Runner,AWS,,,,,
+,,,,,,,,,,,,,,,,,App2Container,AWS,x,,,,No SDK support
+appconfig,appconfig,appconfig,appconfig,,appconfig,,,AppConfig,AppConfig,,1,,,aws_appconfig_,,appconfig_,AppConfig,AWS,,,,,
+appconfigdata,appconfigdata,appconfigdata,appconfigdata,,appconfigdata,,,AppConfigData,AppConfigData,,1,,,aws_appconfigdata_,,appconfigdata_,AppConfig Data,AWS,,,,,
+appflow,appflow,appflow,appflow,,appflow,,,AppFlow,Appflow,,1,,,aws_appflow_,,appflow_,AppFlow,Amazon,,,,,
+appintegrations,appintegrations,appintegrationsservice,appintegrations,,appintegrations,,appintegrationsservice,AppIntegrations,AppIntegrationsService,,1,,,aws_appintegrations_,,appintegrations_,AppIntegrations,Amazon,,,,,
+application-autoscaling,applicationautoscaling,applicationautoscaling,applicationautoscaling,appautoscaling,applicationautoscaling,,applicationautoscaling,AppAutoScaling,ApplicationAutoScaling,,1,,aws_appautoscaling_,aws_applicationautoscaling_,,appautoscaling_,Application Auto Scaling,,,,,,
+applicationcostprofiler,applicationcostprofiler,applicationcostprofiler,applicationcostprofiler,,applicationcostprofiler,,,ApplicationCostProfiler,ApplicationCostProfiler,,1,,,aws_applicationcostprofiler_,,applicationcostprofiler_,Application Cost Profiler,AWS,,,,,
+discovery,discovery,applicationdiscoveryservice,applicationdiscoveryservice,,discovery,,applicationdiscovery;applicationdiscoveryservice,Discovery,ApplicationDiscoveryService,,1,,,aws_discovery_,,discovery_,Application Discovery,AWS,,,,,
+mgn,mgn,mgn,mgn,,mgn,,,Mgn,Mgn,,1,,,aws_mgn_,,mgn_,Application Migration (Mgn),AWS,,,,,
+appstream,appstream,appstream,appstream,,appstream,,,AppStream,AppStream,,1,,,aws_appstream_,,appstream_,AppStream 2.0,Amazon,,,,,
+appsync,appsync,appsync,appsync,,appsync,,,AppSync,AppSync,,1,,,aws_appsync_,,appsync_,AppSync,AWS,,,,,
+,,,,,,,,,,,,,,,,,Artifact,AWS,x,,,,No SDK support
+athena,athena,athena,athena,,athena,,,Athena,Athena,,1,,,aws_athena_,,athena_,Athena,Amazon,,,,,
+auditmanager,auditmanager,auditmanager,auditmanager,,auditmanager,,,AuditManager,AuditManager,,,2,,aws_auditmanager_,,auditmanager_,Audit Manager,AWS,,,,,
+autoscaling,autoscaling,autoscaling,autoscaling,,autoscaling,,,AutoScaling,AutoScaling,,1,,aws_(autoscaling_|launch_configuration),aws_autoscaling_,,autoscaling_;launch_configuration,Auto Scaling,,,,,,
+autoscaling-plans,autoscalingplans,autoscalingplans,autoscalingplans,,autoscalingplans,,,AutoScalingPlans,AutoScalingPlans,,1,,,aws_autoscalingplans_,,autoscalingplans_,Auto Scaling Plans,,,,,,
+,,,,,,,,,,,,,,,,,Backint Agent for SAP HANA,AWS,x,,,,No SDK support
+backup,backup,backup,backup,,backup,,,Backup,Backup,,1,,,aws_backup_,,backup_,Backup,AWS,,,,,
+backup-gateway,backupgateway,backupgateway,backupgateway,,backupgateway,,,BackupGateway,BackupGateway,,1,,,aws_backupgateway_,,backupgateway_,Backup Gateway,AWS,,,,,
+batch,batch,batch,batch,,batch,,,Batch,Batch,,1,,,aws_batch_,,batch_,Batch,AWS,,,,,
+billingconductor,billingconductor,billingconductor,,,billingconductor,,,BillingConductor,BillingConductor,,1,,,aws_billingconductor_,,billingconductor_,Billing Conductor,AWS,,,,,
+braket,braket,braket,braket,,braket,,,Braket,Braket,,1,,,aws_braket_,,braket_,Braket,Amazon,,,,,
+ce,ce,costexplorer,costexplorer,,ce,,costexplorer,CE,CostExplorer,,1,,,aws_ce_,,ce_,CE (Cost Explorer),AWS,,,,,
+,,,,,,,,,,,,,,,,,Chatbot,AWS,x,,,,No SDK support
+chime,chime,chime,chime,,chime,,,Chime,Chime,,1,,,aws_chime_,,chime_,Chime,Amazon,,,,,
+chime-sdk-identity,chimesdkidentity,chimesdkidentity,chimesdkidentity,,chimesdkidentity,,,ChimeSDKIdentity,ChimeSDKIdentity,,1,,,aws_chimesdkidentity_,,chimesdkidentity_,Chime SDK Identity,Amazon,,,,,
+chime-sdk-meetings,chimesdkmeetings,chimesdkmeetings,chimesdkmeetings,,chimesdkmeetings,,,ChimeSDKMeetings,ChimeSDKMeetings,,1,,,aws_chimesdkmeetings_,,chimesdkmeetings_,Chime SDK Meetings,Amazon,,,,,
+chime-sdk-messaging,chimesdkmessaging,chimesdkmessaging,chimesdkmessaging,,chimesdkmessaging,,,ChimeSDKMessaging,ChimeSDKMessaging,,1,,,aws_chimesdkmessaging_,,chimesdkmessaging_,Chime SDK Messaging,Amazon,,,,,
+,,,,,,,,,,,,,,,,,CLI (Command Line Interface),AWS,x,,,,No SDK support
+configure,configure,,,,,,,,,,,,,,,,CLI Configure options,AWS,x,,,,CLI only
+ddb,ddb,,,,,,,,,,,,,,,,CLI High-level DynamoDB commands,AWS,x,,,,Part of DynamoDB
+s3,s3,,,,,,,,,,,,,,,,CLI High-level S3 commands,AWS,x,,,,CLI only
+history,history,,,,,,,,,,,,,,,,CLI History of commands,AWS,x,,,,CLI only
+importexport,importexport,,,,,,,,,,,,,,,,CLI Import/Export,AWS,x,,,,CLI only
+cli-dev,clidev,,,,,,,,,,,,,,,,CLI Internal commands for development,AWS,x,,,,CLI only
+cloudcontrol,cloudcontrol,cloudcontrolapi,cloudcontrol,,cloudcontrol,,cloudcontrolapi,CloudControl,CloudControlApi,,1,,aws_cloudcontrolapi_,aws_cloudcontrol_,,cloudcontrolapi_,Cloud Control API,AWS,,,,,
+,,,,,,,,,,,,,,,,,Cloud Digital Interface SDK,AWS,x,,,,No SDK support
+clouddirectory,clouddirectory,clouddirectory,clouddirectory,,clouddirectory,,,CloudDirectory,CloudDirectory,,1,,,aws_clouddirectory_,,clouddirectory_,Cloud Directory,Amazon,,,,,
+servicediscovery,servicediscovery,servicediscovery,servicediscovery,,servicediscovery,,,ServiceDiscovery,ServiceDiscovery,,1,,aws_service_discovery_,aws_servicediscovery_,,service_discovery_,Cloud Map,AWS,,,,,
+cloud9,cloud9,cloud9,cloud9,,cloud9,,,Cloud9,Cloud9,,1,,,aws_cloud9_,,cloud9_,Cloud9,AWS,,,,,
+cloudformation,cloudformation,cloudformation,cloudformation,,cloudformation,,,CloudFormation,CloudFormation,,1,,,aws_cloudformation_,,cloudformation_,CloudFormation,AWS,,,,,
+cloudfront,cloudfront,cloudfront,cloudfront,,cloudfront,,,CloudFront,CloudFront,,1,,,aws_cloudfront_,,cloudfront_,CloudFront,Amazon,,,,,
+cloudhsm,cloudhsm,cloudhsm,cloudhsm,,,,,,,,,,,,,,CloudHSM,AWS,x,,,,Legacy
+cloudhsmv2,cloudhsmv2,cloudhsmv2,cloudhsmv2,,cloudhsmv2,,cloudhsm,CloudHSMV2,CloudHSMV2,,1,,aws_cloudhsm_v2_,aws_cloudhsmv2_,,cloudhsm,CloudHSM,AWS,,,,,
+cloudsearch,cloudsearch,cloudsearch,cloudsearch,,cloudsearch,,,CloudSearch,CloudSearch,,1,,,aws_cloudsearch_,,cloudsearch_,CloudSearch,Amazon,,,,,
+cloudsearchdomain,cloudsearchdomain,cloudsearchdomain,cloudsearchdomain,,cloudsearchdomain,,,CloudSearchDomain,CloudSearchDomain,,1,,,aws_cloudsearchdomain_,,cloudsearchdomain_,CloudSearch Domain,Amazon,,,,,
+,,,,,,,,,,,,,,,,,CloudShell,AWS,x,,,,No SDK support
+cloudtrail,cloudtrail,cloudtrail,cloudtrail,,cloudtrail,,,CloudTrail,CloudTrail,,1,,aws_cloudtrail,aws_cloudtrail_,,cloudtrail,CloudTrail,AWS,,,,,
+cloudwatch,cloudwatch,cloudwatch,cloudwatch,,cloudwatch,,,CloudWatch,CloudWatch,,1,,aws_cloudwatch_(?!(event_|log_|query_)),aws_cloudwatch_,,cloudwatch_dashboard;cloudwatch_metric_;cloudwatch_composite_,CloudWatch,Amazon,,,,,
+application-insights,applicationinsights,applicationinsights,applicationinsights,,applicationinsights,,,ApplicationInsights,ApplicationInsights,,1,,,aws_applicationinsights_,,applicationinsights_,CloudWatch Application Insights,Amazon,,,,,
+evidently,evidently,cloudwatchevidently,evidently,,evidently,,cloudwatchevidently,Evidently,CloudWatchEvidently,,1,,,aws_evidently_,,evidently_,CloudWatch Evidently,Amazon,,,,,
+logs,logs,cloudwatchlogs,cloudwatchlogs,,logs,,cloudwatchlog;cloudwatchlogs,Logs,CloudWatchLogs,,1,2,aws_cloudwatch_(log_|query_),aws_logs_,,cloudwatch_log_;cloudwatch_query_,CloudWatch Logs,Amazon,,,,,
+rum,rum,cloudwatchrum,rum,,rum,,cloudwatchrum,RUM,CloudWatchRUM,,1,,,aws_rum_,,rum_,CloudWatch RUM,Amazon,,,,,
+synthetics,synthetics,synthetics,synthetics,,synthetics,,,Synthetics,Synthetics,,1,,,aws_synthetics_,,synthetics_,CloudWatch Synthetics,Amazon,,,,,
+codeartifact,codeartifact,codeartifact,codeartifact,,codeartifact,,,CodeArtifact,CodeArtifact,,1,,,aws_codeartifact_,,codeartifact_,CodeArtifact,AWS,,,,,
+codebuild,codebuild,codebuild,codebuild,,codebuild,,,CodeBuild,CodeBuild,,1,,,aws_codebuild_,,codebuild_,CodeBuild,AWS,,,,,
+codecommit,codecommit,codecommit,codecommit,,codecommit,,,CodeCommit,CodeCommit,,1,,,aws_codecommit_,,codecommit_,CodeCommit,AWS,,,,,
+deploy,deploy,codedeploy,codedeploy,,deploy,,codedeploy,Deploy,CodeDeploy,,1,,aws_codedeploy_,aws_deploy_,,codedeploy_,CodeDeploy,AWS,,,,,
+codeguruprofiler,codeguruprofiler,codeguruprofiler,codeguruprofiler,,codeguruprofiler,,,CodeGuruProfiler,CodeGuruProfiler,,1,,,aws_codeguruprofiler_,,codeguruprofiler_,CodeGuru Profiler,Amazon,,,,,
+codeguru-reviewer,codegurureviewer,codegurureviewer,codegurureviewer,,codegurureviewer,,,CodeGuruReviewer,CodeGuruReviewer,,1,,,aws_codegurureviewer_,,codegurureviewer_,CodeGuru Reviewer,Amazon,,,,,
+codepipeline,codepipeline,codepipeline,codepipeline,,codepipeline,,,CodePipeline,CodePipeline,,1,,aws_codepipeline,aws_codepipeline_,,codepipeline,CodePipeline,AWS,,,,,
+codestar,codestar,codestar,codestar,,codestar,,,CodeStar,CodeStar,,1,,,aws_codestar_,,codestar_,CodeStar,AWS,,,,,
+codestar-connections,codestarconnections,codestarconnections,codestarconnections,,codestarconnections,,,CodeStarConnections,CodeStarConnections,,1,,,aws_codestarconnections_,,codestarconnections_,CodeStar Connections,AWS,,,,,
+codestar-notifications,codestarnotifications,codestarnotifications,codestarnotifications,,codestarnotifications,,,CodeStarNotifications,CodeStarNotifications,,1,,,aws_codestarnotifications_,,codestarnotifications_,CodeStar Notifications,AWS,,,,,
+cognito-identity,cognitoidentity,cognitoidentity,cognitoidentity,,cognitoidentity,,,CognitoIdentity,CognitoIdentity,,1,,aws_cognito_identity_(?!provider),aws_cognitoidentity_,,cognito_identity_pool,Cognito Identity,Amazon,,,,,
+cognito-idp,cognitoidp,cognitoidentityprovider,cognitoidentityprovider,,cognitoidp,,cognitoidentityprovider,CognitoIDP,CognitoIdentityProvider,,1,,aws_cognito_(identity_provider|resource|user|risk),aws_cognitoidp_,,cognito_identity_provider;cognito_resource_;cognito_user;cognito_risk,Cognito IDP (Identity Provider),Amazon,,,,,
+cognito-sync,cognitosync,cognitosync,cognitosync,,cognitosync,,,CognitoSync,CognitoSync,,1,,,aws_cognitosync_,,cognitosync_,Cognito Sync,Amazon,,,,,
+comprehend,comprehend,comprehend,comprehend,,comprehend,,,Comprehend,Comprehend,,,2,,aws_comprehend_,,comprehend_,Comprehend,Amazon,,,,,
+comprehendmedical,comprehendmedical,comprehendmedical,comprehendmedical,,comprehendmedical,,,ComprehendMedical,ComprehendMedical,,1,,,aws_comprehendmedical_,,comprehendmedical_,Comprehend Medical,Amazon,,,,,
+compute-optimizer,computeoptimizer,computeoptimizer,computeoptimizer,,computeoptimizer,,,ComputeOptimizer,ComputeOptimizer,,,2,,aws_computeoptimizer_,,computeoptimizer_,Compute Optimizer,AWS,,,,,
+configservice,configservice,configservice,configservice,,configservice,,config,ConfigService,ConfigService,,1,,aws_config_,aws_configservice_,,config_,Config,AWS,,,,,
+connect,connect,connect,connect,,connect,,,Connect,Connect,,1,,,aws_connect_,,connect_,Connect,Amazon,,,,,
+connect-contact-lens,connectcontactlens,connectcontactlens,connectcontactlens,,connectcontactlens,,,ConnectContactLens,ConnectContactLens,,1,,,aws_connectcontactlens_,,connectcontactlens_,Connect Contact Lens,Amazon,,,,,
+customer-profiles,customerprofiles,customerprofiles,customerprofiles,,customerprofiles,,,CustomerProfiles,CustomerProfiles,,1,,,aws_customerprofiles_,,customerprofiles_,Connect Customer Profiles,Amazon,,,,,
+connectparticipant,connectparticipant,connectparticipant,connectparticipant,,connectparticipant,,,ConnectParticipant,ConnectParticipant,,1,,,aws_connectparticipant_,,connectparticipant_,Connect Participant,Amazon,,,,,
+voice-id,voiceid,voiceid,voiceid,,voiceid,,,VoiceID,VoiceID,,1,,,aws_voiceid_,,voiceid_,Connect Voice ID,Amazon,,,,,
+wisdom,wisdom,connectwisdomservice,wisdom,,wisdom,,connectwisdomservice,Wisdom,ConnectWisdomService,,1,,,aws_wisdom_,,wisdom_,Connect Wisdom,Amazon,,,,,
+,,,,,,,,,,,,,,,,,Console Mobile Application,AWS,x,,,,No SDK support
+controltower,controltower,controltower,controltower,,controltower,,,ControlTower,ControlTower,,1,,,aws_controltower_,,controltower_,Control Tower,AWS,,,,,
+cur,cur,costandusagereportservice,costandusagereportservice,,cur,,costandusagereportservice,CUR,CostandUsageReportService,,1,,,aws_cur_,,cur_,Cost and Usage Report,AWS,,,,,
+,,,,,,,,,,,,,,,,,Crypto Tools,AWS,x,,,,No SDK support
+,,,,,,,,,,,,,,,,,Cryptographic Services Overview,AWS,x,,,,No SDK support
+dataexchange,dataexchange,dataexchange,dataexchange,,dataexchange,,,DataExchange,DataExchange,,1,,,aws_dataexchange_,,dataexchange_,Data Exchange,AWS,,,,,
+datapipeline,datapipeline,datapipeline,datapipeline,,datapipeline,,,DataPipeline,DataPipeline,,1,,,aws_datapipeline_,,datapipeline_,Data Pipeline,AWS,,,,,
+datasync,datasync,datasync,datasync,,datasync,,,DataSync,DataSync,,1,,,aws_datasync_,,datasync_,DataSync,AWS,,,,,
+,,,,,,,,,,,,,,,,,Deep Learning AMIs,AWS,x,,,,No SDK support
+,,,,,,,,,,,,,,,,,Deep Learning Containers,AWS,x,,,,No SDK support
+,,,,,,,,,,,,,,,,,DeepComposer,AWS,x,,,,No SDK support
+,,,,,,,,,,,,,,,,,DeepLens,AWS,x,,,,No SDK support
+,,,,,,,,,,,,,,,,,DeepRacer,AWS,x,,,,No SDK support
+detective,detective,detective,detective,,detective,,,Detective,Detective,,1,,,aws_detective_,,detective_,Detective,Amazon,,,,,
+devicefarm,devicefarm,devicefarm,devicefarm,,devicefarm,,,DeviceFarm,DeviceFarm,,1,,,aws_devicefarm_,,devicefarm_,Device Farm,AWS,,,,,
+devops-guru,devopsguru,devopsguru,devopsguru,,devopsguru,,,DevOpsGuru,DevOpsGuru,,1,,,aws_devopsguru_,,devopsguru_,DevOps Guru,Amazon,,,,,
+directconnect,directconnect,directconnect,directconnect,,directconnect,,,DirectConnect,DirectConnect,,1,,aws_dx_,aws_directconnect_,,dx_,Direct Connect,AWS,,,,,
+dlm,dlm,dlm,dlm,,dlm,,,DLM,DLM,,1,,,aws_dlm_,,dlm_,DLM (Data Lifecycle Manager),Amazon,,,,,
+dms,dms,databasemigrationservice,databasemigrationservice,,dms,,databasemigration;databasemigrationservice,DMS,DatabaseMigrationService,,1,,,aws_dms_,,dms_,DMS (Database Migration),AWS,,,,,
+docdb,docdb,docdb,docdb,,docdb,,,DocDB,DocDB,,1,,,aws_docdb_,,docdb_,DocDB (DocumentDB),Amazon,,,,,
+drs,drs,drs,drs,,drs,,,DRS,Drs,,1,,,aws_drs_,,drs_,DRS (Elastic Disaster Recovery),AWS,,,,,
+ds,ds,directoryservice,directoryservice,,ds,,directoryservice,DS,DirectoryService,,1,,aws_directory_service_,aws_ds_,,directory_service_,DS (Directory Service),AWS,,,,,
+dynamodb,dynamodb,dynamodb,dynamodb,,dynamodb,,,DynamoDB,DynamoDB,,1,,,aws_dynamodb_,,dynamodb_,DynamoDB,Amazon,,,AWS_DYNAMODB_ENDPOINT,TF_AWS_DYNAMODB_ENDPOINT,
+dax,dax,dax,dax,,dax,,,DAX,DAX,,1,,,aws_dax_,,dax_,DynamoDB Accelerator (DAX),Amazon,,,,,
+dynamodbstreams,dynamodbstreams,dynamodbstreams,dynamodbstreams,,dynamodbstreams,,,DynamoDBStreams,DynamoDBStreams,,1,,,aws_dynamodbstreams_,,dynamodbstreams_,DynamoDB Streams,Amazon,,,,,
+,,,,,ec2ebs,ec2,,EC2EBS,,,,,aws_(ebs_|volume_attach|snapshot_create),aws_ec2ebs_,ebs_,ebs_;volume_attachment;snapshot_,EBS (EC2),Amazon,x,x,,,Part of EC2
+ebs,ebs,ebs,ebs,,ebs,,,EBS,EBS,,1,,,aws_ebs_,,changewhenimplemented,EBS (Elastic Block Store),Amazon,,,,,
+ec2,ec2,ec2,ec2,,ec2,ec2,,EC2,EC2,,1,,aws_(ami|availability_zone|ec2_(availability|capacity|fleet|host|instance|serial|spot|tag)|eip|instance|key_pair|launch_template|placement_group|spot),aws_ec2_,ec2_,ami;availability_zone;ec2_availability_;ec2_capacity_;ec2_fleet;ec2_host;ec2_instance_;ec2_serial_;ec2_spot_;ec2_tag;eip;instance;key_pair;launch_template;placement_group;spot_,EC2 (Elastic Compute Cloud),Amazon,,,,,
+imagebuilder,imagebuilder,imagebuilder,imagebuilder,,imagebuilder,,,ImageBuilder,Imagebuilder,,1,,,aws_imagebuilder_,,imagebuilder_,EC2 Image Builder,Amazon,,,,,
+ec2-instance-connect,ec2instanceconnect,ec2instanceconnect,ec2instanceconnect,,ec2instanceconnect,,,EC2InstanceConnect,EC2InstanceConnect,,1,,,aws_ec2instanceconnect_,,ec2instanceconnect_,EC2 Instance Connect,AWS,,,,,
+ecr,ecr,ecr,ecr,,ecr,,,ECR,ECR,,1,,,aws_ecr_,,ecr_,ECR (Elastic Container Registry),Amazon,,,,,
+ecr-public,ecrpublic,ecrpublic,ecrpublic,,ecrpublic,,,ECRPublic,ECRPublic,,1,,,aws_ecrpublic_,,ecrpublic_,ECR Public,Amazon,,,,,
+ecs,ecs,ecs,ecs,,ecs,,,ECS,ECS,,1,,,aws_ecs_,,ecs_,ECS (Elastic Container),Amazon,,,,,
+efs,efs,efs,efs,,efs,,,EFS,EFS,,1,,,aws_efs_,,efs_,EFS (Elastic File System),Amazon,,,,,
+eks,eks,eks,eks,,eks,,,EKS,EKS,,1,,,aws_eks_,,eks_,EKS (Elastic Kubernetes),Amazon,,,,,
+elasticbeanstalk,elasticbeanstalk,elasticbeanstalk,elasticbeanstalk,,elasticbeanstalk,,beanstalk,ElasticBeanstalk,ElasticBeanstalk,,1,,aws_elastic_beanstalk_,aws_elasticbeanstalk_,,elastic_beanstalk_,Elastic Beanstalk,AWS,,,,,
+elastic-inference,elasticinference,elasticinference,elasticinference,,elasticinference,,,ElasticInference,ElasticInference,,1,,,aws_elasticinference_,,elasticinference_,Elastic Inference,Amazon,,,,,
+elastictranscoder,elastictranscoder,elastictranscoder,elastictranscoder,,elastictranscoder,,,ElasticTranscoder,ElasticTranscoder,,1,,,aws_elastictranscoder_,,elastictranscoder_,Elastic Transcoder,Amazon,,,,,
+elasticache,elasticache,elasticache,elasticache,,elasticache,,,ElastiCache,ElastiCache,,1,,,aws_elasticache_,,elasticache_,ElastiCache,Amazon,,,,,
+es,es,elasticsearchservice,elasticsearchservice,elasticsearch,es,,es;elasticsearchservice,Elasticsearch,ElasticsearchService,,1,,aws_elasticsearch_,aws_es_,,elasticsearch_,Elasticsearch,Amazon,,,,,
+elbv2,elbv2,elbv2,elasticloadbalancingv2,,elbv2,,elasticloadbalancingv2,ELBV2,ELBV2,,1,,aws_a?lb(\b|_listener|_target_group),aws_elbv2_,,lb\.;lb_listener;lb_target_group;lb_hosted,ELB (Elastic Load Balancing),,,,,,
+elb,elb,elb,elasticloadbalancing,,elb,,elasticloadbalancing,ELB,ELB,,1,,aws_(app_cookie_stickiness_policy|elb|lb_cookie_stickiness_policy|lb_ssl_negotiation_policy|load_balancer_|proxy_protocol_policy),aws_elb_,,app_cookie_stickiness_policy;elb;lb_cookie_stickiness_policy;lb_ssl_negotiation_policy;load_balancer;proxy_protocol_policy,ELB Classic,,,,,,
+mediaconnect,mediaconnect,mediaconnect,mediaconnect,,mediaconnect,,,MediaConnect,MediaConnect,,1,,,aws_mediaconnect_,,media_connect_,Elemental MediaConnect,AWS,,,,,
+mediaconvert,mediaconvert,mediaconvert,mediaconvert,,mediaconvert,,,MediaConvert,MediaConvert,,1,,aws_media_convert_,aws_mediaconvert_,,media_convert_,Elemental MediaConvert,AWS,,,,,
+medialive,medialive,medialive,medialive,,medialive,,,MediaLive,MediaLive,,,2,,aws_medialive_,,medialive_,Elemental MediaLive,AWS,,,,,
+mediapackage,mediapackage,mediapackage,mediapackage,,mediapackage,,,MediaPackage,MediaPackage,,1,,aws_media_package_,aws_mediapackage_,,media_package_,Elemental MediaPackage,AWS,,,,,
+mediapackage-vod,mediapackagevod,mediapackagevod,mediapackagevod,,mediapackagevod,,,MediaPackageVOD,MediaPackageVod,,1,,,aws_mediapackagevod_,,mediapackagevod_,Elemental MediaPackage VOD,AWS,,,,,
+mediastore,mediastore,mediastore,mediastore,,mediastore,,,MediaStore,MediaStore,,1,,aws_media_store_,aws_mediastore_,,media_store_,Elemental MediaStore,AWS,,,,,
+mediastore-data,mediastoredata,mediastoredata,mediastoredata,,mediastoredata,,,MediaStoreData,MediaStoreData,,1,,,aws_mediastoredata_,,mediastoredata_,Elemental MediaStore Data,AWS,,,,,
+mediatailor,mediatailor,mediatailor,mediatailor,,mediatailor,,,MediaTailor,MediaTailor,,1,,,aws_mediatailor_,,media_tailor_,Elemental MediaTailor,AWS,,,,,
+,,,,,,,,,,,,,,,,,Elemental On-Premises,AWS,x,,,,No SDK support
+emr,emr,emr,emr,,emr,,,EMR,EMR,,1,,,aws_emr_,,emr_,EMR,Amazon,,,,,
+emr-containers,emrcontainers,emrcontainers,emrcontainers,,emrcontainers,,,EMRContainers,EMRContainers,,1,,,aws_emrcontainers_,,emrcontainers_,EMR Containers,Amazon,,,,,
+emr-serverless,emrserverless,emrserverless,emrserverless,,emrserverless,,,EMRServerless,EMRServerless,,1,,,aws_emrserverless_,,emrserverless_,EMR Serverless,Amazon,,,,,
+,,,,,,,,,,,,,,,,,End-of-Support Migration Program (EMP) for Windows Server,AWS,x,,,,No SDK support
+events,events,eventbridge,eventbridge,,events,,eventbridge;cloudwatchevents,Events,EventBridge,,1,,aws_cloudwatch_event_,aws_events_,,cloudwatch_event_,EventBridge,Amazon,,,,,
+schemas,schemas,schemas,schemas,,schemas,,,Schemas,Schemas,,1,,,aws_schemas_,,schemas_,EventBridge Schemas,Amazon,,,,,
+fis,fis,fis,fis,,fis,,,FIS,FIS,,,2,,aws_fis_,,fis_,FIS (Fault Injection Simulator),AWS,,,,,
+finspace,finspace,finspace,finspace,,finspace,,,FinSpace,Finspace,,1,,,aws_finspace_,,finspace_,FinSpace,Amazon,,,,,
+finspace-data,finspacedata,finspacedata,finspacedata,,finspacedata,,,FinSpaceData,FinSpaceData,,1,,,aws_finspacedata_,,finspacedata_,FinSpace Data,Amazon,,,,,
+fms,fms,fms,fms,,fms,,,FMS,FMS,,1,,,aws_fms_,,fms_,FMS (Firewall Manager),AWS,,,,,
+forecast,forecast,forecastservice,forecast,,forecast,,forecastservice,Forecast,ForecastService,,1,,,aws_forecast_,,forecast_,Forecast,Amazon,,,,,
+forecastquery,forecastquery,forecastqueryservice,forecastquery,,forecastquery,,forecastqueryservice,ForecastQuery,ForecastQueryService,,1,,,aws_forecastquery_,,forecastquery_,Forecast Query,Amazon,,,,,
+frauddetector,frauddetector,frauddetector,frauddetector,,frauddetector,,,FraudDetector,FraudDetector,,1,,,aws_frauddetector_,,frauddetector_,Fraud Detector,Amazon,,,,,
+,,,,,,,,,,,,,,,,,FreeRTOS,,x,,,,No SDK support
+fsx,fsx,fsx,fsx,,fsx,,,FSx,FSx,,1,,,aws_fsx_,,fsx_,FSx,Amazon,,,,,
+gamelift,gamelift,gamelift,gamelift,,gamelift,,,GameLift,GameLift,,1,,,aws_gamelift_,,gamelift_,GameLift,Amazon,,,,,
+globalaccelerator,globalaccelerator,globalaccelerator,globalaccelerator,,globalaccelerator,,,GlobalAccelerator,GlobalAccelerator,x,1,,,aws_globalaccelerator_,,globalaccelerator_,Global Accelerator,AWS,,,,,
+glue,glue,glue,glue,,glue,,,Glue,Glue,,1,,,aws_glue_,,glue_,Glue,AWS,,,,,
+databrew,databrew,gluedatabrew,databrew,,databrew,,gluedatabrew,DataBrew,GlueDataBrew,,1,,,aws_databrew_,,databrew_,Glue DataBrew,AWS,,,,,
+groundstation,groundstation,groundstation,groundstation,,groundstation,,,GroundStation,GroundStation,,1,,,aws_groundstation_,,groundstation_,Ground Station,AWS,,,,,
+guardduty,guardduty,guardduty,guardduty,,guardduty,,,GuardDuty,GuardDuty,,1,,,aws_guardduty_,,guardduty_,GuardDuty,Amazon,,,,,
+health,health,health,health,,health,,,Health,Health,,1,,,aws_health_,,health_,Health,AWS,,,,,
+healthlake,healthlake,healthlake,healthlake,,healthlake,,,HealthLake,HealthLake,,1,,,aws_healthlake_,,healthlake_,HealthLake,Amazon,,,,,
+honeycode,honeycode,honeycode,honeycode,,honeycode,,,Honeycode,Honeycode,,1,,,aws_honeycode_,,honeycode_,Honeycode,Amazon,,,,,
+iam,iam,iam,iam,,iam,,,IAM,IAM,,1,,,aws_iam_,,iam_,IAM (Identity & Access Management),AWS,,,AWS_IAM_ENDPOINT,TF_AWS_IAM_ENDPOINT,
+accessanalyzer,accessanalyzer,accessanalyzer,accessanalyzer,,accessanalyzer,,,AccessAnalyzer,AccessAnalyzer,,1,,,aws_accessanalyzer_,,accessanalyzer_,IAM Access Analyzer,AWS,,,,,
+inspector,inspector,inspector,inspector,,inspector,,,Inspector,Inspector,,1,,,aws_inspector_,,inspector_,Inspector,Amazon,,,,,
+inspector2,inspector2,inspector2,inspector2,,inspector2,,inspectorv2,Inspector2,Inspector2,,,2,,aws_inspector2_,,inspector2_,Inspector V2,Amazon,,,,,
+iot1click-devices,iot1clickdevices,iot1clickdevicesservice,iot1clickdevicesservice,,iot1clickdevices,,iot1clickdevicesservice,IoT1ClickDevices,IoT1ClickDevicesService,,1,,,aws_iot1clickdevices_,,iot1clickdevices_,IoT 1-Click Devices,AWS,,,,,
+iot1click-projects,iot1clickprojects,iot1clickprojects,iot1clickprojects,,iot1clickprojects,,,IoT1ClickProjects,IoT1ClickProjects,,1,,,aws_iot1clickprojects_,,iot1clickprojects_,IoT 1-Click Projects,AWS,,,,,
+iotanalytics,iotanalytics,iotanalytics,iotanalytics,,iotanalytics,,,IoTAnalytics,IoTAnalytics,,1,,,aws_iotanalytics_,,iotanalytics_,IoT Analytics,AWS,,,,,
+iot,iot,iot,iot,,iot,,,IoT,IoT,,1,,,aws_iot_,,iot_,IoT Core,AWS,,,,,
+iot-data,iotdata,iotdataplane,iotdataplane,,iotdata,,iotdataplane,IoTData,IoTDataPlane,,1,,,aws_iotdata_,,iotdata_,IoT Data Plane,AWS,,,,,
+,,,,,,,,,,,,,,,,,IoT Device Defender,AWS,x,,,,Part of IoT
+iotdeviceadvisor,iotdeviceadvisor,iotdeviceadvisor,iotdeviceadvisor,,iotdeviceadvisor,,,IoTDeviceAdvisor,IoTDeviceAdvisor,,1,,,aws_iotdeviceadvisor_,,iotdeviceadvisor_,IoT Device Management,AWS,,,,,
+iotevents,iotevents,iotevents,iotevents,,iotevents,,,IoTEvents,IoTEvents,,1,,,aws_iotevents_,,iotevents_,IoT Events,AWS,,,,,
+iotevents-data,ioteventsdata,ioteventsdata,ioteventsdata,,ioteventsdata,,,IoTEventsData,IoTEventsData,,1,,,aws_ioteventsdata_,,ioteventsdata_,IoT Events Data,AWS,,,,,
+,,,,,,,,,,,,,,,,,IoT ExpressLink,AWS,x,,,,No SDK support
+iotfleethub,iotfleethub,iotfleethub,iotfleethub,,iotfleethub,,,IoTFleetHub,IoTFleetHub,,1,,,aws_iotfleethub_,,iotfleethub_,IoT Fleet Hub,AWS,,,,,
+,,,,,,,,,,,,,,,,,IoT FleetWise,AWS,x,,,,No SDK support
+greengrass,greengrass,greengrass,greengrass,,greengrass,,,Greengrass,Greengrass,,1,,,aws_greengrass_,,greengrass_,IoT Greengrass,AWS,,,,,
+greengrassv2,greengrassv2,greengrassv2,greengrassv2,,greengrassv2,,,GreengrassV2,GreengrassV2,,1,,,aws_greengrassv2_,,greengrassv2_,IoT Greengrass V2,AWS,,,,,
+iot-jobs-data,iotjobsdata,iotjobsdataplane,iotjobsdataplane,,iotjobsdata,,iotjobsdataplane,IoTJobsData,IoTJobsDataPlane,,1,,,aws_iotjobsdata_,,iotjobsdata_,IoT Jobs Data Plane,AWS,,,,,
+,,,,,,,,,,,,,,,,,IoT RoboRunner,AWS,x,,,,No SDK support
+iotsecuretunneling,iotsecuretunneling,iotsecuretunneling,iotsecuretunneling,,iotsecuretunneling,,,IoTSecureTunneling,IoTSecureTunneling,,1,,,aws_iotsecuretunneling_,,iotsecuretunneling_,IoT Secure Tunneling,AWS,,,,,
+iotsitewise,iotsitewise,iotsitewise,iotsitewise,,iotsitewise,,,IoTSiteWise,IoTSiteWise,,1,,,aws_iotsitewise_,,iotsitewise_,IoT SiteWise,AWS,,,,,
+iotthingsgraph,iotthingsgraph,iotthingsgraph,iotthingsgraph,,iotthingsgraph,,,IoTThingsGraph,IoTThingsGraph,,1,,,aws_iotthingsgraph_,,iotthingsgraph_,IoT Things Graph,AWS,,,,,
+iottwinmaker,iottwinmaker,iottwinmaker,iottwinmaker,,iottwinmaker,,,IoTTwinMaker,IoTTwinMaker,,1,,,aws_iottwinmaker_,,iottwinmaker_,IoT TwinMaker,AWS,,,,,
+iotwireless,iotwireless,iotwireless,iotwireless,,iotwireless,,,IoTWireless,IoTWireless,,1,,,aws_iotwireless_,,iotwireless_,IoT Wireless,AWS,,,,,
+,,,,,,,,,,,,,,,,,IQ,AWS,x,,,,No SDK support
+ivs,ivs,ivs,ivs,,ivs,,,IVS,IVS,,1,,,aws_ivs_,,ivs_,IVS (Interactive Video),Amazon,,,,,
+ivschat,ivschat,ivschat,ivschat,,ivschat,,,IVSChat,Ivschat,,,2,,aws_ivschat_,,ivschat_,IVS (Interactive Video) Chat,Amazon,,,,,
+kendra,kendra,kendra,kendra,,kendra,,,Kendra,Kendra,,,2,,aws_kendra_,,kendra_,Kendra,Amazon,,,,,
+keyspaces,keyspaces,keyspaces,,,keyspaces,,,Keyspaces,Keyspaces,,1,,,aws_keyspaces_,,keyspaces_,Keyspaces (for Apache Cassandra),Amazon,,,,,
+kinesis,kinesis,kinesis,kinesis,,kinesis,,,Kinesis,Kinesis,,1,,aws_kinesis_stream,aws_kinesis_,,kinesis_stream,Kinesis,Amazon,,,,,
+kinesisanalytics,kinesisanalytics,kinesisanalytics,kinesisanalytics,,kinesisanalytics,,,KinesisAnalytics,KinesisAnalytics,,1,,aws_kinesis_analytics_,aws_kinesisanalytics_,,kinesis_analytics_,Kinesis Analytics,Amazon,,,,,
+kinesisanalyticsv2,kinesisanalyticsv2,kinesisanalyticsv2,kinesisanalyticsv2,,kinesisanalyticsv2,,,KinesisAnalyticsV2,KinesisAnalyticsV2,,1,,,aws_kinesisanalyticsv2_,,kinesisanalyticsv2_,Kinesis Analytics V2,Amazon,,,,,
+firehose,firehose,firehose,firehose,,firehose,,,Firehose,Firehose,,1,,aws_kinesis_firehose_,aws_firehose_,,kinesis_firehose_,Kinesis Firehose,Amazon,,,,,
+kinesisvideo,kinesisvideo,kinesisvideo,kinesisvideo,,kinesisvideo,,,KinesisVideo,KinesisVideo,,1,,,aws_kinesisvideo_,,kinesis_video_,Kinesis Video,Amazon,,,,,
+kinesis-video-archived-media,kinesisvideoarchivedmedia,kinesisvideoarchivedmedia,kinesisvideoarchivedmedia,,kinesisvideoarchivedmedia,,,KinesisVideoArchivedMedia,KinesisVideoArchivedMedia,,1,,,aws_kinesisvideoarchivedmedia_,,kinesisvideoarchivedmedia_,Kinesis Video Archived Media,Amazon,,,,,
+kinesis-video-media,kinesisvideomedia,kinesisvideomedia,kinesisvideomedia,,kinesisvideomedia,,,KinesisVideoMedia,KinesisVideoMedia,,1,,,aws_kinesisvideomedia_,,kinesisvideomedia_,Kinesis Video Media,Amazon,,,,,
+kinesis-video-signaling,kinesisvideosignaling,kinesisvideosignalingchannels,kinesisvideosignaling,,kinesisvideosignaling,,kinesisvideosignalingchannels,KinesisVideoSignaling,KinesisVideoSignalingChannels,,1,,,aws_kinesisvideosignaling_,,kinesisvideosignaling_,Kinesis Video Signaling,Amazon,,,,,
+kms,kms,kms,kms,,kms,,,KMS,KMS,,1,,,aws_kms_,,kms_,KMS (Key Management),AWS,,,,,
+lakeformation,lakeformation,lakeformation,lakeformation,,lakeformation,,,LakeFormation,LakeFormation,,1,,,aws_lakeformation_,,lakeformation_,Lake Formation,AWS,,,,,
+lambda,lambda,lambda,lambda,,lambda,,,Lambda,Lambda,,1,,,aws_lambda_,,lambda_,Lambda,AWS,,,,,
+,,,,,,,,,,,,,,,,,Launch Wizard,AWS,x,,,,No SDK support
+lex-models,lexmodels,lexmodelbuildingservice,lexmodelbuildingservice,,lexmodels,,lexmodelbuilding;lexmodelbuildingservice;lex,LexModels,LexModelBuildingService,,1,,aws_lex_,aws_lexmodels_,,lex_,Lex Model Building,Amazon,,,,,
+lexv2-models,lexv2models,lexmodelsv2,lexmodelsv2,,lexmodelsv2,,lexv2models,LexModelsV2,LexModelsV2,,1,,,aws_lexmodelsv2_,,lexmodelsv2_,Lex Models V2,Amazon,,,,,
+lex-runtime,lexruntime,lexruntimeservice,lexruntimeservice,,lexruntime,,lexruntimeservice,LexRuntime,LexRuntimeService,,1,,,aws_lexruntime_,,lexruntime_,Lex Runtime,Amazon,,,,,
+lexv2-runtime,lexv2runtime,lexruntimev2,lexruntimev2,,lexruntimev2,,lexv2runtime,LexRuntimeV2,LexRuntimeV2,,1,,,aws_lexruntimev2_,,lexruntimev2_,Lex Runtime V2,Amazon,,,,,
+license-manager,licensemanager,licensemanager,licensemanager,,licensemanager,,,LicenseManager,LicenseManager,,1,,,aws_licensemanager_,,licensemanager_,License Manager,AWS,,,,,
+lightsail,lightsail,lightsail,lightsail,,lightsail,,,Lightsail,Lightsail,,1,,,aws_lightsail_,,lightsail_,Lightsail,Amazon,,,,,
+location,location,locationservice,location,,location,,locationservice,Location,LocationService,,1,,,aws_location_,,location_,Location,Amazon,,,,,
+lookoutequipment,lookoutequipment,lookoutequipment,lookoutequipment,,lookoutequipment,,,LookoutEquipment,LookoutEquipment,,1,,,aws_lookoutequipment_,,lookoutequipment_,Lookout for Equipment,Amazon,,,,,
+lookoutmetrics,lookoutmetrics,lookoutmetrics,lookoutmetrics,,lookoutmetrics,,,LookoutMetrics,LookoutMetrics,,1,,,aws_lookoutmetrics_,,lookoutmetrics_,Lookout for Metrics,Amazon,,,,,
+lookoutvision,lookoutvision,lookoutforvision,lookoutvision,,lookoutvision,,lookoutforvision,LookoutVision,LookoutForVision,,1,,,aws_lookoutvision_,,lookoutvision_,Lookout for Vision,Amazon,,,,,
+,,,,,,,,,,,,,,,,,Lumberyard,Amazon,x,,,,No SDK support
+machinelearning,machinelearning,machinelearning,machinelearning,,machinelearning,,,MachineLearning,MachineLearning,,1,,,aws_machinelearning_,,machinelearning_,Machine Learning,Amazon,,,,,
+macie2,macie2,macie2,macie2,,macie2,,,Macie2,Macie2,,1,,,aws_macie2_,,macie2_,Macie,Amazon,,,,,
+macie,macie,macie,macie,,macie,,,Macie,Macie,,1,,,aws_macie_,,macie_,Macie Classic,Amazon,,,,,
+,,,,,,,,,,,,,,,,,Mainframe Modernization,AWS,x,,,,No SDK support
+managedblockchain,managedblockchain,managedblockchain,managedblockchain,,managedblockchain,,,ManagedBlockchain,ManagedBlockchain,,1,,,aws_managedblockchain_,,managedblockchain_,Managed Blockchain,Amazon,,,,,
+grafana,grafana,managedgrafana,grafana,,grafana,,managedgrafana;amg,Grafana,ManagedGrafana,,1,,,aws_grafana_,,grafana_,Managed Grafana,Amazon,,,,,
+kafka,kafka,kafka,kafka,,kafka,,msk,Kafka,Kafka,,1,,aws_msk_,aws_kafka_,,msk_,Managed Streaming for Kafka,Amazon,,,,,
+kafkaconnect,kafkaconnect,kafkaconnect,kafkaconnect,,kafkaconnect,,,KafkaConnect,KafkaConnect,,1,,aws_mskconnect_,aws_kafkaconnect_,,mskconnect_,Managed Streaming for Kafka Connect,Amazon,,,,,
+,,,,,,,,,,,,,,,,,Management Console,AWS,x,,,,No SDK support
+marketplace-catalog,marketplacecatalog,marketplacecatalog,marketplacecatalog,,marketplacecatalog,,,MarketplaceCatalog,MarketplaceCatalog,,1,,,aws_marketplacecatalog_,,marketplace_catalog_,Marketplace Catalog,AWS,,,,,
+marketplacecommerceanalytics,marketplacecommerceanalytics,marketplacecommerceanalytics,marketplacecommerceanalytics,,marketplacecommerceanalytics,,,MarketplaceCommerceAnalytics,MarketplaceCommerceAnalytics,,1,,,aws_marketplacecommerceanalytics_,,marketplacecommerceanalytics_,Marketplace Commerce Analytics,AWS,,,,,
+marketplace-entitlement,marketplaceentitlement,marketplaceentitlementservice,marketplaceentitlementservice,,marketplaceentitlement,,marketplaceentitlementservice,MarketplaceEntitlement,MarketplaceEntitlementService,,1,,,aws_marketplaceentitlement_,,marketplaceentitlement_,Marketplace Entitlement,AWS,,,,,
+meteringmarketplace,meteringmarketplace,marketplacemetering,marketplacemetering,,marketplacemetering,,meteringmarketplace,MarketplaceMetering,MarketplaceMetering,,1,,,aws_marketplacemetering_,,marketplacemetering_,Marketplace Metering,AWS,,,,,
+memorydb,memorydb,memorydb,memorydb,,memorydb,,,MemoryDB,MemoryDB,,1,,,aws_memorydb_,,memorydb_,MemoryDB for Redis,Amazon,,,,,
+,,,,,meta,,,Meta,,,,,aws_(arn|billing_service_account|default_tags|ip_ranges|partition|regions?|service)$,aws_meta_,,arn;ip_ranges;billing_service_account;default_tags;partition;region;service\.,Meta Data Sources,,x,x,,,Not an AWS service (metadata)
+mgh,mgh,migrationhub,migrationhub,,mgh,,migrationhub,MgH,MigrationHub,,1,,,aws_mgh_,,mgh_,MgH (Migration Hub),AWS,,,,,
+,,,,,,,,,,,,,,,,,Microservice Extractor for .NET,AWS,x,,,,No SDK support
+migrationhub-config,migrationhubconfig,migrationhubconfig,migrationhubconfig,,migrationhubconfig,,,MigrationHubConfig,MigrationHubConfig,,1,,,aws_migrationhubconfig_,,migrationhubconfig_,Migration Hub Config,AWS,,,,,
+migration-hub-refactor-spaces,migrationhubrefactorspaces,migrationhubrefactorspaces,migrationhubrefactorspaces,,migrationhubrefactorspaces,,,MigrationHubRefactorSpaces,MigrationHubRefactorSpaces,,1,,,aws_migrationhubrefactorspaces_,,migrationhubrefactorspaces_,Migration Hub Refactor Spaces,AWS,,,,,
+migrationhubstrategy,migrationhubstrategy,migrationhubstrategyrecommendations,migrationhubstrategy,,migrationhubstrategy,,migrationhubstrategyrecommendations,MigrationHubStrategy,MigrationHubStrategyRecommendations,,1,,,aws_migrationhubstrategy_,,migrationhubstrategy_,Migration Hub Strategy,AWS,,,,,
+mobile,mobile,mobile,mobile,,mobile,,,Mobile,Mobile,,1,,,aws_mobile_,,mobile_,Mobile,AWS,,,,,
+,,mobileanalytics,,,,,,MobileAnalytics,MobileAnalytics,,,,,,,,Mobile Analytics,AWS,x,,,,Only in Go SDK v1
+,,,,,,,,,,,,,,,,,Mobile SDK for Unity,AWS,x,,,,No SDK support
+,,,,,,,,,,,,,,,,,Mobile SDK for Xamarin,AWS,x,,,,No SDK support
+,,,,,,,,,,,,,,,,,Monitron,Amazon,x,,,,No SDK support
+mq,mq,mq,mq,,mq,,,MQ,MQ,,1,,,aws_mq_,,mq_,MQ,Amazon,,,,,
+mturk,mturk,mturk,mturk,,mturk,,,MTurk,MTurk,,1,,,aws_mturk_,,mturk_,MTurk (Mechanical Turk),Amazon,,,,,
+mwaa,mwaa,mwaa,mwaa,,mwaa,,,MWAA,MWAA,,1,,,aws_mwaa_,,mwaa_,MWAA (Managed Workflows for Apache Airflow),Amazon,,,,,
+neptune,neptune,neptune,neptune,,neptune,,,Neptune,Neptune,,1,,,aws_neptune_,,neptune_,Neptune,Amazon,,,,,
+network-firewall,networkfirewall,networkfirewall,networkfirewall,,networkfirewall,,,NetworkFirewall,NetworkFirewall,,1,,,aws_networkfirewall_,,networkfirewall_,Network Firewall,AWS,,,,,
+networkmanager,networkmanager,networkmanager,networkmanager,,networkmanager,,,NetworkManager,NetworkManager,,1,,,aws_networkmanager_,,networkmanager_,Network Manager,AWS,,,,,
+,,,,,,,,,,,,,,,,,NICE DCV,,x,,,,No SDK support
+nimble,nimble,nimblestudio,nimble,,nimble,,nimblestudio,Nimble,NimbleStudio,,1,,,aws_nimble_,,nimble_,Nimble Studio,Amazon,,,,,
+opensearch,opensearch,opensearchservice,opensearch,,opensearch,,opensearchservice,OpenSearch,OpenSearchService,,1,,,aws_opensearch_,,opensearch_,OpenSearch,Amazon,,,,,
+opsworks,opsworks,opsworks,opsworks,,opsworks,,,OpsWorks,OpsWorks,,1,,,aws_opsworks_,,opsworks_,OpsWorks,AWS,,,,,
+opsworks-cm,opsworkscm,opsworkscm,opsworkscm,,opsworkscm,,,OpsWorksCM,OpsWorksCM,,1,,,aws_opsworkscm_,,opsworkscm_,OpsWorks CM,AWS,,,,,
+organizations,organizations,organizations,organizations,,organizations,,,Organizations,Organizations,,1,,,aws_organizations_,,organizations_,Organizations,AWS,,,,,
+outposts,outposts,outposts,outposts,,outposts,,,Outposts,Outposts,,1,,,aws_outposts_,,outposts_,Outposts,AWS,,,,,
+,,,,,ec2outposts,ec2,,EC2Outposts,,,,,aws_ec2_(coip_pool|local_gateway),aws_ec2outposts_,outposts_,ec2_coip_pool;ec2_local_gateway,Outposts (EC2),AWS,x,x,,,Part of EC2
+panorama,panorama,panorama,panorama,,panorama,,,Panorama,Panorama,,1,,,aws_panorama_,,panorama_,Panorama,AWS,,,,,
+,,,,,,,,,,,,,,,,,ParallelCluster,AWS,x,,,,No SDK support
+personalize,personalize,personalize,personalize,,personalize,,,Personalize,Personalize,,1,,,aws_personalize_,,personalize_,Personalize,Amazon,,,,,
+personalize-events,personalizeevents,personalizeevents,personalizeevents,,personalizeevents,,,PersonalizeEvents,PersonalizeEvents,,1,,,aws_personalizeevents_,,personalizeevents_,Personalize Events,Amazon,,,,,
+personalize-runtime,personalizeruntime,personalizeruntime,personalizeruntime,,personalizeruntime,,,PersonalizeRuntime,PersonalizeRuntime,,1,,,aws_personalizeruntime_,,personalizeruntime_,Personalize Runtime,Amazon,,,,,
+pinpoint,pinpoint,pinpoint,pinpoint,,pinpoint,,,Pinpoint,Pinpoint,,1,,,aws_pinpoint_,,pinpoint_,Pinpoint,Amazon,,,,,
+pinpoint-email,pinpointemail,pinpointemail,pinpointemail,,pinpointemail,,,PinpointEmail,PinpointEmail,,1,,,aws_pinpointemail_,,pinpointemail_,Pinpoint Email,Amazon,,,,,
+pinpoint-sms-voice,pinpointsmsvoice,pinpointsmsvoice,pinpointsmsvoice,,pinpointsmsvoice,,,PinpointSMSVoice,PinpointSMSVoice,,1,,,aws_pinpointsmsvoice_,,pinpointsmsvoice_,Pinpoint SMS and Voice,Amazon,,,,,
+polly,polly,polly,polly,,polly,,,Polly,Polly,,1,,,aws_polly_,,polly_,Polly,Amazon,,,,,
+,,,,,,,,,,,,,,,,,Porting Assistant for .NET,,x,,,,No SDK support
+pricing,pricing,pricing,pricing,,pricing,,,Pricing,Pricing,,1,,,aws_pricing_,,pricing_,Pricing Calculator,AWS,,,,,
+proton,proton,proton,proton,,proton,,,Proton,Proton,,1,,,aws_proton_,,proton_,Proton,AWS,,,,,
+qldb,qldb,qldb,qldb,,qldb,,,QLDB,QLDB,,1,,,aws_qldb_,,qldb_,QLDB (Quantum Ledger Database),Amazon,,,,,
+qldb-session,qldbsession,qldbsession,qldbsession,,qldbsession,,,QLDBSession,QLDBSession,,1,,,aws_qldbsession_,,qldbsession_,QLDB Session,Amazon,,,,,
+quicksight,quicksight,quicksight,quicksight,,quicksight,,,QuickSight,QuickSight,,1,,,aws_quicksight_,,quicksight_,QuickSight,Amazon,,,,,
+ram,ram,ram,ram,,ram,,,RAM,RAM,,1,,,aws_ram_,,ram_,RAM (Resource Access Manager),AWS,,,,,
+rds,rds,rds,rds,,rds,,,RDS,RDS,,1,2,aws_(db_|rds_),aws_rds_,,rds_;db_,RDS (Relational Database),Amazon,,,,,
+rds-data,rdsdata,rdsdataservice,rdsdata,,rdsdata,,rdsdataservice,RDSData,RDSDataService,,1,,,aws_rdsdata_,,rdsdata_,RDS Data,Amazon,,,,,
+pi,pi,pi,pi,,pi,,,PI,PI,,1,,,aws_pi_,,pi_,RDS Performance Insights (PI),Amazon,,,,,
+rbin,rbin,recyclebin,rbin,,rbin,,recyclebin,RBin,RecycleBin,,1,,,aws_rbin_,,rbin_,Recycle Bin (RBin),Amazon,,,,,
+,,,,,,,,,,,,,,,,,Red Hat OpenShift Service on AWS (ROSA),AWS,x,,,,No SDK support
+redshift,redshift,redshift,redshift,,redshift,,,Redshift,Redshift,,1,,,aws_redshift_,,redshift_,Redshift,Amazon,,,,,
+redshift-data,redshiftdata,redshiftdataapiservice,redshiftdata,,redshiftdata,,redshiftdataapiservice,RedshiftData,RedshiftDataAPIService,,1,,,aws_redshiftdata_,,redshiftdata_,Redshift Data,Amazon,,,,,
+redshift-serverless,redshiftserverless,redshiftserverless,redshiftserverless,,redshiftserverless,,,RedshiftServerless,RedshiftServerless,,1,,,aws_redshiftserverless_,,redshiftserverless_,Redshift Serverless,Amazon,,,,,
+rekognition,rekognition,rekognition,rekognition,,rekognition,,,Rekognition,Rekognition,,1,,,aws_rekognition_,,rekognition_,Rekognition,Amazon,,,,,
+resiliencehub,resiliencehub,resiliencehub,resiliencehub,,resiliencehub,,,ResilienceHub,ResilienceHub,,1,,,aws_resiliencehub_,,resiliencehub_,Resilience Hub,AWS,,,,,
+resource-explorer-2,resourceexplorer2,resourceexplorer2,resourceexplorer2,,resourceexplorer2,,,ResourceExplorer2,ResourceExplorer2,,,2,,aws_resourceexplorer2_,,resourceexplorer2_,Resource Explorer,AWS,,,,,
+resource-groups,resourcegroups,resourcegroups,resourcegroups,,resourcegroups,,,ResourceGroups,ResourceGroups,,1,,,aws_resourcegroups_,,resourcegroups_,Resource Groups,AWS,,,,,
+resourcegroupstaggingapi,resourcegroupstaggingapi,resourcegroupstaggingapi,resourcegroupstaggingapi,,resourcegroupstaggingapi,,resourcegroupstagging,ResourceGroupsTaggingAPI,ResourceGroupsTaggingAPI,,1,,,aws_resourcegroupstaggingapi_,,resourcegroupstaggingapi_,Resource Groups Tagging,AWS,,,,,
+robomaker,robomaker,robomaker,robomaker,,robomaker,,,RoboMaker,RoboMaker,,1,,,aws_robomaker_,,robomaker_,RoboMaker,AWS,,,,,
+rolesanywhere,rolesanywhere,rolesanywhere,rolesanywhere,,rolesanywhere,,,RolesAnywhere,RolesAnywhere,,,2,,aws_rolesanywhere_,,rolesanywhere_,Roles Anywhere,AWS,,,,,
+route53,route53,route53,route53,,route53,,,Route53,Route53,x,1,,aws_route53_(?!resolver_),aws_route53_,,route53_delegation_;route53_health_;route53_hosted_;route53_key_;route53_query_;route53_record;route53_traffic_;route53_vpc_;route53_zone,Route 53,Amazon,,,,,
+route53domains,route53domains,route53domains,route53domains,,route53domains,,,Route53Domains,Route53Domains,x,,2,,aws_route53domains_,,route53domains_,Route 53 Domains,Amazon,,,,,
+route53-recovery-cluster,route53recoverycluster,route53recoverycluster,route53recoverycluster,,route53recoverycluster,,,Route53RecoveryCluster,Route53RecoveryCluster,,1,,,aws_route53recoverycluster_,,route53recoverycluster_,Route 53 Recovery Cluster,Amazon,,,,,
+route53-recovery-control-config,route53recoverycontrolconfig,route53recoverycontrolconfig,route53recoverycontrolconfig,,route53recoverycontrolconfig,,,Route53RecoveryControlConfig,Route53RecoveryControlConfig,x,1,,,aws_route53recoverycontrolconfig_,,route53recoverycontrolconfig_,Route 53 Recovery Control Config,Amazon,,,,,
+route53-recovery-readiness,route53recoveryreadiness,route53recoveryreadiness,route53recoveryreadiness,,route53recoveryreadiness,,,Route53RecoveryReadiness,Route53RecoveryReadiness,x,1,,,aws_route53recoveryreadiness_,,route53recoveryreadiness_,Route 53 Recovery Readiness,Amazon,,,,,
+route53resolver,route53resolver,route53resolver,route53resolver,,route53resolver,,,Route53Resolver,Route53Resolver,,1,,aws_route53_resolver_,aws_route53resolver_,,route53_resolver_,Route 53 Resolver,Amazon,,,,,
+s3api,s3api,s3,s3,,s3,,s3api,S3,S3,x,1,,aws_(canonical_user_id|s3_bucket|s3_object),aws_s3_,,s3_bucket;s3_object;canonical_user_id,S3 (Simple Storage),Amazon,,,AWS_S3_ENDPOINT,TF_AWS_S3_ENDPOINT,
+s3control,s3control,s3control,s3control,,s3control,,,S3Control,S3Control,,1,2,aws_(s3_account_|s3control_|s3_access_),aws_s3control_,,s3control;s3_account_;s3_access_,S3 Control,Amazon,,,,,
+glacier,glacier,glacier,glacier,,glacier,,,Glacier,Glacier,,1,,,aws_glacier_,,glacier_,S3 Glacier,Amazon,,,,,
+s3outposts,s3outposts,s3outposts,s3outposts,,s3outposts,,,S3Outposts,S3Outposts,,1,,,aws_s3outposts_,,s3outposts_,S3 on Outposts,Amazon,,,,,
+sagemaker,sagemaker,sagemaker,sagemaker,,sagemaker,,,SageMaker,SageMaker,,1,,,aws_sagemaker_,,sagemaker_,SageMaker,Amazon,,,,,
+sagemaker-a2i-runtime,sagemakera2iruntime,augmentedairuntime,sagemakera2iruntime,,sagemakera2iruntime,,augmentedairuntime,SageMakerA2IRuntime,AugmentedAIRuntime,,1,,,aws_sagemakera2iruntime_,,sagemakera2iruntime_,SageMaker A2I (Augmented AI),Amazon,,,,,
+sagemaker-edge,sagemakeredge,sagemakeredgemanager,sagemakeredge,,sagemakeredge,,sagemakeredgemanager,SageMakerEdge,SagemakerEdgeManager,,1,,,aws_sagemakeredge_,,sagemakeredge_,SageMaker Edge Manager,Amazon,,,,,
+sagemaker-featurestore-runtime,sagemakerfeaturestoreruntime,sagemakerfeaturestoreruntime,sagemakerfeaturestoreruntime,,sagemakerfeaturestoreruntime,,,SageMakerFeatureStoreRuntime,SageMakerFeatureStoreRuntime,,1,,,aws_sagemakerfeaturestoreruntime_,,sagemakerfeaturestoreruntime_,SageMaker Feature Store Runtime,Amazon,,,,,
+sagemaker-runtime,sagemakerruntime,sagemakerruntime,sagemakerruntime,,sagemakerruntime,,,SageMakerRuntime,SageMakerRuntime,,1,,,aws_sagemakerruntime_,,sagemakerruntime_,SageMaker Runtime,Amazon,,,,,
+,,,,,,,,,,,,,,,,,SAM (Serverless Application Model),AWS,x,,,,No SDK support
+savingsplans,savingsplans,savingsplans,savingsplans,,savingsplans,,,SavingsPlans,SavingsPlans,,1,,,aws_savingsplans_,,savingsplans_,Savings Plans,AWS,,,,,
+,,,,,,,,,,,,,,,,,Schema Conversion Tool,AWS,x,,,,No SDK support
+sdb,sdb,simpledb,,simpledb,sdb,,sdb,SimpleDB,SimpleDB,,1,,aws_simpledb_,aws_sdb_,,simpledb_,SDB (SimpleDB),Amazon,,,,,
+scheduler,scheduler,scheduler,scheduler,,scheduler,,,Scheduler,Scheduler,,,2,,aws_scheduler_,,scheduler_,EventBridge Scheduler,Amazon,,,,,
+secretsmanager,secretsmanager,secretsmanager,secretsmanager,,secretsmanager,,,SecretsManager,SecretsManager,,1,,,aws_secretsmanager_,,secretsmanager_,Secrets Manager,AWS,,,,,
+securityhub,securityhub,securityhub,securityhub,,securityhub,,,SecurityHub,SecurityHub,,1,,,aws_securityhub_,,securityhub_,Security Hub,AWS,,,,,
+serverlessrepo,serverlessrepo,serverlessapplicationrepository,serverlessapplicationrepository,,serverlessrepo,,serverlessapprepo;serverlessapplicationrepository,ServerlessRepo,ServerlessApplicationRepository,,1,,aws_serverlessapplicationrepository_,aws_serverlessrepo_,,serverlessapplicationrepository_,Serverless Application Repository,AWS,,,,,
+servicecatalog,servicecatalog,servicecatalog,servicecatalog,,servicecatalog,,,ServiceCatalog,ServiceCatalog,,1,,,aws_servicecatalog_,,servicecatalog_,Service Catalog,AWS,,,,,
+servicecatalog-appregistry,servicecatalogappregistry,appregistry,servicecatalogappregistry,,servicecatalogappregistry,,appregistry,ServiceCatalogAppRegistry,AppRegistry,,1,,,aws_servicecatalogappregistry_,,servicecatalogappregistry_,Service Catalog AppRegistry,AWS,,,,,
+service-quotas,servicequotas,servicequotas,servicequotas,,servicequotas,,,ServiceQuotas,ServiceQuotas,,1,,,aws_servicequotas_,,servicequotas_,Service Quotas,,,,,,
+ses,ses,ses,ses,,ses,,,SES,SES,,1,,,aws_ses_,,ses_,SES (Simple Email),Amazon,,,,,
+sesv2,sesv2,sesv2,sesv2,,sesv2,,,SESV2,SESV2,,,2,,aws_sesv2_,,sesv2_,SESv2 (Simple Email V2),Amazon,,,,,
+stepfunctions,stepfunctions,sfn,sfn,,sfn,,stepfunctions,SFN,SFN,,1,,,aws_sfn_,,sfn_,SFN (Step Functions),AWS,,,,,
+shield,shield,shield,shield,,shield,,,Shield,Shield,x,1,,,aws_shield_,,shield_,Shield,AWS,,,,,
+signer,signer,signer,signer,,signer,,,Signer,Signer,,1,,,aws_signer_,,signer_,Signer,AWS,,,,,
+sms,sms,sms,sms,,sms,,,SMS,SMS,,1,,,aws_sms_,,sms_,SMS (Server Migration),AWS,,,,,
+snow-device-management,snowdevicemanagement,snowdevicemanagement,snowdevicemanagement,,snowdevicemanagement,,,SnowDeviceManagement,SnowDeviceManagement,,1,,,aws_snowdevicemanagement_,,snowdevicemanagement_,Snow Device Management,AWS,,,,,
+snowball,snowball,snowball,snowball,,snowball,,,Snowball,Snowball,,1,,,aws_snowball_,,snowball_,Snow Family,AWS,,,,,
+sns,sns,sns,sns,,sns,,,SNS,SNS,,1,,,aws_sns_,,sns_,SNS (Simple Notification),Amazon,,,,,
+sqs,sqs,sqs,sqs,,sqs,,,SQS,SQS,,1,,,aws_sqs_,,sqs_,SQS (Simple Queue),Amazon,,,,,
+ssm,ssm,ssm,ssm,,ssm,,,SSM,SSM,,1,2,,aws_ssm_,,ssm_,SSM (Systems Manager),AWS,,,,,
+ssm-contacts,ssmcontacts,ssmcontacts,ssmcontacts,,ssmcontacts,,,SSMContacts,SSMContacts,,1,,,aws_ssmcontacts_,,ssmcontacts_,SSM Incident Manager Contacts,AWS,,,,,
+ssm-incidents,ssmincidents,ssmincidents,ssmincidents,,ssmincidents,,,SSMIncidents,SSMIncidents,,1,,,aws_ssmincidents_,,ssmincidents_,SSM Incident Manager Incidents,AWS,,,,,
+sso,sso,sso,sso,,sso,,,SSO,SSO,,1,,,aws_sso_,,sso_,SSO (Single Sign-On),AWS,,,,,
+sso-admin,ssoadmin,ssoadmin,ssoadmin,,ssoadmin,,,SSOAdmin,SSOAdmin,,1,,,aws_ssoadmin_,,ssoadmin_,SSO Admin,AWS,,,,,
+identitystore,identitystore,identitystore,identitystore,,identitystore,,,IdentityStore,IdentityStore,,,2,,aws_identitystore_,,identitystore_,SSO Identity Store,AWS,,,,,
+sso-oidc,ssooidc,ssooidc,ssooidc,,ssooidc,,,SSOOIDC,SSOOIDC,,1,,,aws_ssooidc_,,ssooidc_,SSO OIDC,AWS,,,,,
+storagegateway,storagegateway,storagegateway,storagegateway,,storagegateway,,,StorageGateway,StorageGateway,,1,,,aws_storagegateway_,,storagegateway_,Storage Gateway,AWS,,,,,
+sts,sts,sts,sts,,sts,,,STS,STS,x,1,,aws_caller_identity,aws_sts_,,caller_identity,STS (Security Token),AWS,,,AWS_STS_ENDPOINT,TF_AWS_STS_ENDPOINT,
+,,,,,,,,,,,,,,,,,Sumerian,Amazon,x,,,,No SDK support
+support,support,support,support,,support,,,Support,Support,,1,,,aws_support_,,support_,Support,AWS,,,,,
+swf,swf,swf,swf,,swf,,,SWF,SWF,,1,,,aws_swf_,,swf_,SWF (Simple Workflow),Amazon,,,,,
+,,,,,,,,,,,,,,,,,Tag Editor,AWS,x,,,,Part of Resource Groups Tagging
+textract,textract,textract,textract,,textract,,,Textract,Textract,,1,,,aws_textract_,,textract_,Textract,Amazon,,,,,
+timestream-query,timestreamquery,timestreamquery,timestreamquery,,timestreamquery,,,TimestreamQuery,TimestreamQuery,,1,,,aws_timestreamquery_,,timestreamquery_,Timestream Query,Amazon,,,,,
+timestream-write,timestreamwrite,timestreamwrite,timestreamwrite,,timestreamwrite,,,TimestreamWrite,TimestreamWrite,,1,,,aws_timestreamwrite_,,timestreamwrite_,Timestream Write,Amazon,,,,,
+,,,,,,,,,,,,,,,,,Tools for PowerShell,AWS,x,,,,No SDK support
+,,,,,,,,,,,,,,,,,Training and Certification,AWS,x,,,,No SDK support
+transcribe,transcribe,transcribeservice,transcribe,,transcribe,,transcribeservice,Transcribe,TranscribeService,,,2,,aws_transcribe_,,transcribe_,Transcribe,Amazon,,,,,
+,,transcribestreamingservice,transcribestreaming,,transcribestreaming,,transcribestreamingservice,TranscribeStreaming,TranscribeStreamingService,,1,,,aws_transcribestreaming_,,transcribestreaming_,Transcribe Streaming,Amazon,,,,,
+transfer,transfer,transfer,transfer,,transfer,,,Transfer,Transfer,,1,,,aws_transfer_,,transfer_,Transfer Family,AWS,,,,,
+,,,,,transitgateway,ec2,,TransitGateway,,,,,aws_ec2_transit_gateway,aws_transitgateway_,transitgateway_,ec2_transit_gateway,Transit Gateway,AWS,x,x,,,Part of EC2
+translate,translate,translate,translate,,translate,,,Translate,Translate,,1,,,aws_translate_,,translate_,Translate,Amazon,,,,,
+,,,,,,,,,,,,,,,,,Trusted Advisor,AWS,x,,,,Part of Support
+,,,,,vpc,ec2,,VPC,,,,,aws_((default_)?(network_acl|route_table|security_group|subnet|vpc(?!_ipam))|ec2_(managed|network|subnet|traffic)|egress_only_internet|flow_log|internet_gateway|main_route_table_association|nat_gateway|network_interface|prefix_list|route\b),aws_vpc_,vpc_,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_peering_;vpc\.;vpcs\.,VPC (Virtual Private Cloud),Amazon,x,x,,,Part of EC2
+,,,,,ipam,ec2,,IPAM,,,,,aws_vpc_ipam,aws_ipam_,ipam_,vpc_ipam,VPC IPAM (IP Address Manager),Amazon,x,x,,,Part of EC2
+,,,,,vpnclient,ec2,,ClientVPN,,,,,aws_ec2_client_vpn,aws_vpnclient_,vpnclient_,ec2_client_vpn_,VPN (Client),AWS,x,x,,,Part of EC2
+,,,,,vpnsite,ec2,,SiteVPN,,,,,aws_(customer_gateway|vpn_),aws_vpnsite_,vpnsite_,customer_gateway;vpn_,VPN (Site-to-Site),AWS,x,x,,,Part of EC2
+wafv2,wafv2,wafv2,wafv2,,wafv2,,,WAFV2,WAFV2,,1,,,aws_wafv2_,,wafv2_,WAF,AWS,,,,,
+waf,waf,waf,waf,,waf,,,WAF,WAF,,1,,,aws_waf_,,waf_,WAF Classic,AWS,,,,,
+waf-regional,wafregional,wafregional,wafregional,,wafregional,,,WAFRegional,WAFRegional,,1,,,aws_wafregional_,,wafregional_,WAF Classic Regional,AWS,,,,,
+,,,,,,,,,,,,,,,,,WAM (WorkSpaces Application Manager),Amazon,x,,,,No SDK support
+,,,,,wavelength,ec2,,Wavelength,,,,,aws_ec2_carrier_gateway,aws_wavelength_,wavelength_,ec2_carrier_,Wavelength,AWS,x,x,,,Part of EC2
+budgets,budgets,budgets,budgets,,budgets,,,Budgets,Budgets,,1,,,aws_budgets_,,budgets_,Web Services Budgets,Amazon,,,,,
+wellarchitected,wellarchitected,wellarchitected,wellarchitected,,wellarchitected,,,WellArchitected,WellArchitected,,1,,,aws_wellarchitected_,,wellarchitected_,Well-Architected Tool,AWS,,,,,
+workdocs,workdocs,workdocs,workdocs,,workdocs,,,WorkDocs,WorkDocs,,1,,,aws_workdocs_,,workdocs_,WorkDocs,Amazon,,,,,
+worklink,worklink,worklink,worklink,,worklink,,,WorkLink,WorkLink,,1,,,aws_worklink_,,worklink_,WorkLink,Amazon,,,,,
+workmail,workmail,workmail,workmail,,workmail,,,WorkMail,WorkMail,,1,,,aws_workmail_,,workmail_,WorkMail,Amazon,,,,,
+workmailmessageflow,workmailmessageflow,workmailmessageflow,workmailmessageflow,,workmailmessageflow,,,WorkMailMessageFlow,WorkMailMessageFlow,,1,,,aws_workmailmessageflow_,,workmailmessageflow_,WorkMail Message Flow,Amazon,,,,,
+workspaces,workspaces,workspaces,workspaces,,workspaces,,,WorkSpaces,WorkSpaces,,1,,,aws_workspaces_,,workspaces_,WorkSpaces,Amazon,,,,,
+workspaces-web,workspacesweb,workspacesweb,workspacesweb,,workspacesweb,,,WorkSpacesWeb,WorkSpacesWeb,,1,,,aws_workspacesweb_,,workspacesweb_,WorkSpaces Web,Amazon,,,,,
+xray,xray,xray,xray,,xray,,,XRay,XRay,,1,,,aws_xray_,,xray_,X-Ray,AWS,,,,,
diff --git a/website/allowed-subcategories.txt b/website/allowed-subcategories.txt
index 2c6e96c9eca9..edc437489f95 100644
--- a/website/allowed-subcategories.txt
+++ b/website/allowed-subcategories.txt
@@ -240,6 +240,7 @@ Redshift Data
Redshift Serverless
Rekognition
Resilience Hub
+Resource Explorer
Resource Groups
Resource Groups Tagging
RoboMaker
diff --git a/website/docs/guides/custom-service-endpoints.html.md b/website/docs/guides/custom-service-endpoints.html.md
index 2b78fb91b61d..e36eae550e2e 100644
--- a/website/docs/guides/custom-service-endpoints.html.md
+++ b/website/docs/guides/custom-service-endpoints.html.md
@@ -304,6 +304,7 @@ provider "aws" {
redshiftserverless
rekognition
resiliencehub
+ resourceexplorer2
resourcegroups
resourcegroupstaggingapi
(or resourcegroupstagging
)
robomaker
diff --git a/website/docs/index.html.markdown b/website/docs/index.html.markdown
index 1cc725a36efc..445761c21dbd 100644
--- a/website/docs/index.html.markdown
+++ b/website/docs/index.html.markdown
@@ -331,7 +331,7 @@ In addition to [generic `provider` arguments](https://www.terraform.io/docs/conf
* `shared_credentials_file` - (Optional, **Deprecated**) Path to the shared credentials file. If not set and a profile is used, the default value is `~/.aws/credentials`. Can also be set with the `AWS_SHARED_CREDENTIALS_FILE` environment variable.
* `shared_credentials_files` - (Optional) List of paths to the shared credentials file. If not set and a profile is used, the default value is `[~/.aws/credentials]`. A single value can also be set with the `AWS_SHARED_CREDENTIALS_FILE` environment variable.
* `skip_credentials_validation` - (Optional) Whether to skip credentials validation via the STS API. This can be useful for testing and for AWS API implementations that do not have STS available.
-* `skip_get_ec2_platforms` - (Optional) Whether to skip getting the supported EC2 platforms. Can be used when you do not have `ec2:DescribeAccountAttributes` permissions.
+* `skip_get_ec2_platforms` - (Optional, **Deprecated**) Whether to skip getting the supported EC2 platforms. Can be used when you do not have `ec2:DescribeAccountAttributes` permissions.
* `skip_metadata_api_check` - (Optional) Whether to skip the AWS Metadata API check. Useful for AWS API implementations that do not have a metadata API endpoint. Setting to `true` prevents Terraform from authenticating via the Metadata API. You may need to use other authentication methods like static credentials, configuration variables, or environment variables.
* `skip_region_validation` - (Optional) Whether to skip validating the region. Useful for AWS-like implementations that use their own region names or to bypass the validation for regions that aren't publicly available yet.
* `skip_requesting_account_id` - (Optional) Whether to skip requesting the account ID. Useful for AWS API implementations that do not have the IAM, STS API, or metadata API. When set to `true` and not determined previously, returns an empty account ID when manually constructing ARN attributes with the following: