diff --git a/cmd/ecr-credential-provider/main.go b/cmd/ecr-credential-provider/main.go index b26076a086..fc13aa8ff0 100644 --- a/cmd/ecr-credential-provider/main.go +++ b/cmd/ecr-credential-provider/main.go @@ -42,7 +42,7 @@ import ( const ecrPublicRegion string = "us-east-1" const ecrPublicHost string = "public.ecr.aws" -var ecrPrivateHostPattern = regexp.MustCompile(`^(\d{12})\.dkr\.ecr(\-fips)?\.([a-zA-Z0-9][a-zA-Z0-9-_]*)\.(amazonaws\.com(\.cn)?|sc2s\.sgov\.gov|c2s\.ic\.gov|cloud\.adc-e\.uk|csp\.hci\.ic\.gov)$`) +var ecrPrivateHostPattern = regexp.MustCompile(`^(\d{12})\.dkr[\.\-]ecr(\-fips)?\.([a-zA-Z0-9][a-zA-Z0-9-_]*)\.(amazonaws\.com(\.cn)?|on\.(aws|amazonwebservices\.com\.cn)|sc2s\.sgov\.gov|c2s\.ic\.gov|cloud\.adc-e\.uk|csp\.hci\.ic\.gov)$`) // ECR abstracts the calls we make to aws-sdk for testing purposes type ECR interface { diff --git a/cmd/ecr-credential-provider/main_test.go b/cmd/ecr-credential-provider/main_test.go index c2c1f6bd11..f3499b876b 100644 --- a/cmd/ecr-credential-provider/main_test.go +++ b/cmd/ecr-credential-provider/main_test.go @@ -395,6 +395,12 @@ func TestRegistryPatternMatch(t *testing.T) { {"123456789012.dkr.ecr.us-isof-east-1.csp.hci.ic.gov", true}, // invalid gov endpoint {"123456789012.dkr.ecr.us-iso-east-1.amazonaws.gov", false}, + //IPv6 dual stack endpoint + {"123456789012.dkr-ecr.lala-land-1..on.aws", true}, + //IPv6 dual stack endpoint fips + {"123456789012.dkr-ecr-fips.lala-land-1.on.aws", true}, + //IPv6 dual stack endpoint .cn + {"123456789012.dkr-ecr.lala-land-1.on.amazonwebservices.com.cn", true}, } for _, g := range grid { actual := ecrPrivateHostPattern.MatchString(g.Registry)