我正在尝试使使用npm db-migrate的nodejs应用程序的Elastic Beanstalk部署自动化。我已经阅读了Customizing Software on Linux Servers的AWS文档,看来我应该使用容器命令。我创建了一个文件10_db_migrate.config并包含以下命令:
container_commands:
dbmigrate:
command: "./node_modules/db-migrate/bin/db-migrate up -e production"
leader_only: true
我已经尝试了很多组合,包括/ tmp / deployment / application / node_modules / ...,但是它们都返回了以下错误:
信息[2903]-[应用程序更新代码管道1579538046076-21b269f7103572f7a9d500d4158751de32e395c4 @ 20 / AppDeployStage0 / EbExtensionPostBuild / Infra-EmbeddedPostBuild / postbuild_0_MyAppAPI / Command dbmigrate]:活动执行失败,因为:/ usr / bin / env这样的文件或目录(ElasticBeanstalk :: ExternalInvocationError)
我想念什么?
我知道了。问题的一部分是我试图使它变得比我需要的更困难。我真正需要做的是来自此post。以下是我的最终container_command:
container_commands:
00_node_binary:
command: "ln -sf `ls -td /opt/elasticbeanstalk/node-install/node-* | head -1`/bin/node /bin/node"
10_npm_binary:
command: "ln -sf `ls -td /opt/elasticbeanstalk/node-install/node-* | head -1`/bin/npm /bin/npm"
20_dbmigrate:
command: "./node_modules/.bin/db-migrate up"
leader_only: true
我前一段时间发现了这一点,但以为我还需要了解环境变量才能完成我想做的事情。经过一些额外的测试,我能够确定我不需要访问环境变量,因此可以满足我的需要。仍然想知道如何引用环境变量以在Elastic Beanstalk上的db-migrate中创建准备好的语句,但是现在迫切需要。