适用于Network Load Balancer访问日志的正确S3桶策略是什么?
适用于Network Load Balancer(NLB)访问日志的S3桶策略
针对us-west-2区域的NLB,正确的S3桶策略如下:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::027434742980:root" }, "Action": [ "s3:PutObject", "s3:PutObjectAcl" ], "Resource": "arn:aws:s3:::hm-elastic-load-balancer-bucket/*" }, { "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::hm-elastic-load-balancer-bucket/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control" } } } ] }
关键说明:
- 区域特定日志账户:us-west-2区域的NLB日志交付使用AWS账户ID
027434742980,这与Application Load Balancer(ALB)使用的账户ID不同,这是你之前策略报错的核心原因。 - 必要权限:除了
s3:PutObject,还需要授予s3:PutObjectAcl权限,确保S3桶所有者对日志对象拥有完全控制权。 - 服务主体与条件约束:添加
delivery.logs.amazonaws.com服务主体,并通过s3:x-amz-acl条件强制日志对象的ACL为bucket-owner-full-control,避免日志对象归属权问题。
额外注意事项:
- 确保S3桶与NLB位于同一区域(us-west-2),AWS不支持跨区域交付负载均衡器日志。
- 检查桶的名称与策略中
Resource字段的路径完全匹配,避免拼写错误。 - 确认桶没有其他冲突的权限配置(如桶ACL、IAM策略限制),影响日志交付权限。
内容的提问来源于stack exchange,提问作者Hongbo Miao
相关产品推荐
相关产品推荐

