部署后如何获取container_commands的输出?

部署后如何获取container_commands的输出?

我的 Elastic Beanstalk 容器使用容器命令运行脚本来修补每次部署时的数据库。

我使用一个自制脚本来运行部署,该脚本调用更新环境在 Elastic Beanstalk API 上。

问题是,我无法看到我的输出container_commands,这在部署期间非常可怕。我唯一能判断是否出错的方法是当命令返回非零值时:在这种情况下描述事件会报告问题。但是我仍然无法获取该命令的实际输出。

container_commands部署完成后如何获取输出?

理想情况下,使用 Elastic Beanstalk API,但任何其他编程方式都可以!

答案1

不是控制台视图,但它(现在)在日志中可见。

.ebextensions/10-log.config

container_commands:
  05-whoami:
    command: "whoami"

/var/log/cfn-init.log部署后

2014-07-01 22:08:10,695 [DEBUG] Running command 05-whoami
2014-07-01 22:08:10,695 [DEBUG] Generating defaults for command 05-whoami
2014-07-01 22:08:11,014 [DEBUG] Defaults script for 05-whoami output: {"env":{"EB_REQUEST_ID":"110d0932-016c-11e4-9f71-3fe967c5cd60", [long list of params omitted for brevity]}
2014-07-01 22:08:11,015 [DEBUG] No test for command 05-whoami
2014-07-01 22:08:11,050 [INFO] Command 05-whoami succeeded
2014-07-01 22:08:11,050 [DEBUG] Command 05-whoami output: root

答案2

回复来自AWS 支持

查看输出的最简单方法是使用 将命令或脚本输出通过管道传输到文件>>。遗憾的是,没有可以查看以实时显示进程的实时控制台。

所以不幸的是,目前还没有办法做到这一点。

答案3

就像@otaku在上面的一条评论中提到的那样,我也将我的命令输出放在了 中/var/log/cfn-init-cmd.log

以下是我尝试运行的操作:

container_commands:
  20-migrate_database:
    command: |
      bash ./bin/export_database_migrations_url.sh
      bash ./bin/run_migrations.sh
    leader_only: true

最初接受的答案现在有点过时了(截至 2023 年 5 月)。我确信他们当时是正确的,但如果你现在正在阅读这篇文章,这可能是你应该关注的地方。

相关内容