我正在将现有的静态网站移动到 S3/CloudFront。
根据 AWS 的一些文档,我在 S3 存储桶上设置了一个策略以将其公开:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::mywebsite.org/*"
}
]
}
然而,当应用上述政策时,AWS 给了我一个(老实说可怕的)警告。与此线程中讨论的相同: Serving website from Cloudfront and S3 without public bucket
实际上,我首先尝试了他们在该答案中描述的方式,设置了原始访问身份,但这导致了令人讨厌的副作用:目录 url(https://mywebsite.org/directory/)不会index.html
在那里获取文件,并导致 403 代替。
不幸的是,这种行为破坏了很多现有的链接(包括其他网站上的链接),所以我不能这样做。
也有可能使用 lambda@edge 来解决这个问题,但老实说,这听起来像是更多的代码、更多的问题和更多的钱。
所以回到可怕的警告:
这是一个静态网站,所以很明显事情会公开。然而,这个消息仍然令人担忧。有什么我应该知道的、意外访问或潜在的安全问题吗?有没有办法在不破坏链接或使用 lambda@edge 的情况下解决这个问题?
如果您将 S3 配置为静态 Web 托管,请忽略该警告。您的网站应该是公开的,以便匿名访问。