Repository: gruntwork-io/cloud-nuke
Pull request #622 (2023-11-17 00:50:35)

Modify circleCi config to exclude test db subnet group
<!-- Prepend '[WIP]' to the title if this PR is still a work-in-progress. Remove it when it is ready for review! -->

## Description

<!-- Description of the changes introduced by this PR. -->

## TODOs

Read the [Gruntwork contribution guidelines](https://gruntwork.notion.site/Gruntwork-Coding-Methodology-02fdcd6e4b004e818553684760bf691e).

- [ ] Update the docs.
- [ ] Run the relevant tests successfully, including pre-commit checks.
- [ ] Ensure any 3rd party code adheres with our [license policy](https://www.notion.so/gruntwork/Gruntwork-licenses-and-open-source-usage-policy-f7dece1f780341c7b69c1763f22b1378) or delete this line if its not applicable.
- [ ] Include release notes. If this PR is backward incompatible, include a migration guide.
- [ ] Attention Grunts - if this PR adds support for a new resource, ensure the `nuke_sandbox` and `nuke_phxdevops` jobs in `.circleci/config.yml` have been updated with appropriate exclusions (either directly in the job or via the `.circleci/nuke_config.yml` file) to prevent nuking IAM roles, groups, resources, etc that are important for the test accounts.


## Release Notes (draft)

<!-- One-line description of the PR that can be included in the final release notes. -->
Added / Removed / Updated [X].

### Migration Guide

<!-- Important: If you made any backward incompatible changes, then you must write a migration guide! -->




Patch:
diff --git a/.circleci/nuke_config.yml b/.circleci/nuke_config.yml
index 87f3003..0bd011c 100644
--- a/.circleci/nuke_config.yml
+++ b/.circleci/nuke_config.yml
@@ -255,3 +255,8 @@ ACM:
   exclude:
     names_regex:
       - ".*gruntwork.in"
+
+DBSubnetGroups:
+  exclude:
+    names_regex:
+      - "gruntwork-test-db-subnet-group"
\ No newline at end of file
diff --git a/aws/resources/transit_gateway.go b/aws/resources/transit_gateway.go
index e7943af..8c8f8d7 100644
--- a/aws/resources/transit_gateway.go
+++ b/aws/resources/transit_gateway.go
@@ -185,3 +185,44 @@ func (tgw *TransitGatewaysVpcAttachment) nukeAll(ids []*string) error {
 	logging.Debugf(("[OK] %d Transit Gateway Vpc Attachment(s) deleted in %s"), len(deletedIds), tgw.Region)
 	return nil
 }
+
+func (tgpa *TransitGatewayPeeringAttachment) getAll(c context.Context, configObj config.Config) ([]*string, error) {
+	var ids []*string
+	err := tgpa.Client.DescribeTransitGatewayPeeringAttachmentsPages(&ec2.DescribeTransitGatewayPeeringAttachmentsInput{}, func(result *ec2.DescribeTransitGatewayPeeringAttachmentsOutput, lastPage bool) bool {
+		for _, attachment := range result.TransitGatewayPeeringAttachments {
+			if configObj.TransitGatewayPeeringAttachment.ShouldInclude(config.ResourceValue{
+				Time: attachment.CreationTime,
+			}) {
+				ids = append(ids, attachment.TransitGatewayAttachmentId)
+			}
+		}
+
+		return !lastPage
+	})
+	if err != nil {
+		return nil, errors.WithStackTrace(err)
+	}
+
+	return ids, nil
+}
+
+func (tgpa *TransitGatewayPeeringAttachment) nukeAll(ids []*string) error {
+	for _, id := range ids {
+		_, err := tgpa.Client.DeleteTransitGatewayPeeringAttachment(&ec2.DeleteTransitGatewayPeeringAttachmentInput{
+			TransitGatewayAttachmentId: id,
+		})
+		// Record status of this resource
+		report.Record(report.Entry{
+			Identifier:   aws.StringValue(id),
+			ResourceType: tgpa.ResourceName(),
+			Error:        err,
+		})
+		if err != nil {
+			logging.Errorf("[Failed] %s", err)
+		} else {
+			logging.Debugf("Deleted Transit Gateway Peering Attachment: %s", *id)
+		}
+	}
+
+	return nil
+}
diff --git a/aws/resources/transit_gateway_types.go b/aws/resources/transit_gateway_types.go
index 42ab807..3240487 100644
--- a/aws/resources/transit_gateway_types.go
+++ b/aws/resources/transit_gateway_types.go
@@ -10,6 +10,47 @@ import (
 	"github.com/gruntwork-io/go-commons/errors"
 )
 
+// TransitGateways - represents all transit gateways
+type TransitGatewayPeeringAttachment struct {
+	Client ec2iface.EC2API
+	Region string
+	Ids    []string
+}
+
+func (tgpa *TransitGatewayPeeringAttachment) Init(session *session.Session) {
+	tgpa.Client = ec2.New(session)
+}
+
+func (tgpa *TransitGatewayPeeringAttachment) ResourceName() string {
+	return "transit-gateway-peering-attachment"
+}
+
+func (tgpa *TransitGatewayPeeringAttachment) MaxBatchSize() int {
+	return maxBatchSize
+}
+
+func (tgpa *TransitGatewayPeeringAttachment) ResourceIdentifiers() []string {
+	return tgpa.Ids
+}
+
+func (tgpa *TransitGatewayPeeringAttachment) GetAndSetIdentifiers(c context.Context, configObj config.Config) ([]string, error) {
+	identifiers, err := tgpa.getAll(c, configObj)
+	if err != nil {
+		return nil, err
+	}
+
+	tgpa.Ids = awsgo.StringValueSlice(identifiers)
+	return tgpa.Ids, nil
+}
+
+func (tgpa *TransitGatewayPeeringAttachment) Nuke(identifiers []string) error {
+	if err := tgpa.nukeAll(awsgo.StringSlice(identifiers)); err != nil {
+		return errors.WithStackTrace(err)
+	}
+
+	return nil
+}
+
 // TransitGatewaysVpcAttachment - represents all transit gateways vpc attachments
 type TransitGatewaysVpcAttachment struct {
 	Client ec2iface.EC2API
diff --git a/config/config.go b/config/config.go
index a1d5f18..1456c48 100644
--- a/config/config.go
+++ b/config/config.go
@@ -15,70 +15,71 @@ const DefaultAwsResourceExclusionTagKey = "cloud-nuke-excluded"
 
 // Config - the config object we pass around
 type Config struct {
-	ACM                          ResourceType               `yaml:"ACM"`
-	ACMPCA                       ResourceType               `yaml:"ACMPCA"`
-	AMI                          ResourceType               `yaml:"AMI"`
-	APIGateway                   ResourceType               `yaml:"APIGateway"`
-	APIGatewayV2                 ResourceType               `yaml:"APIGatewayV2"`
-	AccessAnalyzer               ResourceType               `yaml:"AccessAnalyzer"`
-	AutoScalingGroup             ResourceType               `yaml:"AutoScalingGroup"`
-	BackupVault                  ResourceType               `yaml:"BackupVault"`
-	CloudWatchAlarm              ResourceType               `yaml:"CloudWatchAlarm"`
-	CloudWatchDashboard          ResourceType               `yaml:"CloudWatchDashboard"`
-	CloudWatchLogGroup           ResourceType               `yaml:"CloudWatchLogGroup"`
-	CloudtrailTrail              ResourceType               `yaml:"CloudtrailTrail"`
-	CodeDeployApplications       ResourceType               `yaml:"CodeDeployApplications"`
-	ConfigServiceRecorder        ResourceType               `yaml:"ConfigServiceRecorder"`
-	ConfigServiceRule            ResourceType               `yaml:"ConfigServiceRule"`
-	DBClusters                   ResourceType               `yaml:"DBClusters"`
-	DBInstances                  ResourceType               `yaml:"DBInstances"`
-	DBSubnetGroups               ResourceType               `yaml:"DBSubnetGroups"`
-	DynamoDB                     ResourceType               `yaml:"DynamoDB"`
-	EBSVolume                    ResourceType               `yaml:"EBSVolume"`
-	EC2                          ResourceType               `yaml:"EC2"`
-	EC2DedicatedHosts            ResourceType               `yaml:"EC2DedicatedHosts"`
-	EC2DHCPOption                ResourceType               `yaml:"EC2DhcpOption"`
-	EC2KeyPairs                  ResourceType               `yaml:"EC2KeyPairs"`
-	ECRRepository                ResourceType               `yaml:"ECRRepository"`
-	ECSCluster                   ResourceType               `yaml:"ECSCluster"`
-	ECSService                   ResourceType               `yaml:"ECSService"`
-	EKSCluster                   ResourceType               `yaml:"EKSCluster"`
-	ELBv1                        ResourceType               `yaml:"ELBv1"`
-	ELBv2                        ResourceType               `yaml:"ELBv2"`
-	ElasticFileSystem            ResourceType               `yaml:"ElasticFileSystem"`
-	ElasticIP                    ResourceType               `yaml:"ElasticIP"`
-	Elasticache                  ResourceType               `yaml:"Elasticache"`
-	ElasticacheParameterGroups   ResourceType               `yaml:"ElasticacheParameterGroups"`
-	ElasticacheSubnetGroups      ResourceType               `yaml:"ElasticacheSubnetGroups"`
-	GuardDuty                    ResourceType               `yaml:"GuardDuty"`
-	IAMGroups                    ResourceType               `yaml:"IAMGroups"`
-	IAMPolicies                  ResourceType               `yaml:"IAMPolicies"`
-	IAMRoles                     ResourceType               `yaml:"IAMRoles"`
-	IAMServiceLinkedRoles        ResourceType               `yaml:"IAMServiceLinkedRoles"`
-	IAMUsers                     ResourceType               `yaml:"IAMUsers"`
-	KMSCustomerKeys              KMSCustomerKeyResourceType `yaml:"KMSCustomerKeys"`
-	KinesisStream                ResourceType               `yaml:"KinesisStream"`
-	LambdaFunction               ResourceType               `yaml:"LambdaFunction"`
-	LaunchConfiguration          ResourceType               `yaml:"LaunchConfiguration"`
-	LaunchTemplate               ResourceType               `yaml:"LaunchTemplate"`
-	MacieMember                  ResourceType               `yaml:"MacieMember"`
-	MSKCluster                   ResourceType               `yaml:"MSKCluster"`
-	NatGateway                   ResourceType               `yaml:"NatGateway"`
-	OIDCProvider                 ResourceType               `yaml:"OIDCProvider"`
-	OpenSearchDomain             ResourceType               `yaml:"OpenSearchDomain"`
-	Redshift                     ResourceType               `yaml:"Redshift"`
-	RdsSnapshot                  ResourceType               `yaml:"RdsSnapshot"`
-	S3                           ResourceType               `yaml:"s3"`
-	SNS                          ResourceType               `yaml:"SNS"`
-	SQS                          ResourceType               `yaml:"SQS"`
-	SageMakerNotebook            ResourceType               `yaml:"SageMakerNotebook"`
-	SecretsManagerSecrets        ResourceType               `yaml:"SecretsManager"`
-	SecurityHub                  ResourceType               `yaml:"SecurityHub"`
-	Snapshots                    ResourceType               `yaml:"Snapshots"`
-	TransitGateway               ResourceType               `yaml:"TransitGateway"`
-	TransitGatewayRouteTable     ResourceType               `yaml:"TransitGatewayRouteTable"`
-	TransitGatewaysVpcAttachment ResourceType               `yaml:"TransitGatewaysVpcAttachment"`
-	VPC                          ResourceType               `yaml:"VPC"`
+	ACM                             ResourceType               `yaml:"ACM"`
+	ACMPCA                          ResourceType               `yaml:"ACMPCA"`
+	AMI                             ResourceType               `yaml:"AMI"`
+	APIGateway                      ResourceType               `yaml:"APIGateway"`
+	APIGatewayV2                    ResourceType               `yaml:"APIGatewayV2"`
+	AccessAnalyzer                  ResourceType               `yaml:"AccessAnalyzer"`
+	AutoScalingGroup                ResourceType               `yaml:"AutoScalingGroup"`
+	BackupVault                     ResourceType               `yaml:"BackupVault"`
+	CloudWatchAlarm                 ResourceType               `yaml:"CloudWatchAlarm"`
+	CloudWatchDashboard             ResourceType               `yaml:"CloudWatchDashboard"`
+	CloudWatchLogGroup              ResourceType               `yaml:"CloudWatchLogGroup"`
+	CloudtrailTrail                 ResourceType               `yaml:"CloudtrailTrail"`
+	CodeDeployApplications          ResourceType               `yaml:"CodeDeployApplications"`
+	ConfigServiceRecorder           ResourceType               `yaml:"ConfigServiceRecorder"`
+	ConfigServiceRule               ResourceType               `yaml:"ConfigServiceRule"`
+	DBClusters                      ResourceType               `yaml:"DBClusters"`
+	DBInstances                     ResourceType               `yaml:"DBInstances"`
+	DBSubnetGroups                  ResourceType               `yaml:"DBSubnetGroups"`
+	DynamoDB                        ResourceType               `yaml:"DynamoDB"`
+	EBSVolume                       ResourceType               `yaml:"EBSVolume"`
+	EC2                             ResourceType               `yaml:"EC2"`
+	EC2DedicatedHosts               ResourceType               `yaml:"EC2DedicatedHosts"`
+	EC2DHCPOption                   ResourceType               `yaml:"EC2DhcpOption"`
+	EC2KeyPairs                     ResourceType               `yaml:"EC2KeyPairs"`
+	ECRRepository                   ResourceType               `yaml:"ECRRepository"`
+	ECSCluster                      ResourceType               `yaml:"ECSCluster"`
+	ECSService                      ResourceType               `yaml:"ECSService"`
+	EKSCluster                      ResourceType               `yaml:"EKSCluster"`
+	ELBv1                           ResourceType               `yaml:"ELBv1"`
+	ELBv2                           ResourceType               `yaml:"ELBv2"`
+	ElasticFileSystem               ResourceType               `yaml:"ElasticFileSystem"`
+	ElasticIP                       ResourceType               `yaml:"ElasticIP"`
+	Elasticache                     ResourceType               `yaml:"Elasticache"`
+	ElasticacheParameterGroups      ResourceType               `yaml:"ElasticacheParameterGroups"`
+	ElasticacheSubnetGroups         ResourceType               `yaml:"ElasticacheSubnetGroups"`
+	GuardDuty                       ResourceType               `yaml:"GuardDuty"`
+	IAMGroups                       ResourceType               `yaml:"IAMGroups"`
+	IAMPolicies                     ResourceType               `yaml:"IAMPolicies"`
+	IAMRoles                        ResourceType               `yaml:"IAMRoles"`
+	IAMServiceLinkedRoles           ResourceType               `yaml:"IAMServiceLinkedRoles"`
+	IAMUsers                        ResourceType               `yaml:"IAMUsers"`
+	KMSCustomerKeys                 KMSCustomerKeyResourceType `yaml:"KMSCustomerKeys"`
+	KinesisStream                   ResourceType               `yaml:"KinesisStream"`
+	LambdaFunction                  ResourceType               `yaml:"LambdaFunction"`
+	LaunchConfiguration             ResourceType               `yaml:"LaunchConfiguration"`
+	LaunchTemplate                  ResourceType               `yaml:"LaunchTemplate"`
+	MacieMember                     ResourceType               `yaml:"MacieMember"`
+	MSKCluster                      ResourceType               `yaml:"MSKCluster"`
+	NatGateway                      ResourceType               `yaml:"NatGateway"`
+	OIDCProvider                    ResourceType               `yaml:"OIDCProvider"`
+	OpenSearchDomain                ResourceType               `yaml:"OpenSearchDomain"`
+	Redshift                        ResourceType               `yaml:"Redshift"`
+	RdsSnapshot                     ResourceType               `yaml:"RdsSnapshot"`
+	S3                              ResourceType               `yaml:"s3"`
+	SNS                             ResourceType               `yaml:"SNS"`
+	SQS                             ResourceType               `yaml:"SQS"`
+	SageMakerNotebook               ResourceType               `yaml:"SageMakerNotebook"`
+	SecretsManagerSecrets           ResourceType               `yaml:"SecretsManager"`
+	SecurityHub                     ResourceType               `yaml:"SecurityHub"`
+	Snapshots                       ResourceType               `yaml:"Snapshots"`
+	TransitGateway                  ResourceType               `yaml:"TransitGateway"`
+	TransitGatewayRouteTable        ResourceType               `yaml:"TransitGatewayRouteTable"`
+	TransitGatewaysVpcAttachment    ResourceType               `yaml:"TransitGatewaysVpcAttachment"`
+	TransitGatewayPeeringAttachment ResourceType               `yaml:"TransitGatewayPeeringAttachment"`
+	VPC                             ResourceType               `yaml:"VPC"`
 }
 
 func (c *Config) addTimeAfterFilter(timeFilter *time.Time, fieldName string) {
diff --git a/config/mocks/acmpca_all.yaml b/config/mocks/acmpca_all.yaml
deleted file mode 100644
index 825fd8a..0000000
--- a/config/mocks/acmpca_all.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-acmpca:
-  include:
-    names_regex:
-      - .*
diff --git a/config/mocks/acmpca_cleanup.yaml b/config/mocks/acmpca_cleanup.yaml
deleted file mode 100644
index a13c4c0..0000000
--- a/config/mocks/acmpca_cleanup.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-acmpca:
-  include:
-    names_regex:
-      - ^cloud-nuke-test-
-      - -cloud-nuke-test-
diff --git a/config/mocks/acmpca_empty.yaml b/config/mocks/acmpca_empty.yaml
deleted file mode 100644
index 75232ae..0000000
--- a/config/mocks/acmpca_empty.yaml
+++ /dev/null
@@ -1,1 +0,0 @@
-acmpca:
diff --git a/config/mocks/acmpca_empty_filters.yaml b/config/mocks/acmpca_empty_filters.yaml
deleted file mode 100644
index b4afa92..0000000
--- a/config/mocks/acmpca_empty_filters.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-acmpca:
-  include:
-    names_regex:
-  exclude:
-    names_regex:
diff --git a/config/mocks/acmpca_empty_rules.yaml b/config/mocks/acmpca_empty_rules.yaml
deleted file mode 100644
index a0f984c..0000000
--- a/config/mocks/acmpca_empty_rules.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
-acmpca:
-  include:
-  exclude:
diff --git a/config/mocks/acmpca_exclude_names.yaml b/config/mocks/acmpca_exclude_names.yaml
deleted file mode 100644
index b998c0c..0000000
--- a/config/mocks/acmpca_exclude_names.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-acmpca:
-  exclude:
-    names_regex:
-      - donotdelete-0
-      - donotdelete-1
diff --git a/config/mocks/acmpca_filter_names.yaml b/config/mocks/acmpca_filter_names.yaml
deleted file mode 100644
index ed54bb5..0000000
--- a/config/mocks/acmpca_filter_names.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
-acmpca:
-  include:
-    names_regex:
-      - ^cloud-nuke-*
-      - test
-  exclude:
-    names_regex:
-      - donotdelete-0
-      - donotdelete-1
diff --git a/config/mocks/acmpca_include_names.yaml b/config/mocks/acmpca_include_names.yaml
deleted file mode 100644
index 639ee0c..0000000
--- a/config/mocks/acmpca_include_names.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-acmpca:
-  include:
-    names_regex:
-      - ^cloud-nuke-*
-      - test
diff --git a/config/mocks/apigateway_empty.yaml b/config/mocks/apigateway_empty.yaml
deleted file mode 100644
index 3a2e164..0000000
--- a/config/mocks/apigateway_empty.yaml
+++ /dev/null
@@ -1,1 +0,0 @@
-APIGateway:
diff --git a/config/mocks/apigateway_empty_filters.yaml b/config/mocks/apigateway_empty_filters.yaml
deleted file mode 100644
index 2b7df20..0000000
--- a/config/mocks/apigateway_empty_filters.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-APIGateway:
-  include:
-    names_regex:
-  exclude:
-    names_regex:
diff --git a/config/mocks/apigateway_empty_rules.yaml b/config/mocks/apigateway_empty_rules.yaml
deleted file mode 100644
index b178db2..0000000
--- a/config/mocks/apigateway_empty_rules.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
-APIGateway:
-  include:
-  exclude:
diff --git a/config/mocks/apigateway_exclude_names.yaml b/config/mocks/apigateway_exclude_names.yaml
deleted file mode 100644
index e49d5ab..0000000
--- a/config/mocks/apigateway_exclude_names.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-APIGateway:
-  exclude:
-    names_regex:
-      - alice
-      - bob
diff --git a/config/mocks/apigateway_exclude_names.yml b/config/mocks/apigateway_exclude_names.yml
deleted file mode 100644
index e49d5ab..0000000
--- a/config/mocks/apigateway_exclude_names.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-APIGateway:
-  exclude:
-    names_regex:
-      - alice
-      - bob
diff --git a/config/mocks/apigateway_filter_names.yaml b/config/mocks/apigateway_filter_names.yaml
deleted file mode 100644
index 865d3ad..0000000
--- a/config/mocks/apigateway_filter_names.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
-APIGateway:
-  include:
-    names_regex:
-      - ^cloud-nuke-*
-      - test
-  exclude:
-    names_regex:
-      - alice
-      - bob
diff --git a/config/mocks/apigateway_include_names.yaml b/config/mocks/apigateway_include_names.yaml
deleted file mode 100644
index f99da99..0000000
--- a/config/mocks/apigateway_include_names.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-APIGateway:
-  include:
-    names_regex:
-      - ^cloud-nuke-*
-      - test
diff --git a/config/mocks/apigatewayv2_empty.yaml b/config/mocks/apigatewayv2_empty.yaml
deleted file mode 100644
index d56bcc5..0000000
--- a/config/mocks/apigatewayv2_empty.yaml
+++ /dev/null
@@ -1,1 +0,0 @@
-APIGatewayV2:
diff --git a/config/mocks/apigatewayv2_empty_filters.yaml b/config/mocks/apigatewayv2_empty_filters.yaml
deleted file mode 100644
index 7e0092b..0000000
--- a/config/mocks/apigatewayv2_empty_filters.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-APIGatewayV2:
-  include:
-    names_regex:
-  exclude:
-    names_regex:
diff --git a/config/mocks/apigatewayv2_empty_rules.yaml b/config/mocks/apigatewayv2_empty_rules.yaml
deleted file mode 100644
index 952f0dc..0000000
--- a/config/mocks/apigatewayv2_empty_rules.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
-APIGatewayV2:
-  include:
-  exclude:
diff --git a/config/mocks/apigatewayv2_exclude_names.yaml b/config/mocks/apigatewayv2_exclude_names.yaml
deleted file mode 100644
index cfdbf23..0000000
--- a/config/mocks/apigatewayv2_exclude_names.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-APIGatewayV2:
-  exclude:
-    names_regex:
-      - alice
-      - bob
diff --git a/config/mocks/apigatewayv2_filter_names.yaml b/config/mocks/apigatewayv2_filter_names.yaml
deleted file mode 100644
index bdcfd79..0000000
--- a/config/mocks/apigatewayv2_filter_names.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
-APIGatewayV2:
-  include:
-    names_regex:
-      - ^cloud-nuke-*
-      - test
-  exclude:
-    names_regex:
-      - alice
-      - bob
diff --git a/config/mocks/apigatewayv2_include_names.yaml b/config/mocks/apigatewayv2_include_names.yaml
deleted file mode 100644
index aa437b3..0000000
--- a/config/mocks/apigatewayv2_include_names.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-APIGatewayV2:
-  include:
-    names_regex:
-      - ^cloud-nuke-*
-      - test
diff --git a/config/mocks/cloudtrail_empty.yaml b/config/mocks/cloudtrail_empty.yaml
deleted file mode 100644
index 3886d81..0000000
--- a/config/mocks/cloudtrail_empty.yaml
+++ /dev/null
@@ -1,1 +0,0 @@
-CloudtrailTrail:
diff --git a/config/mocks/cloudtrail_empty_filters.yaml b/config/mocks/cloudtrail_empty_filters.yaml
deleted file mode 100644
index df4ce1c..0000000
--- a/config/mocks/cloudtrail_empty_filters.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-CloudtrailTrail:
-  include:
-    names_regex:
-  exclude:
-    names_regex:
diff --git a/config/mocks/cloudtrail_empty_rules.yaml b/config/mocks/cloudtrail_empty_rules.yaml
deleted file mode 100644
index 7d97bbc..0000000
--- a/config/mocks/cloudtrail_empty_rules.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
-CloudtrailTrail:
-  include:
-  exclude:
diff --git a/config/mocks/cloudtrail_exclude_names.yaml b/config/mocks/cloudtrail_exclude_names.yaml
deleted file mode 100644
index 3e39975..0000000
--- a/config/mocks/cloudtrail_exclude_names.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-CloudtrailTrail:
-  exclude:
-    names_regex:
-      - alice
-      - bob
diff --git a/config/mocks/cloudtrail_filter_names.yaml b/config/mocks/cloudtrail_filter_names.yaml
deleted file mode 100644
index 2da9f61..0000000
--- a/config/mocks/cloudtrail_filter_names.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
-CloudtrailTrail:
-  include:
-    names_regex:
-      - ^cloud-nuke-*
-      - test
-  exclude:
-    names_regex:
-      - alice
-      - bob
diff --git a/config/mocks/cloudtrail_include_names.yaml b/config/mocks/cloudtrail_include_names.yaml
deleted file mode 100644
index b5cd9b3..0000000
--- a/config/mocks/cloudtrail_include_names.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-CloudtrailTrail:
-  include:
-    names_regex:
-      - ^cloud-nuke-*
-      - test
diff --git a/config/mocks/dynamodb_empty.yaml b/config/mocks/dynamodb_empty.yaml
deleted file mode 100644
index 5965d20..0000000
--- a/config/mocks/dynamodb_empty.yaml
+++ /dev/null
@@ -1,1 +0,0 @@
-DynamoDB:
diff --git a/config/mocks/dynamodb_empty_filters.yaml b/config/mocks/dynamodb_empty_filters.yaml
deleted file mode 100644
index 09045f8..0000000
--- a/config/mocks/dynamodb_empty_filters.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-DynamoDB:
-  include:
-    names_regex:
-  exclude:
-    names_regex:
diff --git a/config/mocks/dynamodb_empty_rules.yaml b/config/mocks/dynamodb_empty_rules.yaml
deleted file mode 100644
index fcd09b7..0000000
--- a/config/mocks/dynamodb_empty_rules.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
-DynamoDB:
-  include:
-  exclude:
diff --git a/config/mocks/dynamodb_exclude_names.yaml b/config/mocks/dynamodb_exclude_names.yaml
deleted file mode 100644
index f609816..0000000
--- a/config/mocks/dynamodb_exclude_names.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-DynamoDB:
-  exclude:
-    names_regex:
-      - alice
-      - bob
-
diff --git a/config/mocks/dynamodb_filter_names.yaml b/config/mocks/dynamodb_filter_names.yaml
deleted file mode 100644
index 2e17c33..0000000
--- a/config/mocks/dynamodb_filter_names.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
-DynamoDB:
-  include:
-    names_regex:
-      - ^cloud-nuke-*
-      - test
-  exclude:
-    names_regex:
-      - alice
-      - bob
diff --git a/config/mocks/dynamodb_include_names.yaml b/config/mocks/dynamodb_include_names.yaml
deleted file mode 100644
index 3e786e1..0000000
--- a/config/mocks/dynamodb_include_names.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-DynamoDB:
-  include:
-    names_regex:
-      - ^cloud-nuke-*
-      - test
diff --git a/config/mocks/ecs_cluster_cleanup.yaml b/config/mocks/ecs_cluster_cleanup.yaml
deleted file mode 100644
index c22ea7a..0000000
--- a/config/mocks/ecs_cluster_cleanup.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-ECSCluster:
-  include:
-    names_regex:
-      - ^cloud-nuke-test-
-      - -cloud-nuke-test-
diff --git a/config/mocks/ecs_cluster_empty.yaml b/config/mocks/ecs_cluster_empty.yaml
deleted file mode 100644
index a3effee..0000000
--- a/config/mocks/ecs_cluster_empty.yaml
+++ /dev/null
@@ -1,1 +0,0 @@
-ECSCluster:
diff --git a/config/mocks/ecs_cluster_empty_filters.yaml b/config/mocks/ecs_cluster_empty_filters.yaml
deleted file mode 100644
index 3f70849..0000000
--- a/config/mocks/ecs_cluster_empty_filters.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-ECSCluster:
-  include:
-    names_regex:
-  exclude:
-    names_regex:
diff --git a/config/mocks/ecs_cluster_empty_rules.yaml b/config/mocks/ecs_cluster_empty_rules.yaml
deleted file mode 100644
index f4915f1..0000000
--- a/config/mocks/ecs_cluster_empty_rules.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
-ECSCluster:
-  include:
-  exclude:
diff --git a/config/mocks/ecs_cluster_exclude_names.yaml b/config/mocks/ecs_cluster_exclude_names.yaml
deleted file mode 100644
index a0c7ff1..0000000
--- a/config/mocks/ecs_cluster_exclude_names.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-ECSCluster:
-  exclude:
-    names_regex:
-      - alice
-      - bob
diff --git a/config/mocks/ecs_cluster_filter_names.yaml b/config/mocks/ecs_cluster_filter_names.yaml
deleted file mode 100644
index 57f45ef..0000000
--- a/config/mocks/ecs_cluster_filter_names.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
-ECSCluster:
-  include:
-    names_regex:
-      - ^cloud-nuke-*
-      - test
-  exclude:
-    names_regex:
-      - alice
-      - bob
diff --git a/config/mocks/ecs_cluster_include_names.yaml b/config/mocks/ecs_cluster_include_names.yaml
deleted file mode 100644
index 0987342..0000000
--- a/config/mocks/ecs_cluster_include_names.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-ECSCluster:
-  include:
-    names_regex:
-      - ^cloud-nuke-*
-      - test
diff --git a/config/mocks/ecs_service_cleanup.yaml b/config/mocks/ecs_service_cleanup.yaml
deleted file mode 100644
index c3396c5..0000000
--- a/config/mocks/ecs_service_cleanup.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-ECSService:
-  include:
-    names_regex:
-      - ^cloud-nuke-test-
-      - -cloud-nuke-test-
diff --git a/config/mocks/ecs_service_empty.yaml b/config/mocks/ecs_service_empty.yaml
deleted file mode 100644
index a044fac..0000000
--- a/config/mocks/ecs_service_empty.yaml
+++ /dev/null
@@ -1,1 +0,0 @@
-ECSService:
diff --git a/config/mocks/ecs_service_empty_filters.yaml b/config/mocks/ecs_service_empty_filters.yaml
deleted file mode 100644
index c602de5..0000000
--- a/config/mocks/ecs_service_empty_filters.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-ECSService:
-  include:
-    names_regex:
-  exclude:
-    names_regex:
diff --git a/config/mocks/ecs_service_empty_rules.yaml b/config/mocks/ecs_service_empty_rules.yaml
deleted file mode 100644
index 42ed7f9..0000000
--- a/config/mocks/ecs_service_empty_rules.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
-ECSService:
-  include:
-  exclude:
diff --git a/config/mocks/ecs_service_exclude_names.yaml b/config/mocks/ecs_service_exclude_names.yaml
deleted file mode 100644
index 6e562ab..0000000
--- a/config/mocks/ecs_service_exclude_names.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-ECSService:
-  exclude:
-    names_regex:
-      - alice
-      - bob
diff --git a/config/mocks/ecs_service_filter_names.yaml b/config/mocks/ecs_service_filter_names.yaml
deleted file mode 100644
index 3c932cd..0000000
--- a/config/mocks/ecs_service_filter_names.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
-ECSService:
-  include:
-    names_regex:
-      - ^cloud-nuke-*
-      - test
-  exclude:
-    names_regex:
-      - alice
-      - bob
diff --git a/config/mocks/ecs_service_include_names.yaml b/config/mocks/ecs_service_include_names.yaml
deleted file mode 100644
index 7d5541b..0000000
--- a/config/mocks/ecs_service_include_names.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-ECSService:
-  include:
-    names_regex:
-      - ^cloud-nuke-*
-      - test
diff --git a/config/mocks/efs_empty.yaml b/config/mocks/efs_empty.yaml
deleted file mode 100644
index a561b49..0000000
--- a/config/mocks/efs_empty.yaml
+++ /dev/null
@@ -1,1 +0,0 @@
-ElasticFileSystem:
diff --git a/config/mocks/efs_empty_filters.yaml b/config/mocks/efs_empty_filters.yaml
deleted file mode 100644
index 24696b9..0000000
--- a/config/mocks/efs_empty_filters.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-ElasticFileSystem:
-  include:
-    names_regex:
-  exclude:
-    names_regex:
diff --git a/config/mocks/efs_empty_rules.yaml b/config/mocks/efs_empty_rules.yaml
deleted file mode 100644
index 820dfa3..0000000
--- a/config/mocks/efs_empty_rules.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
-ElasticFileSystem:
-  include:
-  exclude:
diff --git a/config/mocks/efs_exclude_names.yaml b/config/mocks/efs_exclude_names.yaml
deleted file mode 100644
index 7b4c1a4..0000000
--- a/config/mocks/efs_exclude_names.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-ElasticFileSystem:
-  exclude:
-    names_regex:
-      - alice
-      - bob
diff --git a/config/mocks/efs_filter_names.yaml b/config/mocks/efs_filter_names.yaml
deleted file mode 100644
index 1873f2e..0000000
--- a/config/mocks/efs_filter_names.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
-ElasticFileSystem:
-  include:
-    names_regex:
-      - ^cloud-nuke-*
-      - test
-  exclude:
-    names_regex:
-      - alice
-      - bob
diff --git a/config/mocks/efs_include_names.yaml b/config/mocks/efs_include_names.yaml
deleted file mode 100644
index 0378c2b..0000000
--- a/config/mocks/efs_include_names.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-ElasticFileSystem:
-  include:
-    names_regex:
-      - ^cloud-nuke-*
-      - test
diff --git a/config/mocks/elbv2_cleanup.yaml b/config/mocks/elbv2_cleanup.yaml
deleted file mode 100644
index 5c25377..0000000
--- a/config/mocks/elbv2_cleanup.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-ELBv2:
-  include:
-    names_regex:
-      - ^cloud-nuke-test-
-      - -cloud-nuke-test-
diff --git a/config/mocks/elbv2_empty.yaml b/config/mocks/elbv2_empty.yaml
deleted file mode 100644
index 2383c0d..0000000
--- a/config/mocks/elbv2_empty.yaml
+++ /dev/null
@@ -1,1 +0,0 @@
-ELBv2:
diff --git a/config/mocks/elbv2_empty_filters.yaml b/config/mocks/elbv2_empty_filters.yaml
deleted file mode 100644
index 48c115a..0000000
--- a/config/mocks/elbv2_empty_filters.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-ELBv2:
-  include:
-    names_regex:
-  exclude:
-    names_regex:
diff --git a/config/mocks/elbv2_empty_rules.yaml b/config/mocks/elbv2_empty_rules.yaml
deleted file mode 100644
index 045c5da..0000000
--- a/config/mocks/elbv2_empty_rules.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
-ELBv2:
-  include:
-  exclude:
diff --git a/config/mocks/elbv2_exclude_names.yaml b/config/mocks/elbv2_exclude_names.yaml
deleted file mode 100644
index eb2650f..0000000
--- a/config/mocks/elbv2_exclude_names.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-ELBv2:
-  exclude:
-    names_regex:
-      - alice
-      - bob
diff --git a/config/mocks/elbv2_filter_names.yaml b/config/mocks/elbv2_filter_names.yaml
deleted file mode 100644
index c5ece8a..0000000
--- a/config/mocks/elbv2_filter_names.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
-ELBv2:
-  include:
-    names_regex:
-      - ^cloud-nuke-*
-      - test
-  exclude:
-    names_regex:
-      - alice
-      - bob
diff --git a/config/mocks/elbv2_include_names.yaml b/config/mocks/elbv2_include_names.yaml
deleted file mode 100644
index c793abc..0000000
--- a/config/mocks/elbv2_include_names.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-ELBv2:
-  include:
-    names_regex:
-      - ^cloud-nuke-*
-      - test
diff --git a/config/mocks/iam_users_cleanup.yaml b/config/mocks/iam_users_cleanup.yaml
deleted file mode 100644
index 53a9668..0000000
--- a/config/mocks/iam_users_cleanup.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-IAMUsers:
-  include:
-    names_regex:
-      - ^cloud-nuke-test-
-      - -cloud-nuke-test-
diff --git a/config/mocks/iam_users_empty.yaml b/config/mocks/iam_users_empty.yaml
deleted file mode 100644
index cbd41fb..0000000
--- a/config/mocks/iam_users_empty.yaml
+++ /dev/null
@@ -1,1 +0,0 @@
-IAMUsers:
diff --git a/config/mocks/iam_users_empty_filters.yaml b/config/mocks/iam_users_empty_filters.yaml
deleted file mode 100644
index ab05a53..0000000
--- a/config/mocks/iam_users_empty_filters.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-IAMUsers:
-  include:
-    names_regex:
-  exclude:
-    names_regex:
diff --git a/config/mocks/iam_users_empty_rules.yaml b/config/mocks/iam_users_empty_rules.yaml
deleted file mode 100644
index cf95db7..0000000
--- a/config/mocks/iam_users_empty_rules.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
-IAMUsers:
-  include:
-  exclude:
diff --git a/config/mocks/iam_users_exclude_names.yaml b/config/mocks/iam_users_exclude_names.yaml
deleted file mode 100644
index cd6dbc6..0000000
--- a/config/mocks/iam_users_exclude_names.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-IAMUsers:
-  exclude:
-    names_regex:
-      - alice
-      - bob
diff --git a/config/mocks/iam_users_filter_names.yaml b/config/mocks/iam_users_filter_names.yaml
deleted file mode 100644
index f48fcf4..0000000
--- a/config/mocks/iam_users_filter_names.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
-IAMUsers:
-  include:
-    names_regex:
-      - ^cloud-nuke-*
-      - test
-  exclude:
-    names_regex:
-      - alice
-      - bob
diff --git a/config/mocks/iam_users_include_names.yaml b/config/mocks/iam_users_include_names.yaml
deleted file mode 100644
index dcbdb85..0000000
--- a/config/mocks/iam_users_include_names.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-IAMUsers:
-  include:
-    names_regex:
-      - ^cloud-nuke-*
-      - test
diff --git a/config/mocks/s3_all.yaml b/config/mocks/s3_all.yaml
deleted file mode 100644
index ab69fe0..0000000
--- a/config/mocks/s3_all.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-s3:
-  include:
-    names_regex:
-      - .*__TESTID__$
diff --git a/config/mocks/s3_cleanup.yaml b/config/mocks/s3_cleanup.yaml
deleted file mode 100644
index 69584fb..0000000
--- a/config/mocks/s3_cleanup.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-s3:
-  include:
-    names_regex:
-      - ^cloud-nuke-test-
-      - -cloud-nuke-test-
diff --git a/config/mocks/s3_empty.yaml b/config/mocks/s3_empty.yaml
deleted file mode 100644
index 783792e..0000000
--- a/config/mocks/s3_empty.yaml
+++ /dev/null
@@ -1,1 +0,0 @@
-s3:
diff --git a/config/mocks/s3_empty_filters.yaml b/config/mocks/s3_empty_filters.yaml
deleted file mode 100644
index 8e86060..0000000
--- a/config/mocks/s3_empty_filters.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-s3:
-  include:
-    names_regex:
-  exclude:
-    names_regex:
diff --git a/config/mocks/s3_empty_rules.yaml b/config/mocks/s3_empty_rules.yaml
deleted file mode 100644
index 8c3a7f2..0000000
--- a/config/mocks/s3_empty_rules.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
-s3:
-  include:
-  exclude:
diff --git a/config/mocks/s3_exclude_names.yaml b/config/mocks/s3_exclude_names.yaml
deleted file mode 100644
index ae8c4f7..0000000
--- a/config/mocks/s3_exclude_names.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-s3:
-  exclude:
-    names_regex:
-      - public.*__TESTID__$
diff --git a/config/mocks/s3_filter_names.yaml b/config/mocks/s3_filter_names.yaml
deleted file mode 100644
index 15d1664..0000000
--- a/config/mocks/s3_filter_names.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-s3:
-  include:
-    names_regex:
-      - ^alb-.*-access-logs.*__TESTID__$
-      - prod.*__TESTID__$
-  exclude:
-    names_regex:
-      - public.*__TESTID__$
diff --git a/config/mocks/s3_include_names.yaml b/config/mocks/s3_include_names.yaml
deleted file mode 100644
index 0a03e46..0000000
--- a/config/mocks/s3_include_names.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-s3:
-  include:
-    names_regex:
-      - prod.*__TESTID__$
-      - ^alb-.*-access-logs.*__TESTID__$
diff --git a/config/mocks/sagemakernotebook_cleanup.yaml b/config/mocks/sagemakernotebook_cleanup.yaml
deleted file mode 100644
index 4635588..0000000
--- a/config/mocks/sagemakernotebook_cleanup.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-SageMakerNotebook:
-  include:
-    names_regex:
-      - ^cloud-nuke-test-
-      - -cloud-nuke-test-
\ No newline at end of file
diff --git a/config/mocks/sagemakernotebook_empty.yaml b/config/mocks/sagemakernotebook_empty.yaml
deleted file mode 100644
index 1b6a9f0..0000000
--- a/config/mocks/sagemakernotebook_empty.yaml
+++ /dev/null
@@ -1,1 +0,0 @@
-SageMakerNotebook:
\ No newline at end of file
diff --git a/config/mocks/sagemakernotebook_empty_filters.yaml b/config/mocks/sagemakernotebook_empty_filters.yaml
deleted file mode 100644
index 4186e06..0000000
--- a/config/mocks/sagemakernotebook_empty_filters.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-SageMakerNotebook:
-  include:
-    names_regex:
-  exclude:
-    names_regex:
\ No newline at end of file
diff --git a/config/mocks/sagemakernotebook_empty_rules.yaml b/config/mocks/sagemakernotebook_empty_rules.yaml
deleted file mode 100644
index 0bf1749..0000000
--- a/config/mocks/sagemakernotebook_empty_rules.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
-SageMakerNotebook:
-  include:
-  exclude:
\ No newline at end of file
diff --git a/config/mocks/sagemakernotebook_exclude_names.yaml b/config/mocks/sagemakernotebook_exclude_names.yaml
deleted file mode 100644
index 86b13e2..0000000
--- a/config/mocks/sagemakernotebook_exclude_names.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-SageMakerNotebook:
-  exclude:
-    names_regex:
-      - alice
-      - bob
\ No newline at end of file
diff --git a/config/mocks/sagemakernotebook_filter_names.yaml b/config/mocks/sagemakernotebook_filter_names.yaml
deleted file mode 100644
index b983edf..0000000
--- a/config/mocks/sagemakernotebook_filter_names.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
-SageMakerNotebook:
-  include:
-    names_regex:
-      - ^cloud-nuke-*
-      - test
-  exclude:
-    names_regex:
-      - alice
-      - bob
\ No newline at end of file
diff --git a/config/mocks/sagemakernotebook_include_names.yaml b/config/mocks/sagemakernotebook_include_names.yaml
deleted file mode 100644
index 4213b30..0000000
--- a/config/mocks/sagemakernotebook_include_names.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-SageMakerNotebook:
-  include:
-    names_regex:
-      - ^cloud-nuke-*
-      - test
\ No newline at end of file
diff --git a/config/mocks/secrets_manager_cleanup.yaml b/config/mocks/secrets_manager_cleanup.yaml
deleted file mode 100644
index 77954ff..0000000
--- a/config/mocks/secrets_manager_cleanup.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-SecretsManager:
-  include:
-    names_regex:
-      - ^cloud-nuke-test-
-      - -cloud-nuke-test-
diff --git a/config/mocks/secrets_manager_empty.yaml b/config/mocks/secrets_manager_empty.yaml
deleted file mode 100644
index 393ded2..0000000
--- a/config/mocks/secrets_manager_empty.yaml
+++ /dev/null
@@ -1,1 +0,0 @@
-SecretsManager:
diff --git a/config/mocks/secrets_manager_empty_filters.yaml b/config/mocks/secrets_manager_empty_filters.yaml
deleted file mode 100644
index 1abea8d..0000000
--- a/config/mocks/secrets_manager_empty_filters.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-SecretsManager:
-  include:
-    names_regex:
-  exclude:
-    names_regex:
diff --git a/config/mocks/secrets_manager_empty_rules.yaml b/config/mocks/secrets_manager_empty_rules.yaml
deleted file mode 100644
index 4fa40b9..0000000
--- a/config/mocks/secrets_manager_empty_rules.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
-SecretsManager:
-  include:
-  exclude:
diff --git a/config/mocks/secrets_manager_exclude_names.yaml b/config/mocks/secrets_manager_exclude_names.yaml
deleted file mode 100644
index e176f9b..0000000
--- a/config/mocks/secrets_manager_exclude_names.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-SecretsManager:
-  exclude:
-    names_regex:
-      - alice
-      - bob
diff --git a/config/mocks/secrets_manager_filter_names.yaml b/config/mocks/secrets_manager_filter_names.yaml
deleted file mode 100644
index 7e9b413..0000000
--- a/config/mocks/secrets_manager_filter_names.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
-SecretsManager:
-  include:
-    names_regex:
-      - ^cloud-nuke-*
-      - test
-  exclude:
-    names_regex:
-      - alice
-      - bob
diff --git a/config/mocks/secrets_manager_include_names.yaml b/config/mocks/secrets_manager_include_names.yaml
deleted file mode 100644
index acbfc1e..0000000
--- a/config/mocks/secrets_manager_include_names.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-SecretsManager:
-  include:
-    names_regex:
-      - ^cloud-nuke-*
-      - test


Test patch:
diff --git a/aws/resources/transit_gateway_test.go b/aws/resources/transit_gateway_test.go
index 772c844..a6711ce 100644
--- a/aws/resources/transit_gateway_test.go
+++ b/aws/resources/transit_gateway_test.go
@@ -30,6 +30,24 @@ type mockedTransitGatewayVpcAttachment struct {
 	DeleteTransitGatewayVpcAttachmentOutput    ec2.DeleteTransitGatewayVpcAttachmentOutput
 }
 
+type mockedTransitGatewayPeeringAttachment struct {
+	ec2iface.EC2API
+	DescribeTransitGatewayPeeringAttachmentsOutput ec2.DescribeTransitGatewayPeeringAttachmentsOutput
+	DeleteTransitGatewayPeeringAttachmentOutput    ec2.DeleteTransitGatewayPeeringAttachmentOutput
+}
+
+func (m mockedTransitGatewayPeeringAttachment) DescribeTransitGatewayPeeringAttachmentsPages(
+	input *ec2.DescribeTransitGatewayPeeringAttachmentsInput,
+	fn func(*ec2.DescribeTransitGatewayPeeringAttachmentsOutput, bool) bool) error {
+	fn(&m.DescribeTransitGatewayPeeringAttachmentsOutput, true)
+	return nil
+}
+
+func (m mockedTransitGatewayPeeringAttachment) DeleteTransitGatewayPeeringAttachment(
+	input *ec2.DeleteTransitGatewayPeeringAttachmentInput) (*ec2.DeleteTransitGatewayPeeringAttachmentOutput, error) {
+	return &m.DeleteTransitGatewayPeeringAttachmentOutput, nil
+}
+
 func (m mockedTransitGateway) DescribeTransitGateways(
 	input *ec2.DescribeTransitGatewaysInput) (*ec2.DescribeTransitGatewaysOutput, error) {
 	return &m.DescribeTransitGatewaysOutput, nil
@@ -258,3 +276,68 @@ func TestTransitGatewayVpcAttachments_NukeAll(t *testing.T) {
 	err := tgw.nukeAll([]*string{aws.String("test-attachment")})
 	require.NoError(t, err)
 }
+
+func TestTransitGatewayPeeringAttachment_getAll(t *testing.T) {
+	telemetry.InitTelemetry("cloud-nuke", "")
+	t.Parallel()
+
+	now := time.Now()
+	attachment1 := "attachement1"
+	attachment2 := "attachement2"
+	tgpa := TransitGatewayPeeringAttachment{
+		Client: mockedTransitGatewayPeeringAttachment{
+			DescribeTransitGatewayPeeringAttachmentsOutput: ec2.DescribeTransitGatewayPeeringAttachmentsOutput{
+				TransitGatewayPeeringAttachments: []*ec2.TransitGatewayPeeringAttachment{
+					{
+						TransitGatewayAttachmentId: aws.String(attachment1),
+						CreationTime:               aws.Time(now),
+					},
+					{
+						TransitGatewayAttachmentId: aws.String(attachment2),
+						CreationTime:               aws.Time(now.Add(1)),
+					},
+				},
+			},
+		},
+	}
+
+	tests := map[string]struct {
+		configObj config.ResourceType
+		expected  []string
+	}{
+		"emptyFilter": {
+			configObj: config.ResourceType{},
+			expected:  []string{attachment1, attachment2},
+		},
+		"timeAfterExclusionFilter": {
+			configObj: config.ResourceType{
+				ExcludeRule: config.FilterRule{
+					TimeAfter: aws.Time(now),
+				}},
+			expected: []string{attachment1},
+		},
+	}
+	for name, tc := range tests {
+		t.Run(name, func(t *testing.T) {
+			names, err := tgpa.getAll(context.Background(), config.Config{
+				TransitGatewayPeeringAttachment: tc.configObj,
+			})
+			require.NoError(t, err)
+			require.Equal(t, tc.expected, aws.StringValueSlice(names))
+		})
+	}
+}
+
+func TestTransitGatewayPeeringAttachment_nukeAll(t *testing.T) {
+	telemetry.InitTelemetry("cloud-nuke", "")
+	t.Parallel()
+
+	tgw := TransitGatewayPeeringAttachment{
+		Client: mockedTransitGatewayPeeringAttachment{
+			DeleteTransitGatewayPeeringAttachmentOutput: ec2.DeleteTransitGatewayPeeringAttachmentOutput{},
+		},
+	}
+
+	err := tgw.nukeAll([]*string{aws.String("test-attachment")})
+	require.NoError(t, err)
+}
diff --git a/config/config_test.go b/config/config_test.go
index bec4e31..ee975eb 100644
--- a/config/config_test.go
+++ b/config/config_test.go
@@ -77,6 +77,7 @@ func emptyConfig() *Config {
 		ResourceType{FilterRule{}, FilterRule{}},
 		ResourceType{FilterRule{}, FilterRule{}},
 		ResourceType{FilterRule{}, FilterRule{}},
+		ResourceType{FilterRule{}, FilterRule{}},
 	}
 }
 
@@ -115,847 +116,6 @@ func TestConfig_Empty(t *testing.T) {
 	return
 }
 
-// S3 Tests
-
-func TestConfigS3_Empty(t *testing.T) {
-	configFilePath := "./mocks/s3_empty.yaml"
-	configObj, err := GetConfig(configFilePath)
-
-	require.NoError(t, err)
-
-	if !reflect.DeepEqual(configObj, emptyConfig()) {
-		assert.Fail(t, "Config should be empty, %+v\n", configObj.S3)
-	}
-
-	return
-}
-
-func TestConfigS3_EmptyFilters(t *testing.T) {
-	configFilePath := "./mocks/s3_empty_filters.yaml"
-	configObj, err := GetConfig(configFilePath)
-
-	require.NoError(t, err)
-
-	if !reflect.DeepEqual(configObj, emptyConfig()) {
-		assert.Fail(t, "Config should be empty, %+v\n", configObj)
-	}
-
-	return
-}
-
-func TestConfigS3_EmptyRules(t *testing.T) {
-	configFilePath := "./mocks/s3_empty_rules.yaml"
-	configObj, err := GetConfig(configFilePath)
-
-	require.NoError(t, err)
-
-	if !reflect.DeepEqual(configObj, emptyConfig()) {
-		assert.Fail(t, "Config should be empty, %+v\n", configObj)
-	}
-
-	return
-}
-
-func TestConfigS3_IncludeNames(t *testing.T) {
-	configFilePath := "./mocks/s3_include_names.yaml"
-	configObj, err := GetConfig(configFilePath)
-
-	require.NoError(t, err)
-
-	if reflect.DeepEqual(configObj, emptyConfig()) {
-		assert.Fail(t, "Config should not be empty, %+v\n", configObj)
-	}
-
-	if len(configObj.S3.IncludeRule.NamesRegExp) == 0 {
-		assert.Fail(t, "ConfigObj should contain S3 names regexes, %+v\n", configObj)
-	}
-
-	return
-}
-
-func TestConfigS3_ExcludeNames(t *testing.T) {
-	configFilePath := "./mocks/s3_exclude_names.yaml"
-	configObj, err := GetConfig(configFilePath)
-
-	require.NoError(t, err)
-
-	if reflect.DeepEqual(configObj, emptyConfig()) {
-		assert.Fail(t, "Config should not be empty, %+v\n", configObj)
-	}
-
-	if len(configObj.S3.ExcludeRule.NamesRegExp) == 0 {
-		assert.Fail(t, "ConfigObj should contain S3 names regexes, %+v\n", configObj)
-	}
-
-	return
-}
-
-func TestConfigS3_FilterNames(t *testing.T) {
-	configFilePath := "./mocks/s3_filter_names.yaml"
-	configObj, err := GetConfig(configFilePath)
-
-	require.NoError(t, err)
-
-	if reflect.DeepEqual(configObj, emptyConfig()) {
-		assert.Fail(t, "Config should not be empty, %+v\n", configObj)
-	}
-
-	if len(configObj.S3.IncludeRule.NamesRegExp) == 0 ||
-		len(configObj.S3.ExcludeRule.NamesRegExp) == 0 {
-		assert.Fail(t, "ConfigObj should contain S3 names regexes, %+v\n", configObj)
-	}
-
-	return
-}
-
-// IAM Users Tests
-
-func TestConfigIAM_Users_Empty(t *testing.T) {
-	configFilePath := "./mocks/iam_users_empty.yaml"
-	configObj, err := GetConfig(configFilePath)
-
-	require.NoError(t, err)
-
-	if !reflect.DeepEqual(configObj, emptyConfig()) {
-		assert.Fail(t, "Config should be empty, %+v\n", configObj.IAMUsers)
-	}
-
-	return
-}
-
-func TestConfigIAM_Users_EmptyFilters(t *testing.T) {
-	configFilePath := "./mocks/iam_users_empty_filters.yaml"
-	configObj, err := GetConfig(configFilePath)
-
-	require.NoError(t, err)
-
-	if !reflect.DeepEqual(configObj, emptyConfig()) {
-		assert.Fail(t, "Config should be empty, %+v\n", configObj)
-	}
-
-	return
-}
-
-func TestConfigIAM_Users_EmptyRules(t *testing.T) {
-	configFilePath := "./mocks/iam_users_empty_rules.yaml"
-	configObj, err := GetConfig(configFilePath)
-
-	require.NoError(t, err)
-
-	if !reflect.DeepEqual(configObj, emptyConfig()) {
-		assert.Fail(t, "Config should be empty, %+v\n", configObj)
-	}
-
-	return
-}
-
-func TestConfigIAM_Users_IncludeNames(t *testing.T) {
-	configFilePath := "./mocks/iam_users_include_names.yaml"
-	configObj, err := GetConfig(configFilePath)
-
-	require.NoError(t, err)
-
-	if reflect.DeepEqual(configObj, emptyConfig()) {
-		assert.Fail(t, "Config should not be empty, %+v\n", configObj)
-	}
-
-	if len(configObj.IAMUsers.IncludeRule.NamesRegExp) == 0 {
-		assert.Fail(t, "ConfigObj should contain IAM names regexes, %+v\n", configObj)
-	}
-
-	return
-}
-
-func TestConfigIAM_Users_ExcludeNames(t *testing.T) {
-	configFilePath := "./mocks/iam_users_exclude_names.yaml"
-	configObj, err := GetConfig(configFilePath)
-
-	require.NoError(t, err)
-
-	if reflect.DeepEqual(configObj, emptyConfig()) {
-		assert.Fail(t, "Config should not be empty, %+v\n", configObj)
-	}
-
-	if len(configObj.IAMUsers.ExcludeRule.NamesRegExp) == 0 {
-		assert.Fail(t, "ConfigObj should contain IAM names regexes, %+v\n", configObj)
-	}
-
-	return
-}
-
-func TestConfigIAM_Users_FilterNames(t *testing.T) {
-	configFilePath := "./mocks/iam_users_filter_names.yaml"
-	configObj, err := GetConfig(configFilePath)
-
-	require.NoError(t, err)
-
-	if reflect.DeepEqual(configObj, emptyConfig()) {
-		assert.Fail(t, "Config should not be empty, %+v\n", configObj)
-	}
-
-	if len(configObj.IAMUsers.IncludeRule.NamesRegExp) == 0 ||
-		len(configObj.IAMUsers.ExcludeRule.NamesRegExp) == 0 {
-		assert.Fail(t, "ConfigObj should contain IAM names regexes, %+v\n", configObj)
-	}
-
-	return
-}
-
-// Secrets Manager Tests
-
-func TestConfigSecretsManager_Empty(t *testing.T) {
-	configFilePath := "./mocks/secrets_manager_empty.yaml"
-	configObj, err := GetConfig(configFilePath)
-
-	require.NoError(t, err)
-
-	if !reflect.DeepEqual(configObj, emptyConfig()) {
-		assert.Fail(t, "Config should be empty, %+v\n", configObj.SecretsManagerSecrets)
-	}
-
-	return
-}
-
-func TestConfigSecretsManager_EmptyFilters(t *testing.T) {
-	configFilePath := "./mocks/secrets_manager_empty_filters.yaml"
-	configObj, err := GetConfig(configFilePath)
-
-	require.NoError(t, err)
-
-	if !reflect.DeepEqual(configObj, emptyConfig()) {
-		assert.Fail(t, "Config should be empty, %+v\n", configObj)
-	}
-
-	return
-}
-
-func TestConfigSecretsManager_EmptyRules(t *testing.T) {
-	configFilePath := "./mocks/secrets_manager_empty_rules.yaml"
-	configObj, err := GetConfig(configFilePath)
-
-	require.NoError(t, err)
-
-	if !reflect.DeepEqual(configObj, emptyConfig()) {
-		assert.Fail(t, "Config should be empty, %+v\n", configObj)
-	}
-
-	return
-}
-
-func TestConfigSecretsManager_IncludeNames(t *testing.T) {
-	configFilePath := "./mocks/secrets_manager_include_names.yaml"
-	configObj, err := GetConfig(configFilePath)
-
-	require.NoError(t, err)
-
-	if reflect.DeepEqual(configObj, emptyConfig()) {
-		assert.Fail(t, "Config should not be empty, %+v\n", configObj)
-	}
-
-	if len(configObj.SecretsManagerSecrets.IncludeRule.NamesRegExp) == 0 {
-		assert.Fail(t, "ConfigObj should contain secrets regexes, %+v\n", configObj)
-	}
-
-	return
-}
-
-func TestConfigSecretsManager_ExcludeNames(t *testing.T) {
-	configFilePath := "./mocks/secrets_manager_exclude_names.yaml"
-	configObj, err := GetConfig(configFilePath)
-
-	require.NoError(t, err)
-
-	if reflect.DeepEqual(configObj, emptyConfig()) {
-		assert.Fail(t, "Config should not be empty, %+v\n", configObj)
-	}
-
-	if len(configObj.SecretsManagerSecrets.ExcludeRule.NamesRegExp) == 0 {
-		assert.Fail(t, "ConfigObj should contain secrets regexes, %+v\n", configObj)
-	}
-
-	return
-}
-
-func TestConfigSecretsManager_FilterNames(t *testing.T) {
-	configFilePath := "./mocks/secrets_manager_filter_names.yaml"
-	configObj, err := GetConfig(configFilePath)
-
-	require.NoError(t, err)
-
-	if reflect.DeepEqual(configObj, emptyConfig()) {
-		assert.Fail(t, "Config should not be empty, %+v\n", configObj)
-	}
-
-	if len(configObj.SecretsManagerSecrets.IncludeRule.NamesRegExp) == 0 ||
-		len(configObj.SecretsManagerSecrets.ExcludeRule.NamesRegExp) == 0 {
-		assert.Fail(t, "ConfigObj should contain secrets regexes, %+v\n", configObj)
-	}
-
-	return
-}
-
-// DynamoDB Tests
-
-func TestConfigDynamoDB_Empty(t *testing.T) {
-	configFilePath := "./mocks/dynamodb_empty.yaml"
-	configObj, err := GetConfig(configFilePath)
-
-	require.NoError(t, err)
-
-	if !reflect.DeepEqual(configObj, emptyConfig()) {
-		assert.Fail(t, "Config should be empty, %+v\n", configObj.DynamoDB)
-	}
-
-	return
-}
-
-func TestConfigDynamoDB_EmptyFilters(t *testing.T) {
-	configFilePath := "./mocks/dynamodb_empty_filters.yaml"
-	configObj, err := GetConfig(configFilePath)
-
-	require.NoError(t, err)
-
-	if !reflect.DeepEqual(configObj, emptyConfig()) {
-		assert.Fail(t, "Config should be empty, %+v\n", configObj)
-	}
-
-	return
-}
-
-func TestConfigDynamoDB_EmptyRules(t *testing.T) {
-	configFilePath := "./mocks/dynamodb_empty_rules.yaml"
-	configObj, err := GetConfig(configFilePath)
-
-	require.NoError(t, err)
-
-	if !reflect.DeepEqual(configObj, emptyConfig()) {
-		assert.Fail(t, "Config should be empty, %+v\n", configObj)
-	}
-
-	return
-}
-
-func TestConfigDynamoDB_IncludeNames(t *testing.T) {
-	configFilePath := "./mocks/dynamodb_include_names.yaml"
-	configObj, err := GetConfig(configFilePath)
-
-	require.NoError(t, err)
-
-	if reflect.DeepEqual(configObj, emptyConfig()) {
-		assert.Fail(t, "Config should not be empty, %+v\n", configObj)
-	}
-
-	if len(configObj.DynamoDB.IncludeRule.NamesRegExp) == 0 {
-		assert.Fail(t, "ConfigObj should contain DynamoDB table name regexes, %+v\n", configObj)
-	}
-
-	return
-}
-
-func TestConfigDynamoDB_ExcludeNames(t *testing.T) {
-	configFilePath := "./mocks/dynamodb_exclude_names.yaml"
-	configObj, err := GetConfig(configFilePath)
-
-	require.NoError(t, err)
-
-	if reflect.DeepEqual(configObj, emptyConfig()) {
-		assert.Fail(t, "Config should not be empty, %+v\n", configObj)
-	}
-
-	if len(configObj.DynamoDB.ExcludeRule.NamesRegExp) == 0 {
-		assert.Fail(t, "ConfigObj should contain DynamoDB table name regexes, %+v\n", configObj)
-	}
-
-	return
-}
-
-func TestConfigDynamoDB_FilterNames(t *testing.T) {
-	configFilePath := "./mocks/dynamodb_filter_names.yaml"
-	configObj, err := GetConfig(configFilePath)
-
-	require.NoError(t, err)
-
-	if reflect.DeepEqual(configObj, emptyConfig()) {
-		assert.Fail(t, "Config should not be empty, %+v\n", configObj)
-	}
-
-	if len(configObj.DynamoDB.IncludeRule.NamesRegExp) == 0 ||
-		len(configObj.DynamoDB.ExcludeRule.NamesRegExp) == 0 {
-		assert.Fail(t, "ConfigObj should contain DynamoDB table name regexes, %+v\n", configObj)
-	}
-
-	return
-}
-
-// ELBv2Tests
-
-func TestConfigELBv2_Empty(t *testing.T) {
-	configFilePath := "./mocks/elbv2_empty.yaml"
-	configObj, err := GetConfig(configFilePath)
-
-	require.NoError(t, err)
-
-	if !reflect.DeepEqual(configObj, emptyConfig()) {
-		assert.Fail(t, "Config should be empty, %+v\n", configObj.ELBv2)
-	}
-
-	return
-}
-
-func TestConfigELBv2_EmptyFilters(t *testing.T) {
-	configFilePath := "./mocks/elbv2_empty_filters.yaml"
-	configObj, err := GetConfig(configFilePath)
-
-	require.NoError(t, err)
-
-	if !reflect.DeepEqual(configObj, emptyConfig()) {
-		assert.Fail(t, "Config should be empty, %+v\n", configObj)
-	}
-
-	return
-}
-
-func TestConfigELBv2_EmptyRules(t *testing.T) {
-	configFilePath := "./mocks/elbv2_empty_rules.yaml"
-	configObj, err := GetConfig(configFilePath)
-
-	require.NoError(t, err)
-
-	if !reflect.DeepEqual(configObj, emptyConfig()) {
-		assert.Fail(t, "Config should be empty, %+v\n", configObj)
-	}
-
-	return
-}
-
-func TestConfigELBv2_IncludeNames(t *testing.T) {
-	configFilePath := "./mocks/elbv2_include_names.yaml"
-	configObj, err := GetConfig(configFilePath)
-
-	require.NoError(t, err)
-
-	if reflect.DeepEqual(configObj, emptyConfig()) {
-		assert.Fail(t, "Config should not be empty, %+v\n", configObj)
-	}
-
-	if len(configObj.ELBv2.IncludeRule.NamesRegExp) == 0 {
-		assert.Fail(t, "ConfigObj should contain ELBv2 regexes, %+v\n", configObj)
-	}
-
-	return
-}
-
-func TestConfigELBv2_ExcludeNames(t *testing.T) {
-	configFilePath := "./mocks/elbv2_exclude_names.yaml"
-	configObj, err := GetConfig(configFilePath)
-
-	require.NoError(t, err)
-
-	if reflect.DeepEqual(configObj, emptyConfig()) {
-		assert.Fail(t, "Config should not be empty, %+v\n", configObj)
-	}
-
-	if len(configObj.ELBv2.ExcludeRule.NamesRegExp) == 0 {
-		assert.Fail(t, "ConfigObj should contain ELBv2 regexes, %+v\n", configObj)
-	}
-
-	return
-}
-
-func TestConfigELBv2_FilterNames(t *testing.T) {
-	configFilePath := "./mocks/elbv2_filter_names.yaml"
-	configObj, err := GetConfig(configFilePath)
-
-	require.NoError(t, err)
-
-	if reflect.DeepEqual(configObj, emptyConfig()) {
-		assert.Fail(t, "Config should not be empty, %+v\n", configObj)
-	}
-
-	if len(configObj.ELBv2.IncludeRule.NamesRegExp) == 0 ||
-		len(configObj.ELBv2.ExcludeRule.NamesRegExp) == 0 {
-		assert.Fail(t, "ConfigObj should contain ELBv2 regexes, %+v\n", configObj)
-	}
-
-	return
-}
-
-// SageMakerNotebookTests
-
-func TestConfigSageMakerNotebook_Empty(t *testing.T) {
-	configFilePath := "./mocks/sagemakernotebook_empty.yaml"
-	configObj, err := GetConfig(configFilePath)
-
-	require.NoError(t, err)
-
-	if !reflect.DeepEqual(configObj, emptyConfig()) {
-		assert.Fail(t, "Config should be empty, %+v\n", configObj.SageMakerNotebook)
-	}
-
-	return
-}
-
-func TestConfigSageMakerNotebook_EmptyFilters(t *testing.T) {
-	configFilePath := "./mocks/sagemakernotebook_empty_filters.yaml"
-	configObj, err := GetConfig(configFilePath)
-
-	require.NoError(t, err)
-
-	if !reflect.DeepEqual(configObj, emptyConfig()) {
-		assert.Fail(t, "Config should be empty, %+v\n", configObj)
-	}
-
-	return
-}
-
-func TestConfigSageMakerNotebook_EmptyRules(t *testing.T) {
-	configFilePath := "./mocks/sagemakernotebook_empty_rules.yaml"
-	configObj, err := GetConfig(configFilePath)
-
-	require.NoError(t, err)
-
-	if !reflect.DeepEqual(configObj, emptyConfig()) {
-		assert.Fail(t, "Config should be empty, %+v\n", configObj)
-	}
-
-	return
-}
-
-func TestConfigSageMakerNotebook_IncludeNames(t *testing.T) {
-	configFilePath := "./mocks/sagemakernotebook_include_names.yaml"
-	configObj, err := GetConfig(configFilePath)
-
-	require.NoError(t, err)
-
-	if reflect.DeepEqual(configObj, emptyConfig()) {
-		assert.Fail(t, "Config should not be empty, %+v\n", configObj)
-	}
-
-	if len(configObj.SageMakerNotebook.IncludeRule.NamesRegExp) == 0 {
-		assert.Fail(t, "ConfigObj should contain SageMakerNotebook regexes, %+v\n", configObj)
-	}
-
-	return
-}
-
-func TestConfigSageMakerNotebook_ExcludeNames(t *testing.T) {
-	configFilePath := "./mocks/sagemakernotebook_exclude_names.yaml"
-	configObj, err := GetConfig(configFilePath)
-
-	require.NoError(t, err)
-
-	if reflect.DeepEqual(configObj, emptyConfig()) {
-		assert.Fail(t, "Config should not be empty, %+v\n", configObj)
-	}
-
-	if len(configObj.SageMakerNotebook.ExcludeRule.NamesRegExp) == 0 {
-		assert.Fail(t, "ConfigObj should contain SageMakerNotebook regexes, %+v\n", configObj)
-	}
-
-	return
-}
-
-func TestConfigSageMakerNotebook_FilterNames(t *testing.T) {
-	configFilePath := "./mocks/sagemakernotebook_filter_names.yaml"
-	configObj, err := GetConfig(configFilePath)
-
-	require.NoError(t, err)
-
-	if reflect.DeepEqual(configObj, emptyConfig()) {
-		assert.Fail(t, "Config should not be empty, %+v\n", configObj)
-	}
-
-	if len(configObj.SageMakerNotebook.IncludeRule.NamesRegExp) == 0 ||
-		len(configObj.SageMakerNotebook.ExcludeRule.NamesRegExp) == 0 {
-		assert.Fail(t, "ConfigObj should contain SageMakerNotebook regexes, %+v\n", configObj)
-	}
-
-	return
-}
-
-// APIGateway Tests
-
-func TestConfigAPIGateway_Empty(t *testing.T) {
-	configFilePath := "./mocks/apigateway_empty.yaml"
-	configObj, err := GetConfig(configFilePath)
-
-	require.NoError(t, err)
-
-	if !reflect.DeepEqual(configObj, emptyConfig()) {
-		assert.Fail(t, "Config should be empty, %+v\n", configObj.APIGateway)
-	}
-
-	return
-}
-
-func TestConfigAPIGateway_EmptyFilters(t *testing.T) {
-	configFilePath := "./mocks/apigateway_empty_filters.yaml"
-	configObj, err := GetConfig(configFilePath)
-
-	require.NoError(t, err)
-
-	if !reflect.DeepEqual(configObj, emptyConfig()) {
-		assert.Fail(t, "Config should be empty, %+v\n", configObj)
-	}
-
-	return
-}
-
-func TestConfigAPIGateway_EmptyRules(t *testing.T) {
-	configFilePath := "./mocks/apigateway_empty_rules.yaml"
-	configObj, err := GetConfig(configFilePath)
-
-	require.NoError(t, err)
-
-	if !reflect.DeepEqual(configObj, emptyConfig()) {
-		assert.Fail(t, "Config should be empty, %+v\n", configObj)
-	}
-
-	return
-}
-
-func TestConfigAPIGateway_IncludeNames(t *testing.T) {
-	configFilePath := "./mocks/apigateway_include_names.yaml"
-	configObj, err := GetConfig(configFilePath)
-
-	require.NoError(t, err)
-
-	if reflect.DeepEqual(configObj, emptyConfig()) {
-		assert.Fail(t, "Config should not be empty, %+v\n", configObj)
-	}
-
-	if len(configObj.APIGateway.IncludeRule.NamesRegExp) == 0 {
-		assert.Fail(t, "ConfigObj should contain APIGateway regexes, %+v\n", configObj)
-	}
-
-	return
-}
-
-func TestConfigAPIGateway_ExcludeNames(t *testing.T) {
-	configFilePath := "./mocks/apigateway_exclude_names.yaml"
-	configObj, err := GetConfig(configFilePath)
-
-	require.NoError(t, err)
-
-	if reflect.DeepEqual(configObj, emptyConfig()) {
-		assert.Fail(t, "Config should not be empty, %+v\n", configObj)
-	}
-
-	if len(configObj.APIGateway.ExcludeRule.NamesRegExp) == 0 {
-		assert.Fail(t, "ConfigObj should contain APIGateway regexes, %+v\n", configObj)
-	}
-
-	return
-}
-
-func TestConfigAPIGateway_FilterNames(t *testing.T) {
-	configFilePath := "./mocks/apigateway_filter_names.yaml"
-	configObj, err := GetConfig(configFilePath)
-
-	require.NoError(t, err)
-
-	if reflect.DeepEqual(configObj, emptyConfig()) {
-		assert.Fail(t, "Config should not be empty, %+v\n", configObj)
-	}
-
-	if len(configObj.APIGateway.IncludeRule.NamesRegExp) == 0 ||
-		len(configObj.APIGateway.ExcludeRule.NamesRegExp) == 0 {
-		assert.Fail(t, "ConfigObj should contain APIGateway regexes, %+v\n", configObj)
-	}
-
-	return
-}
-
-// end APIGateway tests
-
-// APIGateway V2 tests
-
-func TestConfigAPIGatewayV2_Empty(t *testing.T) {
-	configFilePath := "./mocks/apigatewayv2_empty.yaml"
-	configObj, err := GetConfig(configFilePath)
-
-	require.NoError(t, err)
-
-	if !reflect.DeepEqual(configObj, emptyConfig()) {
-		assert.Fail(t, "Config should be empty, %+v\n", configObj.APIGateway)
-	}
-
-	return
-}
-
-func TestConfigAPIGatewayV2_EmptyFilters(t *testing.T) {
-	configFilePath := "./mocks/apigatewayv2_empty_filters.yaml"
-	configObj, err := GetConfig(configFilePath)
-
-	require.NoError(t, err)
-
-	if !reflect.DeepEqual(configObj, emptyConfig()) {
-		assert.Fail(t, "Config should be empty, %+v\n", configObj)
-	}
-
-	return
-}
-
-func TestConfigAPIGatewayV2_EmptyRules(t *testing.T) {
-	configFilePath := "./mocks/apigatewayv2_empty_rules.yaml"
-	configObj, err := GetConfig(configFilePath)
-
-	require.NoError(t, err)
-
-	if !reflect.DeepEqual(configObj, emptyConfig()) {
-		assert.Fail(t, "Config should be empty, %+v\n", configObj)
-	}
-
-	return
-}
-
-func TestConfigAPIGatewayV2_IncludeNames(t *testing.T) {
-	configFilePath := "./mocks/apigatewayv2_include_names.yaml"
-	configObj, err := GetConfig(configFilePath)
-
-	require.NoError(t, err)
-
-	if reflect.DeepEqual(configObj, emptyConfig()) {
-		assert.Fail(t, "Config should not be empty, %+v\n", configObj)
-	}
-
-	if len(configObj.APIGatewayV2.IncludeRule.NamesRegExp) == 0 {
-		assert.Fail(t, "ConfigObj should contain APIGatewayV2 regexes, %+v\n", configObj)
-	}
-
-	return
-}
-
-func TestConfigAPIGatewayV2_ExcludeNames(t *testing.T) {
-	configFilePath := "./mocks/apigatewayv2_exclude_names.yaml"
-	configObj, err := GetConfig(configFilePath)
-
-	require.NoError(t, err)
-
-	if reflect.DeepEqual(configObj, emptyConfig()) {
-		assert.Fail(t, "Config should not be empty, %+v\n", configObj)
-	}
-
-	if len(configObj.APIGatewayV2.ExcludeRule.NamesRegExp) == 0 {
-		assert.Fail(t, "ConfigObj should contain APIGatewayV2 regexes, %+v\n", configObj)
-	}
-
-	return
-}
-
-func TestConfigAPIGatewayV2_FilterNames(t *testing.T) {
-	configFilePath := "./mocks/apigatewayv2_filter_names.yaml"
-	configObj, err := GetConfig(configFilePath)
-
-	require.NoError(t, err)
-
-	if reflect.DeepEqual(configObj, emptyConfig()) {
-		assert.Fail(t, "Config should not be empty, %+v\n", configObj)
-	}
-
-	if len(configObj.APIGatewayV2.IncludeRule.NamesRegExp) == 0 ||
-		len(configObj.APIGatewayV2.ExcludeRule.NamesRegExp) == 0 {
-		assert.Fail(t, "ConfigObj should contain APIGatewayV2 regexes, %+v\n", configObj)
-	}
-
-	return
-}
-
-// Elastic FileSystem Tests
-
-func TestConfigElasticFileSystem_Empty(t *testing.T) {
-	configFilePath := "./mocks/efs_empty.yaml"
-	configObj, err := GetConfig(configFilePath)
-
-	require.NoError(t, err)
-
-	if !reflect.DeepEqual(configObj, emptyConfig()) {
-		assert.Fail(t, "Config should be empty, %+v\n", configObj.APIGateway)
-	}
-
-	return
-}
-
-func TestConfigElasticFileSystem_EmptyFilters(t *testing.T) {
-	configFilePath := "./mocks/efs_empty_filters.yaml"
-	configObj, err := GetConfig(configFilePath)
-
-	require.NoError(t, err)
-
-	if !reflect.DeepEqual(configObj, emptyConfig()) {
-		assert.Fail(t, "Config should be empty, %+v\n", configObj)
-	}
-
-	return
-}
-
-func TestConfigElasticFileSystem_EmptyRules(t *testing.T) {
-	configFilePath := "./mocks/efs_empty_rules.yaml"
-	configObj, err := GetConfig(configFilePath)
-
-	require.NoError(t, err)
-
-	if !reflect.DeepEqual(configObj, emptyConfig()) {
-		assert.Fail(t, "Config should be empty, %+v\n", configObj)
-	}
-
-	return
-}
-
-func TestConfigElasticFileSystem_IncludeNames(t *testing.T) {
-	configFilePath := "./mocks/efs_include_names.yaml"
-	configObj, err := GetConfig(configFilePath)
-
-	require.NoError(t, err)
-
-	if reflect.DeepEqual(configObj, emptyConfig()) {
-		assert.Fail(t, "Config should not be empty, %+v\n", configObj)
-	}
-
-	if len(configObj.ElasticFileSystem.IncludeRule.NamesRegExp) == 0 {
-		assert.Fail(t, "ConfigObj should contain ElasticFileSystem regexes, %+v\n", configObj)
-	}
-
-	return
-}
-
-func TestConfigElasticFileSystem_ExcludeNames(t *testing.T) {
-	configFilePath := "./mocks/efs_exclude_names.yaml"
-	configObj, err := GetConfig(configFilePath)
-
-	require.NoError(t, err)
-
-	if reflect.DeepEqual(configObj, emptyConfig()) {
-		assert.Fail(t, "Config should not be empty, %+v\n", configObj)
-	}
-
-	if len(configObj.ElasticFileSystem.ExcludeRule.NamesRegExp) == 0 {
-		assert.Fail(t, "ConfigObj should contain ElasticFileSystem regexes, %+v\n", configObj)
-	}
-
-	return
-}
-
-func TestConfigElasticFileSystem_FilterNames(t *testing.T) {
-	configFilePath := "./mocks/efs_filter_names.yaml"
-	configObj, err := GetConfig(configFilePath)
-
-	require.NoError(t, err)
-
-	if reflect.DeepEqual(configObj, emptyConfig()) {
-		assert.Fail(t, "Config should not be empty, %+v\n", configObj)
-	}
-
-	if len(configObj.ElasticFileSystem.IncludeRule.NamesRegExp) == 0 ||
-		len(configObj.ElasticFileSystem.ExcludeRule.NamesRegExp) == 0 {
-		assert.Fail(t, "ConfigObj should contain ElasticFileSystem regexes, %+v\n", configObj)
-	}
-
-	return
-}
-
-// end ElasticFileSystem tests
-
 func TestShouldInclude_AllowWhenEmpty(t *testing.T) {
 	var includeREs []Expression
 	var excludeREs []Expression