Хранилище Hashicorp возвращает 400 вместо 404 при попытке удаления несуществующего ключа

#api #hashicorp-vault #http-error #hashicorp

Вопрос:

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

Когда у меня происходит событие анонимизации ресурсов, я не знаю, использовал ли этот ресурс ранее хранилище для шифрования данных (с идентификатором ресурса = идентификатор ключа шифрования хранилища), поэтому я все еще пытаюсь удалить потенциальный ключ шифрования из этого ресурса.

Проблема: в случае, если для этого ресурса никогда не было никакого шифрования (относительный ключ в хранилище не существует), и API возвращает ошибку 400 вместо 404, которую я ожидал:

 gt; vault delete transit/keys/BbRgVeomFovY1AMSucydO  Error deleting transit/keys/BbRgVeomFovY1AMSucydO: Error making API request.  URL: DELETE http://127.0.0.1:1234/v1/transit/keys/BbRgVeomFovY1AMSucydO Code: 400. Errors:  * error deleting policy BbRgVeomFovY1AMSucydO: could not delete key; not found  

Пс:

  1. В случае, если ключ существует, deletetio_allowed=true применяется к конфигурации ключа.
  2. Я не хочу проверять (например, пытаться прочитать конфигурацию ключа), чтобы узнать, существует ли ключ и следует ли его удалить (проблема с производительностью).
  3. Я также не хочу полагаться на сообщение об ошибке, чтобы узнать, не был ли найден ключ.

Может ли кто-нибудь объяснить такое поведение, и если это нормально, то каков наилучший обходной путь?