Redshift物化视图通过Glue Catalog创建时遇内部数据共享错误
排查Redshift Spectrum创建物化视图时的自动挂载目录错误(错误码:4)
我尝试通过Redshift Spectrum从Glue数据目录中的外部表创建物化视图,执行的SQL语句如下:
CREATE MATERIALIZED VIEW "dev"."public"."table_name" AS SELECT DISTINCT * FROM "awsdatacatalog"."my_db"."table_name"
但遇到以下错误:
尝试对自动挂载目录发起内部数据共享请求。错误码:4
排查步骤:
- 检查Glue目录与Redshift集群的权限关联:确认Redshift集群的IAM角色已配置Glue数据目录的访问权限,包括
glue:GetTable、glue:GetDatabase等必要权限,同时角色的信任策略需允许Redshift服务调用。 - 替换自动挂载目录为手动创建:自动挂载的Glue目录不支持此类跨目录的数据共享操作,需通过
CREATE EXTERNAL DATA CATALOG语句手动创建外部数据目录,指定Glue的目录名称、IAM角色等信息,之后基于这个手动创建的目录访问外部表。 - 验证目标库与用户权限:确保当前用户拥有
dev.public数据库的CREATE MATERIALIZED VIEW权限,以及对Glue外部表的SELECT权限。 - 检查Redshift版本:部分旧版本Redshift对自动挂载目录的物化视图支持存在限制,确认集群运行在最新稳定版本。
- 跨账户场景排查:如果Glue目录属于其他AWS账户,需确认跨账户资源共享配置是否完成,包括共享方的权限授予、接收方集群是否已关联共享目录。
内容的提问来源于stack exchange,提问作者jacksbox
相关产品推荐
相关产品推荐

