遵循亚马逊网络服务推荐的最佳实践,我们将组织范围内的CloudTrail和VPC流日志记录配置为记录到集中式日志归档帐户。由于CloudTrail和私有网络流量分布在多个区域,因此我们每天都会收到大量保存到S3的新日志文件。这些文件中的大多数都非常小(几KB)。
在STANDARD存储类中,大量的小日志文件没有问题,因为您只需为总数据大小付费,而不会产生任何最小文件大小开销。然而,我们发现在6个月或12个月后对这些文件进行深度归档很有挑战性,因为除STANDARD (如GLACIER)以外的任何存储类都有一个最小可计费文件大小(STANDARD-IA为128,GLACIER没有最小大小,但每个对象添加40KB的元数据,等等)。
归档大量小型S3对象的最佳实践是什么?我可以使用Lambda来下载多个文件,将它们重新捆绑到一个更大的文件中,然后重新存储它,但这在计算时间和GET/PUT请求方面将非常昂贵。据我所知,S3批处理操作不支持这一点。有什么建议吗?
发布于 2021-07-31 20:51:49
考虑使用像S3-utils concat这样的工具。这不是AWS支持的工具,而是用于执行您需要的操作类型的开源工具。
您可能需要模式匹配语法,它允许您为每天的日志创建单个文件。
$ s3-utils concat my.bucket.name 'date-hierachy/(\d{4})/(\d{2})/(\d{2})/*.gz' 'flat-hierarchy/$1-$2-$3.gz'这可以作为每日作业运行,因此每天都被压缩到一个文件中。为了提高文件传输性能,避免数据传出费用,强烈建议在亚马逊网络上的资源(即您的连接了s3网关端点的私有网络)中运行。
https://stackoverflow.com/questions/68605652
复制相似问题