CloudFront 忽略来自 S3 的 Cache-Control header

CloudFront ignoring Cache-Control header from S3

CloudFront 没有驱逐我的 objects,而它应该:

(这是 this one 的反向问题,其中 CloudFront 有权提前驱逐 objects。)

这是一个典型的 session:

% curl -v -o /dev/null https://mycfdomain.me/file.json
< HTTP/2 200
< content-type: application/json
< content-length: 64
< date: Fri, 04 Dec 2020 13:17:32 GMT
< last-modified: Fri, 04 Dec 2020 04:08:04 GMT
< etag: "782c85948b6f309eaa1a483e5a535ecf"
< cache-control: public; max-age=60
< x-amz-version-id: XE56pcaQJCG.M_UGK2T_.eWgDMtOggZt
< accept-ranges: bytes
< server: AmazonS3
< x-cache: Hit from cloudfront
< via: 1.1 c1caaceb6655a57ae014aef7bc8ec389.cloudfront.net (CloudFront)
< x-amz-cf-pop: SFO20-C1
< x-amz-cf-id: C2YhfjBOOMpwpkxEg49vlP14vk4ijEsYNgXwkJdcIoK4YjsaqkCLxg==
< age: 327
<

它在 object 上返回,它坦率地承认是 over-age(327 秒),声称它是“来自云端的命中”,它不应该是。

这里是等效的 session,直接进入 S3。

 c % curl -v https://mys3domain.s3.amazonaws.com/file.json
< HTTP/1.1 200 OK
< x-amz-id-2: I7mSgXtStAW7cgMqzxFvYwG78lH+BjjXp1pwuzdSYFwaK0w9s6v6IKGJVbuHY9DP6xkmvIvDnbg=
< x-amz-request-id: 6D366A4F89FBD06D
< Date: Fri, 04 Dec 2020 13:25:46 GMT
< Last-Modified: Fri, 04 Dec 2020 13:21:23 GMT
< ETag: "587bcf7b0f22d8b128b0f826e93bf18b"
< Cache-Control: public; max-age=10
< x-amz-version-id: iaHtXqm0jurqDyq2kyNDM1yShpyMaM7c
< Accept-Ranges: bytes
< Content-Type: application/json
< Content-Length: 117
< Server: AmazonS3
<

我检查了我正在使用的 CF cache-policy 上的最小 TTL:它被设置为 1 秒(这不重要,因为设置了 Cache-Control。)

错误在这里:

< Cache-Control: public; max-age=10

应该是逗号,不是分号,像这样:

< Cache-Control: public, max-age=10