我正在尝试寻找一种解决方案,以将.gz格式的ALB日志文件从ALB自动上传到S3。
我的存储桶结构是这样的
/log-bucket
..alb-1/AWSLogs/account-number/elasticloadbalancing/ap-northeast-1/2018/log.gz
..alb-2/AWSLogs/account-number/elasticloadbalancing/ap-northeast-1/2018/log.gz
..alb-3/AWSLogs/account-number/elasticloadbalancing/ap-northeast-1/2018/log.gz
基本上,每5分钟,每个ALB都会自动将日志推送到对应的S3存储桶。我想立即在同一存储桶中提取新的.gz文件。
有什么办法可以解决这个问题?
我注意到我们可以使用Lambda函数,但不确定从哪里开始。示例代码将不胜感激!
答案 0 :(得分:3)
您的最佳选择可能是让AWS Lambda函数订阅了S3事件。每当创建新对象时,都会触发此Lambda函数。然后,Lambda函数可以从S3读取文件,提取文件,将提取的数据写回到S3并删除原始文件。
Using AWS Lambda with Amazon S3中对此进行了说明。
也就是说,如果您确实需要在S3中存储未压缩的日志,则可能还需要重新考虑。压缩文件不仅便宜,因为它们不占用未压缩文件的存储空间,而且通常处理起来也更快,因为在大多数情况下,瓶颈在于传输数据的网络带宽和不可用的CPU资源。减压。大多数工具还支持直接使用压缩文件。以Amazon Athena(Compression Formats)或Amazon EMR(How to Process Compressed Files)为例。