首页 文章

使用AWS CodeDeploy的环境变量

提问于
浏览
18

我有一个Web应用程序,它使用环境变量进行某些配置(数据库凭据,API密钥等) . 我目前正在使用Elastic Beanstalk进行部署,并且可以在AWS中轻松设置这些,这很好,因为我的代码库中没有这些敏感数据 .

但是,我正在考虑从Elastic Beanstalk切换,以便我可以在我的Web实例中利用更多的灵活性,当然我正在考虑使用CodeDeploy部署(来自我的Codeship CI设置) . CodeDeploy非常简单,我已经将它与Codeship集成得很好,但我注意到没有内置功能来设置CodeDeploy的环境变量,就像Elastic Beanstalk一样 . 有没有人有这个过程的最佳实践?

3 回答

  • 2

    我发现设置环境变量的一种方法是通过在AfterInstall挂钩期间运行的脚本(在appspec http://docs.aws.amazon.com/codedeploy/latest/userguide/app-spec-ref.html中指定) .

    我可以通过调用我的实例元数据来确定我当前在这些脚本中部署的环境,在那里我得到我的实例ID,然后利用aws cli执行过滤到我的实例ID的describe-tags,其中我有一个标签集环境

    ID=$(curl "http://169.254.169.254/latest/meta-data/instance-id")
    aws --region us-east-1 ec2 describe-tags --filters Name=resource-id,Values=$ID Name=key,Values=Environment
    

    我不喜欢这个,但是在Code Deploy内置了一些内容来将参数传递给appspec之前,这是我能找到的最好的 .

  • -2

    假设您使用github来管理代码,这是管理环境的一种可能方法

    使用git-crypt(https://github.com/AGWA/git-crypt)加密敏感信息 . 您可以将密钥放在服务器上解码这些文件 . 在安装后阶段的codedeploy期间,您可以解密并设置环境 .

    现在的优点是您可以安全地将所有信息放在一个地方 .

  • 5

    似乎可以使用环境变量(主要是您的DEPLOYMENT_GROUP_NAME) .

    请参阅亚马逊的this guide .

相关问题