Konfigurasi Sensitif pada Flask
Daftar isi
Python: Membuat Aplikasi Flask - This article is part of a series.
Sebagian besar aplikasi memerlukan pengaturan berbeda untuk setiap lingkungan (environment).
Konfigurasi SECRET_KEY pada source code #
Mari edit file config.py
*
import os
class Config:
DEBUG = False
DEVELOPMENT = False
SECRET_KEY = os.getenv("SECRET_KEY", "default-key")
class ProductionConfig(Config):
pass
class StagingConfig(Config):
DEBUG = True
class DevelopmentConfig(Config):
DEBUG = True
DEVELOPMENT = True
SECRET_KEY
adalah kunci ’nyata’ dari source code aplikasi.
Kita juga bisa mengubah SECRET_KEY
di berbagai lingkungan (environment).
Mari kita perbarui app.py
import os
from flask import Flask
app = Flask(__name__)
env_config = os.getenv("APP_SETTINGS", "config.DevelopmentConfig")
app.config.from_object(env_config)
@app.route("/")
def index():
secret_key = app.config.get("SECRET_KEY")
return f"Kuncinya adalah:>> {secret_key}"
Untuk mengetahui apa yang terjadi di app.py
.
Mari kita ubah SECRET_KEY
disaat kita menjalankan aplikasi langsung.
SECRET_KEY=key-langsung-weh flask run
Perhatikan http://localhost:5000
untuk memahami perintah di atas.
Biasakan diri dengan add, commit dan push ke staging environment.
git add --all
git commit -m "Add config"
git push staging main
Konfigurasi SECRET_KEY pada Staging Environment #
Pembaruan telah ada di staging environment.
Mari kita ubah SECRET_KEY
pada staging environment.
heroku config:set --remote staging \
SECRET_KEY=the-staging-key \
APP_SETTINGS=config.StagingConfig
Dengan menggunakan config:set
kita bisa mengubah SECRET_KEY
dan APP_SETTINGS
pada staging.
Perhatikan bahwa https://flaskrav-staging.herokuapp.com/
tertulis the-staging-key
.
Kita juga bisa melihat pengaturan flask pada Heroku CLI.
heroku config --remote staging
Konfigurasi SECRET_KEY pada Production Environment #
Mari buat versi Production, tentu berbeda dengan staging:
heroku config:set --remote prod \
SECRET_KEY=the-production-key \
APP_SETTINGS=config.ProductionConfig
###
heroku pipelines:promote --remote staging
Telah dibuat ulang dari SECRET_KEY
dan APP_SETTINGS
dan juga mempromosikan aplikasi ke production environment.
Perhatikan bahwa https://flaskrav.herokuapp.com/
tertulis the-production-key
.
Reference: Deploying a Python Flask Example Application Using Heroku - Real Python