Skip to content

Commit faca0c1

Browse files
Merge pull request #48 from stackql/feature/upgrade-to-aws-sdk-go-v2
aws-sdk-v2
2 parents d464cc0 + 90226f5 commit faca0c1

File tree

4 files changed

+39
-26
lines changed

4 files changed

+39
-26
lines changed

anysdk/loader.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -885,8 +885,8 @@ func resolveSQLVerbFromResource(rsc Resource, component *OpenAPIOperationStoreRe
885885
}
886886
rv := resolved
887887
rv.setSQLVerb(sqlVerb)
888-
jsonpointer.SetForToken(rsc, component.Ref, *rv)
889-
return rv, nil
888+
_, err = jsonpointer.SetForToken(rsc, component.Ref, *rv)
889+
return rv, err
890890
}
891891

892892
func (l *standardLoader) latePassResolveInverse(svc Service, component *OpenAPIOperationStoreRef) error {

go.mod

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ require (
99
github.com/PaesslerAG/gval v1.0.0
1010
github.com/PaesslerAG/jsonpath v0.1.1
1111
github.com/antchfx/xmlquery v1.3.10
12-
github.com/aws/aws-sdk-go v1.55.6
12+
github.com/aws/aws-sdk-go-v2 v1.26.1
13+
github.com/aws/aws-sdk-go-v2/credentials v1.17.11
1314
github.com/clbanning/mxj/v2 v2.7.0
1415
github.com/getkin/kin-openapi v0.88.0
1516
github.com/ghodss/yaml v1.0.0
@@ -45,10 +46,8 @@ require (
4546
github.com/JohnCGriffin/overflow v0.0.0-20211019200055-46fa312c352c // indirect
4647
github.com/antchfx/xpath v1.2.0 // indirect
4748
github.com/apache/arrow-go/v18 v18.0.0 // indirect
48-
github.com/aws/aws-sdk-go-v2 v1.26.1 // indirect
4949
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.2 // indirect
5050
github.com/aws/aws-sdk-go-v2/config v1.27.11 // indirect
51-
github.com/aws/aws-sdk-go-v2/credentials v1.17.11 // indirect
5251
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.1 // indirect
5352
github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.16.15 // indirect
5453
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.5 // indirect

go.sum

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,6 @@ github.com/apache/arrow-go/v18 v18.0.0 h1:1dBDaSbH3LtulTyOVYaBCHO3yVRwjV+TZaqn3g
8888
github.com/apache/arrow-go/v18 v18.0.0/go.mod h1:t6+cWRSmKgdQ6HsxisQjok+jBpKGhRDiqcf3p0p/F+A=
8989
github.com/apache/thrift v0.21.0 h1:tdPmh/ptjE1IJnhbhrcl2++TauVjy242rkV/UzJChnE=
9090
github.com/apache/thrift v0.21.0/go.mod h1:W1H8aR/QRtYNvrPeFXBtobyRkd0/YVhTc6i07XIAgDw=
91-
github.com/aws/aws-sdk-go v1.55.6 h1:cSg4pvZ3m8dgYcgqB97MrcdjUmZ1BeMYKUxMMB89IPk=
92-
github.com/aws/aws-sdk-go v1.55.6/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU=
9391
github.com/aws/aws-sdk-go-v2 v1.26.1 h1:5554eUqIYVWpU0YmeeYZ0wU64H2VLBs8TlhRB2L+EkA=
9492
github.com/aws/aws-sdk-go-v2 v1.26.1/go.mod h1:ffIFB97e2yNsv4aTSGkqtHnppsIJzw7G7BReUZ3jCXM=
9593
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.2 h1:x6xsQXGSmW6frevwDA+vi/wqhp1ct18mVXYN08/93to=

pkg/awssign/aws_sign.go

Lines changed: 35 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,52 +2,57 @@ package awssign
22

33
import (
44
"bytes"
5+
"context"
6+
"crypto/sha256"
7+
"encoding/base64"
58
"fmt"
69
"io"
710
"net/http"
811
"os"
912
"time"
1013

11-
"github.com/aws/aws-sdk-go/aws/credentials"
12-
v4 "github.com/aws/aws-sdk-go/aws/signer/v4"
13-
"github.com/stackql/any-sdk/pkg/logging"
14+
v4 "github.com/aws/aws-sdk-go-v2/aws/signer/v4"
15+
"github.com/aws/aws-sdk-go-v2/credentials"
1416
)
1517

1618
var (
17-
_ Transport = &standardAwsSignTransport{}
19+
_ Transport = &standardAwsSignTransport{}
20+
emptyPayloadHash string = "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
1821
)
1922

2023
type Transport interface {
2124
RoundTrip(req *http.Request) (*http.Response, error)
2225
}
2326

2427
type standardAwsSignTransport struct {
25-
underlyingTransport http.RoundTripper
26-
signer *v4.Signer
28+
underlyingTransport http.RoundTripper
29+
signer *v4.Signer
30+
staticCredentialsProvider credentials.StaticCredentialsProvider
2731
}
2832

2933
func NewAwsSignTransport(
3034
underlyingTransport http.RoundTripper,
3135
id, secret, token string,
32-
options ...func(*v4.Signer),
36+
options ...func(*v4.SignerOptions),
3337
) (Transport, error) {
34-
var creds *credentials.Credentials
38+
var creds credentials.StaticCredentialsProvider
3539

3640
if token == "" {
37-
creds = credentials.NewStaticCredentials(id, secret, token)
41+
creds = credentials.NewStaticCredentialsProvider(id, secret, token)
3842
} else {
3943
defaultAccessKeyID := os.Getenv("AWS_ACCESS_KEY_ID")
4044
defaultSecretAccessKey := os.Getenv("AWS_SECRET_ACCESS_KEY")
4145
if defaultAccessKeyID == "" || defaultSecretAccessKey == "" {
4246
return nil, fmt.Errorf("AWS_SESSION_TOKEN is set, but AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY must also be set")
4347
}
44-
creds = credentials.NewEnvCredentials()
48+
creds = credentials.NewStaticCredentialsProvider(defaultAccessKeyID, defaultSecretAccessKey, token)
4549
}
4650

47-
signer := v4.NewSigner(creds, options...)
51+
signer := v4.NewSigner(options...)
4852
return &standardAwsSignTransport{
49-
underlyingTransport: underlyingTransport,
50-
signer: signer,
53+
underlyingTransport: underlyingTransport,
54+
signer: signer,
55+
staticCredentialsProvider: creds,
5156
}, nil
5257
}
5358

@@ -68,23 +73,34 @@ func (t *standardAwsSignTransport) RoundTrip(req *http.Request) (*http.Response,
6873
if !ok {
6974
return nil, fmt.Errorf("unsupported type for AWS region: '%T'", rgn)
7075
}
71-
var rs io.ReadSeeker
76+
creds, credsErr := t.staticCredentialsProvider.Retrieve(context.TODO())
77+
if credsErr != nil {
78+
return nil, credsErr
79+
}
80+
81+
var payloadHash string
7282
if req.Body != nil {
7383
body, err := io.ReadAll(req.Body)
7484
if err != nil {
7585
return nil, err
7686
}
77-
rs = bytes.NewReader(body)
78-
req.Body = nil
87+
hashBytes := sha256.Sum256(body)
88+
// Base64 encode the hash
89+
payloadHash = base64.StdEncoding.EncodeToString(hashBytes[:])
90+
rs := io.NopCloser(bytes.NewReader(body))
91+
req.Body = rs
92+
} else {
93+
payloadHash = emptyPayloadHash
7994
}
80-
header, err := t.signer.Sign(
95+
err := t.signer.SignHTTP(
96+
context.TODO(),
97+
creds,
8198
req,
82-
rs,
99+
payloadHash,
83100
svcStr,
84101
rgnStr,
85102
time.Now(),
86103
)
87-
logging.GetLogger().Infof("header = %v\n", header)
88104
if err != nil {
89105
return nil, err
90106
}

0 commit comments

Comments
 (0)