Получение журналов приложений. Команда не выполнена в экземпляре

В настоящее время, используя веб-сервисы Amazon, я успешно развернул несколько приложений на Elastic Beanstalk (с зеленым состоянием кластера) в виде контейнеров Docker.

Проблема, однако, возникает, когда я пытаюсь получить логи с консоли; когда я делаю "запрос журналов", журнал не найден. Когда я возвращаюсь на панель управления после запроса журналов, появляется новое событие / ошибка:

[Экземпляр: i-123456789] Сбой команды в экземпляре. Код возврата: 1 Вывод: bundleLogs.py --conf-path '/opt/elasticbeanstalk/tasks/bundlelogs.d/*' --location-prefix 'resources/ Environment /logs/bundle/' Невозможно выполнить метод publish_contents_from_filename для любого целевых объектов. Для более подробной информации, проверьте /var/log/eb-activity.log, используя консоль или EB CLI.

Пытаясь решить проблему, я подключился к своему кластеру по SSH и использовал следующую команду, чтобы найти журналы в моем контейнере Docker:

sudo docker exec myinstance cat /var/log/logstash_activity.log

Мои журналы найдены, как и ожидалось.

Пытаясь узнать больше об ошибке, я заглянул в /var/log/eb-activity.log и нашел следующие строки:

[2015-07-06T12:54:30.137Z] INFO  [26993] - [CMD-BundleLogs] : Starting activity...
[2015-07-06T12:54:30.363Z] INFO  [26993] - [CMD-BundleLogs/AddonsBefore] : Starting activity...
[2015-07-06T12:54:30.363Z] INFO  [26993] - [CMD-BundleLogs/AddonsBefore] : Completed activity.
[2015-07-06T12:54:30.363Z] INFO  [26993] - [CMD-BundleLogs/BundleLogs] : Starting activity...
[2015-07-06T12:54:30.364Z] INFO  [26993] - [CMD-BundleLogs/BundleLogs/BundleLogs] : Starting activity...
[2015-07-06T12:54:30.627Z] INFO  [26993] - [CMD-BundleLogs/BundleLogs/BundleLogs] : Activity execution failed, because: bundleLogs.py --conf-path '/opt/elasticbeanstalk/tasks/bundlelogs.d/*' --location-prefix 'resources/environments/logs/bundle/'
Unable to execute method publish_contents_from_filename on any of the target objects (Executor::NonZeroExitStatus)


[2015-07-06T12:54:30.627Z] INFO  [26993] - [CMD-BundleLogs/BundleLogs/BundleLogs] : Activity failed.
[2015-07-06T12:54:30.627Z] INFO  [26993] - [CMD-BundleLogs/BundleLogs] : Activity failed.
[2015-07-06T12:54:30.627Z] INFO  [26993] - [CMD-BundleLogs] : Completed activity. Result:
Command CMD-BundleLogs failed.

Однако сообщение об ошибке мне не сильно помогло.

В поле "Logging" моего Dockerrun.aws.json я указал путь "/var/log", поскольку именно эта папка, среди прочего, содержит журналы моего приложения. Я также попробовал значение "/var/log/logstash_activity.log" без особого успеха.

Почему консоль Beanstalk не может найти логи моих приложений?

2 ответа

Старый вопрос, но я только что понял это для наших приложений. Какую политику пользователя вы используете? Если вы используете ReadOnly, политика по умолчанию "AWSElasticBeanstalkReadOnlyAccess" не включает возможность загрузки журнала. В документации aws приведен пример политики IAM, которую пользователь может создать для включения этой функции.

См. http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/AWSHowTo.iam.managed-policies.html разделе "Создание пользовательской политики пользователя". В последнем примере показаны необходимые разрешения S3, которые необходимо предоставить поверх того, что уже предоставлено в политике ReadOnlyAccess, для объединения и загрузки журналов.

К сожалению, существующий ответ мне не сильно помог. Это все еще было связано с правами S3.

Я должен был настроить права экземпляра на следующее, и это сработало

{
    "Sid": "AllowS3ForEBLogs",
    "Action": [
        "s3:Get*",
        "s3:List*",
        "s3:PutObject"
    ],
    "Effect": "Allow",
    "Resource": [
        "arn:aws:s3:::elasticbeanstalk-*",
        "arn:aws:s3:::elasticbeanstalk-*/resources/environments/logs/*"
    ]

}

Мое вдохновение было этим.

Другие вопросы по тегам