簡體   English   中英

通過無服務器離線在本地運行時加載環境變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM