[英]Load environment variables when running locally via serverless offline
我想在本地運行時從 .env 文件加載環境變量,所以這是我的 serverless.yaml 文件,
functions:
health:
handler: src/api/health.check
name: ${self:provider.stackName}-health
environment:
USER_POOL_APP_CLIENT_ID: !Ref UserPoolClient
你看,它將在資源部分創建的用戶池 ID 作為環境變量設置為 lambda。按預期部署時,這工作得很好。
但是,當我嘗試通過 serverless-offline 在本地運行它時,無論我如何通過 dotenv 或手動設置 env 變量,它似乎都被 serverless 覆蓋了,在這種情況下,我看到的只是“[object object]”。
我看到的其他工作流程,從文件加載所有環境變量,如下所示
functions:
health:
handler: src/api/health.check
name: ${self:provider.stackName}-health
environment:
USER_POOL_APP_CLIENT_ID: {env:USER_POOL_APP_CLIENT_ID}
但這是否需要我們將所有階段的變量都存儲在本地作為文件?
我希望只在本地存儲開發版本,並通過!Ref
自動從無服務器文件本身獲取所有剩余版本,如開頭所示。
那么,當我在本地運行時,如何防止無服務器填充/污染我的環境變量,同時堅持第一種格式?
或者還有其他更好的方法來處理這個問題嗎?
它發生在新版本的無服務器離線(v12.0.4)中。
我的解決方案是使用: https://www.serverless.com/plugins/serverless-plugin-ifelse
請參見下面的示例:
serverlessIfElse:
- If: '"${env:NODE_ENV}" == "development"'
Set:
functions.health.environment.USER_POOL_APP_CLIENT_ID: "${USER_POOL_APP_CLIENT_ID, ''}"
您可以根據您的用例更改它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.