diff --git a/extension/credentialshelper/aws/aws.go b/extension/credentialshelper/aws/aws.go index b04899ea..cc5f2e42 100644 --- a/extension/credentialshelper/aws/aws.go +++ b/extension/credentialshelper/aws/aws.go @@ -37,12 +37,22 @@ type CredentialsHelper struct { // New creates a new instance of aws credentials helper func New() *CredentialsHelper { ch := &CredentialsHelper{} - if os.Getenv("AWS_ACCESS_KEY_ID") != "" && os.Getenv("AWS_ACCESS_KEY") != "" && os.Getenv("AWS_REGION") != "" { + + region := os.Getenv("AWS_REGION") + svc := ecr.New(session.New(), &aws.Config{ + Region: aws.String(region), + }) + + _, err := svc.ListImages(&ecr.ListImagesInput{}) + if err == nil { ch.enabled = true log.Infof("extension.credentialshelper.aws: enabled") - ch.region = os.Getenv("AWS_REGION") + ch.region = region } + // if os.Getenv("AWS_ACCESS_KEY_ID") != "" && os.Getenv("AWS_SECRET_ACCESS_KEY") != "" && os.Getenv("AWS_REGION") != "" { + // } + return ch } @@ -52,7 +62,9 @@ func (h *CredentialsHelper) IsEnabled() bool { } // GetCredentials - finds credentials -func (h *CredentialsHelper) GetCredentials(registry string) (*types.Credentials, error) { +func (h *CredentialsHelper) GetCredentials(image *types.TrackedImage) (*types.Credentials, error) { + + registry := image.Image.Registry() if !strings.Contains(registry, "amazonaws.com") { return nil, credentialshelper.ErrUnsupportedRegistry diff --git a/extension/credentialshelper/aws/aws_test.go b/extension/credentialshelper/aws/aws_test.go index 0f4275bf..b6519a43 100644 --- a/extension/credentialshelper/aws/aws_test.go +++ b/extension/credentialshelper/aws/aws_test.go @@ -5,6 +5,7 @@ import ( "testing" "github.com/keel-hq/keel/registry" + "github.com/keel-hq/keel/types" "github.com/keel-hq/keel/util/image" ) @@ -19,7 +20,9 @@ func TestAWS(t *testing.T) { // image imgRef, _ := image.Parse("528670773427.dkr.ecr.us-east-2.amazonaws.com/webhook-demo:master") - creds, err := ch.GetCredentials(imgRef.Registry()) + creds, err := ch.GetCredentials(&types.TrackedImage{ + Image: imgRef, + }) if err != nil { t.Fatalf("cred helper got error: %s", err) }