在我走下这个兔子洞之前,有没有人试过这个? 这是疯了吗?
假设我想在Amazon S3中放置一个日志文件。 但S3没有先读取对象,然后追加,然后回写的能力追加到现有的对象,所以在日志文件中写入每一个新的行变得越来越昂贵。
我可以这样做吗? 每当我追加一个新行时,只需将该行作为s3对象的整个内容即可。 在打开版本的情况下,每个版本都是日志文件的一行,我可以通过检索所有版本来检索整个日志文件。 如果每个日志文件是数十亿行,那么这可能是不好的,但在我的情况下,它会更像是几千。
这可以工作吗? 任何理由不这样做?
你“可以”,但这并不一定是一个好主意。
更换一个大的物体并不比创build一个小的新版本更昂贵 – 价格是一样的,这使得成本基本相同,因为s3和ec2之间的数据传输没有收费。
每次旋转的时候用logrotate将旧的日志移动到s3中可能会更好。
收集日志的更多云计算方法可能是SQS或Kinesis,具体取决于数量。