代码之家  ›  专栏  ›  技术社区  ›  Cybernetic

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

  •  0
  • Cybernetic  · 技术社区  · 3 年前

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

    我紧随其后 these 步骤。

    该站点是一个常见的目录,包含子目录:

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

    我想让网站只对人们开放 在我们的专有网络内 。我在存放站点文件的bucket中附加了以下类型的策略(添加了我的特定bucket名称和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端点如下 these 步骤。

    但我仍然无法在浏览器上访问此网站(我假设,由于我使用的浏览器与AWS所知的浏览器相同,所以我在VPC内)。

    <Error>
        <Code>AccessDenied</Code>
        <Message>Access Denied</Message>
        <RequestId>blahblahblah</RequestId>
        <HostId>blahblahblah</HostId>
    </Error>
    
    0 回复  |  直到 3 年前
        1
  •  2
  •   Marcin    3 年前

    S3静态网站 要求公众访问 。专有网络中不存在私有的S3网站,也不存在只能通过专有网络端点访问的S3网站。

    要使S3网站正常工作,您必须将bucket设置为public,或者使用只能通过互联网访问的CloudFront。但至少你 bucket可以是私有的 当您使用CloudFront(尽管不是网站本身)转发它时。

    推荐文章