Skip to content

Commit 7ee005d

Browse files
committed
dep: aws-sdk-go: migrate to aws-sdk-go-v2
1 parent 3e8bb36 commit 7ee005d

16 files changed

Lines changed: 174 additions & 99 deletions

File tree

go.mod

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,11 @@ go 1.25.0
44

55
require (
66
github.com/aws/aws-lambda-go v1.53.0
7-
github.com/aws/aws-sdk-go v1.55.8
7+
github.com/aws/aws-sdk-go-v2 v1.41.3
8+
github.com/aws/aws-sdk-go-v2/config v1.32.11
9+
github.com/aws/aws-sdk-go-v2/service/lambda v1.88.2
10+
github.com/aws/aws-sdk-go-v2/service/s3 v1.96.3
11+
github.com/aws/smithy-go v1.24.2
812
github.com/cozy/httpcache v0.0.0-20210224123405-3f334f841945
913
github.com/felixge/httpsnoop v1.0.4
1014
github.com/function61/certbus v0.0.0-20220212111008-7a31ebaf16e3
@@ -21,6 +25,22 @@ require (
2125

2226
require (
2327
github.com/apcera/termtables v0.0.0-20170405184538-bcbc5dc54055 // indirect
28+
github.com/aws/aws-sdk-go v1.30.20 // indirect
29+
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.6 // indirect
30+
github.com/aws/aws-sdk-go-v2/credentials v1.19.11 // indirect
31+
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.19 // indirect
32+
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.19 // indirect
33+
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.19 // indirect
34+
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.5 // indirect
35+
github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.19 // indirect
36+
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.6 // indirect
37+
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.11 // indirect
38+
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.19 // indirect
39+
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.19 // indirect
40+
github.com/aws/aws-sdk-go-v2/service/signin v1.0.7 // indirect
41+
github.com/aws/aws-sdk-go-v2/service/sso v1.30.12 // indirect
42+
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.16 // indirect
43+
github.com/aws/aws-sdk-go-v2/service/sts v1.41.8 // indirect
2444
github.com/beorn7/perks v1.0.1 // indirect
2545
github.com/cespare/xxhash/v2 v2.3.0 // indirect
2646
github.com/clipperhouse/uax29/v2 v2.7.0 // indirect

go.sum

Lines changed: 41 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,48 @@ github.com/aws/aws-lambda-go v1.53.0 h1:uAMv6W/vCP/L494BAUSxe+8KVBIPK+SGPyapFt3F
5858
github.com/aws/aws-lambda-go v1.53.0/go.mod h1:dpMpZgvWx5vuQJfBt0zqBha60q7Dd7RfgJv23DymV8A=
5959
github.com/aws/aws-sdk-go v1.16.15/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
6060
github.com/aws/aws-sdk-go v1.29.0/go.mod h1:1KvfttTE3SPKMpo8g2c6jL3ZKfXtFvKscTgahTma5Xg=
61+
github.com/aws/aws-sdk-go v1.30.20 h1:ktsy2vodSZxz/arYqo7DlpkIeNohHL+4Rmjdo7YGtrE=
6162
github.com/aws/aws-sdk-go v1.30.20/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0=
62-
github.com/aws/aws-sdk-go v1.55.8 h1:JRmEUbU52aJQZ2AjX4q4Wu7t4uZjOu71uyNmaWlUkJQ=
63-
github.com/aws/aws-sdk-go v1.55.8/go.mod h1:ZkViS9AqA6otK+JBBNH2++sx1sgxrPKcSzPPvQkUtXk=
63+
github.com/aws/aws-sdk-go-v2 v1.41.3 h1:4kQ/fa22KjDt13QCy1+bYADvdgcxpfH18f0zP542kZA=
64+
github.com/aws/aws-sdk-go-v2 v1.41.3/go.mod h1:mwsPRE8ceUUpiTgF7QmQIJ7lgsKUPQOUl3o72QBrE1o=
65+
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.6 h1:N4lRUXZpZ1KVEUn6hxtco/1d2lgYhNn1fHkkl8WhlyQ=
66+
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.6/go.mod h1:lyw7GFp3qENLh7kwzf7iMzAxDn+NzjXEAGjKS2UOKqI=
67+
github.com/aws/aws-sdk-go-v2/config v1.32.11 h1:ftxI5sgz8jZkckuUHXfC/wMUc8u3fG1vQS0plr2F2Zs=
68+
github.com/aws/aws-sdk-go-v2/config v1.32.11/go.mod h1:twF11+6ps9aNRKEDimksp923o44w/Thk9+8YIlzWMmo=
69+
github.com/aws/aws-sdk-go-v2/credentials v1.19.11 h1:NdV8cwCcAXrCWyxArt58BrvZJ9pZ9Fhf9w6Uh5W3Uyc=
70+
github.com/aws/aws-sdk-go-v2/credentials v1.19.11/go.mod h1:30yY2zqkMPdrvxBqzI9xQCM+WrlrZKSOpSJEsylVU+8=
71+
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.19 h1:INUvJxmhdEbVulJYHI061k4TVuS3jzzthNvjqvVvTKM=
72+
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.19/go.mod h1:FpZN2QISLdEBWkayloda+sZjVJL+e9Gl0k1SyTgcswU=
73+
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.19 h1:/sECfyq2JTifMI2JPyZ4bdRN77zJmr6SrS1eL3augIA=
74+
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.19/go.mod h1:dMf8A5oAqr9/oxOfLkC/c2LU/uMcALP0Rgn2BD5LWn0=
75+
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.19 h1:AWeJMk33GTBf6J20XJe6qZoRSJo0WfUhsMdUKhoODXE=
76+
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.19/go.mod h1:+GWrYoaAsV7/4pNHpwh1kiNLXkKaSoppxQq9lbH8Ejw=
77+
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.5 h1:clHU5fm//kWS1C2HgtgWxfQbFbx4b6rx+5jzhgX9HrI=
78+
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.5/go.mod h1:O3h0IK87yXci+kg6flUKzJnWeziQUKciKrLjcatSNcY=
79+
github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.19 h1:3Y4oma5TiV7tT9wa8zRcdoXwZkGz9Q/wxbEUK7cMuAM=
80+
github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.19/go.mod h1:V1K+TeJVD5JOk3D9e5tsX2KUdL7BlB+FV6cBhdobN8c=
81+
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.6 h1:XAq62tBTJP/85lFD5oqOOe7YYgWxY9LvWq8plyDvDVg=
82+
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.6/go.mod h1:x0nZssQ3qZSnIcePWLvcoFisRXJzcTVvYpAAdYX8+GI=
83+
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.11 h1:BYf7XNsJMzl4mObARUBUib+j2tf0U//JAAtTnYqvqCw=
84+
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.11/go.mod h1:aEUS4WrNk/+FxkBZZa7tVgp4pGH+kFGW40Y8rCPqt5g=
85+
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.19 h1:X1Tow7suZk9UCJHE1Iw9GMZJJl0dAnKXXP1NaSDHwmw=
86+
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.19/go.mod h1:/rARO8psX+4sfjUQXp5LLifjUt8DuATZ31WptNJTyQA=
87+
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.19 h1:JnQeStZvPHFHeyky/7LbMlyQjUa+jIBj36OlWm0pzIk=
88+
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.19/go.mod h1:HGyasyHvYdFQeJhvDHfH7HXkHh57htcJGKDZ+7z+I24=
89+
github.com/aws/aws-sdk-go-v2/service/lambda v1.88.2 h1:j+IFEtr7aykD6jJRE86kv/+TgN1UK90LudBuz2bjjYw=
90+
github.com/aws/aws-sdk-go-v2/service/lambda v1.88.2/go.mod h1:IDvS3hFp41ZJTByY7BO8PNgQkPNeQDjJfU/0cHJ2V4o=
91+
github.com/aws/aws-sdk-go-v2/service/s3 v1.96.3 h1:+d0SsTvxtIJt4tSJ6wr+jrxEMDa6XeupjRv8H7Qitkk=
92+
github.com/aws/aws-sdk-go-v2/service/s3 v1.96.3/go.mod h1:ROUNFvFWPwBlOu687WJNQ9cPvd2ccpFrnCiA1YGz50o=
93+
github.com/aws/aws-sdk-go-v2/service/signin v1.0.7 h1:Y2cAXlClHsXkkOvWZFXATr34b0hxxloeQu/pAZz2row=
94+
github.com/aws/aws-sdk-go-v2/service/signin v1.0.7/go.mod h1:idzZ7gmDeqeNrSPkdbtMp9qWMgcBwykA7P7Rzh5DXVU=
95+
github.com/aws/aws-sdk-go-v2/service/sso v1.30.12 h1:iSsvB9EtQ09YrsmIc44Heqlx5ByGErqhPK1ZQLppias=
96+
github.com/aws/aws-sdk-go-v2/service/sso v1.30.12/go.mod h1:fEWYKTRGoZNl8tZ77i61/ccwOMJdGxwOhWCkp6TXAr0=
97+
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.16 h1:EnUdUqRP1CNzt2DkV67tJx6XDN4xlfBFm+bzeNOQVb0=
98+
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.16/go.mod h1:Jic/xv0Rq/pFNCh3WwpH4BEqdbSAl+IyHro8LbibHD8=
99+
github.com/aws/aws-sdk-go-v2/service/sts v1.41.8 h1:XQTQTF75vnug2TXS8m7CVJfC2nniYPZnO1D4Np761Oo=
100+
github.com/aws/aws-sdk-go-v2/service/sts v1.41.8/go.mod h1:Xgx+PR1NUOjNmQY+tRMnouRp83JRM8pRMw/vCaVhPkI=
101+
github.com/aws/smithy-go v1.24.2 h1:FzA3bu/nt/vDvmnkg+R8Xl46gmzEDam6mZ1hzmwXFng=
102+
github.com/aws/smithy-go v1.24.2/go.mod h1:YE2RhdIuDbA5E5bTdciG9KrW3+TiEONeUWCqxX9i1Fc=
64103
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
65104
github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
66105
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=

pkg/erbackend/lambdabackend/lambdabackend.go

Lines changed: 12 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package lambdabackend
33

44
import (
55
"bytes"
6+
"context"
67
"encoding/base64"
78
"encoding/json"
89
"fmt"
@@ -14,27 +15,21 @@ import (
1415
"time"
1516

1617
"github.com/aws/aws-lambda-go/events"
17-
"github.com/aws/aws-sdk-go/aws"
18-
"github.com/aws/aws-sdk-go/aws/session"
19-
"github.com/aws/aws-sdk-go/service/lambda"
18+
"github.com/aws/aws-sdk-go-v2/aws"
19+
"github.com/aws/aws-sdk-go-v2/config"
20+
"github.com/aws/aws-sdk-go-v2/service/lambda"
2021
"github.com/function61/edgerouter/pkg/erconfig"
2122
"github.com/function61/edgerouter/pkg/turbocharger"
22-
"github.com/function61/gokit/aws/s3facade"
2323
)
2424

2525
type lambdaBackend struct {
2626
functionName string
27-
lambda *lambda.Lambda
27+
lambda *lambda.Client
2828
isPayloadV2 bool // https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-develop-integrations-lambda.html
2929
}
3030

31-
func New(opts erconfig.BackendOptsAwsLambda, logger *log.Logger) (http.Handler, error) {
32-
creds, err := s3facade.CredentialsFromEnv()
33-
if err != nil {
34-
return nil, err
35-
}
36-
37-
awsSession, err := session.NewSession()
31+
func New(ctx context.Context, opts erconfig.BackendOptsAwsLambda, logger *log.Logger) (http.Handler, error) {
32+
awsConfig, err := config.LoadDefaultConfig(ctx, config.WithRegion(opts.RegionID))
3833
if err != nil {
3934
return nil, err
4035
}
@@ -46,13 +41,11 @@ func New(opts erconfig.BackendOptsAwsLambda, logger *log.Logger) (http.Handler,
4641

4742
handler := &lambdaBackend{
4843
functionName: opts.FunctionName,
49-
lambda: lambda.New(
50-
awsSession,
51-
aws.NewConfig().WithCredentials(creds).WithRegion(opts.RegionID)),
52-
isPayloadV2: isPayloadV2,
44+
lambda: lambda.NewFromConfig(awsConfig),
45+
isPayloadV2: isPayloadV2,
5346
}
5447

55-
return turbocharger.WrapWithMiddlewareIfConfigAvailable(handler, logger)
48+
return turbocharger.WrapWithMiddlewareIfConfigAvailable(ctx, handler, logger)
5649
}
5750

5851
func (b *lambdaBackend) ServeHTTP(w http.ResponseWriter, r *http.Request) {
@@ -118,7 +111,7 @@ func (b *lambdaBackend) serveHTTPModel(w http.ResponseWriter, r *http.Request) {
118111
return
119112
}
120113

121-
lambdaResponse, err := b.lambda.InvokeWithContext(r.Context(), &lambda.InvokeInput{
114+
lambdaResponse, err := b.lambda.Invoke(r.Context(), &lambda.InvokeInput{
122115
FunctionName: aws.String(b.functionName),
123116
Payload: proxyRequestJSON,
124117
})
@@ -176,7 +169,7 @@ func (b *lambdaBackend) serveRESTModel(w http.ResponseWriter, r *http.Request) {
176169
return
177170
}
178171

179-
lambdaResponse, err := b.lambda.InvokeWithContext(r.Context(), &lambda.InvokeInput{
172+
lambdaResponse, err := b.lambda.Invoke(r.Context(), &lambda.InvokeInput{
180173
FunctionName: aws.String(b.functionName),
181174
Payload: proxyRequestJSON,
182175
})

pkg/erbackend/reverseproxybackend/reverseproxy.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
package reverseproxybackend
44

55
import (
6+
"context"
67
"crypto/tls"
78
"errors"
89
"fmt"
@@ -29,13 +30,13 @@ import (
2930
// 3) press F5 from browser. this'll inject 304 Not Modified into cache (browser expects 304 but CACHE NOT)
3031
// 4) now use cURL to request the same resource (= without caching), and you'll get 304 🤦
3132

32-
func New(appID string, opts erconfig.BackendOptsReverseProxy, logger *log.Logger) (http.Handler, error) {
33+
func New(ctx context.Context, appID string, opts erconfig.BackendOptsReverseProxy, logger *log.Logger) (http.Handler, error) {
3334
handler, err := NewWithModifyResponse(appID, opts, nil)
3435
if err != nil {
3536
return nil, err
3637
}
3738

38-
return turbocharger.WrapWithMiddlewareIfConfigAvailable(handler, logger)
39+
return turbocharger.WrapWithMiddlewareIfConfigAvailable(ctx, handler, logger)
3940
}
4041

4142
func NewWithModifyResponse(

pkg/erbackend/statics3websitebackend/deploy.go

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -8,24 +8,25 @@ import (
88
"encoding/json"
99
"fmt"
1010
"io"
11-
"log"
11+
"log/slog"
1212
"path"
1313
"path/filepath"
1414
"sync"
1515
"time"
1616

17-
"github.com/aws/aws-sdk-go/aws"
18-
"github.com/aws/aws-sdk-go/service/s3"
17+
"github.com/aws/aws-sdk-go-v2/aws"
18+
"github.com/aws/aws-sdk-go-v2/config"
19+
"github.com/aws/aws-sdk-go-v2/service/s3"
1920
"github.com/function61/edgerouter/pkg/erconfig"
2021
"github.com/function61/edgerouter/pkg/erdiscovery"
21-
"github.com/function61/gokit/aws/s3facade"
2222
"github.com/function61/gokit/mime"
2323
)
2424

2525
type uploadJob struct {
2626
applicationID string
2727
deploymentSpec deploymentSpec
28-
bucket *s3facade.BucketContext
28+
bucketName string
29+
s3Client *s3.Client
2930
}
3031

3132
// atomically deploys a new version of a site to a S3 bucket, then updates service
@@ -47,10 +48,7 @@ func Deploy(ctx context.Context, tarArchive io.Reader, applicationID string, dep
4748

4849
s3StaticWebsiteOpts := app.Backend.S3StaticWebsiteOpts
4950

50-
bucket, err := s3facade.Bucket(
51-
s3StaticWebsiteOpts.BucketName,
52-
s3facade.CredentialsFromEnv,
53-
s3StaticWebsiteOpts.RegionID)
51+
awsConfig, err := config.LoadDefaultConfig(ctx, config.WithRegion(s3StaticWebsiteOpts.RegionID))
5452
if err != nil {
5553
return err
5654
}
@@ -61,7 +59,8 @@ func Deploy(ctx context.Context, tarArchive io.Reader, applicationID string, dep
6159
Version: deployVersion,
6260
DeployedAt: time.Now(),
6361
},
64-
bucket: bucket,
62+
bucketName: s3StaticWebsiteOpts.BucketName,
63+
s3Client: s3.NewFromConfig(awsConfig),
6564
}
6665

6766
if err := uploadAllFiles(ctx, tarArchive, upload); err != nil {
@@ -95,7 +94,7 @@ func uploadAllFiles(ctx context.Context, tarArchive io.Reader, upload *uploadJob
9594
wg.Add(workerCount)
9695

9796
for i := 0; i < workerCount; i++ {
98-
go uploadWorker(ctx, upload.bucket.S3, workItems, workError, wg)
97+
go uploadWorker(ctx, upload.s3Client, workItems, workError, wg)
9998
}
10099

101100
// cancel and wait for workers exit in all exit paths
@@ -143,7 +142,7 @@ func uploadAllFiles(ctx context.Context, tarArchive io.Reader, upload *uploadJob
143142
}
144143

145144
workItems <- &s3.PutObjectInput{
146-
Bucket: upload.bucket.Name,
145+
Bucket: aws.String(upload.bucketName),
147146
Key: aws.String(bucketPrefix(upload.applicationID, upload.deploymentSpec.Version) + ".deployment.json"),
148147
ContentType: aws.String("application/json"),
149148
Body: bytes.NewReader(deploymentSpecJSON),
@@ -177,24 +176,24 @@ func createUploadRequest(filePath string, content io.Reader, upload *uploadJob)
177176
fullPath := path.Clean(pathPrefix + filePath)
178177

179178
return &s3.PutObjectInput{
180-
Bucket: upload.bucket.Name,
179+
Bucket: aws.String(upload.bucketName),
181180
Key: aws.String(fullPath),
182181
ContentType: aws.String(mime.TypeByExtension(ext, mime.OctetStream)),
183182
CacheControl: aws.String("max-age=31536000"), // 1 year (= "infinite caching"), because this versioned URL will never change
184183
Body: bytes.NewReader(wholeFileInMemory),
185184
}, nil
186185
}
187186

188-
func uploadWorker(ctx context.Context, s3Client *s3.S3, objects <-chan *s3.PutObjectInput, workError chan<- error, wg *sync.WaitGroup) {
187+
func uploadWorker(ctx context.Context, s3Client *s3.Client, objects <-chan *s3.PutObjectInput, workError chan<- error, wg *sync.WaitGroup) {
189188
defer wg.Done()
190189

191190
uploadOneObject := func(object *s3.PutObjectInput) error {
192191
ctx, cancel := context.WithTimeout(ctx, 120*time.Second)
193192
defer cancel()
194193

195-
log.Printf("uploading %s", *object.Key)
194+
slog.Info("uploading", "key", *object.Key)
196195

197-
_, err := s3Client.PutObjectWithContext(ctx, object)
196+
_, err := s3Client.PutObject(ctx, object)
198197
return err
199198
}
200199

pkg/erbackend/turbochargerbackend/backend.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
package turbochargerbackend
44

55
import (
6+
"context"
67
"log"
78
"net/http"
89
"strings"
@@ -13,8 +14,8 @@ import (
1314

1415
// doesn't do much more than binds a static manifest ID to the backend. in case the manifest changes
1516
// (a different version of a website gets deployed), that's an Edgerouter-level concern and it will make a new backend instance.
16-
func New(manifestID turbocharger.ObjectID, logger *log.Logger) (http.Handler, error) {
17-
manifestHandler, err := turbocharger.GetManifestHandlerSingleton()
17+
func New(ctx context.Context, manifestID turbocharger.ObjectID, logger *log.Logger) (http.Handler, error) {
18+
manifestHandler, err := turbocharger.GetManifestHandlerSingleton(ctx)
1819
if err != nil {
1920
return nil, err
2021
}

0 commit comments

Comments
 (0)