使用 Boto 从 S3 存储桶查找密钥

问题描述 投票:0回答:1

我获取了 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 或者是否有更好的方法循环遍历所有文件夹?

python amazon-web-services boto
1个回答
0
投票

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 个对象)。

© www.soinside.com 2019 - 2024. All rights reserved.