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

跨AWS账号S3访问拒绝问题:Glue表更新后权限异常排查

问题描述

我将CSV文件按导出时间存储在不同的S3文件夹中,示例路径:

s3:/mybucket/vloging/202302051000/export.csv
s3:/mybucket/vloging/202302050900/export.csv
s3:/mybucket/vloging/202302041800/export.csv
s3:/mybucket/vloging/202302041900/export.csv

我在Glue Catalog中创建了指向最新导出文件夹的外部表demo,建表语句如下:

create external table demo (
id int,
name string,
location string
)
STORED AS PARQUET
LOCATION 's3://mybucket/vloging/202302051000/'

当有新导出文件时,我通过Lambda调用Glue.Client.update_table API更新表的存储位置。但已授予访问权限的另一AWS账号用户,在Glue ETL作业中访问该表时出现S3访问拒绝错误。请问除了更新表之外,还需进行哪些操作来解决该问题?

解决步骤
  • 更新S3桶的跨账号权限策略
    确保S3桶的权限策略中,已允许目标AWS账号(或其对应的IAM角色/用户)访问新的S3文件夹路径。如果之前的权限仅针对旧文件夹,需更新为覆盖所有导出文件夹前缀,示例策略片段:

    {
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::目标账号ID:root"
        },
        "Action": [
            "s3:GetObject",
            "s3:ListBucket"
        ],
        "Resource": [
            "arn:aws:s3:::mybucket/vloging/*",
            "arn:aws:s3:::mybucket"
        ]
    }
    
  • 同步Lake Formation权限(若启用)
    若使用Lake Formation管理数据权限,仅更新Glue表位置不会自动同步权限到新S3路径:

    1. 在Lake Formation控制台注册新的S3路径;
    2. 重新为目标账号授予demo表的SELECT等必要权限,确保权限覆盖新存储路径。
  • 检查Glue ETL作业执行角色权限
    目标账号的Glue ETL作业执行IAM角色,需具备访问新S3路径的权限。确认该角色的IAM策略包含对arn:aws:s3:::mybucket/vloging/新时间戳文件夹/*的s3:GetObject和s3:ListBucket权限,或直接授权整个vloging/前缀以避免重复调整。

  • 刷新Glue表元数据
    调用Glue.Client.start_crawler API(若有对应爬虫),或在Glue控制台手动刷新表元数据,避免作业因缓存访问旧路径。

  • 验证跨账号资源共享配置
    确认跨账号信任关系正确:

    • 若使用RAM共享,确保共享资源包含新的S3路径;
    • 目标账号的IAM实体无权限边界限制其访问新S3路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 13:13:24