我在AWS Web控制台中创建了一个Glacier文件库,然后使用Fog gem以编程方式创建了一些测试档案。
我想删除保险库,但是Web控制台不会让我,因为它说保险库不是空的。它告诉我保险库包含两个档案,并将最后一个库存日期显示为“2016年2月5日07:01:28 UTC UTC-8”。
当我使用Fog访问Vault时,它显示的是相同的最后一个库存日期,但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。
是什么给出的?我想要做的就是删除这两个档案,以便我可以删除保险库。
答案 0 :(得分:0)
我可能误解了你的问题......但对我而言,你似乎误解了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