无法从VPC内访问S3桶上托管的静态网站



我希望在AWS上托管一个静态网站,使用S3桶。

我遵循了这些步骤。

该站点是一个带有子目录的普通目录:

app
│   index.html   
└───scripts
│   │   things.js
│   │   stuff.js
└───images
│   img1.png
│   img2.jpg

我想让网站只对VPC内的人访问. 我将以下类型的策略附加到保存站点文件的桶(添加我的特定桶名和VPC id):

{
"Version": "2012-10-17",
"Id": "Policy1415115909152",
"Statement": [
{
"Sid": "Access-to-specific-VPCE-only",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my_bucket*",
"Condition": {
"StringEquals": {
"aws:sourceVpce": "vpce-blahblahblah"
}
}
}
]
}

我还设置了一个VPC端点,端点ID设置为桶策略内aws:sourceVpce的值。

我按照以下步骤设置VPC端点。

但是我仍然无法在我的浏览器上访问这个站点(我假设因为我使用相同的浏览器访问AWS控制台,AWS知道我在VPC内)。

<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>blahblahblah</RequestId>
<HostId>blahblahblah</HostId>
</Error>

S3静态网站需要公共访问. 在VPC中不存在私有S3网站,也不存在只能通过VPC端点访问的私有S3网站。

要使你的S3网站工作,你必须将你的bucket设置为public,或者使用CloudFront,它也只能通过互联网访问。但至少你的桶可以是私有的当你使用CloudFront(虽然不是网站本身)。

最新更新