fugue / credstash

A little utility for managing credentials in the cloud
Apache License 2.0
2.06k stars 215 forks source link

getSecret (et. al.) now raise SystemExit sometimes? #276

Closed glyph closed 4 years ago

glyph commented 4 years ago

The addition of @clean_fail in https://github.com/fugue/credstash/pull/263/files has changed the error-handling behavior of getSecret et. al. to raise SystemExit sometimes. This is pretty aggressive behavior for API clients, since it causes a sudden and inexplicable exit where there used to be a normally-handleable (if somewhat obscure) error.

sconnel42 commented 4 years ago

Is there any update on this? I have an API that is trying to do a get_or_create action by first calling getSecret, and this is causing a hard exit. You can see that behavior with this script:

# sample_get_or_create.py
import credstash

def get_or_create_secret(key):
    secret = None
    try:
        secret = credstash.getSecret(key, region="us-east-1")
        print(f"Found a secret for {key}!")
    except credstash.ItemNotFound:
        print(f"No key of '{key}' found, creating a new value")
        secret = "bazbaz"
    return secret

if __name__ == "__main__":
    key = "foobar"
    secret = get_or_create_secret(key)
    print(f"{key}: {secret}")

Running that on the latest version of credstash (1.16.2) gives:

$ poetry run python sample_get_or_create.py                 
Item {'name': 'foobar'} couldn't be found.

Where this works as expected on the previous version of credstash (1.16.1):

$ poetry run python sample_get_or_create.py
No key of 'foobar' found, creating a new value
foobar: bazbaz