当我设置弹性负载均衡 (ELB) 访问日志以使用 Amazon Simple Storage Service (Amazon S3) 存储桶时,我收到了错误。
简短描述
要将访问日志与负载均衡器一起使用,您必须将存储桶策略附加到 Amazon S3 存储桶。存储桶策略必须包含 ELB 写入存储桶所需的权限。
**注意:**网络负载均衡器仅支持传输层安全性协议 (TLS) 侦听器的访问日志。访问日志包含有关向网络负载均衡器发出的 TLS 请求的信息。网络负载均衡器不支持传输控制协议 (TCP)。
解决方法
AWS 区域存储桶错误
您会收到以下错误消息:“S3 存储桶 (my-access-log-bucket) 和 ELB (app/my-load-balancer/50dc6c495c0c9188) 不在同一区域”。
当您的 Amazon S3 存储桶和负载均衡器不位于同一 AWS 区域时,将会发生此错误。Amazon S3 存储桶可位于不同的 AWS 账户中,但必须与负载均衡器位于同一区域。
要解决此问题,请将 S3 存储桶移至与负载均衡器相同的区域。
存储桶权限错误
您会收到以下错误消息:“对存储桶 (my-access-log-bucket) 的访问被拒绝。请检查 S3 存储桶权限”。
当 Amazon S3 存储桶没有授予写入访问日志权限的策略时,将会发生此错误。
要解决此问题,请向 S3 存储桶附加一个存储桶策略,以授予 ELB 将日志写入存储桶的权限。确认存储桶的名称和前缀具有正确的占位符。此外,请根据负载均衡器所在的区域,确认您拥有适用于 ELB 的账户的正确 ID。
有关所需权限的详细信息,请参阅以下主题:
要对 ELB 的访问日志进行加密,您可以使用具有 Amazon S3 托管式密钥的服务器端加密 (SSE-S3)。此外,网络负载均衡器支持使用 AWS Key Management Service (AWS KMS) 客户自主管理型密钥来加密访问日志。但是,您不能使用 AWS KMS 托管式密钥来加密 ELB 访问日志。
存储桶命名空间错误
您会收到以下错误消息:“'access_logs.s3.prefix' 的值不能以 'AWSLogs' 开头”。
当访问日志的 S3 存储桶前缀包含 AWSLogs 时,将会出现此错误。要解决此问题,请从访问日志的 S3 存储桶前缀中删除 AWSLogs。
其他故障排除
如果您的 S3 存储桶策略和配置均正确,但仍然无法查看日志,请验证负载均衡器是否可以接收流量。检查负载均衡器指标 ActiveConnectionCount 和 RequestCount。