如何为GCS对象的blob元数据写入Custom time字段?
问题原因
你当前的代码仅修改了本地内存中Blob对象的custom_time属性,没有调用接口将变更同步到GCS服务端,因此修改不会持久化生效。list_blobs返回的是GCS服务端元数据的本地快照,所有本地属性修改都需要主动调用提交接口才能同步到服务端。
修正后代码
import datetime from google.cloud import storage bucket_name = 'bucket_name' folder_name = '' bucket = storage.Client().get_bucket(bucket_name) blobs = bucket.list_blobs(prefix=folder_name) for blob in blobs: blob.custom_time = datetime.datetime.now(datetime.timezone.utc) # 新增:将元数据变更提交到GCS服务端 blob.patch()
注意事项
- 若需要批量更新大量对象,建议添加异常捕获逻辑,避免单个对象更新失败导致整个任务中断
- GCS规定Custom Time只能设置为不早于当前已有值的时间,无法回退设置为更早的时间,更新前请确认时间取值符合业务要求
- 如果待修改的对象属于归档/冷存储类别,需要先恢复对象才能修改元数据
内容的提问来源于stack exchange,提问作者horse
相关产品推荐
相关产品推荐

