无法从 VPC 内访问托管在 S3 存储桶上的静态网站
Cannot access static website hosted on S3 bucket, from within VPC
我希望使用 S3 存储桶在 AWS 上托管静态网站。
我遵循了 these 个步骤。
该站点是包含子目录的普通目录:
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
的值。
我按照 these 步骤设置 VPC 端点。
但我仍然无法在我的浏览器上访问该站点(我假设是因为我正在使用 AWS 知道我在 VPC 中的同一浏览器访问 AWS 控制台)。
<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>blahblahblah</RequestId>
<HostId>blahblahblah</HostId>
</Error>
S3 静态网站需要public访问权限。 VPC 中没有私有 S3 网站或只能通过 VPC 端点访问。
要使您的 S3 网站正常运行,您必须将存储桶设置为 public,或使用同样只能通过互联网访问的 CloudFront。但至少当您使用 CloudFront(尽管不是网站本身)时,您的 存储桶可以是私有的 。
我希望使用 S3 存储桶在 AWS 上托管静态网站。
我遵循了 these 个步骤。
该站点是包含子目录的普通目录:
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
的值。
我按照 these 步骤设置 VPC 端点。
但我仍然无法在我的浏览器上访问该站点(我假设是因为我正在使用 AWS 知道我在 VPC 中的同一浏览器访问 AWS 控制台)。
<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>blahblahblah</RequestId>
<HostId>blahblahblah</HostId>
</Error>
S3 静态网站需要public访问权限。 VPC 中没有私有 S3 网站或只能通过 VPC 端点访问。
要使您的 S3 网站正常运行,您必须将存储桶设置为 public,或使用同样只能通过互联网访问的 CloudFront。但至少当您使用 CloudFront(尽管不是网站本身)时,您的 存储桶可以是私有的 。