无法在 Terraform ECS 提供程序中使用内存预留

Sam*_*are 0 amazon-web-services amazon-ecs terraform

我正在运行测试,我的容器不希望有硬内存限制,因为我以编程方式将虚拟机交换为更大尺寸的虚拟机,并且需要容器能够自动利用 CPU 和内存的增量。我想探索内存预留,因为它是软限制,并且如果虚拟机的内存不低,则允许容器扩展。不幸的是,这个参数似乎在任务定义中不起作用。有任何想法吗?

任务定义:

resource "aws_ecs_task_definition" "quorum" {
  family                   = "quorum-${var.consensus_mechanism}-${var.tx_privacy_engine}-${var.network_name}"
  container_definitions    = "${replace(element(compact(local.container_definitions), 0), "/\"(true|false|[0-9]+)\"/", "$1")}"
  requires_compatibilities = ["${var.ecs_mode}"]
  # cpu                      = "4096"
  # memory                   = "81920"
  memoryReservation        = "8192"
  network_mode             = "${var.ecs_network_mode}"
  task_role_arn            = "${aws_iam_role.ecs_task.arn}"
  execution_role_arn       = "${aws_iam_role.ecs_task.arn}"

  volume {
    name = "${local.shared_volume_name}"
  }

  volume {
    name      = "docker_socket"
    host_path = "/var/run/docker.sock"
  }

}

Run Code Online (Sandbox Code Playgroud)

错误:

[FINAL] Summary execution: 
Wrote summarry output to:  .mjolnir//output.log
2 errors occurred:
        * aws_ecs_service.quorum: 5 errors occurred:
        * aws_ecs_service.quorum[3]: Resource 'aws_ecs_task_definition.quorum' not found for variable 'aws_ecs_task_definition.quorum.revision'
        * aws_ecs_service.quorum[0]: Resource 'aws_ecs_task_definition.quorum' not found for variable 'aws_ecs_task_definition.quorum.revision'
        * aws_ecs_service.quorum[4]: Resource 'aws_ecs_task_definition.quorum' not found for variable 'aws_ecs_task_definition.quorum.revision'
        * aws_ecs_service.quorum[2]: Resource 'aws_ecs_task_definition.quorum' not found for variable 'aws_ecs_task_definition.quorum.revision'
        * aws_ecs_service.quorum[1]: Resource 'aws_ecs_task_definition.quorum' not found for variable 'aws_ecs_task_definition.quorum.revision'


        * output._status: Resource 'aws_ecs_task_definition.quorum' not found for variable 'aws_ecs_task_definition.quorum.revision'


Restoring env variables.

Error occured: 4
Run Code Online (Sandbox Code Playgroud)

我将非常感谢指点

yda*_*coR 5

ECS 任务定义由多个容器定义组成,其中包含一些额外参数,这些参数可以为整个任务设置硬性限制,还可以设置放置约束和网络配置等内容。

要设置允许任务在 ECS 中使用的内存软限制而不是硬限制,您需要memoryReservation容器定义而不是任务定义中使用。

您问题中的代码没有显示您如何在本地定义容器定义,但在 ECS 任务中设置软内存限制的基本示例如下所示:

resource "aws_ecs_task_definition" "service" {
  family                = "service"
  container_definitions = <<EOF
[
  {
    "name": "first",
    "image": "service-first",
    "cpu": 10,
    "memoryReservation": 512,
    "essential": true,
    "portMappings": [
      {
        "containerPort": 80,
        "hostPort": 80
      }
    ]
  },
  {
    "name": "second",
    "image": "service-second",
    "cpu": 10,
    "memoryReservation": 256,
    "essential": true,
    "portMappings": [
      {
        "containerPort": 443,
        "hostPort": 443
      }
    ]
  }
]
EOF
}
Run Code Online (Sandbox Code Playgroud)