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

如何将s3.amazonaws.com格式的S3请求重定向至新存储桶?

解决方案:重定向S3路径式端点请求到自有域名

针对你提到的https://s3.amazonaws.com/<bucketName>/<fileName>这类路径式S3链接的重定向需求,有两种可靠方案,具体如下:

方案一:S3桶级静态网站重定向(简单场景首选)

这种方式直接利用S3的静态网站托管功能配置重定向,无需额外服务:

    1. 登录AWS控制台,进入旧存储桶的属性页,找到静态网站托管选项,点击“编辑”。
    1. 选择“重定向所有请求到另一个主机名”,在“目标主机名”中填入你的自有端点域名(例如https://your-custom-domain.com)。
    1. 勾选“保留原请求路径”,这样旧链接中的<fileName>会被自动附加到自有端点的URL后(比如https://s3.amazonaws.com/mybucket/image.png会重定向到https://your-custom-domain.com/image.png)。
    1. 设置重定向协议为HTTPS,确保跳转后的链接安全。
    1. 保存配置后,调整旧桶的桶策略,允许公开访问重定向响应(无需保留原对象,因为重定向由S3直接返回)。示例桶策略:
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::your-old-bucket/*"
    }
  ]
}

配置完成后,旧链接的请求会被S3自动重定向到你的自有端点。

方案二:CloudFront + Lambda@Edge(复杂场景适配)

如果需要根据文件迁移状态动态调整重定向逻辑(比如部分文件未迁移时临时返回旧桶内容),可以用CloudFront结合Lambda@Edge实现:

    1. 创建一个CloudFront分发,将源设置为旧S3桶的路径式端点(s3.amazonaws.com/your-old-bucket),并配置HTTPS协议。
    1. 在CloudFront的行为设置中,添加“查看器请求”事件的Lambda@Edge触发。
    1. 编写Lambda函数,解析请求的URI路径,生成指向自有端点的重定向URL。示例函数代码(Node.js):
exports.handler = (event, context, callback) => {
  const request = event.Records[0].cf.request;
  const fileName = request.uri;
  const redirectUrl = `https://your-custom-domain.com${fileName}`;
  
  const response = {
    status: '302',
    statusDescription: 'Found',
    headers: {
      'location': [{
        key: 'Location',
        value: redirectUrl
      }]
    }
  };
  callback(null, response);
};
    1. 将Lambda函数部署到us-east-1区域,并关联到CloudFront分发。
    1. 调整旧桶的桶策略,只允许CloudFront的OAI(Origin Access Identity)访问,禁止直接公开访问,确保所有请求都经过CloudFront处理。

这种方案的优势是可以灵活扩展逻辑,比如根据文件名判断是否已迁移,未迁移的请求仍返回旧桶内容,完成迁移后再统一重定向。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 20:43:11