AWS CloudFront Supported HTTP Method

貌似 CloudFront 不支持 PROPFIND 方法,文档中也未提及,为此前来验证是否如此

自定义源的请求和响应行为 - Amazon CloudFront

CloudFront 如何支持 PROPFIND 方法 - V2EX

思路

很简单

CloudFrront 配置标准/实时日志 --> S3 存储桶 --> 分析日志

实验步骤

创建 S3 通用存储桶

您的 AWS 账户必须对您为日志文件指定的存储桶拥有以下权限:

  • 存储桶的 S3 访问控制列表 (ACL) 必须向您授予 FULL_CONTROL。如果您是存储桶拥有者,则默认情况下,您的账户具有此权限。如果您不是,则存储桶拥有者必须更新存储桶的 ACL。
  • s3:GetBucketAcl
  • s3:PutBucketAcl

想附着存储桶策略至存储桶上以替代 ACL,但是不行,文档中有说且也查过 Stack Overflow

从 2023 年 4 月开始,您将需要为用于 CloudFront 标准日志的新 S3 存储桶启用 S3 访问控制列表 (ACL)。ACL 可以在存储桶创建步骤中启用,也可以在创建存储桶之后启用。

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"
                }
            }
        }
    ]
}

为S3存储桶启用ACL

查看ACL权限是否添加成功

为对应CloudFront分配启用日志

若是启用实时日志较为复杂,此处不选择启用实时日志,仅使用标准日志

CloudFront --> 遥测 --> 选取相应 distribution --> 启用标准日志

为分配启用标准日志

启用标准日志较为简单,隔几分钟后即可在 S3 存储桶中获取到上传的日志

已获取到上传至S3的日志文件

分析日志

分析log

在 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    -    -

完整标准LOG日志下载

实验结果

CloudFront 不支持 WebDav 的 PROPFIND 方法

参考资料

自定义源的请求和响应行为 - Amazon CloudFront

配置和使用标准日志(访问日志) - Amazon CloudFront

CloudFront 如何支持 PROPFIND 方法 - V2EX

amazon web services - Enable S3 ACL access for CloudFront logs - Stack Overflow

最后修改:2024 年 05 月 22 日
如果觉得我的文章对你有用,请随意赞赏