You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在AWS Glue ETL作业中跨账户查询Athena视图(解决错误码10)

解决跨账户Athena视图在Glue ETL中触发错误码10的方案

错误码10的本质是Glue ETL原生不支持直接读取跨账户Athena视图的元数据或底层数据,以下是几个经过验证的落地解决方法:

方法一:同步视图数据到本账户物化表

这是最稳妥的方案,直接绕开跨账户视图的访问限制:

  • 在Athena中执行CTAS语句,把跨账户视图的数据同步到本账户的S3存储:
    CREATE TABLE my_account.my_db.synced_table
    WITH (
      format = 'Parquet',
      external_location = 's3://my-account-bucket/synced-data/'
    ) AS SELECT * FROM cross_account.cross_db.target_view
    
  • 执行完成后,Glue数据目录会自动生成对应表的元数据,直接在ETL作业中访问这个synced_table即可
  • 可配合CloudWatch Events触发Athena定时查询,定期刷新数据

方法二:直接基于底层数据源创建Glue外部表

如果能获取到跨账户视图对应的底层S3数据源权限:

  • 先在Athena中执行SHOW CREATE TABLE cross_account.cross_db.target_view,提取视图定义里的底层S3路径和数据schema
  • 在本账户的Glue数据目录中创建外部表,指定上述S3路径和匹配的schema
  • 要求原账户的S3桶策略添加允许本账户Glue角色的s3:GetObject、s3:ListBucket权限,确保Glue作业能访问底层数据

方法三:配置跨账户Glue数据目录共享(兼容性有限)

如果必须保留视图结构,可尝试跨账户元数据共享:

  • 原账户的RAM管理员创建资源共享,把目标视图所在的Glue数据库共享给本账户
  • 本账户接受共享后,在Glue作业中使用完整ARN路径访问视图,示例:
    df = spark.read.table("arn:aws:glue:us-east-1:123456789012:database/cross_db.table/target_view")
    
  • 同时给Glue作业角色添加针对原账户资源ARN的glue:GetTable、glue:GetDatabase权限,以及底层S3的访问权限

通用权限检查

无论采用哪种方法,都要确认:

  • Glue作业角色具备访问目标数据存储(S3)的权限
  • 原账户的相关资源(S3桶、Glue数据目录)已配置正确的跨账户访问策略

内容的提问来源于stack exchange,提问作者cpljp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 20:48:31