in lambda/utils.go [45:80]
func GetECRLogin(region string) ([]ECRAuth, error) {
cfg, err := config.LoadDefaultConfig(
context.TODO(),
config.WithRegion(region),
)
if err != nil {
return nil, fmt.Errorf("api client configuration error: %v", err.Error())
}
client := ecr.NewFromConfig(cfg)
input := &ecr.GetAuthorizationTokenInput{}
resp, err := client.GetAuthorizationToken(context.TODO(), input)
if err != nil {
return nil, fmt.Errorf("error login into ECR: %v", err.Error())
}
auths := make([]ECRAuth, len(resp.AuthorizationData))
for i, auth := range resp.AuthorizationData {
// extract base64 token
data, err := base64.StdEncoding.DecodeString(*auth.AuthorizationToken)
if err != nil {
return nil, err
}
// extract username and password
token := strings.SplitN(string(data), ":", 2)
// object to pass to template
auths[i] = ECRAuth{
Token: *auth.AuthorizationToken,
User: token[0],
Pass: token[1],
ProxyEndpoint: *(auth.ProxyEndpoint),
ExpiresAt: *(auth.ExpiresAt),
}
}
return auths, nil
}