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

从SSE S3加密的AWS S3桶向Snowflake加载数据时遇访问拒绝错误

问题:S3外部阶段可列出文件但COPY INTO时访问拒绝

我尝试通过AWS外部阶段将CSV文件从S3加载到Snowflake,list @stage_name能正常列出文件,但执行COPY INTO时出现访问拒绝错误。文件采用S3默认SSE加密,按Snowflake文档无需额外配置。


使用的命令及结果

1. 列出阶段文件

list @my_ext_stage_2;

文件列表结果

2. 执行COPY INTO加载

copy into emp_raw from @my_ext_stage_2/emp/emp.csv
on_error='ABORT_STATEMENT';

加载错误结果

3. 查看阶段描述

desc stage my_ext_stage_2;

外部阶段描述


AWS访问策略

{
"Version": "2012-10-17",
"Statement": [
    {
        "Sid": "ListObjectsInBucket",
        "Effect": "Allow",
        "Action": [
            "s3:ListBucket"
        ],
        "Resource": [
            "arn:aws:s3:::my-bucket-name"
        ]
    },
    {
        "Sid": "AllObjectActions",
        "Effect": "Allow",
        "Action": "s3:*Object",
        "Resource": [
            "arn:aws:s3:::my-bucket-name/*"
        ]
    }
]
}

解决方法

从现象来看,list命令正常说明桶级List权限无问题,COPY INTO失败优先排查以下几点:

  • 检查文件路径大小写:S3路径区分大小写,确认@my_ext_stage_2/emp/emp.csv与S3实际文件路径完全一致,包括文件名大小写。
  • 细化IAM策略动作:将策略中s3:*Object替换为显式的必要动作,避免通配符兼容性问题:
    "Action": [
        "s3:GetObject",
        "s3:GetObjectVersion"
    ]
    
  • 验证存储集成配置:如果使用Snowflake存储集成而非硬编码密钥,需确认:
    • 存储集成绑定的IAM角色信任关系已授权Snowflake账户访问
    • 存储集成拥有目标S3路径的读取权限
  • 排查S3额外权限控制:检查S3桶的桶策略是否有IP限制、拒绝语句,或文件是否设置了对象级ACL限制读取。
  • AWS CLI权限测试:用对应IAM身份执行aws s3 cp s3://my-bucket-name/emp/emp.csv ./test.csv,如果CLI也报错,说明是AWS权限问题;若CLI成功,再核对Snowflake阶段的桶名、前缀配置是否正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 20:55:10