首页 > 解决方案 > 从 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响应中找到用户定义的元数据。

有谁知道如何检索文件列表的元数据列表?

标签: pythonamazon-web-servicesamazon-s3boto3

解决方案


list_objects_v2()API 调用不返回元数据。

您需要单独调用head_object()get_object()每个对象上获取它们的元数据。


推荐阅读