【问题标题】:unable to delete glacier vault because not empty, but not able to delete archives无法删除冰川保险库,因为不是空的,但无法删除档案
【发布时间】:2016-02-09 16:35:43
【问题描述】:

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

我想删除保管库,但 Web 控制台不让我删除,因为它说保管库不是空的。它告诉我保险库包含两个档案,并显示最后的库存日期为“2016 年 2 月 5 日 07:01:28 PM UTC-8”。

当我使用 Fog 访问保险库时,它会显示相同的最后库存日期,但 Fog 返回的“保险库”对象不包含任何档案。 “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 相同。

什么给了?我要做的就是删除这两个档案,这样我就可以删除保管库了。

【问题讨论】:

    标签: amazon-web-services fog amazon-glacier


    【解决方案1】:

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

    这并不意味着“什么都没有”。那将是 4XX 类错误。

    204 No Content 表示“操作成功,并且该操作不返回响应体”。如果 Web 浏览器收到来自 Web 服务器的 204 响应,则不应更改您正在查看的文档(而带有空响应正文的 200 OK 将具有相同的语义含义(“成功”),但会让你盯着一个白色的窗户)。当然,您不是网络浏览器,但这就是204 代码的原因。

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

    如果请求成功,Amazon Glacier 会回复 204 No Content 以指示存档已删除。

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

    【讨论】:

    • 啊,这就解释了。不过,另一件奇怪的事情是:在我的库存工作完成后的第二天,Web 控制台仍将“最后库存日期”显示为 2 天前。这正常吗?在我以编程方式提交的库存作业完成后,我希望 Web 控制台反映与该作业对应的“最后库存日期”。
    • 没关系;我刚刚再次检查了控制台,“最后库存日期”更新为我的工作完成日期,存档数更新为“零”。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-18
      • 2021-02-27
      • 2021-07-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多