Skip to content

Commit 0efa71b

Browse files
committed
fix: update aws sdk to v2
1 parent c5517bf commit 0efa71b

File tree

6 files changed

+125
-66
lines changed

6 files changed

+125
-66
lines changed

go.mod

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,11 @@ require (
1414
github.com/alitto/pond/v2 v2.4.0
1515
github.com/avast/retry-go v3.0.0+incompatible
1616
github.com/avast/retry-go/v4 v4.6.1
17-
github.com/aws/aws-sdk-go v1.55.7
17+
github.com/aws/aws-sdk-go-v2 v1.36.5
18+
github.com/aws/aws-sdk-go-v2/config v1.29.17
19+
github.com/aws/aws-sdk-go-v2/credentials v1.17.70
20+
github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.81
21+
github.com/aws/aws-sdk-go-v2/service/s3 v1.81.0
1822
github.com/btcsuite/btcd/btcutil v1.1.6
1923
github.com/cespare/xxhash/v2 v2.3.0
2024
github.com/dgraph-io/ristretto/v2 v2.2.0
@@ -84,6 +88,20 @@ require (
8488
github.com/agnivade/levenshtein v1.2.1 // indirect
8589
github.com/apparentlymart/go-textseg/v13 v13.0.0 // indirect
8690
github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect
91+
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.11 // indirect
92+
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.32 // indirect
93+
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.36 // indirect
94+
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.36 // indirect
95+
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 // indirect
96+
github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.36 // indirect
97+
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.4 // indirect
98+
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.7.4 // indirect
99+
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.17 // indirect
100+
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.17 // indirect
101+
github.com/aws/aws-sdk-go-v2/service/sso v1.25.5 // indirect
102+
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.3 // indirect
103+
github.com/aws/aws-sdk-go-v2/service/sts v1.34.0 // indirect
104+
github.com/aws/smithy-go v1.22.4 // indirect
87105
github.com/aymerick/douceur v0.2.0 // indirect
88106
github.com/bmatcuk/doublestar v1.3.4 // indirect
89107
github.com/cenkalti/backoff/v5 v5.0.2 // indirect
@@ -129,7 +147,6 @@ require (
129147
github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect
130148
github.com/jackc/puddle/v2 v2.2.2 // indirect
131149
github.com/jmattheis/goverter v1.9.0 // indirect
132-
github.com/jmespath/go-jmespath v0.4.0 // indirect
133150
github.com/josharian/intern v1.0.0 // indirect
134151
github.com/klauspost/compress v1.18.0 // indirect
135152
github.com/klauspost/cpuid/v2 v2.2.10 // indirect

go.sum

Lines changed: 38 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,44 @@ github.com/avast/retry-go v3.0.0+incompatible h1:4SOWQ7Qs+oroOTQOYnAHqelpCO0biHS
6767
github.com/avast/retry-go v3.0.0+incompatible/go.mod h1:XtSnn+n/sHqQIpZ10K1qAevBhOOCWBLXXy3hyiqqBrY=
6868
github.com/avast/retry-go/v4 v4.6.1 h1:VkOLRubHdisGrHnTu89g08aQEWEgRU7LVEop3GbIcMk=
6969
github.com/avast/retry-go/v4 v4.6.1/go.mod h1:V6oF8njAwxJ5gRo1Q7Cxab24xs5NCWZBeaHHBklR8mA=
70-
github.com/aws/aws-sdk-go v1.55.7 h1:UJrkFq7es5CShfBwlWAC8DA077vp8PyVbQd3lqLiztE=
71-
github.com/aws/aws-sdk-go v1.55.7/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU=
70+
github.com/aws/aws-sdk-go-v2 v1.36.5 h1:0OF9RiEMEdDdZEMqF9MRjevyxAQcf6gY+E7vwBILFj0=
71+
github.com/aws/aws-sdk-go-v2 v1.36.5/go.mod h1:EYrzvCCN9CMUTa5+6lf6MM4tq3Zjp8UhSGR/cBsjai0=
72+
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.11 h1:12SpdwU8Djs+YGklkinSSlcrPyj3H4VifVsKf78KbwA=
73+
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.11/go.mod h1:dd+Lkp6YmMryke+qxW/VnKyhMBDTYP41Q2Bb+6gNZgY=
74+
github.com/aws/aws-sdk-go-v2/config v1.29.17 h1:jSuiQ5jEe4SAMH6lLRMY9OVC+TqJLP5655pBGjmnjr0=
75+
github.com/aws/aws-sdk-go-v2/config v1.29.17/go.mod h1:9P4wwACpbeXs9Pm9w1QTh6BwWwJjwYvJ1iCt5QbCXh8=
76+
github.com/aws/aws-sdk-go-v2/credentials v1.17.70 h1:ONnH5CM16RTXRkS8Z1qg7/s2eDOhHhaXVd72mmyv4/0=
77+
github.com/aws/aws-sdk-go-v2/credentials v1.17.70/go.mod h1:M+lWhhmomVGgtuPOhO85u4pEa3SmssPTdcYpP/5J/xc=
78+
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.32 h1:KAXP9JSHO1vKGCr5f4O6WmlVKLFFXgWYAGoJosorxzU=
79+
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.32/go.mod h1:h4Sg6FQdexC1yYG9RDnOvLbW1a/P986++/Y/a+GyEM8=
80+
github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.81 h1:E5ff1vZlAudg24j5lF6F6/gBpln2LjWxGdQDBSLfVe4=
81+
github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.81/go.mod h1:hHBLCuhHI4Aokvs5vdVoCDBzmFy86yxs5J7LEPQwQEM=
82+
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.36 h1:SsytQyTMHMDPspp+spo7XwXTP44aJZZAC7fBV2C5+5s=
83+
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.36/go.mod h1:Q1lnJArKRXkenyog6+Y+zr7WDpk4e6XlR6gs20bbeNo=
84+
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.36 h1:i2vNHQiXUvKhs3quBR6aqlgJaiaexz/aNvdCktW/kAM=
85+
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.36/go.mod h1:UdyGa7Q91id/sdyHPwth+043HhmP6yP9MBHgbZM0xo8=
86+
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 h1:bIqFDwgGXXN1Kpp99pDOdKMTTb5d2KyU5X/BZxjOkRo=
87+
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3/go.mod h1:H5O/EsxDWyU+LP/V8i5sm8cxoZgc2fdNR9bxlOFrQTo=
88+
github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.36 h1:GMYy2EOWfzdP3wfVAGXBNKY5vK4K8vMET4sYOYltmqs=
89+
github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.36/go.mod h1:gDhdAV6wL3PmPqBhiPbnlS447GoWs8HTTOYef9/9Inw=
90+
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.4 h1:CXV68E2dNqhuynZJPB80bhPQwAKqBWVer887figW6Jc=
91+
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.4/go.mod h1:/xFi9KtvBXP97ppCz1TAEvU1Uf66qvid89rbem3wCzQ=
92+
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.7.4 h1:nAP2GYbfh8dd2zGZqFRSMlq+/F6cMPBUuCsGAMkN074=
93+
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.7.4/go.mod h1:LT10DsiGjLWh4GbjInf9LQejkYEhBgBCjLG5+lvk4EE=
94+
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.17 h1:t0E6FzREdtCsiLIoLCWsYliNsRBgyGD/MCK571qk4MI=
95+
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.17/go.mod h1:ygpklyoaypuyDvOM5ujWGrYWpAK3h7ugnmKCU/76Ys4=
96+
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.17 h1:qcLWgdhq45sDM9na4cvXax9dyLitn8EYBRl8Ak4XtG4=
97+
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.17/go.mod h1:M+jkjBFZ2J6DJrjMv2+vkBbuht6kxJYtJiwoVgX4p4U=
98+
github.com/aws/aws-sdk-go-v2/service/s3 v1.81.0 h1:1GmCadhKR3J2sMVKs2bAYq9VnwYeCqfRyZzD4RASGlA=
99+
github.com/aws/aws-sdk-go-v2/service/s3 v1.81.0/go.mod h1:kUklwasNoCn5YpyAqC/97r6dzTA1SRKJfKq16SXeoDU=
100+
github.com/aws/aws-sdk-go-v2/service/sso v1.25.5 h1:AIRJ3lfb2w/1/8wOOSqYb9fUKGwQbtysJ2H1MofRUPg=
101+
github.com/aws/aws-sdk-go-v2/service/sso v1.25.5/go.mod h1:b7SiVprpU+iGazDUqvRSLf5XmCdn+JtT1on7uNL6Ipc=
102+
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.3 h1:BpOxT3yhLwSJ77qIY3DoHAQjZsc4HEGfMCE4NGy3uFg=
103+
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.3/go.mod h1:vq/GQR1gOFLquZMSrxUK/cpvKCNVYibNyJ1m7JrU88E=
104+
github.com/aws/aws-sdk-go-v2/service/sts v1.34.0 h1:NFOJ/NXEGV4Rq//71Hs1jC/NvPs1ezajK+yQmkwnPV0=
105+
github.com/aws/aws-sdk-go-v2/service/sts v1.34.0/go.mod h1:7ph2tGpfQvwzgistp2+zga9f+bCjlQJPkPUmMgDSD7w=
106+
github.com/aws/smithy-go v1.22.4 h1:uqXzVZNuNexwc/xrh6Tb56u89WDlJY6HS+KC0S4QSjw=
107+
github.com/aws/smithy-go v1.22.4/go.mod h1:t1ufH5HMublsJYulve2RKmHDC15xu1f26kHCp/HgceI=
72108
github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk=
73109
github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4=
74110
github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
@@ -296,10 +332,6 @@ github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M
296332
github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=
297333
github.com/jmattheis/goverter v1.9.0 h1:opB/9b5Wer/csEHKS8ujW+cLHSDGg4dD+7109Qgqml4=
298334
github.com/jmattheis/goverter v1.9.0/go.mod h1:c8TVzpum2NThy2eJ/Wz3tyqRxzpElP2xDfoHOIDrNSQ=
299-
github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg=
300-
github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
301-
github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8=
302-
github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U=
303335
github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
304336
github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
305337
github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ=

gql/resolver_versions.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ func (r *mutationResolver) UploadVersionPart(ctx context.Context, modID string,
8686
return false, fmt.Errorf("failed to read file: %w", err)
8787
}
8888

89-
_, err = storage.UploadMultipartMod(ctx, mod.ID, mod.Name, uploadID, int64(part), bytes.NewReader(fileData))
89+
_, err = storage.UploadMultipartMod(ctx, mod.ID, mod.Name, uploadID, int32(part), bytes.NewReader(fileData))
9090

9191
return err == nil, err
9292
}

storage/s3.go

Lines changed: 63 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,17 @@ import (
55
"fmt"
66
"io"
77
"log/slog"
8+
"math"
89
"strconv"
910
"strings"
1011

1112
"github.com/Vilsol/slox"
12-
"github.com/aws/aws-sdk-go/aws"
13-
"github.com/aws/aws-sdk-go/aws/credentials"
14-
"github.com/aws/aws-sdk-go/aws/session"
15-
"github.com/aws/aws-sdk-go/service/s3"
16-
"github.com/aws/aws-sdk-go/service/s3/s3manager"
13+
"github.com/aws/aws-sdk-go-v2/aws"
14+
awsconfig "github.com/aws/aws-sdk-go-v2/config"
15+
"github.com/aws/aws-sdk-go-v2/credentials"
16+
"github.com/aws/aws-sdk-go-v2/feature/s3/manager"
17+
"github.com/aws/aws-sdk-go-v2/service/s3"
18+
"github.com/aws/aws-sdk-go-v2/service/s3/types"
1719
"github.com/pkg/errors"
1820
"go.opentelemetry.io/otel"
1921
"go.opentelemetry.io/otel/attribute"
@@ -22,40 +24,38 @@ import (
2224
)
2325

2426
type S3 struct {
25-
BaseURL string
26-
S3Client *s3.S3
27-
S3Session *session.Session
28-
Config Config
27+
BaseURL string
28+
S3Client *s3.Client
29+
Config Config
2930
}
3031

3132
func initializeS3(ctx context.Context, config Config) *S3 {
32-
s3Config := &aws.Config{
33-
Credentials: credentials.NewStaticCredentials(config.Key, config.Secret, ""),
34-
Endpoint: aws.String(config.Endpoint),
35-
Region: aws.String(config.Region),
36-
S3ForcePathStyle: aws.Bool(true),
37-
}
38-
39-
newSession, err := session.NewSession(s3Config)
33+
cfg, err := awsconfig.LoadDefaultConfig(
34+
ctx,
35+
awsconfig.WithCredentialsProvider(credentials.NewStaticCredentialsProvider(config.Key, config.Secret, "")),
36+
awsconfig.WithBaseEndpoint(config.Endpoint),
37+
awsconfig.WithRegion(config.Region),
38+
)
4039
if err != nil {
4140
slox.Error(ctx, "failed to create S3 session", slog.Any("err", err))
4241
return nil
4342
}
4443

45-
s3Client := s3.New(newSession)
44+
s3Client := s3.NewFromConfig(cfg, func(options *s3.Options) {
45+
options.UsePathStyle = true
46+
})
4647

4748
return &S3{
48-
BaseURL: config.BaseURL,
49-
S3Client: s3Client,
50-
S3Session: newSession,
51-
Config: config,
49+
BaseURL: config.BaseURL,
50+
S3Client: s3Client,
51+
Config: config,
5252
}
5353
}
5454

5555
func (s3o *S3) Get(key string) (io.ReadCloser, error) {
5656
cleanedKey := strings.TrimPrefix(key, "/")
5757

58-
object, err := s3o.S3Client.GetObject(&s3.GetObjectInput{
58+
object, err := s3o.S3Client.GetObject(context.TODO(), &s3.GetObjectInput{
5959
Bucket: aws.String(s3o.Config.Bucket),
6060
Key: aws.String(cleanedKey),
6161
})
@@ -74,9 +74,9 @@ func (s3o *S3) Put(ctx context.Context, key string, body io.ReadSeeker) (string,
7474

7575
cleanedKey := strings.TrimPrefix(key, "/")
7676

77-
uploader := s3manager.NewUploader(s3o.S3Session)
77+
uploader := manager.NewUploader(s3o.S3Client)
7878

79-
_, err := uploader.UploadWithContext(ctx, &s3manager.UploadInput{
79+
_, err := uploader.Upload(ctx, &s3.PutObjectInput{
8080
Body: body,
8181
Bucket: aws.String(s3o.Config.Bucket),
8282
Key: aws.String(cleanedKey),
@@ -102,7 +102,7 @@ func (s3o *S3) SignPut(_ string) (string, error) {
102102

103103
func (s3o *S3) StartMultipartUpload(key string) error {
104104
cleanedKey := strings.TrimPrefix(key, "/")
105-
upload, err := s3o.S3Client.CreateMultipartUpload(&s3.CreateMultipartUploadInput{
105+
upload, err := s3o.S3Client.CreateMultipartUpload(context.TODO(), &s3.CreateMultipartUploadInput{
106106
Bucket: aws.String(s3o.Config.Bucket),
107107
Key: aws.String(cleanedKey),
108108
})
@@ -115,15 +115,15 @@ func (s3o *S3) StartMultipartUpload(key string) error {
115115
return nil
116116
}
117117

118-
func (s3o *S3) UploadPart(key string, part int64, data io.ReadSeeker) error {
118+
func (s3o *S3) UploadPart(key string, part int32, data io.ReadSeeker) error {
119119
cleanedKey := strings.TrimPrefix(key, "/")
120120
id := redis.GetMultipartUploadID(cleanedKey)
121121

122-
response, err := s3o.S3Client.UploadPart(&s3.UploadPartInput{
122+
response, err := s3o.S3Client.UploadPart(context.TODO(), &s3.UploadPartInput{
123123
Body: data,
124124
Bucket: aws.String(s3o.Config.Bucket),
125125
Key: aws.String(cleanedKey),
126-
PartNumber: aws.Int64(part),
126+
PartNumber: aws.Int32(part),
127127
UploadId: aws.String(id),
128128
})
129129
if err != nil {
@@ -139,17 +139,17 @@ func (s3o *S3) CompleteMultipartUpload(key string) error {
139139
cleanedKey := strings.TrimPrefix(key, "/")
140140
id := redis.GetMultipartUploadID(cleanedKey)
141141
parts := redis.GetMultipartCompletedParts(cleanedKey)
142-
completedParts := make([]*s3.CompletedPart, len(parts))
142+
completedParts := make([]types.CompletedPart, len(parts))
143143

144144
for part, etag := range parts {
145-
partInt, _ := strconv.ParseInt(part, 10, 64)
146-
completedParts[partInt-1] = &s3.CompletedPart{ETag: aws.String(etag), PartNumber: &partInt}
145+
partInt, _ := strconv.ParseInt(part, 10, 32)
146+
completedParts[partInt-1] = types.CompletedPart{ETag: aws.String(etag), PartNumber: aws.Int32(int32(partInt))}
147147
}
148148

149-
_, err := s3o.S3Client.CompleteMultipartUpload(&s3.CompleteMultipartUploadInput{
149+
_, err := s3o.S3Client.CompleteMultipartUpload(context.TODO(), &s3.CompleteMultipartUploadInput{
150150
Bucket: aws.String(s3o.Config.Bucket),
151151
Key: aws.String(cleanedKey),
152-
MultipartUpload: &s3.CompletedMultipartUpload{Parts: completedParts},
152+
MultipartUpload: &types.CompletedMultipartUpload{Parts: completedParts},
153153
UploadId: aws.String(id),
154154
})
155155
if err != nil {
@@ -164,7 +164,7 @@ func (s3o *S3) CompleteMultipartUpload(key string) error {
164164
func (s3o *S3) Rename(from string, to string) error {
165165
cleanedKey := strings.TrimPrefix(to, "/")
166166

167-
_, err := s3o.S3Client.CopyObject(&s3.CopyObjectInput{
167+
_, err := s3o.S3Client.CopyObject(context.TODO(), &s3.CopyObjectInput{
168168
Bucket: aws.String(s3o.Config.Bucket),
169169
CopySource: aws.String(s3o.Config.Bucket + from),
170170
Key: aws.String(cleanedKey),
@@ -181,14 +181,14 @@ func (s3o *S3) Delete(key string) error {
181181

182182
// Check up to 10 object pages
183183
for range 10 {
184-
versions, err := s3o.S3Client.ListObjectVersions(&s3.ListObjectVersionsInput{
184+
versions, err := s3o.S3Client.ListObjectVersions(context.TODO(), &s3.ListObjectVersionsInput{
185185
Bucket: aws.String(s3o.Config.Bucket),
186186
KeyMarker: aws.String(cleanedKey),
187187
Prefix: aws.String(cleanedKey),
188188
})
189189
if err != nil {
190190
if strings.Contains(err.Error(), "NotImplemented") {
191-
_, err = s3o.S3Client.DeleteObject(&s3.DeleteObjectInput{
191+
_, err = s3o.S3Client.DeleteObject(context.TODO(), &s3.DeleteObjectInput{
192192
Bucket: aws.String(s3o.Config.Bucket),
193193
Key: aws.String(cleanedKey),
194194
})
@@ -202,24 +202,24 @@ func (s3o *S3) Delete(key string) error {
202202
return fmt.Errorf("failed to list object versions: %w", err)
203203
}
204204

205-
objects := make([]*s3.ObjectIdentifier, len(versions.Versions)+len(versions.DeleteMarkers))
205+
objects := make([]types.ObjectIdentifier, len(versions.Versions)+len(versions.DeleteMarkers))
206206

207207
for i, version := range versions.Versions {
208-
objects[i] = &s3.ObjectIdentifier{
208+
objects[i] = types.ObjectIdentifier{
209209
Key: version.Key,
210210
VersionId: version.VersionId,
211211
}
212212
}
213213

214214
for i, marker := range versions.DeleteMarkers {
215-
objects[i+len(versions.Versions)] = &s3.ObjectIdentifier{
215+
objects[i+len(versions.Versions)] = types.ObjectIdentifier{
216216
Key: marker.Key,
217217
VersionId: marker.VersionId,
218218
}
219219
}
220220

221221
if len(objects) == 0 {
222-
_, err = s3o.S3Client.DeleteObject(&s3.DeleteObjectInput{
222+
_, err = s3o.S3Client.DeleteObject(context.TODO(), &s3.DeleteObjectInput{
223223
Bucket: aws.String(s3o.Config.Bucket),
224224
Key: aws.String(cleanedKey),
225225
})
@@ -230,9 +230,9 @@ func (s3o *S3) Delete(key string) error {
230230
return nil
231231
}
232232

233-
_, err = s3o.S3Client.DeleteObjects(&s3.DeleteObjectsInput{
233+
_, err = s3o.S3Client.DeleteObjects(context.TODO(), &s3.DeleteObjectsInput{
234234
Bucket: aws.String(s3o.Config.Bucket),
235-
Delete: &s3.Delete{
235+
Delete: &types.Delete{
236236
Objects: objects,
237237
},
238238
})
@@ -247,7 +247,7 @@ func (s3o *S3) Delete(key string) error {
247247
func (s3o *S3) Meta(key string) (*ObjectMeta, error) {
248248
cleanedKey := strings.TrimPrefix(key, "/")
249249

250-
data, err := s3o.S3Client.HeadObject(&s3.HeadObjectInput{
250+
data, err := s3o.S3Client.HeadObject(context.TODO(), &s3.HeadObjectInput{
251251
Bucket: aws.String(s3o.Config.Bucket),
252252
Key: aws.String(cleanedKey),
253253
})
@@ -264,20 +264,30 @@ func (s3o *S3) Meta(key string) (*ObjectMeta, error) {
264264
func (s3o *S3) List(prefix string) ([]Object, error) {
265265
out := make([]Object, 0)
266266

267-
err := s3o.S3Client.ListObjectsPages(&s3.ListObjectsInput{
268-
Bucket: aws.String(s3o.Config.Bucket),
269-
Prefix: aws.String(prefix),
270-
}, func(output *s3.ListObjectsOutput, _ bool) bool {
271-
for _, obj := range output.Contents {
267+
var marker *string
268+
for {
269+
objects, err := s3o.S3Client.ListObjects(context.TODO(), &s3.ListObjectsInput{
270+
Bucket: aws.String(s3o.Config.Bucket),
271+
Marker: marker,
272+
MaxKeys: aws.Int32(math.MaxInt32),
273+
Prefix: aws.String(prefix),
274+
})
275+
if err != nil {
276+
return nil, fmt.Errorf("failed to list objects: %w", err)
277+
}
278+
279+
marker = objects.NextMarker
280+
281+
for _, obj := range objects.Contents {
272282
out = append(out, Object{
273283
Key: obj.Key,
274284
LastModified: obj.LastModified,
275285
})
276286
}
277-
return true
278-
})
279-
if err != nil {
280-
return nil, fmt.Errorf("failed to list objects: %w", err)
287+
288+
if objects.IsTruncated == nil || !*objects.IsTruncated {
289+
break
290+
}
281291
}
282292

283293
return out, nil

storage/storage.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ type Storage interface {
2727
SignGet(key string) (string, error)
2828
SignPut(key string) (string, error)
2929
StartMultipartUpload(key string) error
30-
UploadPart(key string, part int64, data io.ReadSeeker) error
30+
UploadPart(key string, part int32, data io.ReadSeeker) error
3131
CompleteMultipartUpload(key string) error
3232
Rename(from string, to string) error
3333
Delete(key string) error
@@ -134,7 +134,7 @@ func StartUploadMultipartMod(ctx context.Context, modID string, name string, ver
134134
return fmt.Sprintf("/mods/%s/%s.smod", modID, EncodeName(filename)), nil
135135
}
136136

137-
func UploadMultipartMod(ctx context.Context, modID string, name string, versionID string, part int64, data io.ReadSeeker) (string, error) {
137+
func UploadMultipartMod(ctx context.Context, modID string, name string, versionID string, part int32, data io.ReadSeeker) (string, error) {
138138
cleanName := cleanModName(name)
139139

140140
filename := cleanName + "-" + versionID
@@ -217,7 +217,7 @@ func StartMultipartUpload(ctx context.Context, key string) error {
217217
return nil
218218
}
219219

220-
func UploadPart(ctx context.Context, key string, part int64, data io.ReadSeeker) error {
220+
func UploadPart(ctx context.Context, key string, part int32, data io.ReadSeeker) error {
221221
if err := Client(ctx).UploadPart(key, part, data); err != nil {
222222
return fmt.Errorf("failed to upload part: %w", err)
223223
}

0 commit comments

Comments
 (0)