Назад | Перейти на главную страницу

Ошибка развертывания AWS Elastic Beanstalk Docker Multicontainer, не удается установить память

Я перевожу одно из своих приложений AWS Elastic Beanstalk на Docker, используя конфигурацию Multi-container Docker из Elastic Beanstalk. Я создал новое приложение EB с новой средой. Когда я пытаюсь развернуть Dockerrun.aws.json config, EB в конечном итоге выходит из строя со следующей ошибкой на вкладке событий:

Service:AmazonECS, Code:ClientException, Message:Invalid setting for 
container 'api'. At least one of 'memory' or 'memoryReservation' must 
be specified., Class:com.amazonaws.services.ecs.model.ClientException

Мой Dockerrun.aws.json config выглядит примерно так:

{
    "AWSEBDockerrunVersion": 2,
    "containerDefinitions": [
        {
            "name": "api_proxy",
            "image": "{account_id}.dkr.ecr.us-east-1.amazonaws.com/{repo}:latest",
            "essential": true,
            "memory": 128,
            "portMappings": [
                {
                    "hostPort": 80,
                    "containerPort": 80
                }
            ],
            "links": [
                "api"
            ]
        },
        {
            "name": "api",
            "image": "{account_id}.dkr.ecr.us-east-1.amazonaws.com/{repo}:latest",
            "environment": {
                "DJANGO_SETTINGS_MODULE": "api.aws"
            },
            "essential": true,
            "memory": 128
        }
    ]
}

Любая помощь обязательно будет оценена.

Обновление 2018-02-15:

Мой текущий процесс развертывания выглядит следующим образом. Сначала я создаю образы Docker и загружаю их в Amazon ECR. Затем я застегиваю Dockerrun.aws.json файл. Поскольку это первое развертывание приложения в новой среде AWS EB, в настоящее время я загружаю zip-файл в процессе создания среды. Я выбираю платформу Preconfigured platform: Multi-container Docker. Для кода приложения я загружаю свой zip-файл, содержащий Dockerrun.aws.json файл.

Насколько я могу судить по вне док - параметр среды должен быть массивом объектов, поэтому ваш json должен выглядеть как

{
    "AWSEBDockerrunVersion": 2,
    "containerDefinitions": [{
        "name": "api",
        "image": "nginx:latest",
        "essential": true,
        "memory": 128,
        "environment": [{
            "name": "DJANGO_SETTINGS_MODULE",
            "value": "api.aws"
        }]
    },{
        "name": "api_proxy",
        "image": "nginx:latest",
        "essential": true,
        "memory": 128,
        "links": ["api"],
        "portMappings": [{
            "hostPort": 80,
            "containerPort": 80
        }]
    }]
}

По крайней мере, мне удалось запустить среду с указанным выше json