问题描述
我正在使用无服务器框架和 NodeJS 来开发我的 AWS Lambda 函数。到目前为止,我已经使用 .env
文件来存储我的机密。因此,我可以像这样在 serverless.yml
中访问它们
provider:
...
environment:
DB_HOST: ${env:DB_HOST}
DB_PORT: ${env:DB_PORT}
但现在我需要使用 AWS Parameter Store 而不是 .env
文件。我试图找到有关如何在本地计算机上模拟它的信息,但我找不到。
我想,我必须在本地和暂存上使用一个无服务器配置文件。我需要一种方法来从 .env 文件(如果它是本地机器)或从 Parameter Store(如果它是 AWS Lambda)中以某种方式选择 env 值。有什么办法可以做到吗?谢谢!
解决方法
它应该是这样工作的:在您的 serverless.yml 中,您可以使用 .env
引用 ${env:keyname}
参数,使用 ${param:keyname}
语法引用 AWS 参数。
如果您需要同时支持它们,则只需编写 ${env:keyname,param:keyname}
。
这是一个例子:
provider:
...
environment:
ALLOWED_ORIGINS: ${env:ALLOWED_ORIGINS,param:ALLOWED_ORIGINS}
AUTHORIZER_ARN: ${env:AUTHORIZER_ARN,param:AUTHORIZER_ARN}
MONGODB_URL: ${env:MONGODB_URL,param:MONGODB_URL}