有什么方法可以在不提供 public 访问权限的情况下在 AWS S3 上托管静态网站?
Is there any way to host a static wesbite on AWS S3 without giving public access?
我希望在 Amazon S3 上托管一个静态网站,而不实际授予 public 存储桶的访问权限。我正在使用一个客户端 AWS 帐户,其中所有存储桶都被 public 访问阻止,当我尝试将我的存储桶配置为 public 时,它会将我重定向到我必须授予 public 权限的页面] 访问所有存储桶。
关于托管静态站点的 1 个 S3 存储桶,您可以在权限选项卡下添加存储桶策略,允许或禁止 IP 地址。这里有一些很好的例子,我添加了一个允许某些 IP 的简化示例。在这种情况下,授予对其他账户的 VPC NAT 网关 IP 地址的访问权限应该可行。 https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html
{
"Id":"PolicyId54",
"Version":"2012-10-17",
"Statement":[
{
"Sid":"AllowIPmix",
"Effect":"Allow",
"Principal":"*",
"Action":"s3:*",
"Resource": [
"arn:aws:s3:::DOC-EXAMPLE-BUCKET",
"arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
],
"Condition": {
"IpAddress": {
"aws:SourceIp": [
"54.240.143.0/24",
"2001:DB8:1234:5678::/64"
]
}
}
}
]
}
请注意,您仍然关闭“阻止 public 访问”以及上述政策。
您可以在静态站点前面加上一个 Amazon CloudFront distribution. In addition to providing the benefits of an integrated CDN, you can configure an Origin Access Identity,确保只能通过 CloudFront 访问存储桶,而不能通过 public S3。
与@PaulG 所说的类似,您还可以包含一个包含 sourceVpc
条件的存储桶策略,它允许您为存储桶设置一个 vpc 端点,并且只能从该 VPC 访问该存储桶。我记得几个月前测试过这个设置,它只能从 vpc 访问网站。
我希望在 Amazon S3 上托管一个静态网站,而不实际授予 public 存储桶的访问权限。我正在使用一个客户端 AWS 帐户,其中所有存储桶都被 public 访问阻止,当我尝试将我的存储桶配置为 public 时,它会将我重定向到我必须授予 public 权限的页面] 访问所有存储桶。
关于托管静态站点的 1 个 S3 存储桶,您可以在权限选项卡下添加存储桶策略,允许或禁止 IP 地址。这里有一些很好的例子,我添加了一个允许某些 IP 的简化示例。在这种情况下,授予对其他账户的 VPC NAT 网关 IP 地址的访问权限应该可行。 https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html
{
"Id":"PolicyId54",
"Version":"2012-10-17",
"Statement":[
{
"Sid":"AllowIPmix",
"Effect":"Allow",
"Principal":"*",
"Action":"s3:*",
"Resource": [
"arn:aws:s3:::DOC-EXAMPLE-BUCKET",
"arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
],
"Condition": {
"IpAddress": {
"aws:SourceIp": [
"54.240.143.0/24",
"2001:DB8:1234:5678::/64"
]
}
}
}
]
}
请注意,您仍然关闭“阻止 public 访问”以及上述政策。
您可以在静态站点前面加上一个 Amazon CloudFront distribution. In addition to providing the benefits of an integrated CDN, you can configure an Origin Access Identity,确保只能通过 CloudFront 访问存储桶,而不能通过 public S3。
与@PaulG 所说的类似,您还可以包含一个包含 sourceVpc
条件的存储桶策略,它允许您为存储桶设置一个 vpc 端点,并且只能从该 VPC 访问该存储桶。我记得几个月前测试过这个设置,它只能从 vpc 访问网站。