为 CloudFront 日志启用 S3 ACL 访问

use*_*660 21 amazon-s3 amazon-web-services amazon-cloudfront

我尝试做的是通过AWS控制台为CloudFront发行版启用标准日志记录,如下图所示:

AWS 控制台

我设置了以下 S3 存储桶策略:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::931426637260:user/relu"
            },
            "Action": [
                "s3:GetBucketAcl",
                "s3:PutBucketAcl"
            ],
            "Resource": "arn:aws:s3:::[...]"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

“阻止所有公共访问”已关闭。

不过,我不断收到此错误:

您为 CloudFront 日志指定的 S3 存储桶未启用 ACL 访问:[...].s3.amazonaws.com

即使我尝试以 root 用户身份启用日志记录,也会收到此错误。

有人知道可能出了什么问题吗?

use*_*660 31

看来我必须在这里启用 ACL:

在此输入图像描述


Cla*_*ude 23

从 2023 年 4 月开始,您将需要为用于 CloudFront 标准日志的新 S3 存储桶启用 S3 访问控制列表 (ACL)

(截屏) AWS 上的消息

(尽管AWS同时告诉您不建议启用ACL

S3 中的大多数现代用例不再需要使用 ACL,我们建议您禁用 ACL

据我所知,在将 CloudFront 日志放入存储桶时,无法遵守第二条消息/建议(禁用 ACL)。

如果您使用的是 UI,请参阅user3429660 的回答

如果有人正在寻找如何在 CloudFormation 中执行此操作:

  Bucket:
    Type: AWS::S3::Bucket
    Properties: 
      OwnershipControls:
        Rules:
          - ObjectOwnership: BucketOwnerPreferred
      [....]
Run Code Online (Sandbox Code Playgroud)

(或者使用ObjectOwnership: ObjectWriter

这就是所需要的全部;即使使用 CloudFormation,CloudFront Logger 也会自动将自身添加到 ACL(只要它们已启用)。