具有 N 个域的 AWS S3 动态 HTTP Referer 策略

AWS S3 Dynamic HTTP Referer policy with N domains

实施一个应用程序,其中 S3 图像只能通过列入白名单的域列表进行热链接。

对于一个简单的案例,我可以创建一个带有静态域列表的 Referer Policy,例如:

{
  "Version":"2012-10-17",
  "Id":"http referer policy example",
  "Statement":[
    {
      "Sid":"Allow get requests originating from www.example.com and example.com.",
      "Effect":"Allow",
      "Principal":"*",
      "Action":"s3:GetObject",
      "Resource":"arn:aws:s3:::examplebucket/*",
      "Condition":{
        "StringLike":{"aws:Referer":["http://www.example.com/*","http://example.com/*"]}
      }
    }
  ]
}

我希望通过脚本语言从数据库动态生成此列表,然后通过 API SDK 发布到 AWS。

这可以通过为以下内容生成动态 JSON 字符串来完成:

["http://www.example.com/*","http://example.com/*"]

这是最好的做法吗?我找不到与此相关的任何文档,但我想在 StringLike 条件下字符串匹配的数量有限制吗?

在 Condition 中创建一个单独的 StringLike 条目是否更好,每个域一个?

我可能会将 10000 个域列入白名单,因此我正在努力寻找最佳的扩展方法。

由于S3的策略框架长度限制,没有采用该方案。