尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
ZenML 接入 Amazon ECR:AWS 容器注册中心(Container Registry)完整配置指南
ZenML 接入 Amazon ECRAWS 容器注册中心Container Registry完整配置指南【免费下载链接】zenmlZenML : One AI Platform from Pipelines to Agents. https://zenml.io.项目地址: https://gitcode.com/GitHub_Trending/ze/zenml本篇技术指南以 ZenML 开源仓库中 Amazon Elastic Container Registry (ECR) 组件文档 为主体讲解如何将 AWS ECR 作为 ZenML Stack 中的容器注册中心组件接入、注册与认证并深度结合仓库源码src/zenml/integrations/aws/下的 flavor、实现类与 Service Connector揭示其底层工作原理。读完本篇你将掌握ECR 仓库的创建与 URI 拼接规则、zenml container-registry命令行注册与挂载流程、本地 Docker 认证与 AWS Service Connector 两种认证方式以及 ZenML 在推送镜像前对 ECR 仓库的预检逻辑。适用场景何时需要使用 AWS Container Registry在 ZenML 中容器注册中心Container Registry是多数远程 MLOps Stack 的必备组件用于存放 ZenML 为运行流水线而构建的 Docker 镜像。当满足以下任一条件时应当使用 AWS 容器注册中心flavor 名为aws来自 ZenML 的awsintegration后端即 Amazon ECRStack 中有一个或多个组件需要拉取或推送容器镜像。在 ZenML 中绝大多数远程 orchestrators、step operators 以及部分 model deployer 都会把流水线代码容器化因此需要容器注册中心来存储构建产物详见 容器注册中心总览你拥有 AWS 账号并可以访问 ECR 服务。如果你并非使用 AWS可以参考其他 container registry flavors如gcp、azure、dockerhub、github等。提示ZenML 的awsintegration 同时注册了多个 stack 组件 flavor包括AWSContainerRegistryFlavor、AWSDeployerFlavor、AWSImageBuilderFlavor、SagemakerStepOperatorFlavor与SagemakerOrchestratorFlavor见 src/zenml/integrations/aws/init.py。如果你同时使用 SageMaker orchestrator / step operator同一个awsintegration 即可覆盖全部组件。部署 ECR创建仓库RepositoryECR 注册中心本身在你创建 AWS 账号后即自动激活无需额外开通。但在向 ECR 推送镜像前必须先在目标区域内创建Repository。操作步骤如下打开 ECR 控制台确认右上角已选中正确的区域Region点击Create repository创建仓库创建一个private私有仓库。仓库的名称取决于你 Stack 中使用的 orchestrator 或 step operator 会构建的镜像名。关于仓库命名ZenML 源码给出了明确的指引AWSContainerRegistry.post_registration_message见 aws_container_registry.py会在注册组件后打印提示——Amazon ECR 要求你先创建仓库才能推送镜像使用远程 orchestrator 运行流水线时ZenML 会自动构建并推送名为REGISTRY_URI/zenml:PIPELINE_NAME的 Docker 镜像因此至少需要在 ECR 中创建一个名为zenml的仓库否则首次推送会失败。如果你希望跳过手工搭建直接部署一整套包含 ECR 的 ZenML 云端 Stack可以使用浏览器内的 stack 部署向导、stack 注册向导或 ZenML 官方 AWS Terraform 模块来完成部署与注册。URI 格式拼接你的 ECR 注册中心地址AWS Container Registry 的 URI 必须遵循以下格式ACCOUNT_ID.dkr.ecr.REGION.amazonaws.com # 示例 123456789.dkr.ecr.eu-west-2.amazonaws.com 987654321.dkr.ecr.ap-south-1.amazonaws.com 135792468.dkr.ecr.af-south-1.amazonaws.com获取你的注册中心 URI 的方法打开 AWS 控制台点击右上角用户账户即可看到Account ID账号 ID在 AWS 区域端点列表中选择你希望存放容器镜像的区域。建议选择地理上更近的区域以获得更快的访问速度将上述两个值填入模板ACCOUNT_ID.dkr.ecr.REGION.amazonaws.com即得到注册中心 URI。从源码层面看URI 是决定注册中心行为的关键配置AWSContainerRegistryConfig中的validate_aws_uri校验器见 aws_container_registry_flavor.py规定 URI不能包含/字符例如715803424592.dkr.ecr.us-east-1.amazonaws.com是合法的基类BaseContainerRegistryConfig见 base_container_registry.py还会自动去除 URI 末尾的斜杠并提供可选的default_repository字段用于指定镜像存储的默认命名空间AWSContainerRegistry._get_region见 aws_container_registry.py通过正则.*\.dkr\.ecr\.(.*)\.amazonaws\.com从 URI 中解析出 Region用于后续构造 ECR 客户端。若 URI 不符合该格式会抛出RuntimeError。注册并使用 AWS Container Registry前置条件使用 AWS Container Registry 需要准备已安装 ZenML 的awsintegrationzenml integration install awsAWSIntegration.REQUIREMENTS见 src/zenml/integrations/aws/init.py会安装sagemaker2.237.3,3.0.0、kubernetes、aws-profile-manager、pytz2021.1等依赖Docker 已安装并运行注册中心 URI参照上文 URI 格式 小节获取。注册组件并挂载到 Stack执行以下命令注册 AWS Container Registry并将其加入当前激活的 Stackzenml container-registry register NAME \ --flavoraws \ --uriREGISTRY_URI # 将容器注册中心添加到激活的 Stack zenml stack update -c NAME其中NAME是你为这个注册中心组件起的名字REGISTRY_URI形如715803424592.dkr.ecr.us-east-1.amazonaws.com。注册之后还需要配置认证方式才能登录 ECR。如果你想查看 ZenML 当前可用的所有容器注册中心 flavor可以执行zenml container-registry flavor list从实现角度看AWSContainerRegistryFlavor见 aws_container_registry_flavor.py的name为aws并声明了 Service Connector 需求connector_typeaws、resource_typeDOCKER_REGISTRY_RESOURCE_TYPE即docker-registry、resource_id_attruri。这意味着该 flavor 会以 URI 作为资源标识与 AWS Service Connector 做自动匹配。推送前的仓库预检源码行为AWSContainerRegistry.prepare_image_push见 aws_container_registry.py实现了镜像推送前的预检逻辑从镜像名中提取仓库名正则匹配uri/repo:tag形式镜像名不合法时抛出ValueError通过 ECR 客户端调用describe_repositories()拉取已有仓库列表若本地 AWS 凭据不可用导致调用失败会打印警告并继续尝试推送若目标仓库不存在则列出当前检测到的仓库并警告提示你可能需要先创建名为repo的仓库然后仍继续尝试推送。因此如果你在推送阶段收到 repository not found 类错误第一反应应当是回到 ECR 控制台确认目标仓库已创建。认证方式Authentication Methods不采用任何形式的认证ZenML 流水线就无法真正使用 AWS Container Registry。快速本地起步可使用Local Authentication而官方推荐的方式是通过AWS Service Connector认证尤其是当你配置的 ZenML Stack 同时组合了其他运行在 AWS 上的远程组件时Service Connector 可以复用同一套凭据。方式一本地认证Local Authentication该方式使用ZenML 代码运行所在环境中的 Docker 客户端认证。在本地机器上这是配置 AWS Container Registry 最快的方式注册时无需显式提供凭据直接复用 AWS CLI 与 Docker 客户端存储在本地机器上的凭据与配置。前置要求按 AWS CLI 官方文档 安装并配置好 AWS CLI。随后执行登录命令让 Docker 具备拉取与推送镜像的权限# 将 REGISTRY_URI 和 REGION 填入下面的占位符。 # REGION 可以从 REGISTRY_URI 中提取ACCOUNT_ID.dkr.ecr.REGION.amazonaws.com aws ecr get-login-password --region REGION | docker login --username AWS --password-stdin REGISTRY_URI⚠️ 警告使用本地认证的 AWS Container Registry 所构成的 Stack不具备跨环境可移植性。若要实现 ZenML 流水线的完全可移植推荐使用 AWS Service Connector 将你的 AWS Container Registry 与远程 ECR 注册中心关联起来。方式二AWS Service Connector推荐AWS Service Connector 为 ECR 访问带来了自动配置auto-configuration、本地登录local login、更优的长期凭据安全实践、细粒度访问控制以及跨多个 Stack 组件复用同一凭据等能力。第 1 步注册 AWS Service Connector如果你尚未在 ZenML 部署中配置任何 AWS Service Connector可以运行交互式 CLI 命令进行注册并选择配置为仅访问 ECR 注册中心或同时访问多种 AWS 资源zenml service-connector register --type aws -i利用本地机器上已有的 AWS CLI 配置 自动配置一个面向 ECR 注册中心的 AWS Service Connector 的非交互式示例zenml service-connector register CONNECTOR_NAME --type aws --resource-type docker-registry --auto-configure示例命令输出$ zenml service-connector register aws-us-east-1 --type aws --resource-type docker-registry --auto-configure ⠸ Registering service connector aws-us-east-1... Successfully registered service connector aws-us-east-1 with access to the following resources: ┏━━━━━━━━━━━━━━━━━━━━┯━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ RESOURCE TYPE │ RESOURCE NAMES ┃ ┠────────────────────┼──────────────────────────────────────────────┨ ┃ docker-registry │ 715803424590.dkr.ecr.us-east-1.amazonaws.com ┃ ┗━━━━━━━━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛注意请务必为 AWS 凭据对应的实体授予对目标 ECR 仓库的读写权限以及列举可访问 ECR 仓库的权限。AWS Service Connector 支持多种安全性与便捷性不同的认证方法请选择最适合你场景的一种。第 2 步查看可用的 Service Connector 资源若已配置一个或多个 AWS Service Connector可以查看其中哪些可用于访问你目标 ECR 注册中心zenml service-connector list-resources --connector-type aws --resource-type docker-registry示例命令输出The following docker-registry resources can be accessed by service connectors that you have configured: ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┯━━━━━━━━━━━━━━━━━━━━━━━━━┯━━━━━━━━━━━━━━━━┯━━━━━━━━━━━━━━━━━━━━┯━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ CONNECTOR ID │ CONNECTOR NAME │ CONNECTOR TYPE │ RESOURCE TYPE │ RESOURCE NAMES ┃ ┠──────────────────────────────────────┼─────────────────────────┼────────────────┼────────────────────┼──────────────────────────────────────────────┨ ┃ 37c97fa0-fa47-4d55-9970-e2aa6e1b50cf │ aws-secret-key │ aws │ docker-registry │ 715803424590.dkr.ecr.us-east-1.amazonaws.com ┃ ┠──────────────────────────────────────┼─────────────────────────┼────────────────┼────────────────────┼──────────────────────────────────────────────┨ ┃ d400e0c6-a8e7-4b95-ab34-0359229c5d36 │ aws-us-east-1 │ aws │ docker-registry │ 715803424590.dkr.ecr.us-east-1.amazonaws.com ┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛第 3 步注册 AWS Container Registry 并连接 Service Connector确定好用于连接目标 ECR 注册中心的 AWS Service Connector 后注册 AWS Container Registry 并通过 Service Connector 建立关联# 注册 AWS container registry 并指定目标 ECR 注册中心 URI zenml container-registry register CONTAINER_REGISTRY_NAME -f aws \ --uriREGISTRY_URL # 通过 AWS Service Connector 将 AWS container registry 连接到目标 ECR 注册中心 zenml container-registry connect CONTAINER_REGISTRY_NAME -i非交互式连接方式按 connector ID 指定zenml container-registry connect CONTAINER_REGISTRY_NAME --connector CONNECTOR_ID示例命令输出$ zenml container-registry connect aws-us-east-1 --connector aws-us-east-1 Successfully connected container registry aws-us-east-1 to the following resources: ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┯━━━━━━━━━━━━━━━━┯━━━━━━━━━━━━━━━━┯━━━━━━━━━━━━━━━━━━━━┯━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ CONNECTOR ID │ CONNECTOR NAME │ CONNECTOR TYPE │ RESOURCE TYPE │ RESOURCE NAMES ┃ ┠──────────────────────────────────────┼────────────────┼────────────────┼────────────────────┼──────────────────────────────────────────────┨ ┃ d400e0c6-a8e7-4b95-ab34-0359229c5d36 │ aws-us-east-1 │ aws │ docker-registry │ 715803424590.dkr.ecr.us-east-1.amazonaws.com ┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛第 4 步将 AWS Container Registry 加入 ZenML Stack# 注册并设置包含新容器注册中心的 Stack zenml stack register STACK_NAME -c CONTAINER_REGISTRY_NAME ... --set提示将 AWS Container Registry 与 Service Connector 关联后你的本地 Docker 客户端将不再自动认证到远程注册中心。如果仍需要通过 Docker CLI 手动操作远程注册中心可以使用 Service Connector 的 local login 功能临时为本地 Docker 客户端完成认证zenml service-connector login CONNECTOR_NAME --resource-type docker-registry示例命令输出$ zenml service-connector login aws-us-east-1 --resource-type docker-registry ⠼ Attempting to configure local client using service connector aws-us-east-1... WARNING! Your password will be stored unencrypted in /home/stefan/.docker/config.json. Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-store The aws-us-east-1 Docker Service Connector was used to successfully configure the local Docker/OCI container registry client/SDK.底层原理ECS 客户端与凭据解析理解 Service Connector 如何驱动 ECR有助于排查认证类问题。AWSContainerRegistry._get_ecr_client见 aws_container_registry.py的客户端构造逻辑为若该注册中心配置了 connector则通过Client().get_service_connector(...)获取 connector 模型实例化AWSServiceConnector并调用其get_ecr_client()返回经 Service Connector 认证的 ECR 客户端否则回退到boto3.Session().client(ecr, region_name...)即直接使用本地 AWS 凭据对应文档中的 Local Authentication 方式。AWSServiceConnector.get_ecr_client的实现位于 aws_service_connector.py它按DOCKER_REGISTRY_RESOURCE_TYPE资源类型装配客户端与 flavor 声明的 Service Connector 需求一一对应。这意味着只要zenml container-registry connect成功流水线构建镜像时就会自动使用 connector 提供的短期凭据无需在 Docker 中手工 login。小结与延伸至此你已完成 ZenML 接入 Amazon ECR 的完整闭环创建 ECR 私有仓库 → 拼接注册中心 URI → 安装awsintegration 并注册awsflavor 的 Container Registry → 通过本地认证或推荐的AWS Service Connector 完成认证 → 将组件挂载进 ZenML Stack 并交付给 orchestrator / step operator 使用。关键要点回顾环节关键信息安装zenml integration install aws注册组件zenml container-registry register NAME --flavoraws --uriREGISTRY_URI挂载 Stackzenml stack update -c NAME或zenml stack register STACK_NAME -c NAME ... --set本地认证aws ecr get-login-password --region REGION \| docker login --username AWS --password-stdin REGISTRY_URI推荐认证zenml service-connector register NAME --type aws --resource-type docker-registry --auto-configurezenml container-registry connect NAME --connector CONNECTOR_ID本地客户端登录zenml service-connector login CONNECTOR_NAME --resource-type docker-registry仓库命名远程 orchestrator 场景需提前创建名为zenml的 ECR 仓库进一步阅读本文所依托的原始组件文档为 docs/book/component-guide/container-registries/aws.md完整 flavor 列表可参考 容器注册中心总览AWS integration 的其余组件SageMaker orchestrator、SageMaker step operator、AWS image builder、AWS deployer实现位于 src/zenml/integrations/aws/ 目录下可供继续深入。【免费下载链接】zenmlZenML : One AI Platform from Pipelines to Agents. https://zenml.io.项目地址: https://gitcode.com/GitHub_Trending/ze/zenml创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

