使用 CodeDeploy、Parameter Store 和 PM2 设置 EC2 环境变量
Setting EC2 Environment Variables with CodeDeploy, Parameter Store and PM2
我正在使用 CodeDeploy 将 Node.js 应用程序部署到 EC2。我将凭据存储在 AWS Systems Manager、Parameter Store 中,但找不到将这些凭据公开给我的应用程序的方法。
我正在使用 PM2 进行进程管理。我可以成功地从目标机器上的 Parameter Store 中检索参数,因此不存在权限问题。例如:
aws ssm get-parameters --region us-east-1 --names LOCAL_CACHE_PATH --with-decryption --query Parameters[0].Value`
...成功 returns 正确的字符串。我尝试在我的 applicationStart.sh
CodeDeploy 文件中使用它并启动应用程序:
#!/bin/bash
export LOCAL_CACHE_PATH=$(aws ssm get-parameters --region us-east-1 --names LOCAL_CACHE_PATH --with-decryption --query Parameters[0].Value)
pm2 start ecosystem.config.js --env production
LOCAL_CACHE_PATH
returns undefined
在我的应用中访问 process.env.LOCAL_CACHE_PATH
.
因此环境变量在 applicationStart.sh
脚本中可用,但当应用程序从该脚本启动时未定义。
我正在寻找一种将来自 Parameter Store 的环境变量与 CodeDeploy 结合使用的推荐方法。
我已经阅读了数十篇关于类似主题的帖子,但无法解决。非常感谢任何指导。
我使用的解决方案是将环境变量写入 .env 文件并在我的应用程序中使用它:
afterInstall.sh
:
echo LOCAL_CACHE_PATH=$(aws ssm get-parameters --output text --region us-east-1 --names LOCAL_CACHE_PATH --with-decryption --query Parameters[0].Value) >> /home/ubuntu/foo/.env
我正在使用 CodeDeploy 将 Node.js 应用程序部署到 EC2。我将凭据存储在 AWS Systems Manager、Parameter Store 中,但找不到将这些凭据公开给我的应用程序的方法。
我正在使用 PM2 进行进程管理。我可以成功地从目标机器上的 Parameter Store 中检索参数,因此不存在权限问题。例如:
aws ssm get-parameters --region us-east-1 --names LOCAL_CACHE_PATH --with-decryption --query Parameters[0].Value`
...成功 returns 正确的字符串。我尝试在我的 applicationStart.sh
CodeDeploy 文件中使用它并启动应用程序:
#!/bin/bash
export LOCAL_CACHE_PATH=$(aws ssm get-parameters --region us-east-1 --names LOCAL_CACHE_PATH --with-decryption --query Parameters[0].Value)
pm2 start ecosystem.config.js --env production
LOCAL_CACHE_PATH
returns undefined
在我的应用中访问 process.env.LOCAL_CACHE_PATH
.
因此环境变量在 applicationStart.sh
脚本中可用,但当应用程序从该脚本启动时未定义。
我正在寻找一种将来自 Parameter Store 的环境变量与 CodeDeploy 结合使用的推荐方法。
我已经阅读了数十篇关于类似主题的帖子,但无法解决。非常感谢任何指导。
我使用的解决方案是将环境变量写入 .env 文件并在我的应用程序中使用它:
afterInstall.sh
:
echo LOCAL_CACHE_PATH=$(aws ssm get-parameters --output text --region us-east-1 --names LOCAL_CACHE_PATH --with-decryption --query Parameters[0].Value) >> /home/ubuntu/foo/.env