使用 CloudFront 提供存储在 S3 中的静态内容/文件不起作用

问题描述 投票:0回答:1

我正在尝试设置 CloudFront 和 S3 来提供我网站的静态内容。简而言之,它不起作用。请在下面查看我到目前为止所做的事情。

首先,我创建了一个禁用所有公共访问的 S3 存储桶。

然后我创建了一个 CloudFront 分配,选择我的 S3 作为源域。

这里有趣的是,AWS 控制台一直向我显示警告,要求我在创建分发(针对 OAC)后自行更新存储桶策略。但它不会自动更新存储桶。

所以在我创建分配后,我更新了存储桶的策略如下。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowCloudFrontServicePrincipalReadWrite",
            "Effect": "Allow",
            "Principal": {
                "Service": "cloudfront.amazonaws.com"
            },
            "Action": [
                "s3:GetObject",
                "s3:PutObject"
            ],
            "Resource": "arn:aws:s3:::men-mvc-local/*",
            "Condition": {
                "StringEquals": {
                    "AWS:SourceArn": "arn:aws:cloudfront::xxxx-9609-xxxx:distribution/E1L6NWB7YV5XXX"
                }
            }
        }

然后我尝试使用在浏览器中粘贴以下 URL 的云端 URL 访问存储桶中的文件。

https://dl2j5zcr9xpi4.cloudfront.net/my-image.png

我还是没看到图像。

我的配置有什么问题,我该如何解决?

amazon-web-services amazon-s3 amazon-cloudfront
1个回答
0
投票

我立即注意到的一件事是,在使用 CloudFront/S3 时,最好使用他们为存储桶设置的自定义域:{BUCKETNAME}.s3-website-{REGION}.amazonaws.com.

AWS 在我最近针对类似项目关注的文档中对此进行了详细说明。我会使用它仔细检查您的步骤:https://repost.aws/knowledge-center/cloudfront-serve-static-website

另外,你从哪里得到那个桶政策?您的用例是否需要 PutObject?

© www.soinside.com 2019 - 2024. All rights reserved.