CloudFront 源路径和缓存行为交互
CloudFront Origin Path and Cache Behavior interaction
我将 CloudFront 分配设置为指向 S3 存储桶。我的 S3 存储桶有一个版本化的文件路径(例如,http://example.s3.us-east-1.amazonaws.com/static/ui/v5.53.3/)。我想配置一个只匹配 /static/ui/*
路径的缓存行为,但我希望对我的来源的所有请求都具有路径 /static/ui/v5.53.3
。我试图将我的缓存行为的路径模式设置为 /static/ui/*
并将我的原始路径设置为 /v5.53.3
,但这似乎不起作用。
如何使用 CloudFront 配置它?
Origin path
If you want CloudFront to always request content from a particular directory in the origin, enter the directory path, beginning with a forward slash (/). Do not add a slash (/) at the end of the path. CloudFront appends the directory path to the origin domain name.
在您的例子中,源域名是example.s3.us-east-1.amazonaws.com
。所以你源看到的请求是example.s3.us-east-1.amazonaws.com/v5.53.3/*
。这就是它不起作用的原因。
事实上,截至 2022 年 5 月,如果不使用 Lambda@Edge,这是不可能实现的。您必须在 Lambda 中进行自定义 URL 重写。
我将 CloudFront 分配设置为指向 S3 存储桶。我的 S3 存储桶有一个版本化的文件路径(例如,http://example.s3.us-east-1.amazonaws.com/static/ui/v5.53.3/)。我想配置一个只匹配 /static/ui/*
路径的缓存行为,但我希望对我的来源的所有请求都具有路径 /static/ui/v5.53.3
。我试图将我的缓存行为的路径模式设置为 /static/ui/*
并将我的原始路径设置为 /v5.53.3
,但这似乎不起作用。
如何使用 CloudFront 配置它?
Origin path
If you want CloudFront to always request content from a particular directory in the origin, enter the directory path, beginning with a forward slash (/). Do not add a slash (/) at the end of the path. CloudFront appends the directory path to the origin domain name.
在您的例子中,源域名是example.s3.us-east-1.amazonaws.com
。所以你源看到的请求是example.s3.us-east-1.amazonaws.com/v5.53.3/*
。这就是它不起作用的原因。
事实上,截至 2022 年 5 月,如果不使用 Lambda@Edge,这是不可能实现的。您必须在 Lambda 中进行自定义 URL 重写。