我获取了 Paul Davies 编写的关于从 AWS 云重新提取 Splunk 日志的脚本。
那个
当我的日志无法在 Kinesis Firehose 中处理时,它们会被放置在备份 S3 存储桶中。密钥的当前格式如下:
Folder/Folder/Year/Month/Day/HH/failedlogs
示例:
splunk-kinesis-firehose/splunk-failed/2023/01/01/01/failedlogs.gz
脚本中的key查找是这样设置的
key=urllib.parse.unquote_plus(event['Records'][0]['s3']['object']['key'], encoding='utf-8')
有没有办法获取子文件夹下的以下 S3 存储桶中的所有文件 - splunk-kinesis-firehose 或者是否有更好的方法循环遍历所有文件夹?
在this SO post中,我给出了一个相当通用的S3列表。在你的情况下,你可以这样称呼它:
bucket = boto3.resource('s3').Bucket('bucket-name')
path = 'splunk-kinesis-firehose/splunk-failed'
for s3obj in s3list(bucket, path, list_dirs=False):
key = s3obj.key
...
获取该路径下的所有对象,或者例如:
for s3obj in s3list(bucket, path, start='2023/05/01', end='2023/06', list_dirs=False):
key = s3obj.key
...
仅获取 2023 年 5 月。
请注意,
s3list
是一个generator
:您可以开始列出一万亿个对象,并随时停止(在内部,每次调用 AWS 时,它会分成最多 1000 个对象)。