ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Terraform AWS Provider 数据源实战:用 aws_sagemaker_prebuilt_ecr_image 查询 SageMaker 预置 Docker 镜像

Terraform AWS Provider 数据源实战:用 aws_sagemaker_prebuilt_ecr_image 查询 SageMaker 预置 Docker 镜像 IaC云原生基础设施【免费下载链接】terraform-provider-awsThe AWS Provider enables Terraform to manage AWS resources.项目地址https://gitcode.com/GitHub_Trending/te/terraform-provider-aws点击查看免费下载aws_sagemaker_prebuilt_ecr_image是 Terraform AWS Provider 提供的数据源Data Source用于在 HCL 配置中直接获取 Amazon SageMaker AI 官方预置 Docker 镜像的 ECR 仓库地址registry_path与所属账号 IDregistry_id。在创建 SageMaker 训练作业、算法、模型、数据处理等资源时你不再需要手工拼写形如341280168497.dkr.ecr.ca-central-1.amazonaws.com/sagemaker-sparkml-serving:2.4的镜像路径而是通过该数据源在计划阶段按当前区域动态解析。读完本文你将掌握该数据源的完整参数、支持的仓库清单、输出属性以及它在 Provider 源码中的实现原理与测试验证方式。数据源概述与典型使用场景在 SageMaker 生态中几乎所有需要运行容器的资源训练作业、推理模型、算法注册、数据处理任务都必须引用一个 Docker 镜像。AWS 官方为内置算法如kmeans、linear-learner、深度学习容器 DLC如 PyTorch、TensorFlow、MXNet、Hugging Face 镜像等维护了大量预置镜像这些镜像托管在不同区域各自的 ECR 仓库中且每个区域的 ECR 账号 ID 都不同——这正是该数据源存在的核心价值它将区域 → 仓库账号 ID的复杂映射表固化在 Provider 内部自动为你生成正确的镜像路径。基础用法只需指定一个仓库名data aws_sagemaker_prebuilt_ecr_image test { repository_name sagemaker-scikit-learn image_tag 2.2-1.0.11.0 }与 aws_sagemaker_algorithm 资源配合在注册 SageMaker 算法时training_specification.training_image必须是一个合法的训练镜像 URI可以直接引用数据源的registry_path输出完整示例见 sagemaker_algorithm.html.markdowndata aws_sagemaker_prebuilt_ecr_image example { repository_name linear-learner image_tag 1 } resource aws_sagemaker_algorithm example { algorithm_name example-training-algorithm training_specification { supported_training_instance_types [ml.m5.large, ml.c5.xlarge] supports_distributed_training true training_image data.aws_sagemaker_prebuilt_ecr_image.example.registry_path metric_definitions { name train:loss regex loss(.*?); } supported_hyper_parameters { default_value 0.5 description Continuous learning rate is_required true is_tunable true name eta type Continuous range { continuous_parameter_range_specification { min_value 0.1 max_value 0.9 } } } } }与 aws_sagemaker_model 资源配合创建 SageMaker 模型时primary_container.image同样可以直接绑定该数据源的输出见 sagemaker_model.html.markdowndata aws_sagemaker_prebuilt_ecr_image test { repository_name sagemaker-xgboost } resource aws_sagemaker_model test { name example-model execution_role_arn aws_iam_role.test.arn primary_container { image data.aws_sagemaker_prebuilt_ecr_image.test.registry_path } }除此之外sagemaker_training_job.html.markdown 与 sagemaker_data_quality_job_definition.html.markdown 等资源文档中也大量使用该数据源注入镜像地址说明它是 SageMaker 资源编排中复用度极高的基础设施查询组件。参数详解Argument Reference该数据源共支持四个参数其中仅repository_name为必填参数是否必填说明repository_name必填仓库名称通常对应算法或框架库名称取值见下文完整清单image_tag可选Docker 镜像标签默认值为1对多数仓库表示最新版本region可选构造镜像路径时使用的区域默认取 Provider 配置中设置的区域dns_suffix可选构造镜像路径时使用的 DNS 后缀默认取当前区域所属分区的 DNS 后缀repository_name必填仓库名即算法或库的名称取值包括该清单与源码中的ValidateFunc白名单完全一致可参考 prebuilt_ecr_image_data_source.goautogluon-inference、autogluon-training、blazingtext、djl-inference、factorization-machines、forecasting-deepar、huggingface-pytorch-inference、huggingface-pytorch-inference-neuron、huggingface-pytorch-inference-neuronx、huggingface-pytorch-tgi-inference、huggingface-pytorch-training、huggingface-pytorch-training-neuronx、huggingface-pytorch-trcomp-training、huggingface-tensorflow-inference、huggingface-tensorflow-training、huggingface-tensorflow-trcomp-training、image-classification、image-classification-neo、ipinsights、kmeans、knn、lda、linear-learner、mxnet-inference、mxnet-inference-eia、mxnet-training、ntm、object-detection、object2vec、pca、pytorch-inference、pytorch-inference-eia、pytorch-inference-graviton、pytorch-inference-neuronx、pytorch-training、pytorch-training-neuronx、pytorch-trcomp-training、randomcutforest、sagemaker-base-python、sagemaker-chainer、sagemaker-clarify-processing、sagemaker-data-wrangler-container、sagemaker-debugger-rules、sagemaker-geospatial-v1-0、sagemaker-inference-mxnet、sagemaker-inference-pytorch、sagemaker-inference-tensorflow、sagemaker-model-monitor-analyzer、sagemaker-mxnet、sagemaker-mxnet-eia、sagemaker-mxnet-serving、sagemaker-mxnet-serving-eia、sagemaker-neo-mxnet、sagemaker-neo-pytorch、sagemaker-neo-tensorflow、sagemaker-pytorch、sagemaker-rl-coach-container、sagemaker-rl-mxnet、sagemaker-rl-ray-container、sagemaker-rl-tensorflow、sagemaker-rl-vw-container、sagemaker-scikit-learn、sagemaker-spark-processing、sagemaker-sparkml-serving、sagemaker-tensorflow、sagemaker-tensorflow-eia、sagemaker-tensorflow-scriptmode、sagemaker-tensorflow-serving、sagemaker-tensorflow-serving-eia、sagemaker-tritonserver、sagemaker-xgboost、semantic-segmentation、seq2seq、stabilityai-pytorch-inference、tei、tei-cpu、tensorflow-inference、tensorflow-inference-eia、tensorflow-inference-graviton、tensorflow-training、xgboost-neo从列表可以看出它覆盖了 SageMaker 内置算法、深度学习容器DLC、Hugging Face 生态含 TGI、TEI、强化学习容器、模型监控与数据质量分析容器等全部官方预置镜像。image_tag可选指定要引用的镜像标签默认值为1对多数仓库而言1即代表最新版本。需要注意部分仓库如 XGBoost 系列并不支持1或latest标签此时必须显式指定具体的版本标签。例如原文档基础示例中的2.2-1.0.11.0scikit-learn 镜像就是具体版本号而非默认值。在实际使用前建议先在 AWS 控制台或通过其他方式确认目标仓库确实存在对应的标签。region可选用于指定构造镜像路径时使用的 AWS 区域默认取 Provider 配置中设置的区域。由于 ECR 仓库账号 ID 随区域变化该参数最常见的用法是跟随data.aws_region动态绑定——这正是官方验收测试TestAccSageMakerPrebuiltECRImageDataSource_region的写法见 prebuilt_ecr_image_data_source_test.godata aws_region current {} data aws_sagemaker_prebuilt_ecr_image test { repository_name sagemaker-scikit-learn image_tag 2.2-1.0.11.0 region data.aws_region.current.region }dns_suffix可选指定镜像路径中的 DNS 后缀默认使用当前区域所属分区的 DNS 后缀例如商用区域的amazonaws.com、中国区域的amazonaws.com.cn等。该值由 Provider 客户端从分区元数据中获取绝大多数场景无需手动指定。输出属性Attribute Reference除上述参数外该数据源还导出两个计算属性registry_id— 托管该镜像的 ECR 仓库所属 AWS 账号 ID例如469771592824registry_path— 完整的 Docker 镜像 URL例如341280168497.dkr.ecr.ca-central-1.amazonaws.com/sagemaker-sparkml-serving:2.4。其中registry_path是实践中最常被引用的输出如上一节中training_image、image字段的赋值。源码实现registry_path 是如何被构造的该数据源的完整实现位于 internal/service/sagemaker/prebuilt_ecr_image_data_source.go并通过 service_package_gen.go 注册为aws_sagemaker_prebuilt_ecr_image。整体实现可以拆解为三层1. 区域 → 账号 ID 映射表源码中维护了多张prebuiltECRImageIDByRegion_*映射表每一张表对应一组共享相同 ECR 账号 ID 的仓库集合例如prebuiltECRImageIDByRegion_blazingBlazingText、Image Classification、Object Detection、Semantic Segmentation、Seq2Seq 等内置算法prebuiltECRImageIDByRegion_XGBoostXGBoost、scikit-learn、SparkML Serving、TEI 系列prebuiltECRImageIDByRegion_deepLearningPyTorch、TensorFlow、MXNet、Hugging Face、Triton、StabilityAI 等深度学习容器prebuiltECRImageIDByRegion_SageMakerCustom、prebuiltECRImageIDByRegion_SageMakerRL、prebuiltECRImageIDByRegion_spark、prebuiltECRImageIDByRegion_clarify等分别对应自定义容器、强化学习、Spark、Clarify 分组。这些映射覆盖了af-south-1、ap-east-1、ap-south-2、ca-west-1、eu-central-2、il-central-1、me-central-1、us-gov-east-1、us-iso-east-1、us-isob-east-1等数十个区域数据来源在源码注释中注明参考了 AWS 官方 SageMaker 算法 Docker 仓库路径文档与aws/sagemaker-python-sdk的image_uri_config系列 JSON 文件。2. 读取流程与仓库分组路由在dataSourcePrebuiltECRImageRead见 prebuilt_ecr_image_data_source.go中读取逻辑为从 Provider 客户端获取当前region与dns_suffix若显式配置了dns_suffix则覆盖默认值根据repository_name走一个大型switch分支将仓库名路由到对应的映射表并取出账号 ID若对应区域内不存在该分组id 返回形如reading SageMaker Prebuilt ECR Image for Region (...) and repository (...)的NotFoundError诊断将账号 ID 写入资源 ID 与registry_id并调用prebuiltECRImageCreatePath构造镜像路径。3. 路径拼接规则prebuiltECRImageCreatePath见 prebuilt_ecr_image_data_source.go的拼接格式为fmt.Sprintf(%s.dkr.ecr.%s.%s/%s:%s, id, region, suffix, repo, imageTag)即最终路径形如account-id.dkr.ecr.region.dns-suffix/repository-name:image-tag。这也解释了为何该数据源输出高度依赖区域一旦 Provider 的目标区域发生变化registry_path会自动指向新区域的正确仓库。测试与验证该数据源的验收测试集中在 prebuilt_ecr_image_data_source_test.go测试策略颇具代表性基础场景TestAccSageMakerPrebuiltECRImageDataSource_basic验证kmeans在默认区域下输出的id、registry_id、registry_path三者与PrebuiltECRImageCreatePath构造的期望值一致显式 region 场景TestAccSageMakerPrebuiltECRImageDataSource_region通过data.aws_region显式传入区域验证 scikit-learn 镜像路径分组覆盖场景为 Clarify、Data Wrangler、Debugger、Inferentia/Neo、XGBoost/SparkML、SageMaker CustomChainer、MXNet/TensorFlow EIA、Deep LearningHugging Face TGI、Triton、StabilityAI、SageMaker Base Python、RL、Spark 等每个映射分组各编写一个测试用例确保所有仓库分组的区域路由逻辑都被回归覆盖。相关内部符号通过 exports_test.go 导出供测试引用例如PrebuiltECRImageCreatePath、PrebuiltECRImageIDByRegion_factorMachines、PrebuiltECRImageIDByRegion_XGBoost等。使用注意事项不校验镜像是否真实存在Provider 只会构造出格式上合法的registry_path并不会向 ECR 发起请求验证该镜像确实存在。若image_tag在目标仓库中并不存在后续使用该路径创建 SageMaker 资源时才会报错。因此务必确认仓库名与标签的组合真实有效。默认标签的适用性默认标签1对多数仓库表示最新版本但 XGBoost 等仓库不支持1或latest必须显式给出具体版本。区域覆盖的一致性使用region参数覆盖区域时应保证与实际部署资源的区域一致否则生成的镜像路径可能与资源所在区域的网络策略或权限配置不匹配。参数白名单约束repository_name仅接受上文清单中的取值若传入未收录的仓库名会在计划阶段即被ValidateFunc拒绝而不是等到 apply 阶段才发现问题。延伸阅读数据源原始文档website/docs/d/sagemaker_prebuilt_ecr_image.html.markdown核心实现internal/service/sagemaker/prebuilt_ecr_image_data_source.go验收测试internal/service/sagemaker/prebuilt_ecr_image_data_source_test.go配套资源文档sagemaker_algorithm.html.markdown、sagemaker_model.html.markdown、sagemaker_training_job.html.markdown、sagemaker_data_quality_job_definition.html.markdown赞分享IaC云原生基础设施【免费下载链接】terraform-provider-awsThe AWS Provider enables Terraform to manage AWS resources.项目地址https://gitcode.com/GitHub_Trending/te/terraform-provider-aws点击查看免费下载相关推荐Terraform AWS Provider 中 aws_appstream_image 数据源实战指南查询 AppStream 2.0 镜像Terraform AWS Provider 中 aws_appstream_image 数据源实战指南查询 AppStream 2.0 镜像 本篇围绕 TeIaC云原生基础设施Terraform AWS Provider 数据源实战使用 aws_imagebuilder_image_pipelines 批量查询 EC2 Image Builder 镜像管道Terraform AWS Provider 数据源实战使用 aws_imagebuilder_image_pipelines 批量查询 EC2 ImageIaC云原生基础设施Terraform AWS Provider数据源开发查询AWS资源实战Terraform AWS Provider数据源开发查询AWS资源实战 引言你还在手动查询AWS资源属性吗 在使用Terraform管理AWS基础设施时IaC云原生基础设施创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表