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

Redshift UNLOAD至S3报错咨询:端点与区域授权问题

解决Redshift UNLOAD到S3的区域端点与授权头错误问题

我来帮你搞定这个UNLOAD的问题——我之前处理过几乎一模一样的场景,核心问题出在Redshift UNLOAD命令的区域指定和S3路径格式上,咱们一步步来解决:

正确的UNLOAD命令写法

你不需要修改S3路径的格式(保持官方文档的s3://mybucket/即可),只需要在命令里添加REGION参数,强制指定你的桶所在的eu-west-2区域。修正后的命令如下:

UNLOAD ('select * from mytable') 
TO 's3://mybucket/' 
IAM_ROLE 'arn:aws:iam::0123456789:role/aws-service-role/redshift.amazonaws.com/AWSServiceRoleForRedshift'
REGION 'eu-west-2';

为什么之前会报错?

咱们拆解下两个错误的原因:

  • 301永久重定向错误:当你只写s3://mybucket/却没指定REGION时,Redshift默认会用us-east-1的S3端点去请求,但你的桶在eu-west-2,S3会拒绝并要求你使用对应区域的端点,所以返回301错误。
  • 授权头格式错误:你手动把路径改成带域名的格式(比如s3://mybucket.s3.eu-west-2.amazonaws.com/),这不符合Redshift UNLOAD的路径规则——Redshift会把整个mybucket.s3.eu-west-2.amazonaws.com当成桶名,然后还是用默认的us-east-1区域去生成授权头,自然就出现了“期望区域为us-east-1”的错误。

额外检查点

确保这两个配置没问题,避免后续踩坑:

  • 确认IAM角色权限:该角色必须拥有s3:PutObject权限到目标S3桶,并且信任关系里正确添加了Redshift服务的信任策略。
  • 再次核对区域:确保Redshift集群和S3桶确实都在eu-west-2,别出现拼写错误(比如把eu-west-2写成eu-west-1)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:41:48