Search code examples
pythonherokustreamlit

how to deploy streamlit with secrets.toml on heroku?


Hi I have an application that I would like to deploy on heroku. The question is how would I deploy a streamlit app with secrets.toml?

Currently the connection can be done locally via this

credentials = service_account.Credentials.from_service_account_info(
    st.secrets["gcp_service_account"])

However when I deploy it to heroku, this doesn't seem to connect.

Please help.


Solution

  • On heroku I entered the gcp_service_account credentials as a config var (from the heroku dashboard go to 'Settings' --> 'Reveal Config Vars' as below: heroku config vars

    Instead of st.secrets["<key>"], use os.environ["<key>"] in your python code as below:

    gsheet_url = os.environ['private_gsheets_url']
    

    For nested secrets like the gcp service account credentials, I first parse the json string as below:

    parsed_credentials = json.loads(os.environ["gcp_service_account"])
    credentials = service_account.Credentials.from_service_account_info(parsed_credentials,scopes=scopes)
    

    Hope this helps.