diff --git a/src/ai/backend/common/docker.py b/src/ai/backend/common/docker.py index 284c80ee628..549f3d2ffb5 100644 --- a/src/ai/backend/common/docker.py +++ b/src/ai/backend/common/docker.py @@ -258,6 +258,8 @@ async def login( return {"auth": basic_auth, "headers": {}} elif ping_status == 404: raise RuntimeError(f"Unsupported docker registry: {registry_url}! (API v2 not implemented)") + # Should check also 400 status since the AWS ECR Public server returns a 400 response + # when given invalid credential authorization. elif ping_status in [400, 401]: params = { "scope": scope, diff --git a/src/ai/backend/manager/container_registry/__init__.py b/src/ai/backend/manager/container_registry/__init__.py index fe036e2b5eb..d3f0b3fd7a4 100644 --- a/src/ai/backend/manager/container_registry/__init__.py +++ b/src/ai/backend/manager/container_registry/__init__.py @@ -37,9 +37,9 @@ def get_container_registry_cls(registry_info: Mapping[str, Any]) -> Type[BaseCon cr_cls = GitLabRegistry elif registry_type == "ecr" or registry_type == "ecr-public": - from .aws_ecr import AWSElasticContainerRegistry_v2 + from .aws_ecr import AWSElasticContainerRegistry - cr_cls = AWSElasticContainerRegistry_v2 + cr_cls = AWSElasticContainerRegistry elif registry_type == "local": from .local import LocalRegistry diff --git a/src/ai/backend/manager/container_registry/aws_ecr.py b/src/ai/backend/manager/container_registry/aws_ecr.py index 5a4a1b9a3e9..98466f03a47 100644 --- a/src/ai/backend/manager/container_registry/aws_ecr.py +++ b/src/ai/backend/manager/container_registry/aws_ecr.py @@ -13,7 +13,7 @@ log = BraceStyleAdapter(logging.getLogger(__spec__.name)) # type: ignore[name-defined] -class AWSElasticContainerRegistry_v2(BaseContainerRegistry): +class AWSElasticContainerRegistry(BaseContainerRegistry): async def fetch_repositories( self, sess: aiohttp.ClientSession, @@ -41,6 +41,8 @@ async def fetch_repositories( response = client.describe_repositories(maxResults=30) for repo in response["repositories"]: + # repositoryUri format: + # public.ecr.aws// registry_alias = (repo["repositoryUri"].split("/"))[1] yield f"{registry_alias}/{repo["repositoryName"]}"