从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
相关产品推荐
相关产品推荐

