原创

亚马逊 S3 配置跨域及读取权限

一、跨域资源共享(CORS)配置

CORS(Cross-Origin Resource Sharing)是允许浏览器发起跨域请求的机制。在 AWS S3 中,配置 CORS 允许来自不同域的前端应用访问存储在 S3 中的资源。

1.1 如何配置 S3 CORS

步骤:

  • 登录 AWS 管理控制台
    登录 AWS 管理控制台,进入 S3 服务。

  • 选择存储桶
    选择你需要配置跨域访问权限的 S3 存储桶。

  • 配置 CORS
    选择存储桶后,点击 “权限” 标签,然后选择 “CORS 配置”。

  • 编辑 CORS 配置
    在弹出的编辑框中,填写 CORS 配置的 JSON 格式内容。

示例 CORS 配置:

[ 
    {
    
        "AllowedHeaders": [ 
            "*" 
        ], 
        "AllowedMethods": [ 
            "GET", 
            "PUT", 
            "POST", 
            "HEAD", 
            "DELETE" 
        ], 
        "AllowedOrigins": [ 
            "*",
        ], 
        "ExposeHeaders": [], 
        "MaxAgeSeconds": 3000 
    } 
] 

配置说明:

  • AllowedOrigin:指定哪些域名可以访问 S3 存储桶的资源。* 表示允许所有域名访问。

  • AllowedMethod:指定允许的 HTTP 方法,常见的有 GET、POST、PUT、DELETE、OPTIONS。

  • AllowedHeader:允许的请求头,* 表示接受所有的请求头。

  • MaxAgeSeconds:指定预检请求的缓存时间。

1.2 常见问题:

  • CORS 配置不生效:可能是由于浏览器缓存的 CORS 配置导致,清除浏览器缓存或等待缓存过期可以解决。

  • 限制 CORS 跨域来源:尽量避免使用 *,可以限定特定的域名来增强安全性。


二、设置 S3 存储桶的读取权限

S3 存储桶默认是私有的,只有拥有相应权限的用户可以访问。如果你希望某些文件可以被公众访问(例如图片、CSS 文件等),你需要配置适当的读取权限。

2.1 配置存储桶策略(Bucket Policy)

Bucket Policy 允许你为 S3 存储桶设置更细粒度的访问控制。通过设置 Bucket Policy,你可以指定哪些 IP 地址、哪些用户角色可以访问存储桶中的内容。

步骤:

  • 登录 AWS 管理控制台
    登录到 AWS 管理控制台,进入 S3 服务。

  • 选择存储桶
    选择需要配置权限的 S3 存储桶。

  • 配置存储桶策略
    在存储桶的 “权限” 页面下,点击 “存储桶策略”,然后点击 “编辑”。

  • 输入存储桶策略
    在策略编辑框中输入适当的策略。

示例公共读取策略(让所有人可以读取存储桶中的文件):

{
   
"Version": "2012-10-17",
"Statement": [
    {
   
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::your-bucket-name/*"
    }
  ]
}

解释:

  • Principal:* 表示所有人都可以访问。

  • Action:s3:GetObject 允许读取操作。

  • Resource:指定要公开访问的存储桶及对象,这里 your-bucket-name/* 表示存储桶中的所有对象。

2.2 配置存储桶对象权限(ACL)

除了使用 Bucket Policy,你还可以使用 Access Control List (ACL) 来控制单个对象的访问权限。

步骤:

  • 选择对象
    在 S3 控制台中,选择你要配置权限的文件。

  • 编辑权限
    选择该文件后,点击 “权限” 标签,编辑对象的访问权限。

  • 设置公开访问
    勾选 公开读取,这样所有人都可以通过 URL 访问该文件。

  • 通过设置 READ 权限,所有用户可以读取该对象。


三、如何让 CORS 配置和读取权限生效

  • 等待时间:S3 的权限更新可能需要几分钟才能生效。

  • 检查响应头:可以使用浏览器开发者工具查看 Access-Control-Allow-Origin 响应头是否正确。

  • 测试 CORS:通过执行跨域请求测试 CORS 是否正常工作。可以使用浏览器控制台或者 curl 命令发起请求,检查响应是否符合预期。


四、总结

  • 跨域配置(CORS):用来控制哪些外部域名可以访问存储在 S3 上的资源。通过设置 S3 存储桶的 CORS 配置,你可以管理哪些 HTTP 方法(如 GET、POST)和哪些头部可以被跨域请求。

  • 读取权限配置(Bucket Policy / ACL):通过设置存储桶策略(Bucket Policy)或者对象权限(ACL),你可以控制谁可以访问 S3 存储桶中的文件。通过将 s3:GetObject 权限公开,其他用户就可以通过 URL 访问文件。

ALCs打开 设置 存储桶拥有者优先

f0c9abbe3117141ab6a734503bb2f778.png

正文到此结束
本文目录