照片:Sven ScheuermeieronUnsplash
软件框架的一个关键方面是记录必要的信息并将其持久化。使用boto3和原生的python日志器,可以很容易地在python程序中把日志持久化到AWS S3。
日志将有助于调试、监控、审计和了解框架在任何特定时间点的行为。当涉及到云中的应用程序时,我们不会将重要的信息存储在本地机器上,而是将其存储在AWS S3这样的云存储服务中。
最近,我一直在研究一个框架,用python来实现大数据ETL部署的自动化。我们的要求是,在不使用复杂的代码或大量修改代码的情况下,将日志持久化到S3,以供将来参考。要求不是在S3中实时记录日志。
我的意图是利用现有的Python日志器,我一直在使用所有的Python代码和Boto3 SDK与AWS S3进行交互。下面是一个简单的方法,将Python日志记录器产生的日志存储到S3。
方法
创建字符串I/O记录器。
Python日志器允许我们添加不同类型的处理程序。我们可以利用这一点来添加一个字符串I/O流处理程序,它基本上是一个字符串缓冲区,可以存储所有由logger.info或logger.error函数生成的日志。
把内容放到S3。
Boto3是一个与AWS服务互动的python SDK。在这里,我创建了一个函数put_content_to_s3()来把给定的内容放到指定的s3路径中。这个函数也把备份键作为参数,如果文件已经存在于指定的S3位置,它将根据指定的备份策略,把旧的内容备份到备份文件夹或备份文件中。这个备份策略可以根据需求进行定制。
运行该代码的实例应该对指定的S3路径有读写权限。
如何使用S3日志。
代码的主要功能将创建一个字符串I/O缓冲区和字符串I/O记录器。该代码将有一个正常的流程,有logger.info和logger.error。
在finally块中put_content_to_s3()函数被调用,将日志内容从String I/O buffer放到S3。
这是在Python3中使用现有的Python logger和Boto3实现S3日志记录的一种简单易行的方法。在开放源码中,有一些库可以用于此目的,但这里的目的是不使用任何不受信任的Python库,并且不使事情过度复杂化。
编码愉快!
在Python3中使用Boto3进行简单的AWS S3日志记录最初发表在《Nerd For Tech》杂志上,人们通过强调和回应这个故事来继续对话。