Skip to content

Commit 8f18c57

Browse files
authored
Revert #420 for aws
1 parent d5c4d1e commit 8f18c57

File tree

1 file changed

+41
-4
lines changed

1 file changed

+41
-4
lines changed

task/aws/resources/resource_bucket.go

+41-4
Original file line numberDiff line numberDiff line change
@@ -76,15 +76,52 @@ func (b *Bucket) Update(ctx context.Context) error {
7676
}
7777

7878
func (b *Bucket) Delete(ctx context.Context) error {
79-
input := s3.DeleteBucketInput{
79+
listInput := s3.ListObjectsV2Input{
8080
Bucket: aws.String(b.Identifier),
8181
}
8282

83-
if _, err := b.Client.Services.S3.DeleteBucket(ctx, &input); err != nil {
84-
var e smithy.APIError
85-
if errors.As(err, &e) && e.ErrorCode() != "NoSuchBucket" {
83+
for paginator := s3.NewListObjectsV2Paginator(b.Client.Services.S3, &listInput); paginator.HasMorePages(); {
84+
page, err := paginator.NextPage(ctx)
85+
86+
if err != nil {
87+
var e smithy.APIError
88+
if errors.As(err, &e) && e.ErrorCode() == "NoSuchBucket" {
89+
b.Resource = nil
90+
return nil
91+
}
8692
return err
8793
}
94+
95+
if len(page.Contents) == 0 {
96+
break
97+
}
98+
99+
var objects []types.ObjectIdentifier
100+
for _, object := range page.Contents {
101+
objects = append(objects, types.ObjectIdentifier{
102+
Key: object.Key,
103+
})
104+
}
105+
106+
input := s3.DeleteObjectsInput{
107+
Bucket: aws.String(b.Identifier),
108+
Delete: &types.Delete{
109+
Objects: objects,
110+
},
111+
}
112+
113+
if _, err = b.Client.Services.S3.DeleteObjects(ctx, &input); err != nil {
114+
return err
115+
}
116+
}
117+
118+
deleteInput := s3.DeleteBucketInput{
119+
Bucket: aws.String(b.Identifier),
120+
}
121+
122+
_, err := b.Client.Services.S3.DeleteBucket(ctx, &deleteInput)
123+
if err != nil {
124+
return err
88125
}
89126

90127
b.Resource = nil

0 commit comments

Comments
 (0)