我有一个以GitHub为源的CodePipeline,进行了设置。我试图在CodePipeline执行的Deployment阶段将单个秘密参数(在这种情况下为Stripe秘密密钥,当前在.env文件中定义->下面的说明)传递给特定的Lambda,但没有成功。
在我的案例中,部署阶段基本上是一个运行Deployment.sh脚本的CodeBuild项目:
#! /bin/bash
npm install -g serverless@1.60.4
serverless deploy --stage $env -v -r eu-central-1
说明:
我尝试使用serverless-dotenv-plugin来完成此操作,该服务器的目的是在本地完成部署,但通过CodePipeline完成部署后,它会在lambda的执行过程中返回错误,原因如下:
由于CodePipeline的Source设置为GitHub(未提交.env文件),所以每当将更改提交到git存储库时,都会触发CodePipeline的执行。到部署阶段时,所有节点模块都已安装(连同它们的serverless-dotenv-plugin),当执行serverless deploy --stage $env -v -r eu-central-1
命令时,serverless-dotenv-plugin将搜索存储我的机密的.env文件,因为没有.env文件,所以找不到它,因为我们不在“本地”范围内,并且当lambda需要此秘密触发器时,它将引发如下错误:
所以我的问题是,可以使用dotenv / serverless-dotenv-plugin来做到这一点,还是应该放弃这种方法?我应该使用SSM参数存储还是Secrets Manager?如果是,有人可以解释一下吗? :)