通过task_definition.json配置EC2(而非Fargate)实例



目前,我们有一个用于AWS Fargate实例的工作任务定义文件。

我们希望从Fargate迁移到特定的AWS EC2实例,例如Z1d。

从AWS文档中,我发现需要添加ecs.instance-type参数。不幸的是,它没有说明应该在task_definition.json文件中添加到哪里。目前,我们有一些类似的东西:

{
  "family": "generic-family",
  "requiresCompatibilities": ["FARGATE"],
  "cpu": "4096",
  "memory": "8192",
  ...
  "containerDefinitions": [
                            {
                              "name": "generic-docker-name",
                              "image": "...",
                            },
                          ]
}

我们认为应该是这样的:

{
  "family": "generic-family",
  "requiresCompatibilities": ["EC2"],
  "ecs.instance-type": "Z1d",
  ...
  "containerDefinitions": [
                            {
                              "name": "generic-docker-name",
                              "image": "...",
                            },
                          ]
}

或者查看其他文档:

{
  "family": "generic-family",
  "requiresCompatibilities": ["EC2"],
  ...
  "containerDefinitions": [
                            {
                              "name": "generic-docker-name",
                              "image": "...",
                              "Parameters": {
                                "InstanceTypeParameter" : {
                                  "Type" : "String",
                                  "Default" : "z1d.large",
                                  "AllowedValues" : ["z1d.large"],
                                  "Description" : "..."
                                }
                              }
                            },
                          ]
}

但这似乎并不奏效。

有人知道该怎么做吗?或者我应该如何阅读这个特定主题的AWS文档?

将其添加到顶层的task_definition.json文件中。

"placementConstraints": [
    {
      "type": "memberOf",
      "expression": "attribute:ecs.instance-type == z1d.large"
    }
  ],

您可以在此处阅读更多信息:https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-placement-constraints.html

最新更新