使用CodeDeploy、Parameter Store和PM2设置EC2环境变量。

问题描述 投票:0回答:1

我正在使用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中的环境变量。

我已经阅读了类似主题的几十个帖子,但无法解决这个问题。非常感谢任何指导。

node.js pm2 aws-code-deploy aws-systems-manager
1个回答
0
投票

我正在使用的解决方案是将环境变量写入.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
© www.soinside.com 2019 - 2024. All rights reserved.