查询对象元数据

最近更新时间:2024-08-13 17:46:41

我的收藏

简介

本文介绍对象存储 COS 通过 Python SDK 实现查询对象元数据的示例代码和描述。

注意事项

若您想查询目标对象的元数据,需要具有目标对象的读取权限:在您进行 授权策略 时,action 需要设置为cos:HeadObject,更多授权请参见 支持CAM的业务接口

相关示例

功能名称
描述
示例代码
查询对象元数据
提供了查询对象元数据的功能。

使用案例

功能说明

查询对象的元数据信息(HEAD Object)。

方法原型

head_object(Bucket, Key, **kwargs)

请求示例

# -*- coding=utf-8
from qcloud_cos import CosConfig
from qcloud_cos import CosS3Client
import sys
import os
import logging

# 正常情况日志级别使用 INFO,需要定位时可以修改为 DEBUG,此时 SDK 会打印和服务端的通信信息
logging.basicConfig(level=logging.INFO, stream=sys.stdout)

# 1. 设置用户属性, 包括 secret_id, secret_key, region 等。Appid 已在 CosConfig 中移除,请在参数 Bucket 中带上 Appid。Bucket 由 BucketName-Appid 组成
secret_id = os.environ['COS_SECRET_ID'] # 用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参见 https://cloud.tencent.com/document/product/598/37140
secret_key = os.environ['COS_SECRET_KEY'] # 用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参见 https://cloud.tencent.com/document/product/598/37140
region = 'ap-beijing' # 替换为用户的 region,已创建桶归属的 region 可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket
# COS 支持的所有 region 列表参见 https://cloud.tencent.com/document/product/436/6224
token = None # 如果使用永久密钥不需要填入 token,如果使用临时密钥需要填入,临时密钥生成和使用指引参见 https://cloud.tencent.com/document/product/436/14048
scheme = 'https' # 指定使用 http/https 协议来访问 COS,默认为 https,可不填

config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key, Token=token, Scheme=scheme)
client = CosS3Client(config)

response = client.head_object(
Bucket='examplebucket-1250000000',
Key='exampleobject'
)
print(response)

全部请求参数示例

response = client.head_object(
Bucket='examplebucket-1250000000',
Key='exampleobject',
VersionId='string',
IfModifiedSince='Wed, 28 Oct 2020 20:30:00 GMT'
)

参数说明

参数名称
参数描述
类型
是否必填
Bucket
Bucket 名称,由 BucketName-APPID 构成
String
Key
对象键(Key)是对象在存储桶中的唯一标识。例如,在对象的访问域名 examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/doc/pic.jpg 中,对象键为 doc/pic.jpg
String
VersionId
开启版本控制后,指定对象的具体版本
String
IfModifiedSince
在指定时间后被修改才返回,时间格式为 GMT
String

返回结果说明

获取对象的元信息,类型为 dict:
{
'ETag': '"9a4802d5c99dafe1c04da0a8e7e166bf"',
'Last-Modified': 'Wed, 28 Oct 2014 20:30:00 GMT',
'Cache-Control': 'max-age=1000000',
'Content-Type': 'application/octet-stream',
'Content-Disposition': 'attachment; filename="filename.jpg"',
'Content-Encoding': 'gzip',
'Content-Language': 'zh-cn',
'Content-Length': '16807',
'Expires': 'Wed, 28 Oct 2019 20:30:00 GMT',
'Connection': 'keep-alive',
'Accept-Ranges': 'bytes',
'Server': 'tencent-cos',
'Date': 'Wed, 28 Oct 2019 20:20:00 GMT',
'x-cos-meta-test': 'test',
'x-cos-version-id': 'MTg0NDUxODMzMTMwMDM2Njc1ODA',
'x-cos-hash-crc64ecma': '1220413902487941276',
'x-cos-request-id': 'NTg3NzQ3ZmVfYmRjMzVfMzE5N182NzczMQ=='
}
参数名称
参数描述
类型
ETag
分块上传时,该值不是对象内容的 MD5 校验值,仅能用于检查对象唯一性
String
Last-Modified
对象最后修改时间
String
Cache-Control
缓存策略, HTTP 标准头部
String
Content-Type
内容类型,HTTP 标准头部
String
Content-Disposition
文件名称,HTTP 标准头部
String
Content-Encoding
编码格式,HTTP 标准头部
String
Content-Language
语言类型,HTTP 标准头部
String
Content-Length
对象大小
String
Expires
缓存过期时间, HTTP 标准头部
String
Connection
连接方式,HTTP 标准头部
String
Accept-Ranges
范围请求标识,HTTP 标准头部
String
Server
服务端标识,HTTP 标准头部
String
Date
请求日期,HTTP 标准头部
String
x-cos-meta-*
用户自定义的对象元数据, 必须以 x-cos-meta 开头,否则会被忽略
String
x-cos-hash-crc64ecma
文件的 CRC64 校验码
String
x-cos-version-id
开启版本控制后,对象的版本号
String
x-cos-request-id
请求 ID
String

API 操作

查询对象元数据涉及的 API 接口说明,请参见 HEAD Object 文档。