Ama*_*ani 10 cloud hosting amazon-s3 amazon-web-services serverless
我希望在 Amazon S3 上托管一个静态网站,而不实际授予公众对存储桶的访问权限。我正在使用一个客户端AWS帐户,其中所有存储桶都已被阻止公共访问,当我尝试将我的存储桶配置为公共时,它会将我重定向到一个页面,我必须在其中授予对所有存储桶的公共访问权限。
您可以使用Amazon CloudFront分配来前端静态站点。除了提供集成 CDN 的优势之外,您还可以配置源访问身份,以确保只能通过 CloudFront 访问存储桶,而不能通过公共 S3 访问。
是的,这是可能的,您所需要做的就是通过cloudfront为s3提供服务。\nClient -> Route53 -> Cloudfront -> S3(阻止公共访问)
\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}\nRun Code Online (Sandbox Code Playgroud)\n创建源访问(从左侧菜单),这将在\n发行版的源中使用
\n在发行版中
\n在原点选项卡中
\n通过选择 s3 存储桶将源创建为 S3 类型
\n单击第一步创建的源访问控制设置
\n编辑常规设置并将 index.html 放入默认根对象中。
\n编辑行为,在函数关联中,选择查看器请求中的云前端函数。Don\xe2\x80\x99t 不需要使用 lambda 函数
\n在S3中
\n在属性中,禁用静态 s3 网站托管
\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\nRun Code Online (Sandbox Code Playgroud)\n53号公路内
\n| 归档时间: |
|
| 查看次数: |
7087 次 |
| 最近记录: |