AWS S3 CORS 策略是文件级别的吗?

the*_*are 8 amazon-s3 amazon-web-services cors

我正在尝试将 CORS 策略应用于我的 S3 存储桶,我观察到的是,如果在任何时候修改了 CORS 策略,上传到 S3 的旧文件仍然不使用新的 CORS政策。例如

  1. 我创建了一个 S3 存储桶“X”
  2. 添加了以下 CORS 政策 -

    <CORSConfiguration>
    <CORSRule>
        <AllowedOrigin>https://app1.example.com</AllowedOrigin>
        <AllowedMethod>POST</AllowedMethod>
        <AllowedMethod>GET</AllowedMethod>
        <AllowedMethod>DELETE</AllowedMethod>
        <ExposeHeader>ETag</ExposeHeader>
        <ExposeHeader>x-amz-meta-custom-header</ExposeHeader>
        <AllowedHeader>*</AllowedHeader>
    </CORSRule>
    </CORSConfiguration>
    
    Run Code Online (Sandbox Code Playgroud)
  3. 已成功从托管在https://app1.example.com. 我还可以执行 GET 和 DELETE。

  4. 现在,我需要将同一个 S3 存储桶用于我的另一个托管应用程序,例如 app2。所以我将 CORS 政策修改为 -

    <CORSConfiguration>
    <CORSRule>
        <AllowedOrigin>https://app1.example.com</AllowedOrigin>
        <AllowedMethod>POST</AllowedMethod>
        <AllowedMethod>GET</AllowedMethod>
        <AllowedMethod>DELETE</AllowedMethod>
        <ExposeHeader>ETag</ExposeHeader>
        <ExposeHeader>x-amz-meta-custom-header</ExposeHeader>
        <AllowedHeader>*</AllowedHeader>
    </CORSRule>
    <CORSRule>
        <AllowedOrigin>https://app2.example.com</AllowedOrigin>
        <AllowedMethod>POST</AllowedMethod>
        <AllowedMethod>GET</AllowedMethod>
        <AllowedMethod>DELETE</AllowedMethod>
        <ExposeHeader>ETag</ExposeHeader>
        <ExposeHeader>x-amz-meta-custom-header</ExposeHeader>
        <AllowedHeader>*</AllowedHeader>
    </CORSRule>
    </CORSConfiguration>
    
    Run Code Online (Sandbox Code Playgroud)
  5. 现在,当我尝试从 GET 文件 a.jpeg 时https://app2.example.com,我仍然看到以下错误

    XMLHttpRequest cannot load <S3 URL>. Origin https://app2.mydomain.com is not allowed by Access-Control-Allow-Origin.
    
    Run Code Online (Sandbox Code Playgroud)
  6. 但是,如果我尝试从 上传新文件 b.jpeg https://app2.mydomain.com,一切都会按预期进行。

编辑

我之前忘了提到这一点,但是我们的 S3 存储桶前面有一个 CloudFront CDN,但是我在 Cloudfront 配置中找不到任何与设置 CORS 策略相关的配置。

有没有办法让我们也可以对以前上传的文件执行新的 CORS 政策?或者有没有其他方法可以使这项工作?