radix-vue(Reka UI)YearRangePickerRoot 组件完全指南:年份区间选择器的 Props、事件与插槽深度解析

radix-vue(Reka UI)YearRangePickerRoot 组件完全指南:年份区间选择器的 Props、事件与插槽深度解析

radix-vue(Reka UI)YearRangePickerRoot 组件完全指南:年份区间选择器的 Props、事件与插槽深度解析 【免费下载链接】radix-vue An open-source UI component library for building high-quality, accessible design systems and web apps f…

📅 2026/9/17 19:33:32
Flower 与 scikit-learn 联邦学习快速入门:在 Iris 数据集上训练 Logistic Regression

Flower 与 scikit-learn 联邦学习快速入门:在 Iris 数据集上训练 Logistic Regression

Flower 与 scikit-learn 联邦学习快速入门:在 Iris 数据集上训练 Logistic Regression 【免费下载链接】flower Flower: A Friendly Federated AI Framework 项目地址: https://gitcode.com/GitHub_Trending/flo/flower 本教程基于 Flower 官方 Quickstart 文…

📅 2026/9/17 19:33:32
Sanity Studio 仓库实战:Playwright 测试注解与组织(skip / fixme / fail / slow / step / 自定义注解)完整指南

Sanity Studio 仓库实战:Playwright 测试注解与组织(skip / fixme / fail / slow / step / 自定义注解)完整指南

