in ecr-login/api/client.go [260:284]
func (c *defaultClient) getPublicAuthorizationToken() (*Auth, error) {
var input *ecrpublic.GetAuthorizationTokenInput
output, err := c.ecrPublicClient.GetAuthorizationToken(context.TODO(), input)
if err != nil {
return nil, errors.Wrap(err, "ecr: failed to get authorization token")
}
if output == nil || output.AuthorizationData == nil {
return nil, fmt.Errorf("ecr: missing AuthorizationData in ECR Public response")
}
authData := output.AuthorizationData
token, err := extractToken(aws.ToString(authData.AuthorizationToken), ecrPublicEndpoint)
if err != nil {
return nil, err
}
authEntry := cache.AuthEntry{
AuthorizationToken: aws.ToString(authData.AuthorizationToken),
RequestedAt: time.Now(),
ExpiresAt: aws.ToTime(authData.ExpiresAt),
ProxyEndpoint: ecrPublicEndpoint,
Service: cache.ServiceECRPublic,
}
c.credentialCache.Set(ecrPublicName, &authEntry)
return token, nil
}