【问题标题】:Running AWS ECS Task Attached (Not Detached)附加运行 AWS ECS 任务(未分离)
【发布时间】:2022-02-04 20:34:42
【问题描述】:

是否有简单的方法来运行附加的ECS 任务或仅在容器运行时跟踪日志(即,在显示所有关联的日志后分离)?

使用 AWS CLI (1.17.0) 和 ecs-cli (1.21.0),我已经通过以下两个命令非常接近:

aws ecs run-task --cluster "mycluster" --task-definition testhelloworldjob --launch-type FARGATE --network-configuration etc.etc.etc.
        
ecs-cli logs --task-id {TASK_ID_HERE_FROM_OUTPUT_OF_PREVIOUS_COMMAND} --follow 

我目前对上述方法有两个问题:

  1. 存在竞争条件,即当任务处于“running”前状态时,日志不可用。不是ecs-cli logs 等待日志存在,而是立即抛出错误。
  2. 即使在等待任务进入运行状态并发出ecs-cli logs 命令后,即使任务完成并处于运行后状态,该命令也拒绝分离。

对于第一个问题,我可以在调用日志之前进行轮询,直到出现激活后/待处理状态。对于第二个问题,我可以起草某种类型的线程调用,该调用会在相关容器不再运行后轮询以停止日志的跟踪……但必须有更简单的方法吗?

为了澄清我来自许多其他容器编排工具/技术,这些工具/技术似乎非常无缝地支持了这一点。以下是一些工具及其相关命令的示例,它们将产生我的预期结果:

Docker CLI:

docker run hello-world

Docker-Compose Yaml:

docker-compose up

K8 Kubectl Yaml:

kubectl apply -f ./hello-k8.yaml && kubectl logs --follow hello-world

【问题讨论】:

    标签: amazon-web-services containers amazon-ecs


    【解决方案1】:

    我认为ecs-cli 是目前最好的选择。

    除此之外,您可以将 AWS ECS 任务的日志驱动程序更改为 syslog,然后在通过 SSH 进入运行它的 EC2 容器实例后从终端查看日志文件。

    您可以做的另一件事是通过 SSH 连接到之前运行的 EC2 容器实例,然后使用 docker run 在其中自己运行该 AWS ECS 任务的容器,一旦测试完成,您可以停止并删除该容器,然后通过 AWS ECS 启动该任务。

    注意:您可以使用 AWS SSM 会话管理器以避免使用 EC2 密钥对并为 SSH 添加入站规则。

    【讨论】:

      猜你喜欢
      • 2019-09-25
      • 1970-01-01
      • 1970-01-01
      • 2018-12-03
      • 2021-10-29
      • 2021-11-15
      • 2019-12-22
      • 2021-06-17
      • 2022-11-18
      相关资源
      最近更新 更多