S3 和 Cloudfront 中的重定向规则

时间:2021-07-22 19:14:18

标签: amazon-web-services amazon-s3 amazon-cloudfront

我创建了一个存储桶来托管静态站点,并创建了一个重定向规则以在请求的文件不存在时重定向到 lambda 函数

    {
        "Condition": {
            "HttpErrorCodeReturnedEquals": "404"
        },
        "Redirect": {
            "HostName": "xxx.execute-api.us-west-1.amazonaws.com",
            "HttpRedirectCode": "307",
            "Protocol": "https",
            "ReplaceKeyPrefixWith": "write?file="
        }
    }
]

测试这个 S3 可以正常工作。如果文件不存在,它会显示重定向到我的 lambda 函数的文件。但是当我在遇到不存在的同一个文件时将 cloudfront 放在 S3 存储桶前面时,我没有得到重定向,但是我收到 AccessDenied 错误(不确定这是来自 s3 还是 cloudfront ) 如何让 Cloudfront 遵守 S3 规则的任何想法?

谢谢!

1 个答案:

答案 0 :(得分:0)

通常,如果您使用 CloudFront 进行分配,您不希望为静态网站配置 S3 存储桶,因为访问存储桶的是 CloudFront,而不是最终用户。

您可能想要使用带有 CloudFront 的私有 S3 存储桶,并使用 CloudFront 的边缘 trigger functions 来处理不存在的文件/路径。

This AWS article 讨论了一些选项。我建议使用“REST API”选项之一。

相关问题