使用Python boto从S3获取文件元数据

时间:2018-05-10 11:30:19

标签: python boto

我在AWS S3中有一些二进制文件,我需要获得file metadata created timemodified time以及使用Python Boto API访问时间吗?

我们尝试将文件复制到EC2实例,从那里我们使用os模块stat方法来获取时间。我希望当我们将文件复制到EC2实例时,这些细节会发生变化。

我试过的示例代码:

stat = os.stat(inputFile)
createdTime = datetime.fromtimestamp(stat[9]).strftime("%A, %B %d, %Y %I:%M:%S")

如何直接从S3获取这些详细信息?

2 个答案:

答案 0 :(得分:1)

使用boto3而不是boto。 你可以查看https://boto3.readthedocs.io/en/latest/reference/services/s3.html关于boto3的s3 apis的任何信息。可用的过滤器不多,请检查您所需的过滤器是否可用。选中此项以开始https://boto3.readthedocs.io/en/latest/reference/services/s3.html#S3.Client.list_objects_v2

答案 1 :(得分:1)

Boto3具有功能S3.Client.head_object

  

HEAD操作从对象检索元数据而不返回   对象本身。如果您只感兴趣,此操作很有用   在对象的元数据中。

示例代码以逐步浏览存储桶中的文件并请求元数据:

#! /usr/bin/python3

import boto3

paginator = s3client.get_paginator('list_objects_v2')
page_iterator = paginator.paginate(Bucket='MyBucketName')
for bucket in page_iterator:
    for file in bucket['Contents']:
        print(file['Key'])
        try:
            metadata = s3client.head_object(Bucket='MyBucketName', Key=file['Key'])
            print(metadata)
        except:
            print("Failed {}".format(file['Key']))