运行Dataflow Flex Templates时报错找不到python_template_launcher文件
错误根源与可能诱因
该错误本质是Dataflow启动Flex模板容器时,无法找到预设的Python模板启动器可执行文件/opt/google/dataflow/python_template_launcher。在已确认模板文件、镜像存在的前提下,常见诱因如下:
- 模板构建步骤缺失:构建Python Flex模板时未按照规范将启动器打包到容器指定路径。比如构建镜像的Dockerfile中漏了对应文件的拷贝逻辑,或者打包过程中文件被误删、路径配置错误。
- 模板与镜像版本不匹配:GCS上存储的模板元数据JSON中,
containerImage字段指定的镜像地址/标签,和容器注册表中实际存在的镜像不一致,导致拉取到的镜像不是你打包了启动器的版本。你可以直接下载GCS上的模板文件校验containerImage的取值是否和你推送的镜像完全一致。 - Beam SDK版本不兼容:你使用的Apache Beam Python SDK版本过低,部分2.28版本之前的SDK构建Flex模板时,不会自动将
python_template_launcher打包到容器的对应路径下。 - 自定义镜像修改异常:如果基于官方Dataflow基础镜像做了自定义调整,比如修改了
/opt目录的访问权限、删除了对应路径下的文件,或者手动覆盖了容器的ENTRYPOINT/CMD配置,都会阻断默认的启动器调用逻辑。 - 镜像拉取权限异常:Dataflow默认使用的服务账号
service-<项目号>@dataflow-service-producer-prod.iam.gserviceaccount.com没有容器镜像仓库的拉取权限,拉取到的是损坏的占位镜像,也会触发路径不存在报错。
内容的提问来源于stack exchange,提问作者Raj Oberoi
相关产品推荐
相关产品推荐

