有没有办法在 AWS S3 上托管静态网站而不提供公共访问权限?

Ama*_*ani 10 cloud hosting amazon-s3 amazon-web-services serverless

我希望在 Amazon S3 上托管一个静态网站,而不实际授予公众对存储桶的访问权限。我正在使用一个客户端AWS帐户,其中所有存储桶都已被阻止公共访问,当我尝试将我的存储桶配置为公共时,它会将我重定向到一个页面,我必须在其中授予对所有存储桶的公共访问权限。

ido*_*ing 8

您可以使用Amazon CloudFront分配来前端静态站点。除了提供集成 CDN 的优势之外,您还可以配置源访问身份,以确保只能通过 CloudFront 访问存储桶,而不能通过公共 S3 访问。


moh*_*hit 3

是的,这是可能的,您所需要做的就是通过cloudfront为s3提供服务​​。\nClient -> Route53 -> Cloudfront -> S3(阻止公共访问)

\n

在云前

\n
    \n
  • 创建 cloudfront 函数(从左侧菜单),这将重定向任何\n附加了 index.html 的请求。例如:example.com/home 到\nexample.com/home/index.html

    \n
    'use strict';\nfunction handler(event) {\n var request = event.request;\n var uri = request.uri;\n\n // Check whether the URI is missing a file name.\n if (uri.endsWith('/')) {\n     request.uri += 'index.html';\n } \n // Check whether the URI is missing a file extension.\n else if (!uri.includes('.')) {\n     request.uri += '/index.html';\n }\n  return request;\n}\n
    Run Code Online (Sandbox Code Playgroud)\n
  • \n
  • 创建源访问(从左侧菜单),这将在\n发行版的源中使用

    \n
  • \n
  • 在发行版中

    \n
      \n
    • 在原点选项卡中

      \n
        \n
      • 通过选择 s3 存储桶将源创建为 S3 类型

        \n
      • \n
      • 单击第一步创建的源访问控制设置

        \n
      • \n
      \n
    • \n
    • 编辑常规设置并将 index.html 放入默认根对象中。

      \n
    • \n
    • 编辑行为,在函数关联中,选择查看器请求中的云前端函数。Don\xe2\x80\x99t 不需要使用 lambda 函数

      \n
    • \n
    \n
  • \n
\n

在S3中

\n
    \n
  • 在属性中,禁用静态 s3 网站托管

    \n
  • \n
  • 在权限中

    \n
      \n
    • 阻止所有公共访问

      \n
    • \n
    • 使用以下内容编辑存储桶策略:

      \n
      {\n   "Version": "2008-10-17",\n   "Id": "PolicyForCloudFrontPrivateContent",\n   "Statement": [\n    {\n        "Sid": "AllowCloudFrontServicePrincipal",\n        "Effect": "Allow",\n        "Principal": {\n            "Service": "cloudfront.amazonaws.com"\n        },\n        "Action": "s3:GetObject",\n        "Resource": "arn:aws:s3:::BUCKET_NAME/*",\n        "Condition": {\n            "StringEquals": {\n                "AWS:SourceArn": "arn:aws:cloudfront::ACC_NUMBER:distribution/DISTRIBUTION_ID"\n            }\n        }\n    }\n   ]\n}\n\n\n\n
      Run Code Online (Sandbox Code Playgroud)\n
    • \n
    \n
  • \n
\n

53号公路内

\n
    \n
  • 通过选择cloudfront distribution创建A记录
  • \n
\n