我希望使用 S3 存储桶在 AWS 上托管一个静态网站。
我遵循了这些步骤。
该站点是一个带有子目录的普通目录:
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>
。 VPC 中不存在私有 S3 网站或只能通过 VPC 端点访问之类的东西。 要使您的 S3 网站正常运行,您必须将存储桶设置为公共,或使用 CloudFront,它也只能通过互联网访问。但至少当您使用 CloudFront 前置时,您的
存储桶可以是私有的(尽管不是网站本身)。