我正在尝试创建一个正则表达式以匹配我的s3存储桶中的此文件。这是我要创建的S3密钥,显然现在找不到正确的密钥。下面,我提供了该正则表达式要尝试访问的路径/文件夹的存储桶的快照。
这再次是针对s3键的,在下面我还将发布我正在使用的部分代码。我指的是在NSPredicate(format: "AXEdited == 0")
语句中。
File > Revert
错误:
try
谢谢你们
答案 0 :(得分:0)
S3.Client.download_file
不支持作为正则表达式的Key
自变量。 1
s3_file_full_path
的计算结果类似于下一个对象
re.compile(r'snowplow-enrich-output/enriched/archive/run=2019-02-24-\d{2}-\d{2}-\d{2}/*.',
re.UNICODE)
在存储桶快照中没有对象如此命名。
唯一的解决方法是列出存储桶对象,并将其键与上述正则表达式对象进行匹配。 2
上面的正则表达式类似于列出名称为'snowplow-enrich-output/enriched/archive/run=2019-02-24-'
前缀为Key的对象。
list_object_kwargs = {
'Bucket': os.environ.get('SP_BUCKET'),
'Prefix': 'snowplow-enrich-output/enriched/archive/run=2019-02-24-'
}
def object_keys(contents):
return [content['Key'] for content in contents]
objects = s3.list_objects_v2(**list_object_kwargs)
found_object_keys = object_keys(objects['Contents'])
while objects['IsTruncated']:
objects = s3.list_objects_v2(
ContinuationToken=objects['ContinuationToken'],
**list_object_kwargs
)
found_object_keys.extend(object_keys(objects['Contents']))
try:
for key in found_object_keys:
s3.download_file(
Bucket=os.environ.get('SP_BUCKET'),
Key=key)
except Exception as e:
logger.error(
"Could not retrieve %s because: %s" % (key, e))
raise