gpt4 book ai didi

aws-cloudformation - 通过 Serverless 离线本地运行时加载环境变量

转载 作者:行者123 更新时间:2023-12-03 07:26:15 26 4
gpt4 key购买 nike

我想在本地运行时从.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 或手动设置环境变量,它似乎都会被 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 自动从无服务器文件本身获取所有剩余版本,如开头所示。

那么,当我在本地运行时,如何防止无服务器填充/污染我的环境变量,同时坚持第一种格式?

或者还有其他更好的方法来处理这个问题吗?

最佳答案

新版本的 serverless-offline (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: "${env:USER_POOL_APP_CLIENT_ID, ''}"

您可以根据您的用例更改它。

关于aws-cloudformation - 通过 Serverless 离线本地运行时加载环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75193068/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com