我正在使用CodeDeploy将一个Node.js应用程序部署到EC2。我在AWS系统管理器、参数存储中存储了凭证,但找不到将这些凭证暴露给我的应用程序的方法。
我正在使用PM2进行流程管理。我可以成功地从目标机器上的Parameter Store中检索参数,因此不存在权限问题。例如::
aws ssm get-parameters --region us-east-1 --names LOCAL_CACHE_PATH --with-decryption --query Parameters[0].Value`
...成功返回正确的字符串 我试图在我的 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
返回 undefined
在我的应用程序中,当访问 process.env.LOCAL_CACHE_PATH
.
所以环境变量在 applicationStart.sh
脚本,但当应用程序从该脚本启动时却未定义。
我正在寻找一种推荐的方法来使用CodeDeploy的Parameter Store中的环境变量。
我已经阅读了类似主题的几十个帖子,但无法解决这个问题。非常感谢任何指导。
我正在使用的解决方案是将环境变量写入.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