如何获取我为其预签名 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()
示例中的函数从对象中检索元数据而不检索对象本身。据我所知,这是检索对象元数据的最有效方法。
我们的网站使用预签名 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()
示例中的函数从对象中检索元数据而不检索对象本身。据我所知,这是检索对象元数据的最有效方法。