AWS CloudWatch日志导出到S3时提示PutObject权限错误如何解决?
可行排查方案
- 首先补充存储桶策略里的权限,你当前的PutObject权限缺少
s3:PutObjectAcl,CloudWatch导出日志时需要为写入的对象设置ACL,将对应策略段的Action修改为数组即可:
{ "Sid": "Cloudwatch Log Export 2", "Effect": "Allow", "Principal": { "Service": "logs.eu-central-1.amazonaws.com" }, "Action": ["s3:PutObject", "s3:PutObjectAcl"], "Resource": "arn:aws:s3:::my-bucket/*" }
- 检查S3存储桶的对象所有权配置:如果你的存储桶开启了「禁用ACL(Bucket所有者强制)」,CloudWatch写入时携带的ACL配置会被拒绝,需要将对象所有权调整为「Bucket所有者首选」或「ACL已启用」模式。
- 排查存储桶加密配置:如果存储桶开启了SSE-KMS自定义密钥加密,需要在对应KMS密钥的策略中为
logs.eu-central-1.amazonaws.com服务主体添加kms:GenerateDataKey、kms:Decrypt权限。如果是使用默认的SSE-S3加密则无需额外配置。 - 确认区域一致性:用于导出的S3存储桶必须和你要导出的CloudWatch日志组处于同一个AWS区域,且你策略中填写的服务主体域名后缀的区域和实际区域完全匹配。
- 如果你的存储桶配置了VPC端点策略、访问点限制或组织SCP策略,需要确认对应策略没有阻止CloudWatch Logs服务主体的访问请求。
内容的提问来源于stack exchange,提问作者CryptoPunk5375
相关产品推荐
相关产品推荐

