From 9f6b1089f0fb77a11f5facf39dcc2b0f469a7b8a Mon Sep 17 00:00:00 2001 From: Mike Schouw <49021968+MikeSchouw@users.noreply.github.com> Date: Fri, 25 Aug 2023 16:36:33 +0200 Subject: [PATCH 1/2] Adding support for AppRunner services (#1060) * adding code for removing custom origin request policies * rename resource * test for replication * revert secretsmanager change * undo this * revert mod and sum changes * add resources for redshift scheduled actions * remove cloudfront resource * clean up * cloudwatch rum app * first attempt at apprunner-service * first attempt at apprunner-service * add apprunner connection as well * clean up --- resources/apprunner-connection.go | 62 +++++++++++++++++++++++++++++ resources/apprunner-service.go | 65 +++++++++++++++++++++++++++++++ 2 files changed, 127 insertions(+) create mode 100644 resources/apprunner-connection.go create mode 100644 resources/apprunner-service.go diff --git a/resources/apprunner-connection.go b/resources/apprunner-connection.go new file mode 100644 index 00000000..27197437 --- /dev/null +++ b/resources/apprunner-connection.go @@ -0,0 +1,62 @@ +package resources + +import ( + "github.com/aws/aws-sdk-go/aws/session" + "github.com/aws/aws-sdk-go/service/apprunner" + "github.com/rebuy-de/aws-nuke/v2/pkg/types" +) + +type AppRunnerConnection struct { + svc *apprunner.AppRunner + ConnectionArn *string + ConnectionName *string +} + +func init() { + register("AppRunnerConnection", ListAppRunnerConnections) +} + +func ListAppRunnerConnections(sess *session.Session) ([]Resource, error) { + svc := apprunner.New(sess) + resources := []Resource{} + + params := &apprunner.ListConnectionsInput{} + + for { + resp, err := svc.ListConnections(params) + if err != nil { + return nil, err + } + + for _, item := range resp.ConnectionSummaryList { + resources = append(resources, &AppRunnerConnection{ + svc: svc, + ConnectionArn: item.ConnectionArn, + ConnectionName: item.ConnectionName, + }) + } + + if resp.NextToken == nil { + break + } + + params.NextToken = resp.NextToken + } + + return resources, nil +} + +func (f *AppRunnerConnection) Remove() error { + _, err := f.svc.DeleteConnection(&apprunner.DeleteConnectionInput{ + ConnectionArn: f.ConnectionArn, + }) + + return err +} + +func (f *AppRunnerConnection) Properties() types.Properties { + properties := types.NewProperties() + properties.Set("ConnectionArn", f.ConnectionArn) + properties.Set("ConnectionName", f.ConnectionName) + return properties +} diff --git a/resources/apprunner-service.go b/resources/apprunner-service.go new file mode 100644 index 00000000..9a2abdc4 --- /dev/null +++ b/resources/apprunner-service.go @@ -0,0 +1,65 @@ +package resources + +import ( + "github.com/aws/aws-sdk-go/aws/session" + "github.com/aws/aws-sdk-go/service/apprunner" + "github.com/rebuy-de/aws-nuke/v2/pkg/types" +) + +type AppRunnerService struct { + svc *apprunner.AppRunner + ServiceArn *string + ServiceId *string + ServiceName *string +} + +func init() { + register("AppRunnerService", ListAppRunnerServices) +} + +func ListAppRunnerServices(sess *session.Session) ([]Resource, error) { + svc := apprunner.New(sess) + resources := []Resource{} + + params := &apprunner.ListServicesInput{} + + for { + resp, err := svc.ListServices(params) + if err != nil { + return nil, err + } + + for _, item := range resp.ServiceSummaryList { + resources = append(resources, &AppRunnerService{ + svc: svc, + ServiceArn: item.ServiceArn, + ServiceId: item.ServiceId, + ServiceName: item.ServiceName, + }) + } + + if resp.NextToken == nil { + break + } + + params.NextToken = resp.NextToken + } + + return resources, nil +} + +func (f *AppRunnerService) Remove() error { + _, err := f.svc.DeleteService(&apprunner.DeleteServiceInput{ + ServiceArn: f.ServiceArn, + }) + + return err +} + +func (f *AppRunnerService) Properties() types.Properties { + properties := types.NewProperties() + properties.Set("ServiceArn", f.ServiceArn) + properties.Set("ServiceId", f.ServiceId) + properties.Set("ServiceName", f.ServiceName) + return properties +} From e96dec83c784a437b17ca6dd6e5776371b51939f Mon Sep 17 00:00:00 2001 From: Erik Kristensen Date: Thu, 25 Jan 2024 16:44:02 -0700 Subject: [PATCH 2/2] chore: migrate resources to libnuke format --- resources/apprunner-connection.go | 29 ++++++++++++++++++++++------- resources/apprunner-service.go | 29 ++++++++++++++++++++++------- 2 files changed, 44 insertions(+), 14 deletions(-) diff --git a/resources/apprunner-connection.go b/resources/apprunner-connection.go index 27197437..616a5206 100644 --- a/resources/apprunner-connection.go +++ b/resources/apprunner-connection.go @@ -1,9 +1,14 @@ package resources import ( - "github.com/aws/aws-sdk-go/aws/session" + "context" + "github.com/aws/aws-sdk-go/service/apprunner" - "github.com/rebuy-de/aws-nuke/v2/pkg/types" + + "github.com/ekristen/libnuke/pkg/resource" + "github.com/ekristen/libnuke/pkg/types" + + "github.com/ekristen/aws-nuke/pkg/nuke" ) type AppRunnerConnection struct { @@ -12,13 +17,23 @@ type AppRunnerConnection struct { ConnectionName *string } +const AppRunnerConnectionResource = "AppRunnerConnection" + func init() { - register("AppRunnerConnection", ListAppRunnerConnections) + resource.Register(&resource.Registration{ + Name: AppRunnerConnectionResource, + Scope: nuke.Account, + Lister: &AppRunnerConnectionLister{}, + }) } -func ListAppRunnerConnections(sess *session.Session) ([]Resource, error) { - svc := apprunner.New(sess) - resources := []Resource{} +type AppRunnerConnectionLister struct{} + +func (l *AppRunnerConnectionLister) List(_ context.Context, o interface{}) ([]resource.Resource, error) { + opts := o.(*nuke.ListerOpts) + + svc := apprunner.New(opts.Session) + resources := make([]resource.Resource, 0) params := &apprunner.ListConnectionsInput{} @@ -46,7 +61,7 @@ func ListAppRunnerConnections(sess *session.Session) ([]Resource, error) { return resources, nil } -func (f *AppRunnerConnection) Remove() error { +func (f *AppRunnerConnection) Remove(_ context.Context) error { _, err := f.svc.DeleteConnection(&apprunner.DeleteConnectionInput{ ConnectionArn: f.ConnectionArn, }) diff --git a/resources/apprunner-service.go b/resources/apprunner-service.go index 9a2abdc4..8bf633eb 100644 --- a/resources/apprunner-service.go +++ b/resources/apprunner-service.go @@ -1,9 +1,14 @@ package resources import ( - "github.com/aws/aws-sdk-go/aws/session" + "context" + "github.com/aws/aws-sdk-go/service/apprunner" - "github.com/rebuy-de/aws-nuke/v2/pkg/types" + + "github.com/ekristen/libnuke/pkg/resource" + "github.com/ekristen/libnuke/pkg/types" + + "github.com/ekristen/aws-nuke/pkg/nuke" ) type AppRunnerService struct { @@ -13,13 +18,23 @@ type AppRunnerService struct { ServiceName *string } +const AppRunnerServiceResource = "AppRunnerService" + func init() { - register("AppRunnerService", ListAppRunnerServices) + resource.Register(&resource.Registration{ + Name: AppRunnerServiceResource, + Scope: nuke.Account, + Lister: &AppRunnerServiceLister{}, + }) } -func ListAppRunnerServices(sess *session.Session) ([]Resource, error) { - svc := apprunner.New(sess) - resources := []Resource{} +type AppRunnerServiceLister struct{} + +func (l *AppRunnerServiceLister) List(_ context.Context, o interface{}) ([]resource.Resource, error) { + opts := o.(*nuke.ListerOpts) + + svc := apprunner.New(opts.Session) + resources := make([]resource.Resource, 0) params := &apprunner.ListServicesInput{} @@ -48,7 +63,7 @@ func ListAppRunnerServices(sess *session.Session) ([]Resource, error) { return resources, nil } -func (f *AppRunnerService) Remove() error { +func (f *AppRunnerService) Remove(_ context.Context) error { _, err := f.svc.DeleteService(&apprunner.DeleteServiceInput{ ServiceArn: f.ServiceArn, })