貌似 CloudFront 不支持 PROPFIND 方法,文档中也未提及,为此前来验证是否如此
自定义源的请求和响应行为 - Amazon CloudFront
CloudFront 如何支持 PROPFIND 方法 - V2EX
思路
很简单
CloudFrront 配置标准/实时日志 --> S3 存储桶 --> 分析日志
实验步骤
创建 S3 通用存储桶
您的 AWS 账户必须对您为日志文件指定的存储桶拥有以下权限:
- 存储桶的 S3 访问控制列表 (ACL) 必须向您授予
FULL_CONTROL
。如果您是存储桶拥有者,则默认情况下,您的账户具有此权限。如果您不是,则存储桶拥有者必须更新存储桶的 ACL。 s3:GetBucketAcl
s3:PutBucketAcl
想附着存储桶策略至存储桶上以替代 ACL,但是不行,文档中有说且也查过 Stack Overflow
amazon web services - Enable S3 ACL access for CloudFront logs - Stack Overflow
这就很搞笑了,一边 AWS 要你不要启用 ACL,一边又在文档里写需要启用 ACL(亦或是我存储桶策略未写正确?)
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement1",
"Effect": "Allow",
"Principal": {
"Service": "delivery.logs.amazonaws.com"
},
"Action": [
"s3:*"
],
"Resource": "arn:aws:s3:::cdn-logbin",
"Condition": {
"StringEquals": {
"aws:SourceAccount": "051027311451",
"aws:SourceArn": "arn:aws:cloudfront::051027311451:distribution/E34O1T40DNK0B5"
}
}
}
]
}
为对应CloudFront分配启用日志
若是启用实时日志较为复杂,此处不选择启用实时日志,仅使用标准日志
CloudFront --> 遥测 --> 选取相应 distribution --> 启用标准日志
启用标准日志较为简单,隔几分钟后即可在 S3 存储桶中获取到上传的日志
分析日志
在 Windows 文件管理器上访问 WebDav,403 错误
#Version: 1.0
#Fields: date time x-edge-location sc-bytes c-ip cs-method cs(Host) cs-uri-stem sc-status cs(Referer) cs(User-Agent) cs-uri-query cs(Cookie) x-edge-result-type x-edge-request-id x-host-header cs-protocol cs-bytes time-taken x-forwarded-for ssl-protocol ssl-cipher x-edge-response-result-type cs-protocol-version fle-status fle-encrypted-fields c-port time-to-first-byte x-edge-detailed-result-type sc-content-type sc-content-len sc-range-start sc-range-end
2024-05-19 06:54:51 NRT20-P2 1444 2409:8a7c:224:8410:f4e9:deea:1f3c:475f PROPFIND do6xulipqwkdq.cloudfront.net /dav 403 - Microsoft-WebDAV-MiniRedir/10.0.22635 - - Error QARrD9E-uIyGWl7gHmGbnuTMm_6LDQ5HZgz_PKYk1XV-mqippGhJ-A== drive.microcharon.com https 91 0.000 - TLSv1.3 TLS_AES_128_GCM_SHA256 Error HTTP/2.0 - - 58725 0.000 InvalidRequestMethod text/html 1053 - -
实验结果
CloudFront 不支持 WebDav 的 PROPFIND 方法
参考资料
自定义源的请求和响应行为 - Amazon CloudFront
配置和使用标准日志(访问日志) - Amazon CloudFront
CloudFront 如何支持 PROPFIND 方法 - V2EX
amazon web services - Enable S3 ACL access for CloudFront logs - Stack Overflow