【发布时间】:2015-09-20 01:29:14
【问题描述】:
我正在使用 Amazon 的 Elastic Beanstalk 和 Django 1.8.2。这是我的容器命令,
container_commands:
01_wsgipass:
command: 'echo "WSGIPassAuthorization On" >> ../wsgi.conf'
02_makemigrations:
command: "source /opt/python/run/venv/bin/activate && python manage.py makemigrations --merge --noinput"
leader_only: true
03_migrate:
command: "source /opt/python/run/venv/bin/activate && python manage.py migrate --noinput"
leader_only: true
由于某些原因,migrate 命令被终止。即使在我的本地有一个新的数据库,所有迁移都可以正常工作。但以下是出现在 eb-activity.log 上的错误。
Synchronizing apps without migrations:
Creating tables...
Running deferred SQL...
Installing custom SQL...
Running migrations:
Rendering model states.../bin/sh: line 1: 21228 Killed python manage.py migrate --noinput
(ElasticBeanstalk::ExternalInvocationError)
注意:之前在 Elastic Beanstalk 上,相同的容器命令运行良好,没有任何问题。我尝试使用带有 migrate 命令的--verbose 3,但没有收到任何其他调试消息。
有什么解决办法吗?提前致谢。
【问题讨论】:
-
两个想法:您是否在cfn-init.log 中获得更多信息,您是否考虑过更改您的command timeots?
-
是的,我的超时时间已经是 1000 秒。它看起来不像超时错误。我从 /var/log/cfn-init-cmd.log 检查了错误,它显示了相同的错误。没有可用的详细调试日志。
-
如果您没有从 EBS 获得错误或其他有用的诊断信息,可能是其他原因造成的?您是否考虑过它可能是操作系统 - 例如你是OOM killer的受害者吗?
-
好的。我的迁移存在一些问题,我通过 ssh 手动修复了它。但在那之后我结束了这个问题。 stackoverflow.com/questions/31262031/…
-
所以我的观点是,当涉及到日志机制不佳的故障排除时,AWS 对开发人员并不友好。或者,如果有一个日志文件记录 ExternalInvocationError 命令错误,则不会在任何地方记录。
标签: python django amazon-web-services amazon-elastic-beanstalk database-migration