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

添加Launch Template至IaC后AWS Batch作业卡在Runnable状态求助

AWS Batch作业卡在Runnable状态的排查与修复

以下是针对你的Terraform配置问题的具体排查点和修复方案:

1. Launch Template缺失Batch代理安装逻辑

当自定义Launch Template时,AWS不会自动配置Batch代理,必须手动添加用户数据(user_data)来安装并启动代理,否则EC2实例无法注册到Batch计算环境,导致作业一直处于Runnable状态。

修改你的Launch Template资源,添加user_data块:

resource "aws_launch_template" "conversion_launch_template" {
  name = "conversion-launch-template"

  block_device_mappings {
    device_name = "/dev/sda1"
    ebs {
      volume_size = 80
    }
  }

  iam_instance_profile {
    name = "conversion-pipeline-batch-iam-instance-profile"
  }

  # 添加Batch代理初始化脚本(适配Amazon Linux 2)
  user_data = base64encode(<<-EOF
            #!/bin/bash
            yum update -y
            yum install -y amazon-ecs-init
            # 将计算环境名称写入ECS配置文件
            echo ECS_CLUSTER=${aws_batch_compute_environment.conversion_pipeline.compute_environment_name} >> /etc/ecs/ecs.config
            systemctl enable --now ecs
            EOF
  )
}

2. 实例角色配置不一致

检查Launch Template中指定的IAM实例配置文件conversion-pipeline-batch-iam-instance-profile,与Compute Environment里instance_role引用的aws_iam_instance_profile.conversion_pipeline_batch.arn是否为同一资源。如果是不同配置文件,需统一为同一个:

# 修改Launch Template中的实例配置文件引用,与计算环境保持一致
iam_instance_profile {
  name = aws_iam_instance_profile.conversion_pipeline_batch.name
}

3. 实例角色权限不足

确保Batch实例角色附加了AmazonEC2ContainerServiceforEC2Role托管策略,该策略包含实例与Batch服务通信、拉取容器镜像、写入日志等必要权限。如果使用自定义策略,需包含以下核心权限:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ecr:GetDownloadUrlForLayer",
        "ecr:BatchGetImage",
        "ecr:BatchCheckLayerAvailability",
        "logs:CreateLogStream",
        "logs:PutLogEvents",
        "batch:RegisterJobDefinition",
        "batch:SubmitJob",
        "batch:DescribeJobs"
      ],
      "Resource": "*"
    }
  ]
}

4. 安全组出站规则限制

确认Batch计算环境使用的安全组允许HTTPS(443端口)出站流量,实例需要访问AWS Batch服务、ECR镜像仓库、S3等资源。若使用私有子网,需确保子网配置了NAT网关,保证实例能正常访问外部资源。

5. 子网资源不足

检查指定的子网是否有可用私有IP地址,以及是否有足够的CPU、内存配额来启动实例。若子网IP耗尽或资源不足,Batch无法启动新实例,作业会持续处于Runnable状态。

内容的提问来源于stack exchange,提问作者Yafaa Ben Tili

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 18:25:40