![](/img/trans.png)
[英]Create a Cloudfront Distribution that Origin is an S3 bucket using ansible playbook
[英]CloudFront Distribution with S3 Origin Responds with XML ListBucketResult
我的意图是让我的 static 网站文件(在 React 中,如果这是一个因素)只能通过我的域访问,而不是直接通过 S3 URL 访问。 它似乎在我自己的计算机上工作(虽然这可能是存储桶公开时的 CloudFront 缓存),但其他客户端仅收到 XML 中的 S3 消息。请求没有任何路径的域会给出响应。 请求任何路径(例如 /index.html,我存储桶中的一个文件)都会给出代码 NoSuchKey 的响应。
我究竟做错了什么? 这是当前配置。
编辑:我的存储桶策略(我需要添加其他操作吗? )
{
"Version": "2008-10-17",
"Id": "PolicyForCloudFrontPrivateContent",
"Statement": [
{
"Sid": "1",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity EZOBXXXXXXXXX"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::subdomain.mydomain.com/*"
}
]
}
两个变化使这个工作得很好。 感谢迈克尔的帮助。
sync
命令时,我引用了同一源访问身份的规范用户 ID。 在 package.json 脚本中: "deploy": "aws s3 sync build/ s3://subdomain.mydomain.com --delete --grants read=id=S3CANONICALIDOFORIGINACCESSIDENTITY"
~~/index.html
对我的 CloudFront 分配发出无效通知,然后当我的应用程序似乎没有更新时感到困惑。 我认为这是因为尽管index.html
总是提供给用户,但它从未明确请求。 我的路线看起来像/
或/dashboard
,它们没有失效。 现在,我通过使/*
无效来清除 CloudFront 缓存。编辑:已经有几年了,但我认为 #1 没有必要。 从那时起,我已经设置了多个分配,仅使用存储桶策略定义权限。
除了其他答案提到的解决方案之外,如果其他答案无法解决,还有另一种解决方案肯定可以解决此错误。 在为存储桶创建分配时,您不应从列出存储桶名称的下拉列表中选择源域,而应为自定义域选择 go(通过自己填写),您可以在存储桶的属性选项卡中找到Bucket 网站端点的标题。 您可以在这个问题的已接受答案中找到有关此解决方案的更多详细信息: CloudFront + S3 网站:“指定的键不存在”,当应显示隐式索引文档时
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.