【发布时间】:2020-05-02 08:24:15
【问题描述】:
我有一个以 GitHub 为源的 CodePipeline,已设置。我试图在 CodePipeline 执行的部署阶段将单个秘密参数(在本例中为 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 Parameter Store 还是 Secrets Manager?如果是的话,有人可以解释一下吗? :)
【问题讨论】:
标签: aws-lambda aws-codepipeline aws-serverless dotenv ssm