我正在将现有的静态网站移动到 S3/CloudFront。
按照 AWS 的一些文档,我在 S3 存储桶上设置了一条策略以将其公开:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::mywebsite.org/*"
}
]
}
但是,在应用上述策略时,AWS 会向我发出(说实话很吓人的)警告。与此主题中讨论的相同: 在没有公共存储桶的情况下通过 Cloudfront 和 S3 提供网站服务
我实际上首先尝试了他们在那个答案中描述的方式,设置了 Origin Access Identity,但这导致了令人讨厌的副作用:目录 urls (https://mywebsite.org/directory/) 将不会获取该index.html
文件,而会导致 403。
不幸的是,这种行为破坏了很多现有的链接(包括其他网站上的链接),所以我不能这样做。
也可以使用 lambda@edge 来解决这个问题,但老实说,这听起来只是需要更多的代码、更多的问题和更多的钱。
回到那个令人恐惧的大警告:
这是一个静态网站,所以显然所有内容都会公开。但是这条消息仍然令人担忧。我应该了解什么,意外访问或潜在的安全问题?有没有办法在不破坏链接或使用 lambda@edge 的情况下解决这个问题?
答案1
如果您将 S3 配置为静态网络托管,请忽略该警告。您的网站应该是公开的,以便匿名访问。