Amazon S3使用正则表达式查询

时间:2019-03-13 13:28:30

标签: python aws-lambda boto3

我在S3中具有以下文件夹结构。

myBucket/20190313/20190313_100000/_SUCCESS

我需要检查是否存在_SUCCESS个文件

查询我当前正在使用:

date = 20190313
bucket = s3Resource.Bucket(myBucket)
objs = list(bucket.objects.filter(Prefix=date+'/'))

我不知道日期文件夹中将包含什么。但格式为yyyymmdd_hhmmss

如果仅知道“ myBucket / 20190313 /”,是否可以查询该特定的“ _SUCCESS”文件?

2 个答案:

答案 0 :(得分:0)

API docs说您不能使用正则表达式

  

将响应限制为以指定前缀开头。您可以使用前缀将存储桶分为不同的键组。 (您可以考虑使用前缀以与使用文件系统中的文件夹相同的方式进行分组。)

答案 1 :(得分:0)

这是一个远景,具体取决于您的对象键,但是您可以结合使用prefixdelimiter属性。

例如:

Prefix = date+'/'
Delimiter = '_' 

我确定您知道,S3键中没有文件夹结构,而是用于标识对象的唯一字符串。使用定界符“ /”会创建一个层次结构或更多的虚拟文件夹结构。

使用delimiter属性会将虚拟文件夹结构从使用“ /”更改为“ _”。前提是您在其他键中不使用下划线,它将在前缀的末尾与下一个前缀的开始之间(即“ _SUCCESS”中的“ _”)返回字符串集合。