Switched to DeleteObject for gcp interoperability (#29553)

[28420](https://github.com/fleetdm/fleet/issues/28420)

- [x] Changes file added for user-visible changes in `changes/`,
`orbit/changes/` or `ee/fleetd-chrome/changes`.
See [Changes
files](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/guides/committing-changes.md#changes-files)
for more information.
This commit is contained in:
Konstantin Sykulev
2025-06-02 20:07:15 -05:00
committed by GitHub
parent 502aa8bafb
commit 8109f2021b
2 changed files with 27 additions and 7 deletions
@@ -0,0 +1 @@
- Changed to using DeleteObject S3 api for GCP interoperability
+26 -7
View File
@@ -6,6 +6,7 @@ import (
"io"
"net/url"
"path"
"sync/atomic"
"time"
"github.com/aws/aws-sdk-go-v2/feature/cloudfront/sign"
@@ -13,6 +14,7 @@ import (
"github.com/aws/aws-sdk-go/service/s3"
"github.com/fleetdm/fleet/v4/server/contexts/ctxerr"
"github.com/fleetdm/fleet/v4/server/fleet"
"golang.org/x/sync/errgroup"
)
const signedURLExpiresIn = 6 * time.Hour
@@ -130,13 +132,30 @@ func (s *commonFileStore) Cleanup(ctx context.Context, usedFileIDs []string, rem
return 0, nil
}
res, err := s.s3client.DeleteObjects(&s3.DeleteObjectsInput{
Bucket: &s.bucket,
Delete: &s3.Delete{
Objects: toDeleteKeys,
},
})
return len(res.Deleted), ctxerr.Wrapf(ctx, err, "deleting %s in S3 store", s.fileLabel)
var deleted atomic.Int32
var g errgroup.Group
g.SetLimit(10)
for _, obj := range toDeleteKeys {
obj := obj
g.Go(func() error {
_, err := s.s3client.DeleteObject(&s3.DeleteObjectInput{
Bucket: &s.bucket,
Key: obj.Key,
})
if err != nil {
return ctxerr.Wrapf(ctx, err, "deleting %s in S3 store", s.fileLabel)
}
deleted.Add(1)
return nil
})
}
if err := g.Wait(); err != nil {
return int(deleted.Load()), ctxerr.Wrap(ctx, err, "errors occurred during S3 deletion")
}
return int(deleted.Load()), ctxerr.Wrapf(ctx, err, "deleting %s in S3 store", s.fileLabel)
}
func (s *commonFileStore) Sign(ctx context.Context, fileID string) (string, error) {