amazon-web-services - s3 和 cloudfront 上的静态托管问题 [OAI]
问题描述
我创建了一个s3
存储桶,启用了静态托管。我创建了一个具有访问身份的云端分发FOO
。
我的目标是拥有一个可以访问 s3(包括路径)的云端发行版,以便为静态网站提供服务。
我的存储桶上的政策是:
{
"Version": "2012-10-17",
"Id": "...",
"Statement": [
{
"Sid": "1",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity FOO"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my-bucket/*"
}
]
}
我更改了 cloufront 发行版上的原始名称以指向我的 s3 托管地址:
my-bucket.s3-website-my-region-1.amazonaws.com
如果我现在访问云端地址,我会得到Access Denied 403
.
如果我更改index.html
s3 上文件的权限以向所有人授予读取和列出权限,那么一切正常。
但是,这感觉像是一种 hack,更不用说我必须在部署后修改权限等等。
是否可以在 s3 上使用 OAI 仅通过云端提供静态托管?
解决方案
使用 Amazon CloudFront 通过 OAI 提供对 Amazon S3 存储桶的访问时,只需在 CloudFront 中选择存储桶,而不是指向网站 URL。
文档说:“对于 Origin 域,请选择您创建的存储桶。”
请参阅:使用 CloudFront 为托管在 Amazon S3 上的静态网站提供服务
如果您希望根 URL 对index.html
文件进行默认设置,那么您将需要在 CloudFront 分配上配置此行为,而不是依赖 S3 为您执行此操作。
推荐阅读
- ios - 为 UIImage 获取错误的 SHA 256 值
- java - Java在Maven项目中找不到库
- opencv - 如何使用 readNet(或 readFromDarknet)而不是 readNetFromCaffe?
- c - 检查地址在 Linux 内核中是否有效(NULL 检查除外)
- python - 使用 Numpy 进行矩阵和张量乘法
- html - Laravel 公共 CSS 样式表
- solidity - 如何修复“警告:不推荐使用“var”关键字”?
- javascript - 如何在 React.js 前端应用程序中显示来自 Rails 5 API 的数据?
- r - ggplot sec_axis 不适用于在 3.1 版中将轴提升到幂的转换
- c++ - run protobuf example on Mac OS with error