1

我希望使用 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 知道我在 VPC 内部的同一浏览器访问 AWS 控制台)。

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

1 回答 1

1

S3 静态网站需要公共访问。VPC 中没有私有 S3 网站,也没有只能通过 VPC 终端节点访问的东西。

要使您的 S3 网站正常运行,您必须将存储桶设置为公开,或使用也只能通过 Internet 访问的 CloudFront。但是,当您使用 CloudFront(尽管不是网站本身)将它放在前面时,至少您的存储桶可以是私有的。

于 2021-10-29T00:02:46.953 回答