Search code examples
amazon-web-servicesdockeramazon-ecs

ECS invalid reference format error


I try to deploy and run a simple Dockerized Ruby backend using Amazon ECS by running a Task (defined by Task Definition) but it failed to run my command and returned this error:

CannotPullContainerError: API error (400): invalid reference format

I've tried to run a small Entrypoint command of echo "Hello" but it's returning the same error regardless it's exec form or shell form. I tried to run this command in my local terminal it's running well:

$ docker-compose run job echo 'HELLO_WORLD'
HELLO_WORLD

This is the error message as shown in the Details section of my cluster task:

Status reason   CannotPullContainerError: API error (400): invalid reference format
  Entry point   ["echo","HELLO"]

this is my Task Definition JSON (hiding certain information for security reason):

{
    "executionRoleArn": null,
    "containerDefinitions": [
        {
            "dnsSearchDomains": null,
            "logConfiguration": null,
            "entryPoint": [
                "echo",
                "HELLO"
            ],
            "portMappings": [],
            "command": [],
            "linuxParameters": null,
            "cpu": 0,
            "environment": [
                {
                    "name": "RAILS_ENV",
                    "value": "production"
                }
            ],
            "ulimits": null,
            "dnsServers": null,
            "mountPoints": [],
            "workingDirectory": null,
            "dockerSecurityOptions": null,
            "memory": 7000,
            "memoryReservation": null,
            "volumesFrom": [],
            "image": "<ecs_image_arn>",
            "disableNetworking": false,
            "healthCheck": null,
            "essential": true,
            "links": null,
            "hostname": null,
            "extraHosts": null,
            "user": null,
            "readonlyRootFilesystem": null,
            "dockerLabels": null,
            "privileged": null,
            "name": "<name>"
        }
    ],
    "memory": null,
    "taskRoleArn": "arn:aws:iam::<id>:role/<name>",
    "family": "<test-cluster>",
    "requiresCompatibilities": [
        "EC2"
    ],
    "networkMode": null,
    "cpu": null,
    "volumes": [],
    "placementConstraints": []
}

Changing entryPoint to use command doesn't work as well.

Status reason   CannotPullContainerError: API error (400): invalid reference format
    Command ["echo","HELLO"]

Am I missing out any configuration to make a simple echo command work?


Solution

  • "Invalid reference format" means that the image name docker is trying to parse is invalid. In your logs:

       "image": "<ecs_image_arn>",
    

    The image name is indeed invalid and needs to be replaced with a valid image name. If that string has been replaced by you in this question for privacy, then the part removed is where your error exists.