设置CodeDeploy部署环境变量

时间:2019-07-11 13:11:02

标签: amazon-web-services amazon-ec2 travis-ci aws-code-deploy

我的NodeJS应用程序具有CD管道,该管道包含以下步骤:

1)Travis CI将master分支作为zip文件上传到S3

2)Travis CI触发AWS CodeDeploy部署

3)CodeDeploy抓取.zip文件,将其提取到我的AWS EC2中并运行该应用程序

但是我的NodeJS应用程序需要一些环境变量才能运行。由于这些变量的值是敏感的,因此我将这些变量存储在TravisCI的“存储库设置”中,却不知道如何将环境变量从Travis传递到EC2。

我可以使用appspec.yml的env属性(对于CodeDeploy),但可以使用我的环境。包含敏感信息的var,不应包含在代码存储库中。

是否有通过我的环境的最佳实践。 vars。通过CodeDeploy从Travis到EC2实例?

目前,我正在做的是在Travis构建过程中生成一个.env文件并将其添加到.zip文件中,因此当将应用程序部署到EC2时,我可以使用{ {1}}包NodeJS。但是我认为这不是最好的方法。

4 个答案:

答案 0 :(得分:0)

您可以将它们以加密格式保存在S3中(当然不作为代码的一部分),并在部署前获取它们,并在部署后删除它们。您也可以使用https://www.vaultproject.io/

答案 1 :(得分:0)

您可以在下面的链接中使用AWS System Manager的参数存储来实现此目的 https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html

快速信息:

  

AWS Systems Manager提供了一个集中式存储来管理您的配置数据,无论是纯文本数据(例如数据库字符串)还是机密(例如密码)。这使您可以从代码中分离机密和配置数据。可以对参数进行标记并将其组织为层次结构,从而帮助您更轻松地管理参数。例如,可以使用相同的参数名称“ db-string”和不同的层次结构路径“ dev / db-string”或“ prod / db-string”来存储不同的值。 Systems Manager与AWS Key Management Service(KMS)集成在一起,使您可以自动加密存储的数据。您还可以使用AWS Identity and Access Management(IAM)控制用户和资源对参数的访问。可以通过其他AWS服务(例如Amazon Elastic Container Service,AWS Lambda和AWS CloudFormation)来引用参数。 (来源:https://aws.amazon.com/systems-manager/features/#Parameter_Store

答案 2 :(得分:0)

您可以使用aws参数存储服务。通过使用该服务,您可以存储环境变量,也可以对变量应用加密。

请检查以下链接:

https://aws.amazon.com/blogs/mt/the-right-way-to-store-secrets-using-parameter-store/

https://aws.amazon.com/systems-manager/features/

https://www.npmjs.com/package/aws-param-store

答案 3 :(得分:0)

您可以通过在部署代码后的安装后阶段中编写外壳脚本,在代码部署的钩子部分下设置环境变量,在部署zip之后,安装后脚本将在其中设置封装节点js的env变量并启动pm2服务器

相关问题