在AWS Glue Schema Registry中导入自定义Protobuf包遇错求助
解决AWS Glue Schema Registry上传Protobuf依赖报错的问题
1. 先创建依赖的Type.proto Schema
你的Message.proto依赖未上传的Type.proto,必须先将这个依赖Schema上传到Glue Schema Registry:
- 编写完整的
Type.proto定义(根据实际枚举值调整):
syntax = "proto3"; package com.my_repo.message.event.enums; enum Type { TYPE_UNSPECIFIED = 0; // Protobuf枚举必须包含0值作为默认选项 TYPE_WARNING = 1; TYPE_ERROR = 2; // 补充你的其他枚举值 }
- 登录AWS Glue控制台,进入Schema Registry,选择目标Registry(无则新建)
- 点击Add schema,输入Schema名称(建议设为
com.my_repo.message.event.enums.Type,与包名+枚举名对应,便于识别) - 数据格式选择
PROTOBUF,粘贴上述Type.proto内容,完成创建
2. 上传主Message.proto Schema
确认Type.proto的Schema创建成功后,再上传你的主Schema:
- 回到Schema Registry的Add schema页面,输入Schema名称(比如
com.my_repo.message.event.Message) - 数据格式选择
PROTOBUF,粘贴你的Message.proto内容 - 提交后,Glue会自动解析import语句,在同一个Registry内查找已创建的
Type依赖Schema,即可成功创建
关键注意事项
- 所有存在依赖关系的Protobuf Schema必须放在同一个Registry中,Glue默认仅在当前Registry内查找依赖
- Protobuf的
package声明、import路径、Schema名称需保持逻辑一致:比如import "com/my_repo/message/event/enums/Type.proto"对应包com.my_repo.message.event.enums下的Type枚举,只要该枚举的Schema已存在就能被正确识别 - 确保Protobuf定义符合语法规范(如枚举必须包含0值、字段编号唯一等)
内容的提问来源于stack exchange,提问作者lollerskates
相关产品推荐
相关产品推荐