Sanity Studio 仓库实战:Playwright 测试注解与组织(skip / fixme / fail / slow / step / 自定义注解)完整指南 【免费下载链接】sanity Sanity Studio – Rapidly configure content workspaces powered by structured content 项目地址:…

📅 2026/9/17 19:33:32
MORE NEWS

更多资讯

📰

信号与系统实验:采样率、FFT与可复现仿真

简介:北京理工大学信号与系统实验报告完整记录了基于MATLAB的信号时域描述与运算实验,是信息工程类本科生学习信号与系统课程的实用参考。资源面向初学者,系统梳理连续时间信号与离散时间信号的向量表示法、符号对象表示法,并逐一…

📰

智慧管网大数据平台综合解决方案:从感知接入到数据治理

简介:智慧城市智慧管网智慧管线大数据云平台建设综合解决方案,面向智慧城市、城建档案管理、市政规划及管线权属单位的管理和技术人员,旨在破解地下管线底数不清、权属单位信息孤岛、道路反复开挖、应急处置低效等痛点。整套方案共1个pptx文件…

📰

没有最好的进销存,只有最合适的:4款主流进销存软件全景对比与选型指南

做电商的老板,迟早要面对一个问题:进销存软件到底选哪个? 很多老板一开始觉得店小,用个Excel表格就能管好货和账。可一旦日订单量突破100单,或者SKU超过50个,就会发现Excel表要么频繁出错,要么根…

