我有一个 Web 应用程序,它利用环境变量进行某些配置(数据库凭证、API 密钥等)。我目前使用 Elastic Beanstalk 进行部署,并且可以轻松地在 AWS 中设置这些变量,这很棒,因为我的代码库中没有这些敏感数据。
但是,我正在考虑从 Elastic Beanstalk 切换,以便可以利用我的 Web 实例获得更多灵活性,并且自然而然地,我正在考虑使用 CodeDeploy 进行部署(从我的 Codeship CI 设置)。CodeDeploy 相当简单,我已经将它与 Codeship 很好地集成在一起,但我注意到 CodeDeploy 没有内置功能来设置环境变量,就像 Elastic Beanstalk 一样。有人有这个过程的最佳实践吗?
答案1
亚马逊为此提供了一个非常巧妙的功能:参数存储。您可以在那里添加密钥/值对,进行安全加密,然后在您的 CodeDeploy 脚本中检索它们,例如:
password=$(aws ssm get-parameters --region us-east-1 --names MySecureSQLPassword --with-decryption --query Parameters[0].Value)
您需要进行一些 IAM 设置以允许 CodeDeploy/Parameter Store 之间的访问,但上面链接的文章将引导您完成此操作。