如何为 Fargate 任务定义指定操作系统系列?

How to specify an operating System Family for Fargate task definition?

我正在使用 terraform 创建 Fargate 任务定义,但我在指定运行时平台版本时遇到了一些困难。根据 AWS docs 任务定义 operatingSystemFamily 属性 确实存在。它的默认值为 LINUX。我想将其更改为 Windows Server 2019 Core,因为我想在 Fargate 上使用 Windows 容器。

话虽如此,我无法在 Terraform 的 aws_ecs_task_definition 资源文档中找到它。

这是我的任务定义:

resource "aws_ecs_task_definition" "transform_service" {
  family                   = "${var.app_name}-transform-service-task"
  network_mode             = "awsvpc"
  requires_compatibilities = ["FARGATE"]
  cpu                = 2 * 1024  #2 vCPU
  memory             = 16 * 1024 # 16GB
  execution_role_arn = aws_iam_role.transform_service_task_execution_role.arn
  
  container_definitions = jsonencode([{
    name      = "transform-service-container-${var.environment}"
    image     = "${var.transform_service_repository_url}:latest"
    essential = true
    environment = [{
      "name" : "DOTNET_ENVIRONMENT", "value" : "Development"
    }]
    },

  ])
}

暂不支持。已经有 GitHub 个问题

PR 就绪

resource "aws_ecs_task_definition" "test" {
  family                   = "test"
  requires_compatibilities = ["FARGATE"]
  network_mode             = "awsvpc"
  cpu                      = 1024
  memory                   = 2048
  container_definitions    = <<TASK_DEFINITION
[
  {
    "name": "iis",
    "image": "mcr.microsoft.com/windows/servercore/iis",
    "cpu": 1024,
    "memory": 2048,
    "essential": true
  }
]
TASK_DEFINITION

  runtime_platform {
    operating_system_family = "WINDOWS_SERVER_2019_CORE"
    cpu_architecture        = "X86_64"
  }
}

此处发布说明: https://github.com/hashicorp/terraform-provider-aws/pull/22016

Adds platform runtime properties and validation based on https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html runtime_platform { operating_system_family = "WINDOWS_SERVER_2019_CORE" cpu_architecture = "X86_64" }