docker 如何获取Amazon ECS任务的退出代码?

ctrmrzij  于 2023-10-16  发布在  Docker
关注(0)|答案(2)|浏览(151)

当我在Amazon AWS ECS容器中启动任务时,我需要通过Java SDK以编程方式恢复退出代码。
它出现在Amazon Web界面中,在SDK中我可以获得基于文本的失败原因,但是有没有方法可以获得显式的退出代码?

cpjpxq1n

cpjpxq1n1#

这是我获取任务的特定容器名称的退出代码的方法

aws ecs describe-tasks \
  --cluster $ECS_CLUSTER \
  --tasks $TASK_ARN \
  --query "tasks[0].containers[?name=='$CONTAINER_NAME'].exitCode" \
  --output text

在脚本中

#!/bin/sh
AWS_PROFILE=default
ECS_CLUSTER=cluster_name
CONTAINER_NAME=migrate

# Run task and get its arn
# NOTE: many of the necessary cli inputs have been omitted here
TASK_ARN=$(aws ecs run-task \
  --cluster $ECS_CLUSTER \
  --query 'tasks[].taskArn' \
  --output text | rev | cut -d'/' -f1 | rev)

# Wait for ecs task to stop
aws ecs wait tasks-stopped \
  --cluster $ECS_CLUSTER \
  --tasks $TASK_ARN

# Get exit code
TASK_EXIT_CODE=$(aws ecs describe-tasks \
  --cluster $ECS_CLUSTER \
  --tasks $TASK_ARN \
  --query "tasks[0].containers[?name=='$CONTAINER_NAME'].exitCode" \
  --output text)

echo "The $TASK_ARN ran in ECS cluster $ECS_CLUSTER and its $CONTAINER_NAME returned exit code $TASK_EXIT_CODE"

# exit with the same code
exit $TASK_EXIT_CODE

如果有多个容器,最好在退出之前sum退出代码,或者单独检查每个容器。

xuo3flqw

xuo3flqw2#

每个容器的退出代码可以通过DescribeTasks API作为exitCode获得。

相关问题