python - 从 list_objects_v2 boto3 获取元数据
问题描述
我尝试使用 boto3 分页器获取用户定义的元数据list_objects_v2
paginator = s3_client.get_paginator('list_objects_v2')
pages = paginator.paginate(Bucket=constants.S3_BUCKET_NAME, Prefix=user_folder_name)
for page in pages:
contents = page.get('Contents')
if contents is None:
if page.get('KeyCount') == 0:
continue
else:
raise Exception(str(page))
for obj in contents:
# Ok
key = obj['Key']
# Ok
etag = obj.get('ETag')
# Not Ok
metadata = obj.get('Metadata')
if metadata is not None:
print("DEBUG -> " + json.dumps(metadata), flush=True)
else:
print("No meta data " + str(page), flush=True)
但是,在检查响应后,我没有在list_objects_v2
响应中找到用户定义的元数据。
有谁知道如何检索文件列表的元数据列表?
解决方案
list_objects_v2()
API 调用不返回元数据。
您需要单独调用head_object()
或get_object()
在每个对象上获取它们的元数据。