最近學習Linebot設計,初學使用heroku,但heroku變更收費制度,改用render+github
DeplytoRender後收到GitGuardian警示信XD
"GitGuardian has detected the following Line Messaging Key exposed within your GitHub account."
因為在設計初期搭配ngrok使用,需要切換不同平台,方便使用下token..等訊息,都是直接寫入檔案中。(懶惰蟲上身)
依據原本官方的文件,再修改了寫法。
新增文件 .env
.env
放本機不用傳到GitHub
LINE_CHANNEL_SECRET=YOUR_LINE_CHANNEL_SECRET
LINE_CHANNEL_ACCESS_TOKEN=YOUR_CHANNEL_ACCESS_TOKEN
修改追加requirements.txt
python-dotenv==0.21.0
修改程式app.py
追加以下
from dotenv import load_dotenv
# render專用(隱藏token等資訊,render另外設定)
# get channel_secret and channel_access_token from your environment variable
channel_secret = os.getenv('LINE_CHANNEL_SECRET', None)
channel_access_token = os.getenv('LINE_CHANNEL_ACCESS_TOKEN', None)
if channel_secret is None or channel_access_token is None: #if render none,import .env
load_dotenv() #.env
channel_secret = os.getenv('LINE_CHANNEL_SECRET', None)
channel_access_token = os.getenv('LINE_CHANNEL_ACCESS_TOKEN', None)
if channel_secret is None or channel_access_token is None:
print('Specify LINE_CHANNEL_SECRET and LINE_CHANNEL_ACCESS_TOKEN as environment variables.')
sys.exit(1)
第1個if若無變數資料,讀取本機.env
第2個if若.env
也無變數資料,輸出錯誤
本身render可設定環境變數,但是開發使用ngrok無法讀取render環境,用這樣的方式,就可以平台切換時來去自如,不用再去做設定。
google雲端文件需要帳號密碼登入,公司使用GSuite需要定期變更密碼,這時候每個檔案開啟修改密碼,真的讓人很無言,此時使用環境變數去抓取帳號密碼檔案,只需要修改檔案.env
很多場合善用環境變數,除了保有隱私,也可以更快速的修改專案。