📰

鸿蒙生态下的前端开发:构建跨设备一致体验的高性能应用

第一章:鸿蒙生态崛起与前端开发新机遇 随着万物互联时代的加速到来,操作系统需要突破单一设备的局限,提供无缝流转的体验。HarmonyOS(鸿蒙操作系统)应运而生,其分布式能力、流畅性能和安全特性,为开发者开辟了全新的疆域。作为鸿蒙应用的前端开发者,我们站在技术变革的…

📰

鸿蒙开发工程师深度解析:技能要求、面试准备与项目实战

引言:鸿蒙生态崛起与开发人才需求 近年来,随着万物互联时代的加速到来,华为推出的HarmonyOS(鸿蒙操作系统)凭借其分布式架构、全场景协同等独特优势,迅速在智能终端领域占据重要地位。鸿蒙不再局限于手机,而是面向包括智慧屏、平板、手表、车机、PC乃至各种IoT设备的全…

📰

智慧军校解决方案:从PPT到可部署的技术契约

简介:本资源是一份面向军事院校信息化建设管理者、教育技术骨干及智慧校园规划人员的综合性解决方案PPT,聚焦人工智能、大数据与智慧城市技术在军校场景的深度落地。全文共101页,系统阐述智慧军校九大核心体系:从基础环境&#xf…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