为何AWS控制台中Glue Studio显示脚本与旧版作业视图不一致?
根因说明
这是Glue Studio可视化编辑器的缓存机制导致的已知行为:
Glue Studio编辑器默认加载作业元数据中存储的脚本快照,不会在打开编辑页时主动拉取S3路径下的最新脚本文件;只有通过编辑器本身保存修改、或者主动触发脚本路径重校验时,才会重新拉取S3上的文件内容。
你观察到的现象完全符合这个机制的表现:
- 作业配置项(比如
--additional-python-modules)存储在Glue作业元数据中,只要更新元数据就会立刻在详情页显示 - 旧版作业视图、作业实际运行逻辑都是直接读取S3路径下的源脚本文件,所以能拿到通过Ansible部署的最新版本
- 只有可视化编辑器读的是旧的缓存快照,才会显示过时的代码
即时修复方法
碰到编辑器显示旧代码时,按以下操作强制刷新即可,不会影响线上运行的作业:
- 进入对应作业的Glue Studio编辑页,全程不要点击保存按钮,避免误覆盖配置
- 切换到
Script标签页,找到S3脚本路径的输入框 - 随意修改路径内容(比如末尾加个无意义的字符),等编辑器报脚本不存在的错误后,再把路径改回原来的正确值
- 此时编辑器会强制重新拉取对应S3路径下的脚本,显示内容就会和实际运行的最新版本一致
长期规避方案
用Ansible等自动化工具做部署时,不要只单独更新S3上的脚本文件,在部署流程最后增加一步调用Glue的UpdateJob接口:哪怕脚本S3路径没有变化,也重新传一次Command.ScriptLocation参数,就能强制刷新Glue侧存储的脚本快照,后续打开Glue Studio编辑器时会直接加载最新代码,不会再出现显示不同步的问题。
补充说明:Glue本身不会监听S3路径下的文件变更,只要绕过Glue接口直接修改S3上的脚本文件,就可能触发这个缓存不一致的问题,和部署工具本身没有关系。
内容的提问来源于stack exchange,提问作者Mike
相关产品推荐
相关产品推荐

