ECR Task definition: Container links should not ha

2019-08-12 05:25发布

问题:

I'm using AWS-CLI to register an ECR task definition. My task definition is like follows:

{
"family": "",
"taskRoleArn": "",
"executionRoleArn": "",
"networkMode": "none",
"containerDefinitions": [
    {
        "name": "",
        "image": "",
        "cpu": 0,
        "memory": 0,
        "memoryReservation": 0,
        "links": [
            ""
        ],
        "portMappings": [
            {
                "hostPort": 80, 
                "protocol": "tcp", 
                "containerPort": 80
            }
        ],
        "essential": true,
        "entryPoint": [
            ""
        ],
        "command": [
            ""
        ],
        "environment": [
            {
                "name": "",
                "value": ""
            }
        ],
        "mountPoints": [
            {
                "sourceVolume": "",
                "containerPath": "",
                "readOnly": true
            }
        ],
        "volumesFrom": [
            {
                "sourceContainer": "",
                "readOnly": true
            }
        ],
        "linuxParameters": {
            "capabilities": {
                "add": [
                    ""
                ],
                "drop": [
                    ""
                ]
            },
            "devices": [
                {
                    "hostPath": "",
                    "containerPath": "",
                    "permissions": [
                        "mknod"
                    ]
                }
            ],
            "initProcessEnabled": true
        },
        "hostname": "",
        "user": "",
        "workingDirectory": "",
        "disableNetworking": true,
        "privileged": true,
        "readonlyRootFilesystem": true,
        "dnsServers": [
            ""
        ],
        "dnsSearchDomains": [
            ""
        ],
        "extraHosts": [
            {
                "hostname": "",
                "ipAddress": ""
            }
        ],
        "dockerSecurityOptions": [
            ""
        ],
        "dockerLabels": {
            "KeyName": ""
        },
        "ulimits": [
            {
                "name": "fsize",
                "softLimit": 0,
                "hardLimit": 0
            }
        ],
        "logConfiguration": {
            "logDriver": "syslog",
            "options": {
                "KeyName": ""
            }
        }
    }
],
"volumes": [
    {
        "name": "",
        "host": {
            "sourcePath": ""
        }
    }
],
"placementConstraints": [
    {
        "type": "memberOf",
        "expression": ""
    }
],
"requiresCompatibilities": [
    "EC2"
],
"cpu": "10",
"memory": "600"

} , which is basically almost identical to the auto-generated skeleton:

 aws ecs register-task-definition --generate-cli-skeleton

But it looks that when using the command

aws ecs register-task-definition --family taskDef --cli-input-json taskDef-v1.json --region us-east-2

I get this: An error occurred (ClientException) when calling the RegisterTaskDefinition operation: Container links should not have a cycle

What am I doing wrong?

回答1:

That particular error is caused because you have empty links defined:

"links": [
  ""
]

The CLI skeleton is a template you need to edit - it has many empty values for fields that are not required. The minimum task definition template is something like:

{
  "containerDefinitions": [
    {
      "name": "my-task-name",
      "image": "my-registry/my-image",
      "memoryReservation": 256,
      "cpu": 256
    }
  ]
}