我创建了一个存储桶来托管静态站点,并创建了一个重定向规则以在请求的文件不存在时重定向到 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 规则的任何想法?
谢谢!
答案 0 :(得分:0)
通常,如果您使用 CloudFront 进行分配,您不希望为静态网站配置 S3 存储桶,因为访问存储桶的是 CloudFront,而不是最终用户。
您可能想要使用带有 CloudFront 的私有 S3 存储桶,并使用 CloudFront 的边缘 trigger functions 来处理不存在的文件/路径。
This AWS article 讨论了一些选项。我建议使用“REST API”选项之一。