Skip to content

Commit 668b909

Browse files
committed
fix: refresh credentials if expired
Signed-off-by: Patrick Rogers <[email protected]>
1 parent 70152fe commit 668b909

File tree

1 file changed

+19
-0
lines changed

1 file changed

+19
-0
lines changed

pkg/roundtripper/roundtripper.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ const (
3636

3737
type AWSSigningTransport struct {
3838
t http.RoundTripper
39+
cfg aws.Config
3940
creds aws.Credentials
4041
region string
4142
log log.Logger
@@ -57,12 +58,15 @@ func NewAWSSigningTransport(transport http.RoundTripper, region string, log log.
5758
return &AWSSigningTransport{
5859
t: transport,
5960
region: region,
61+
cfg: cfg,
6062
creds: creds,
6163
log: log,
6264
}, err
6365
}
6466

6567
func (a *AWSSigningTransport) RoundTrip(req *http.Request) (*http.Response, error) {
68+
a.refreshCredentialsIfNeeded()
69+
6670
signer := v4.NewSigner()
6771
payloadHash, newReader, err := hashPayload(req.Body)
6872
if err != nil {
@@ -78,6 +82,21 @@ func (a *AWSSigningTransport) RoundTrip(req *http.Request) (*http.Response, erro
7882
return a.t.RoundTrip(req)
7983
}
8084

85+
func (a *AWSSigningTransport) refreshCredentialsIfNeeded() error {
86+
if a.creds.Expired() {
87+
creds, err := a.cfg.Credentials.Retrieve(context.Background())
88+
89+
if err != nil {
90+
_ = level.Error(a.log).Log("msg", "fail to retrive aws credentials", "err", err)
91+
return err
92+
}
93+
94+
a.creds = creds
95+
}
96+
97+
return nil
98+
}
99+
81100
func hashPayload(r io.ReadCloser) (string, io.ReadCloser, error) {
82101
var newReader io.ReadCloser
83102
payload := []byte("")

0 commit comments

Comments
 (0)