created aws session differently

pull/438/head
Davide Berdin 2019-09-03 13:51:28 +02:00
parent ed551df33a
commit 43b8eb8f52
2 changed files with 18 additions and 15 deletions

View File

@ -45,9 +45,11 @@ type CredentialsHelper struct {
// New creates a new instance of aws credentials helper
func New() *CredentialsHelper {
ch := &CredentialsHelper{}
ch.enabled = true
ch.cache = NewCache(AWSCredentialsExpiry)
ch := &CredentialsHelper{
enabled: true,
cache: NewCache(AWSCredentialsExpiry),
}
return ch
}
@ -70,14 +72,14 @@ func (h *CredentialsHelper) GetCredentials(image *types.TrackedImage) (*types.Cr
return nil, err
}
// set region
sess := newAwsSession(region)
svc := ecr.New(sess)
cached, err := h.cache.Get(registry)
if err == nil {
return cached, nil
}
// fetch region from registry instead of env
svc := ecr.New(session.New(), &aws.Config{
Region: aws.String(region),
})
input := &ecr.GetAuthorizationTokenInput{}
@ -135,6 +137,14 @@ func (h *CredentialsHelper) GetCredentials(image *types.TrackedImage) (*types.Cr
return nil, fmt.Errorf("not found")
}
func newAwsSession(region string) *session.Session {
sess := session.Must(session.NewSession(&aws.Config{
Region: aws.String(region),
}))
return sess
}
func decodeBase64Secret(authSecret string) (username, password string, err error) {
decoded, err := base64.StdEncoding.DecodeString(authSecret)
if err != nil {

View File

@ -1,7 +1,6 @@
package aws
import (
"os"
"testing"
"github.com/keel-hq/keel/registry"
@ -11,10 +10,6 @@ import (
func TestAWS(t *testing.T) {
if os.Getenv("AWS_ACCESS_KEY_ID") == "" {
t.Skip()
}
ch := New()
// image
@ -48,10 +43,8 @@ func TestAWS(t *testing.T) {
func TestCredentialsCaching(t *testing.T) {
if os.Getenv("AWS_ACCESS_KEY_ID") == "" {
t.Skip()
}
ch := New()
imgRef, _ := image.Parse("528670773427.dkr.ecr.us-east-2.amazonaws.com/webhook-demo:master")
for i := 0; i < 200; i++ {
_, err := ch.GetCredentials(&types.TrackedImage{