Как устранить неполадки, связанные с ведением журнала в cloudwatch из докера в контейнере ECS? - PullRequest
0 голосов
/ 03 декабря 2018

Я рву на себе волосы из-за этого.Вот мои настройки:

  • Контейнер ECS в экземпляре EC2, который содержит определение задачи
  • ECS, которое запускает экземпляр
  • Docker со сценарием python, который регистрируется в stderr

Я вижу группу журналов Cloudwatch для создания задачи ECS, но ничего, что я печатаю в stderr, не появляется.Cloudwatch log group

Мой контейнер ECS имеет значение по умолчанию ecsInstanceRole.EcsInstanceRole имеет политику AmazonEC2ContainerServiceforEC2Role, которая выглядит следующим образом:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ecs:CreateCluster",
                "ecs:DeregisterContainerInstance",
                "ecs:DiscoverPollEndpoint",
                "ecs:Poll",
                "ecs:RegisterContainerInstance",
                "ecs:StartTelemetrySession",
                "ecs:UpdateContainerInstancesState",
                "ecs:Submit*",
                "ecr:GetAuthorizationToken",
                "ecr:BatchCheckLayerAvailability",
                "ecr:GetDownloadUrlForLayer",
                "ecr:BatchGetImage",
                "logs:CreateLogStream",
                "logs:PutLogEvents"
                ],
                "Resource": "*"
            }
        ]
    }

Определение задачи

{
    "containerDefinitions": [
        {
            "dnsSearchDomains": [],
            "logConfiguration": {
                "logDriver": "awslogs",
                "options": {
                    "awslogs-group": "torres",
                    "awslogs-region": "us-west-2",
                    "awslogs-stream-prefix": "torres"
                }
            },
            "command": [
                "sleep",
                "infinity"
            ],
            "cpu": 100,
            "mountPoints": [
                {
                    "readOnly": null,
                    "containerPath": "/mnt/efs",
                    "sourceVolume": "efs"
                }
            ],
            "memoryReservation": 512,
            "image": "X.dkr.ecr.us-west-2.amazonaws.com/torres-docker:latest",
            "interactive": true,
            "essential": true,
            "pseudoTerminal": true,
            "readonlyRootFilesystem": false,
            "privileged": false,
            "name": "torres"
        }
    ],
    "family": "torres",
    "volumes": [
        {
            "name": "efs",
            "host": {
                "sourcePath": "/mnt/efs"
            }
        }
    ]
}

1 Ответ

0 голосов
/ 03 декабря 2018

Я понял проблему, но я не знаю, почему это решает ее.Когда я изменил свою команду с sleep infinity на простой код, который регистрирует python script.py, регистрация в CloudWatch начала работать.

До того, как я запустил контейнер с sleep infinity ssh-ing в контейнер и запустил script.py из оболочки, это НЕ регистрировалось.

...