我正在尝试建立一个主要区域不需要身份验证的网站。但子域需要用户登录。我试图通过在两个 S3 存储桶前面使用 CloudFront 来实现这一目标。我有一个在线获得的 lambda 函数,它将被插入到其中一个行为中。
对于s3,我创建了两个存储桶,一个是www.xxx.com.s3.amazonaws.com,第二个是www.xxx.com.relj.s3-website-us-east-1.amazonaws .com。两个存储桶上均启用静态网站托管。已禁用公共(public)访问,并且主存储桶的存储桶策略为
{
"Version": "2008-10-17",
"Id": "PolicyForCloudFrontPrivateContent",
"Statement": [
{
"Sid": "1",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity EXXXCD2PW2IQU"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::www.xxx.com/*"
}
]
}
另一个存储桶的存储桶策略是
{
"Version": "2008-10-17",
"Id": "PolicyForCloudFrontPrivateContent",
"Statement": [
{
"Sid": "1",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity EXXXCD2PW2IQU"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::www.xxx.com.relj/*"
}
]
}
对于我的云前端设置,我有两个源:www.xxx.com.s3.amazonaws.com 和 www.xxx.com.relj.s3-website-us-east-1.amazonaws.com。我设置了三种行为,一种是默认的,另一种是/,最后一种是 relj/。最后一个指向 www.xxx.com.relj.s3-website-us-east-1.amazonaws.com 并附加了 lambda 函数。
当我访问主站点 dXXjxu7k28es7y.cloudfront.net 时,我可以看到我的网站。但是当我执行 dXXjxu7k28es7y.cloudfront.net/relj/index.html 时,我看到登录提示。输入正确的用户名和密码后,它给了我 403。我什至尝试将 relj 存储桶中的所有内容作为公共(public),我仍然无法通过 dXXjxu7k28es7y.cloudfront.net/relj/index.html 访问它。我可以从 https://s3.amazonaws.com/www.xxx.com.relj/index.html 访问它。
响应是
403, Forbidden
date: Sat, 27 Jan 2018 01:15:07 GMT
x-amz-error-code: AccessDenied
last-modified: Fri, 26 Jan 2018 22:23:50 GMT
server: AmazonS3
etag: "b5aa4b118fdf2980dd7e4d7d81db9a08"
x-amz-error-message: Access Denied
content-type: text/html
via: 1.1 bdfe34c94134f86b07ebb7714d12d095.cloudfront.net (CloudFront)
x-cache: Error from cloudfront
connection: keep-alive
content-length: 51
x-amz-cf-id: hRebSOcNA38KGcXkA2LrzXftvqxaSB7ffVqbqcrWj0_2rQua9aQAkA==
我是 AWS 新手,所以所有这些政策对我来说都是新的。据我所知,lambda 执行后到达了 url。我可以提供更多信息。感谢您的阅读。
最佳答案
为以下内容回复此旧帖子:
就我而言,我有两个 s3 起源 其中之一我配置了默认行为 qa/*
我遇到的问题是默认将完整路径转发到存储桶 例如请求 myurl.com/qa/xxx.html 将对 qa/xxx.html 的请求转发到我的 qa 源,我只希望转发 xxx.html
我将文件移至第二个原始存储桶上的 qa 文件夹中以进行快速修复
关于amazon-s3 - CloudFront 为第二个源提供 403,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48471010/