Skip to content

Commit 94e4a2a

Browse files
committed
Replace aws-sdk-go v1 with aws-sdk-go-v2
AWS announced that aws-sdk-go v1 entered the maintenance mode and will reach end of support by July 31, 2025. As many Go projects use go-migrate internally they still references the aws-sdk-go v1. Even go-migrate itself has both versions in the go.mod. This PR fixes it. https://aws.amazon.com/blogs/developer/announcing-end-of-support-for-aws-sdk-for-go-v1-on-july-31-2025/
1 parent c378583 commit 94e4a2a

File tree

4 files changed

+98
-48
lines changed

4 files changed

+98
-48
lines changed

go.mod

+18-13
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ require (
99
cloud.google.com/go/storage v1.38.0
1010
github.com/Azure/go-autorest/autorest/adal v0.9.16
1111
github.com/ClickHouse/clickhouse-go v1.4.3
12-
github.com/aws/aws-sdk-go v1.49.6
12+
github.com/aws/aws-sdk-go-v2/config v1.28.0
1313
github.com/cenkalti/backoff/v4 v4.1.2
1414
github.com/cockroachdb/cockroach-go/v2 v2.1.1
1515
github.com/dhui/dktest v0.4.3
@@ -46,6 +46,11 @@ require (
4646
)
4747

4848
require (
49+
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.17 // indirect
50+
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 // indirect
51+
github.com/aws/aws-sdk-go-v2/service/sso v1.24.2 // indirect
52+
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.2 // indirect
53+
github.com/aws/aws-sdk-go-v2/service/sts v1.32.2 // indirect
4954
github.com/distribution/reference v0.6.0 // indirect
5055
github.com/felixge/httpsnoop v1.0.4 // indirect
5156
github.com/go-logr/logr v1.4.2 // indirect
@@ -88,19 +93,19 @@ require (
8893
github.com/andybalholm/brotli v1.0.4 // indirect
8994
github.com/apache/arrow/go/v10 v10.0.1 // indirect
9095
github.com/apache/thrift v0.16.0 // indirect
91-
github.com/aws/aws-sdk-go-v2 v1.16.16 // indirect
92-
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.8 // indirect
93-
github.com/aws/aws-sdk-go-v2/credentials v1.12.20 // indirect
96+
github.com/aws/aws-sdk-go-v2 v1.32.2
97+
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.6 // indirect
98+
github.com/aws/aws-sdk-go-v2/credentials v1.17.41 // indirect
9499
github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.33 // indirect
95-
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.23 // indirect
96-
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.17 // indirect
97-
github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.14 // indirect
98-
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.9 // indirect
99-
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.18 // indirect
100-
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.17 // indirect
101-
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.13.17 // indirect
102-
github.com/aws/aws-sdk-go-v2/service/s3 v1.27.11 // indirect
103-
github.com/aws/smithy-go v1.13.3 // indirect
100+
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.21 // indirect
101+
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.21 // indirect
102+
github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.21 // indirect
103+
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.0 // indirect
104+
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.4.2 // indirect
105+
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.2 // indirect
106+
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.2 // indirect
107+
github.com/aws/aws-sdk-go-v2/service/s3 v1.66.0
108+
github.com/aws/smithy-go v1.22.0 // indirect
104109
github.com/census-instrumentation/opencensus-proto v0.4.1 // indirect
105110
github.com/cespare/xxhash/v2 v2.2.0 // indirect
106111
github.com/cloudflare/golz4 v0.0.0-20150217214814-ef862a3cdc58 // indirect

go.sum

+36-11
Original file line numberDiff line numberDiff line change
@@ -77,44 +77,69 @@ github.com/apache/thrift v0.16.0 h1:qEy6UW60iVOlUy+b9ZR0d5WzUWYGOo4HfopoyBaNmoY=
7777
github.com/apache/thrift v0.16.0/go.mod h1:PHK3hniurgQaNMZYaCLEqXKsYK8upmhPbmdP2FXSqgU=
7878
github.com/aws/aws-sdk-go v1.49.6 h1:yNldzF5kzLBRvKlKz1S0bkvc2+04R1kt13KfBWQBfFA=
7979
github.com/aws/aws-sdk-go v1.49.6/go.mod h1:LF8svs817+Nz+DmiMQKTO3ubZ/6IaTpq3TjupRn3Eqk=
80-
github.com/aws/aws-sdk-go-v2 v1.16.16 h1:M1fj4FE2lB4NzRb9Y0xdWsn2P0+2UHVxwKyOa4YJNjk=
8180
github.com/aws/aws-sdk-go-v2 v1.16.16/go.mod h1:SwiyXi/1zTUZ6KIAmLK5V5ll8SiURNUYOqTerZPaF9k=
82-
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.8 h1:tcFliCWne+zOuUfKNRn8JdFBuWPDuISDH08wD2ULkhk=
81+
github.com/aws/aws-sdk-go-v2 v1.32.2 h1:AkNLZEyYMLnx/Q/mSKkcMqwNFXMAvFto9bNsHqcTduI=
82+
github.com/aws/aws-sdk-go-v2 v1.32.2/go.mod h1:2SK5n0a2karNTv5tbP1SjsX0uhttou00v/HpXKM1ZUo=
8383
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.8/go.mod h1:JTnlBSot91steJeti4ryyu/tLd4Sk84O5W22L7O2EQU=
84+
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.6 h1:pT3hpW0cOHRJx8Y0DfJUEQuqPild8jRGmSFmBgvydr0=
85+
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.6/go.mod h1:j/I2++U0xX+cr44QjHay4Cvxj6FUbnxrgmqN3H1jTZA=
8486
github.com/aws/aws-sdk-go-v2/config v1.17.7 h1:odVM52tFHhpqZBKNjVW5h+Zt1tKHbhdTQRb+0WHrNtw=
8587
github.com/aws/aws-sdk-go-v2/config v1.17.7/go.mod h1:dN2gja/QXxFF15hQreyrqYhLBaQo1d9ZKe/v/uplQoI=
88+
github.com/aws/aws-sdk-go-v2/config v1.28.0 h1:FosVYWcqEtWNxHn8gB/Vs6jOlNwSoyOCA/g/sxyySOQ=
89+
github.com/aws/aws-sdk-go-v2/config v1.28.0/go.mod h1:pYhbtvg1siOOg8h5an77rXle9tVG8T+BWLWAo7cOukc=
8690
github.com/aws/aws-sdk-go-v2/credentials v1.12.20 h1:9+ZhlDY7N9dPnUmf7CDfW9In4sW5Ff3bh7oy4DzS1IE=
8791
github.com/aws/aws-sdk-go-v2/credentials v1.12.20/go.mod h1:UKY5HyIux08bbNA7Blv4PcXQ8cTkGh7ghHMFklaviR4=
92+
github.com/aws/aws-sdk-go-v2/credentials v1.17.41 h1:7gXo+Axmp+R4Z+AK8YFQO0ZV3L0gizGINCOWxSLY9W8=
93+
github.com/aws/aws-sdk-go-v2/credentials v1.17.41/go.mod h1:u4Eb8d3394YLubphT4jLEwN1rLNq2wFOlT6OuxFwPzU=
8894
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.17 h1:r08j4sbZu/RVi+BNxkBJwPMUYY3P8mgSDuKkZ/ZN1lE=
8995
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.17/go.mod h1:yIkQcCDYNsZfXpd5UX2Cy+sWA1jPgIhGTw9cOBzfVnQ=
96+
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.17 h1:TMH3f/SCAWdNtXXVPPu5D6wrr4G5hI1rAxbcocKfC7Q=
97+
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.17/go.mod h1:1ZRXLdTpzdJb9fwTMXiLipENRxkGMTn1sfKexGllQCw=
9098
github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.33 h1:fAoVmNGhir6BR+RU0/EI+6+D7abM+MCwWf8v4ip5jNI=
9199
github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.33/go.mod h1:84XgODVR8uRhmOnUkKGUZKqIMxmjmLOR8Uyp7G/TPwc=
92-
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.23 h1:s4g/wnzMf+qepSNgTvaQQHNxyMLKSawNhKCPNy++2xY=
93100
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.23/go.mod h1:2DFxAQ9pfIRy0imBCJv+vZ2X6RKxves6fbnEuSry6b4=
94-
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.17 h1:/K482T5A3623WJgWT8w1yRAFK4RzGzEl7y39yhtn9eA=
101+
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.21 h1:UAsR3xA31QGf79WzpG/ixT9FZvQlh5HY1NRqSHBNOCk=
102+
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.21/go.mod h1:JNr43NFf5L9YaG3eKTm7HQzls9J+A9YYcGI5Quh1r2Y=
95103
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.17/go.mod h1:pRwaTYCJemADaqCbUAxltMoHKata7hmB5PjEXeu0kfg=
104+
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.21 h1:6jZVETqmYCadGFvrYEQfC5fAQmlo80CeL5psbno6r0s=
105+
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.21/go.mod h1:1SR0GbLlnN3QUmYaflZNiH1ql+1qrSiB2vwcJ+4UM60=
96106
github.com/aws/aws-sdk-go-v2/internal/ini v1.3.24 h1:wj5Rwc05hvUSvKuOF29IYb9QrCLjU+rHAy/x/o0DK2c=
97107
github.com/aws/aws-sdk-go-v2/internal/ini v1.3.24/go.mod h1:jULHjqqjDlbyTa7pfM7WICATnOv+iOhjletM3N0Xbu8=
98-
github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.14 h1:ZSIPAkAsCCjYrhqfw2+lNzWDzxzHXEckFkTePL5RSWQ=
108+
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 h1:VaRN3TlFdd6KxX1x3ILT5ynH6HvKgqdiXoTxAF4HQcQ=
109+
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1/go.mod h1:FbtygfRFze9usAadmnGJNc8KsP346kEe+y2/oyhGAGc=
99110
github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.14/go.mod h1:AyGgqiKv9ECM6IZeNQtdT8NnMvUb3/2wokeq2Fgryto=
100-
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.9 h1:Lh1AShsuIJTwMkoxVCAYPJgNG5H+eN6SmoUn8nOZ5wE=
111+
github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.21 h1:7edmS3VOBDhK00b/MwGtGglCm7hhwNYnjJs/PgFdMQE=
112+
github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.21/go.mod h1:Q9o5h4HoIWG8XfzxqiuK/CGUbepCJ8uTlaE3bAbxytQ=
101113
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.9/go.mod h1:a9j48l6yL5XINLHLcOKInjdvknN+vWqPBxqeIDw7ktw=
102-
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.18 h1:BBYoNQt2kUZUUK4bIPsKrCcjVPUMNsgQpNAwhznK/zo=
114+
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.0 h1:TToQNkvGguu209puTojY/ozlqy2d/SFNcoLIqTFi42g=
115+
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.0/go.mod h1:0jp+ltwkf+SwG2fm/PKo8t4y8pJSgOCO4D8Lz3k0aHQ=
103116
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.18/go.mod h1:NS55eQ4YixUJPTC+INxi2/jCqe1y2Uw3rnh9wEOVJxY=
104-
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.17 h1:Jrd/oMh0PKQc6+BowB+pLEwLIgaQF29eYbe7E1Av9Ug=
117+
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.4.2 h1:4FMHqLfk0efmTqhXVRL5xYRqlEBNBiRI7N6w4jsEdd4=
118+
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.4.2/go.mod h1:LWoqeWlK9OZeJxsROW2RqrSPvQHKTpp69r/iDjwsSaw=
105119
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.17/go.mod h1:4nYOrY41Lrbk2170/BGkcJKBhws9Pfn8MG3aGqjjeFI=
106-
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.13.17 h1:HfVVR1vItaG6le+Bpw6P4midjBDMKnjMyZnw9MXYUcE=
120+
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.2 h1:s7NA1SOw8q/5c0wr8477yOPp0z+uBaXBnLE0XYb0POA=
121+
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.2/go.mod h1:fnjjWyAW/Pj5HYOxl9LJqWtEwS7W2qgcRLWP+uWbss0=
107122
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.13.17/go.mod h1:YqMdV+gEKCQ59NrB7rzrJdALeBIsYiVi8Inj3+KcqHI=
108-
github.com/aws/aws-sdk-go-v2/service/s3 v1.27.11 h1:3/gm/JTX9bX8CpzTgIlrtYpB3EVBDxyg/GY/QdcIEZw=
123+
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.2 h1:t7iUP9+4wdc5lt3E41huP+GvQZJD38WLsgVp4iOtAjg=
124+
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.2/go.mod h1:/niFCtmuQNxqx9v8WAPq5qh7EH25U4BF6tjoyq9bObM=
109125
github.com/aws/aws-sdk-go-v2/service/s3 v1.27.11/go.mod h1:fmgDANqTUCxciViKl9hb/zD5LFbvPINFRgWhDbR+vZo=
126+
github.com/aws/aws-sdk-go-v2/service/s3 v1.66.0 h1:xA6XhTF7PE89BCNHJbQi8VvPzcgMtmGC5dr8S8N7lHk=
127+
github.com/aws/aws-sdk-go-v2/service/s3 v1.66.0/go.mod h1:cB6oAuus7YXRZhWCc1wIwPywwZ1XwweNp2TVAEGYeB8=
110128
github.com/aws/aws-sdk-go-v2/service/sso v1.11.23 h1:pwvCchFUEnlceKIgPUouBJwK81aCkQ8UDMORfeFtW10=
111129
github.com/aws/aws-sdk-go-v2/service/sso v1.11.23/go.mod h1:/w0eg9IhFGjGyyncHIQrXtU8wvNsTJOP0R6PPj0wf80=
130+
github.com/aws/aws-sdk-go-v2/service/sso v1.24.2 h1:bSYXVyUzoTHoKalBmwaZxs97HU9DWWI3ehHSAMa7xOk=
131+
github.com/aws/aws-sdk-go-v2/service/sso v1.24.2/go.mod h1:skMqY7JElusiOUjMJMOv1jJsP7YUg7DrhgqZZWuzu1U=
112132
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.13.5 h1:GUnZ62TevLqIoDyHeiWj2P7EqaosgakBKVvWriIdLQY=
113133
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.13.5/go.mod h1:csZuQY65DAdFBt1oIjO5hhBR49kQqop4+lcuCjf2arA=
134+
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.2 h1:AhmO1fHINP9vFYUE0LHzCWg/LfUWUF+zFPEcY9QXb7o=
135+
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.2/go.mod h1:o8aQygT2+MVP0NaV6kbdE1YnnIM8RRVQzoeUH45GOdI=
114136
github.com/aws/aws-sdk-go-v2/service/sts v1.16.19 h1:9pPi0PsFNAGILFfPCk8Y0iyEBGc6lu6OQ97U7hmdesg=
115137
github.com/aws/aws-sdk-go-v2/service/sts v1.16.19/go.mod h1:h4J3oPZQbxLhzGnk+j9dfYHi5qIOVJ5kczZd658/ydM=
116-
github.com/aws/smithy-go v1.13.3 h1:l7LYxGuzK6/K+NzJ2mC+VvLUbae0sL3bXU//04MkmnA=
138+
github.com/aws/aws-sdk-go-v2/service/sts v1.32.2 h1:CiS7i0+FUe+/YY1GvIBLLrR/XNGZ4CtM1Ll0XavNuVo=
139+
github.com/aws/aws-sdk-go-v2/service/sts v1.32.2/go.mod h1:HtaiBI8CjYoNVde8arShXb94UbQQi9L4EMr6D+xGBwo=
117140
github.com/aws/smithy-go v1.13.3/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA=
141+
github.com/aws/smithy-go v1.22.0 h1:uunKnWlcoL3zO7q+gG2Pk53joueEOsnNB28QdMsmiMM=
142+
github.com/aws/smithy-go v1.22.0/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg=
118143
github.com/bitly/go-hostpool v0.0.0-20171023180738-a3a6125de932 h1:mXoPYz/Ul5HYEDvkta6I8/rnYM5gSdSV2tJ6XbZuEtY=
119144
github.com/bitly/go-hostpool v0.0.0-20171023180738-a3a6125de932/go.mod h1:NOuUCSz6Q9T7+igc/hlvDOUdtWKryOrtFyIVABv/p7k=
120145
github.com/bkaradzic/go-lz4 v1.0.0 h1:RXc4wYsyz985CkXXeX04y4VnZFGG8Rd43pRaHsOXAKk=

source/aws_s3/s3.go

+23-12
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
package awss3
22

33
import (
4+
"context"
45
"fmt"
56
"io"
67
"net/url"
78
"os"
89
"path"
910
"strings"
1011

11-
"github.com/aws/aws-sdk-go/aws"
12-
"github.com/aws/aws-sdk-go/aws/session"
13-
"github.com/aws/aws-sdk-go/service/s3"
14-
"github.com/aws/aws-sdk-go/service/s3/s3iface"
12+
"github.com/aws/aws-sdk-go-v2/aws"
13+
awsconfig "github.com/aws/aws-sdk-go-v2/config"
14+
"github.com/aws/aws-sdk-go-v2/service/s3"
1515
"github.com/golang-migrate/migrate/v4/source"
1616
)
1717

@@ -20,35 +20,43 @@ func init() {
2020
}
2121

2222
type s3Driver struct {
23-
s3client s3iface.S3API
23+
s3client S3Client
2424
config *Config
2525
migrations *source.Migrations
26+
ctx context.Context
2627
}
2728

2829
type Config struct {
2930
Bucket string
3031
Prefix string
3132
}
3233

34+
type S3Client interface {
35+
ListObjects(ctx context.Context, params *s3.ListObjectsInput, optFns ...func(*s3.Options)) (*s3.ListObjectsOutput, error)
36+
GetObject(ctx context.Context, params *s3.GetObjectInput, optFns ...func(*s3.Options)) (*s3.GetObjectOutput, error)
37+
}
38+
3339
func (s *s3Driver) Open(folder string) (source.Driver, error) {
3440
config, err := parseURI(folder)
3541
if err != nil {
3642
return nil, err
3743
}
3844

39-
sess, err := session.NewSession()
45+
ctx := context.Background()
46+
cfg, err := awsconfig.LoadDefaultConfig(ctx)
4047
if err != nil {
4148
return nil, err
4249
}
4350

44-
return WithInstance(s3.New(sess), config)
51+
return WithInstance(ctx, s3.NewFromConfig(cfg), config)
4552
}
4653

47-
func WithInstance(s3client s3iface.S3API, config *Config) (source.Driver, error) {
54+
func WithInstance(ctx context.Context, s3client S3Client, config *Config) (source.Driver, error) {
4855
driver := &s3Driver{
4956
config: config,
5057
s3client: s3client,
5158
migrations: source.NewMigrations(),
59+
ctx: ctx,
5260
}
5361

5462
if err := driver.loadMigrations(); err != nil {
@@ -76,7 +84,7 @@ func parseURI(uri string) (*Config, error) {
7684
}
7785

7886
func (s *s3Driver) loadMigrations() error {
79-
output, err := s.s3client.ListObjects(&s3.ListObjectsInput{
87+
output, err := s.s3client.ListObjects(s.ctx, &s3.ListObjectsInput{
8088
Bucket: aws.String(s.config.Bucket),
8189
Prefix: aws.String(s.config.Prefix),
8290
Delimiter: aws.String("/"),
@@ -85,13 +93,16 @@ func (s *s3Driver) loadMigrations() error {
8593
return err
8694
}
8795
for _, object := range output.Contents {
88-
_, fileName := path.Split(aws.StringValue(object.Key))
96+
if object.Key == nil {
97+
continue
98+
}
99+
_, fileName := path.Split(*object.Key)
89100
m, err := source.DefaultParse(fileName)
90101
if err != nil {
91102
continue
92103
}
93104
if !s.migrations.Append(m) {
94-
return fmt.Errorf("unable to parse file %v", aws.StringValue(object.Key))
105+
return fmt.Errorf("unable to parse file %v", object.Key)
95106
}
96107
}
97108
return nil
@@ -141,7 +152,7 @@ func (s *s3Driver) ReadDown(version uint) (io.ReadCloser, string, error) {
141152

142153
func (s *s3Driver) open(m *source.Migration) (io.ReadCloser, string, error) {
143154
key := path.Join(s.config.Prefix, m.Raw)
144-
object, err := s.s3client.GetObject(&s3.GetObjectInput{
155+
object, err := s.s3client.GetObject(s.ctx, &s3.GetObjectInput{
145156
Bucket: aws.String(s.config.Bucket),
146157
Key: aws.String(key),
147158
})

source/aws_s3/s3_test.go

+21-12
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
package awss3
22

33
import (
4+
"context"
45
"errors"
56
"io"
67
"strings"
78
"testing"
89

9-
"github.com/aws/aws-sdk-go/aws"
10-
"github.com/aws/aws-sdk-go/service/s3"
10+
"github.com/aws/aws-sdk-go-v2/aws"
11+
"github.com/aws/aws-sdk-go-v2/service/s3"
12+
s3types "github.com/aws/aws-sdk-go-v2/service/s3/types"
1113
st "github.com/golang-migrate/migrate/v4/source/testing"
1214
"github.com/stretchr/testify/assert"
1315
)
@@ -30,7 +32,7 @@ func Test(t *testing.T) {
3032
"prod/migrations/0-random-stuff/whatever.txt": "",
3133
},
3234
}
33-
driver, err := WithInstance(&s3Client, &Config{
35+
driver, err := WithInstance(context.Background(), &s3Client, &Config{
3436
Bucket: "some-bucket",
3537
Prefix: "prod/migrations/",
3638
})
@@ -89,23 +91,23 @@ func TestParseURI(t *testing.T) {
8991
}
9092

9193
type fakeS3 struct {
92-
s3.S3
94+
S3Client
9395
bucket string
9496
objects map[string]string
9597
}
9698

97-
func (s *fakeS3) ListObjects(input *s3.ListObjectsInput) (*s3.ListObjectsOutput, error) {
98-
bucket := aws.StringValue(input.Bucket)
99+
func (s *fakeS3) ListObjects(ctx context.Context, input *s3.ListObjectsInput, optFns ...func(*s3.Options)) (*s3.ListObjectsOutput, error) {
100+
bucket := stringValue(input.Bucket)
99101
if bucket != s.bucket {
100102
return nil, errors.New("bucket not found")
101103
}
102-
prefix := aws.StringValue(input.Prefix)
103-
delimiter := aws.StringValue(input.Delimiter)
104+
prefix := stringValue(input.Prefix)
105+
delimiter := stringValue(input.Delimiter)
104106
var output s3.ListObjectsOutput
105107
for name := range s.objects {
106108
if strings.HasPrefix(name, prefix) {
107109
if delimiter == "" || !strings.Contains(strings.Replace(name, prefix, "", 1), delimiter) {
108-
output.Contents = append(output.Contents, &s3.Object{
110+
output.Contents = append(output.Contents, s3types.Object{
109111
Key: aws.String(name),
110112
})
111113
}
@@ -114,14 +116,21 @@ func (s *fakeS3) ListObjects(input *s3.ListObjectsInput) (*s3.ListObjectsOutput,
114116
return &output, nil
115117
}
116118

117-
func (s *fakeS3) GetObject(input *s3.GetObjectInput) (*s3.GetObjectOutput, error) {
118-
bucket := aws.StringValue(input.Bucket)
119+
func (s *fakeS3) GetObject(ctx context.Context, input *s3.GetObjectInput, optFns ...func(*s3.Options)) (*s3.GetObjectOutput, error) {
120+
bucket := stringValue(input.Bucket)
119121
if bucket != s.bucket {
120122
return nil, errors.New("bucket not found")
121123
}
122-
if data, ok := s.objects[aws.StringValue(input.Key)]; ok {
124+
if data, ok := s.objects[stringValue(input.Key)]; ok {
123125
body := io.NopCloser(strings.NewReader(data))
124126
return &s3.GetObjectOutput{Body: body}, nil
125127
}
126128
return nil, errors.New("object not found")
127129
}
130+
131+
func stringValue(s *string) string {
132+
if s == nil {
133+
return ""
134+
}
135+
return *s
136+
}

0 commit comments

Comments
 (0)