From e0cd1917933040eef09e34b73f11c7349ec9d497 Mon Sep 17 00:00:00 2001 From: kkb0318 Date: Wed, 24 Apr 2024 23:15:26 +0900 Subject: [PATCH] ignore error when deleting non-existing resources --- internal/client/aws.go | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/internal/client/aws.go b/internal/client/aws.go index 05b5fec..b3ffad0 100644 --- a/internal/client/aws.go +++ b/internal/client/aws.go @@ -6,6 +6,7 @@ import ( "errors" "fmt" "log" + "slices" "strings" "github.com/aws/aws-sdk-go-v2/aws" @@ -157,11 +158,9 @@ func (a *AwsS3Client) DeleteBucket(ctx context.Context) error { }) if err != nil { var ae smithy.APIError - var nfe *s3types.NoSuchBucket - if errors.As(err, &ae) && ae.ErrorCode() == "BucketNotEmpty" { - log.Println("skipped error", err) - } - if errors.As(err, &nfe) { + errorCodes := []string{"BucketNotEmpty", "NoSuchBucket"} + if errors.As(err, &ae) && slices.Contains(errorCodes, ae.ErrorCode()) { + log.Println("Deletion skipped: ", err) return nil } return err @@ -180,6 +179,11 @@ func (a *AwsS3Client) DeleteObjects(ctx context.Context, objectKeys []string) er Delete: &s3types.Delete{Objects: objectIds}, }) if err != nil { + var ae smithy.APIError + if errors.As(err, &ae) && ae.ErrorCode() == "NoSuchBucket" { + log.Println("Deletion skipped: the bucket does not exist.", err) + return nil + } return err } return err @@ -219,6 +223,11 @@ func (a *AwsIamClient) DeleteOIDCProvider(ctx context.Context, accountId, issuer OpenIDConnectProviderArn: aws.String(fmt.Sprintf("arn:aws:iam::%s:oidc-provider/%s", accountId, issuerHostPath)), }) if err != nil { + var ae smithy.APIError + if errors.As(err, &ae) && ae.ErrorCode() == "NoSuchEntity" { + log.Println("Deletion skipped: ", err) + return nil + } return err } return nil