无法删除冰川保管库,因为不为空,但无法删除档案

unable to delete glacier vault because not empty, but not able to delete archives

我在 AWS Web 控制台中创建了一个 Glacier 保管库,然后使用 Fog gem 以编程方式创建了一些测试存档。

我想删除保管库,但 Web 控制台不允许我删除,因为它说保管库不为空。它告诉我保险库包含两个档案,并将最后库存日期显示为 "February 05, 2016 07:01:28 PM UTC-8"。

当我使用 Fog 访问保管库时,它显示了相同的最后库存日期,但 Fog 返回的 "vault" 对象不包含任何档案。 "vault.archives" 是一个空集合。

我想我只需要提交一份清单工作,所以我做到了。作业完成后,输出如下:

{"VaultARN"=>"EDITED",
 "InventoryDate"=>"2016-02-06T01:01:28Z",
 "ArchiveList"=>
  [{"ArchiveId"=>
     "EDITED: ARCHIVE ID",
    "ArchiveDescription"=>"test",
    "CreationDate"=>"2016-02-05T21:16:52Z",
    "Size"=>4,
    "SHA256TreeHash"=>
     "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08"},
   {"ArchiveId"=>
     "EDITED: ARCHIVE ID",
    "ArchiveDescription"=>"test",
    "CreationDate"=>"2016-02-05T21:23:08Z",
    "Size"=>4,
    "SHA256TreeHash"=>
     "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08"}]}

它显示保管库包含两个档案。但是,当我尝试使用 Fog 摧毁它们中的任何一个时,我得到了这样的回应:

#<Excon::Response:0x007ffe12ce5cd0
 @body="",
 @data=
  {:body=>"",
   :headers=>
    {"x-amzn-RequestId"=>"wupVQJALcVeGOC-hp4MsUgApY5CyhW8TdBoILGM3xBYH1aI",
     "Date"=>"Tue, 09 Feb 2016 16:30:13 GMT"},
   :status=>204,
   :status_line=>"HTTP/1.1 204 No Content\r\n",
   :reason_phrase=>"No Content",
   :remote_ip=>"EDITED",
   :local_port=>51722,
   :local_address=>"EDITED"},
 @headers=
  {"x-amzn-RequestId"=>"wupVQJALcVeGOC-hp4MsUgApY5CyhW8TdBoILGM3xBYH1aI",
   "Date"=>"Tue, 09 Feb 2016 16:30:13 GMT"},
 @local_address="EDITED",
 @local_port=51722,
 @remote_ip="EDITED",
 @status=204>

如果我传递了错误的存档 ID,这就是我希望得到的响应。但我确定我传递的存档 ID 与清单作业中返回的存档 ID 相同。

什么给了?我只想删除这两个存档,这样我就可以删除保险库了。

我可能误解了你的问题...但对我来说,你似乎误解了 204 No Content 的意思。

这并不意味着 "nothing was there." 那会是 4XX class 错误。

204 No Content 表示 "the operation succeeded, and this operation does not return a response body." 如果 Web 浏览器收到来自 Web 服务器的 204 响应,则不应更改您正在查看的文档(而 200 OK 和一个空的响应主体将具有相同的语义("success"),但会让你盯着白色 window)。当然,您不是网络浏览器,但这就是 204 代码的原因。

我认为您刚刚所做的已经达到了您的预期,尽管您可能需要再等几个小时才能通过并再次清点保管库。

If the request is successful, Amazon Glacier responds with 204 No Content to indicate that the archive is deleted.

http://docs.aws.amazon.com/amazonglacier/latest/dev/api-archive-delete.html

204 和实际删除之间似乎有几个小时的延迟。该命令不会生成您可以监视的作业,但最终 204 将导致删除,因此您可以继续 delete_vault.