Невозможно удалить хранилище ледника, потому что он не пустой, но невозможно удалить архивы

Я создал хранилище Glacier в веб-консоли AWS, а затем программно создал несколько тестовых архивов с помощью гема Fog.

Я хотел бы удалить хранилище, но веб-консоль не позволяет мне, потому что говорит, что хранилище не пусто. Он сообщает мне, что хранилище содержит два архива и показывает дату последней инвентаризации как «05 февраля 2016 года, 19: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"}]}

Он показывает хранилище как содержащее два архива. Однако, когда я пытаюсь уничтожить любого из них с помощью тумана, я получаю такой ответ:

#<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>

Это ответ, который я ожидал бы получить, если бы передал неправильный идентификатор архива. Но я уверен, что передаю тот же идентификатор архива, который был возвращен в моем задании инвентаризации.

Что дает? Все, что я хочу сделать, это удалить эти два архива, чтобы затем удалить хранилище.


person jph    schedule 09.02.2016    source источник


Ответы (1)


Возможно, я неправильно понимаю ваш вопрос ... но мне кажется, что вы неправильно понимаете значение 204 No Content.

Это не значит, что «там ничего не было». Это будет 4XX ошибка класса.

204 No Content означает «операция выполнена успешно, и эта операция не возвращает тело ответа». Если веб-браузер встречает 204 ответ от веб-сервера, он не должен изменять просматриваемый вами документ (в то время как 200 OK с пустым телом ответа будет иметь то же семантическое значение («успех»), но оставит вас глядя в белое окно). Конечно, вы не являетесь веб-браузером, но это причина кода 204.

Я думаю, что то, что вы только что сделали, выполнило то, что вы планировали, хотя, возможно, вам, возможно, придется подождать еще несколько часов, чтобы пройти и снова провести инвентаризацию хранилища.

Если запрос выполнен успешно, Amazon Glacier отвечает 204 No Content, указывая на то, что архив удален.

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

person Michael - sqlbot    schedule 09.02.2016
comment
Ах, это бы это объяснило. Однако есть еще одна странная вещь: через день после завершения моей инвентаризации веб-консоль по-прежнему показывала дату последней инвентаризации за 2 дня до нее. Это нормально? После того, как задание инвентаризации, которое я отправил программно, будет завершено, я ожидаю, что веб-консоль отобразит последнюю дату инвентаризации, соответствующую этому заданию. - person jph; 10.02.2016
comment
Неважно; Я только что снова проверил консоль, и последняя дата инвентаризации обновляется до даты завершения моей работы, а количество архивов обновляется до нуля. - person jph; 10.02.2016