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

Ansible ecs_taskdefinition模块报错:cpu等参数不被支持

解决Ansible ecs_taskdefinition模块不支持cpu/launch_type/memory参数的问题

你遇到的问题核心是当前使用的ecs_taskdefinition模块版本过旧,这些适配Fargate的参数是在后续版本的模块中才被新增支持的。下面给你两种可行的解决思路:

方案一:升级AWS相关集合,使用新版模块

旧版本的ecs_taskdefinition模块(比如Ansible 2.9及更早的内置模块、或旧版amazon.aws集合)确实不包含launch_type、cpu、memory这些参数。你需要升级到维护中的community.aws集合:

首先执行命令升级集合:

ansible-galaxy collection install community.aws --upgrade

然后修改任务配置,使用完整的模块名避免调用旧模块,同时补充Fargate必需的execution_role_arn(Fargate需要执行角色来拉取镜像、管理日志等):

- name: 创建/更新Fargate类型ECS任务定义
  community.aws.ecs_taskdefinition:
    family: "{{ taskfamily_name }}"
    execution_role_arn: "{{ ecs_execution_role.arn }}"  # Fargate必填参数
    task_role_arn: "{{ ecs_task_role.arn }}"  # 按需添加任务角色
    containers:
      - name: "{{ container_name }}"
        essential: true
        image: "{{ image_var }}"
        portMappings:
          - containerPort: "{{ container_port }}"
            hostPort: "{{ container_port }}"
        environment:
          - name: xyz_ENV
            value: "{{ env }}"
    launch_type: FARGATE
    cpu: "{{ cpu_var }}"
    memory: "{{ memory_var }}"
    state: present
    network_mode: awsvpc
    requires_compatibilities:
      - FARGATE  # 部分版本需显式声明兼容Fargate

方案二:无法升级时,用AWS CLI替代模块

如果受环境限制无法升级Ansible或集合,可以直接通过aws cli命令注册任务定义,绕过模块的参数限制:

- name: 通过AWS CLI注册ECS任务定义
  command: >
    aws ecs register-task-definition
    --family {{ taskfamily_name }}
    --network-mode awsvpc
    --requires-compatibilities FARGATE
    --cpu {{ cpu_var }}
    --memory {{ memory_var }}
    --execution-role-arn {{ ecs_execution_role.arn }}
    --task-role-arn {{ ecs_task_role.arn }}
    --containers '[
      {
        "name": "{{ container_name }}",
        "essential": true,
        "image": "{{ image_var }}",
        "portMappings": [
          {
            "containerPort": {{ container_port }},
            "hostPort": {{ container_port }}
          }
        ],
        "environment": [
          {
            "name": "xyz_ENV",
            "value": "{{ env }}"
          }
        ]
      }
    ]'
  environment:
    AWS_ACCESS_KEY_ID: "{{ aws_access_key }}"
    AWS_SECRET_ACCESS_KEY: "{{ aws_secret_key }}"
    AWS_DEFAULT_REGION: "{{ aws_region }}"

额外注意

  • Fargate模式下,cpu和memory的取值必须符合AWS的配对规则(比如1vCPU对应2GB/4GB内存等),具体可参考AWS官方的规格要求。
  • 确保你的AWS凭证拥有ecs:RegisterTaskDefinition等相关权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 13:57:40