如何排查将弹性负载均衡访问日志上传到 Amazon S3 存储桶时的权限问题?
上次更新日期:2022 年 5 月 16 日
我在将弹性负载均衡访问日志上传到 Amazon Simple Storage Service(Amazon S3)存储桶时收到错误。如何排查此问题?
简短描述
要对负载均衡器使用访问日志,负载均衡器和 Amazon S3 存储桶必须位于同一账户中。您还必须将存储桶策略附加到 Amazon S3 存储桶,以允许 ELB 对存储桶的写入权限。根据您收到的错误消息,请参阅解决方法的相关部分。
注意:Network Load Balancers(NLB)仅支持传输层安全性(TLS)侦听器的访问日志。该日志包含有关向 Network Load Balancer 发出的 TLS 请求的信息。不支持传输控制协议(TCP)。
解决方法
“S3Bucket: my-access-log-bucket is not located in the same region with ELB: app/my-load-balancer/50dc6c495c0c9188(S3Bucket:my-access-log-bucket 与 ELB 不在同一区域:app/my-load-balancer/50dc6c495c0c9188)”
此错误表示您的 Amazon S3 存储桶和负载不在同一区域中。Amazon S3 存储桶可以位于不同的区域,但必须与负载均衡器位于同一账户中。
“Access Denied for bucket: my-access-log-bucket.Please check S3bucket permission(存储桶的访问被拒绝:my-access-log-bucket。请检查 S3bucket 权限)”
此错误表示 Amazon S3 存储桶没有授予写入访问日志权限的策略。
要解决此错误,请验证存储桶策略是否授予将日志写入存储桶的权限。确认您的存储桶名称和前缀的占位符是否正确。根据负载均衡器的区域,确认您拥有用于弹性负载均衡的 AWS 账户的正确 ID。
有关所需权限的更多信息,请参阅:
- Application Load Balancer:存储桶权限
- Network Load Balancer:存储桶要求
- Classic Load Balancer:将策略附加到 S3 存储桶
如果您使用的是加密存储桶,请确保使用 Amazon S3 托管的加密密钥(SSE-S3)。Network Load Balancer 访问日志不支持其他加密方法,例如 AWS KMS 密钥。
“The requested bucket name is not available.The bucket namespace is shared by all users of the system.Please select a different name and try again.(请求的存储桶名称不可用。存储桶命名空间由系统的所有用户共享。请选择其他名称,然后重试。)”
如果您收到此错误,请验证您的访问日志存储桶前缀不包含“AWSLogs”。
其他问题排查
如果您验证了 S3 存储桶策略和配置,但仍无法查看日志,请验证负载均衡器是否正在接收流量。要验证负载均衡器是否正在接收流量,请检查 ActiveConnectionCount 和 RequestCount 指标。