如何获取我为其预签名 URL 的 S3 对象的年龄?

How to get age of S3 object I'm giving presigned URL for?

我们的网站使用预签名 URLs 从 S3 获取对象。

    presigned_url = s3_client.generate_presigned_url(
        "get_object",
        Params={"Bucket": someBucket, "Key": somePath},
        ExpiresIn=600,
    )

这对我们来说效果很好,我们现在想要记录他们使用这个预签名 URL / 上次修改日期抓取的 S3 对象的年龄指标。

我唯一能想到的就是先抓取对象,然后获取年龄,但是抓取对象只是为了获取年龄似乎效率低下(尤其是现在延迟很低,因为它只是生成一个预签名的 URL):

    response = s3_client.head_object(
        Bucket=someBucket, Key=somePath
    )
    last_modified_time = response["LastModified"]
    recordMetric(..., last_modified_time)

    presigned_url = s3_client.generate_presigned_url(
        "get_object",
        Params={"Bucket": someBucket, "Key": somePath},
        ExpiresIn=600,
    )

有没有更好的方法来解决这个问题?

不需要获取对象,在您的代码示例中您已经正确地做到了。 head_object() 示例中的函数从对象中检索元数据而不检索对象本身。据我所知,这是检索对象元数据的最有效方法。