You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取ECS Fargate容器内指定目录的文件列表?

ECS Fargate ExecuteCommand 报错 TargetNotConnectedException 解决方案

问题背景

已通过amazon-ecs-exec-checker验证核心配置正常:

  • 本地AWS CLI及Session Manager Plugin版本达标
  • IAM用户拥有ecs:ExecuteCommand权限
  • ECS任务已启用Exec功能,任务状态为RUNNING,Fargate平台版本1.4.0
  • 任务角色已配置完整ssmmessages系列权限
  • 容器内ECS代理状态为RUNNING

但执行以下命令时触发错误:

aws ecs execute-command \
  --cluster OBFUSCATEED\
  --task arn:aws:OBFUSCATED
  --container restful \
  --interactive \
  --command "/bin/sh -c 'ls /directory/i/want'"

错误提示:

An error occurred (TargetNotConnectedException) when calling the ExecuteCommand operation: The execute command failed due to an internal error. Try again later.

已知目标目录真实存在,应用已向该目录写入文件。


解决方案

1. 修正命令语法与拼写

  • 检查--cluster参数值拼写是否与实际集群名一致(示例中OBFUSCATEED疑似拼写错误)
  • 确保命令换行时的反斜杠完整,--task行末尾缺失反斜杠会直接导致语法错误
  • 简化命令逻辑,先进入容器shell再执行目录列表:
    aws ecs execute-command \
      --cluster JavaRestStressTest \
      --task arn:aws:ecs:us-east-1:OBFUSCATED:task/JavaRestStressTest/OBFUSCATED \
      --container restful \
      --interactive \
      --command "/bin/sh"
    # 进入shell后执行
    ls /directory/i/want
    

2. 验证容器内Shell可用性

部分轻量基础镜像可能未预装/bin/sh,尝试使用兼容的shell命令:

aws ecs execute-command \
  --cluster JavaRestStressTest \
  --task arn:aws:OBFUSCATED \
  --container restful \
  --interactive \
  --command "sh"

3. 确认网络连通性

  • 若未配置VPC端点,确保Fargate任务拥有公网IP,且子网路由表允许出站访问SSM服务
  • 若使用私有网络,需配置com.amazonaws.us-east-1.ssmmessages和com.amazonaws.us-east-1.ecs VPC端点,同时确保安全组允许相关端口通信

4. 重启ECS任务

ECS Exec代理偶尔会出现连接异常,重启任务可重置代理状态,重新部署后再次尝试执行命令

5. 查看任务日志定位细节

通过CloudWatch日志查看ECS任务的SSM代理日志,获取具体错误原因:

aws logs get-log-events \
  --log-group-name /aws/ecs/JavaRestStressTest \
  --log-stream-name restful/OBFUSCATED \
  --region us-east-1

日志中可能包含代理连接失败的具体信息,如网络阻塞、权限限制等


内容的提问来源于stack exchange,提问作者zaidabuhijleh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 13:52:07