首页 > 解决方案 > s3 和 cloudfront 上的静态托管问题 [OAI]

问题描述

我创建了一个s3存储桶,启用了静态托管。我创建了一个具有访问身份的云端分发FOO

我的目标是拥有一个可以访问 s3(包括路径)的云端发行版,以便为静态网站提供服务。

我的存储桶上的政策是:

{
    "Version": "2012-10-17",
    "Id": "...",
    "Statement": [
        {
            "Sid": "1",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity FOO"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::my-bucket/*"
        }
    ]
}

我更改了 cloufront 发行版上的原始名称以指向我的 s3 托管地址:

my-bucket.s3-website-my-region-1.amazonaws.com

如果我现在访问云端地址,我会得到Access Denied 403.

如果我更改index.htmls3 上文件的权限以向所有人授予读取和列出权限,那么一切正常。

但是,这感觉像是一种 hack,更不用说我必须在部署后修改权限等等。

是否可以在 s3 上使用 OAI 仅通过云端提供静态托管?

标签: amazon-web-servicesamazon-s3devopsamazon-cloudfront

解决方案


使用 Amazon CloudFront 通过 OAI 提供对 Amazon S3 存储桶的访问时,只需在 CloudFront 中选择存储桶,而不是指向网站 URL。

文档说:“对于 Origin 域,请选择您创建的存储桶。”

请参阅:使用 CloudFront 为托管在 Amazon S3 上的静态网站提供服务

如果您希望根 URL 对index.html文件进行默认设置,那么您将需要在 CloudFront 分配上配置此行为,而不是依赖 S3 为您执行此操作。

请参阅:指定默认根对象 - Amazon CloudFront


推荐阅读