![AWS Glacier 库存有误或异步?](https://linux22.com/image/698020/AWS%20Glacier%20%E5%BA%93%E5%AD%98%E6%9C%89%E8%AF%AF%E6%88%96%E5%BC%82%E6%AD%A5%EF%BC%9F.png)
使用 Boto3,我昨晚美国东部时间 21:43 向亚马逊的 Glacier 上传了 12 个文件。
我收到了所有 12 个文件的 ArchiveID,因此我认为它们已正确上传。
根据 AWS 管理控制台,最新库存于今天早上 02:53 EST 运行。因此上传后约 5 小时。
但清单上没有显示这 12 个文件。只有 1 个文件(我 1 周前上传的)。
我知道我必须再等一天才能让下一个 AWS Inventory 运行,但我想问一下这是否是预期的行为?
亚马逊计算/报告的库存时间是否与实际运行时间不符?库存是否可能在我上传这些文件之前就实际运行了?
如果不是,为什么我会获得 archiveID(表示上传成功)但它们在上传后没有在意向运行中列出?
编辑:
这些文件确实出现在下一次盘点中。
但我仍然很好奇,为什么 AWS 控制台中的“上次盘点”时间(即上传 5 小时后)报告的文件为零。我唯一的解释是,AWS 控制台的“上次盘点”时间是信息上传到 AWS 控制台的时间。但实际盘点可能在几个小时前就运行了(因此它错过了最近上传的文件)。
答案1
当您启动保险库清单作业时,Amazon Glacier 会返回其生成的最新清单,这是一个时间点快照,而不是实时数据。
http://docs.aws.amazon.com/amazonglacier/latest/dev/vault-inventory.html
要求库存显然不会触发实际的生成——它只是准备最后的库存以供获取。
库存大约每 24 小时更新一次,因此这些新文件很可能不会出现在您描述的时间表中。
除非您对仅通过 Glacier API 提供的功能(如保险库锁)感兴趣,否则您可能会发现 S3/Glacier 集成提供了更有用的界面。作为 S3 对象上传然后通过生命周期策略转换为 Glacier 存储类的文件在 Glacier API 中不可见 - 它们继续显示为 S3 对象,从而可以更直接地迭代它们及其元数据,所有这些都是实时的。