Как получить журналы AWS CodeDeploy и показать их в конвейере BitBucket

Я хочу получать журналы CodeDeploy из своего экземпляра Amazon EC2, когда сценарий завершается сбоем во время развертывания, а затем отображать журналы в конвейерах BitBucket.

Как это сделать?
Есть ли какой-либо API для получения журналов из CodeDeploy?


person Kashan Baig    schedule 13.12.2019    source источник


Ответы (2)


Я не уверен насчет BitBucket, но изначально в AWS вы можете передавать журналы из агента CodeDeploy в журналы CloudWatch с помощью агента журналов CloudWatch [1]. В журналах CloudWatch вы создадите фильтр метрик, который будет подавать сигнал тревоги, когда в записях журнала появляется определенный текст [2].

Расположение файлов журнала агента CodeDeploy:

LINUX 
*** /opt/codedeploy-agent/deployment-root/deployment-group-ID/deployment-ID/logs/scripts.log
*** /var/log/aws/codedeploy-agent/codedeploy-agent.log
*** /tmp/codedeploy-agent.update.log
WINDOWS 
*** C:\ProgramData\Amazon\CodeDeploy\log\codedeploy-agent-log.txt
*** C:\ProgramData\Amazon\CodeDeploy\deployment-group-ID\deployment-ID\logs\scripts.log
*** C:\ProgramData\Amazon\CodeDeployUpdater\log\codedeploy-agent.updater.log

Использованная литература:

[1] Быстрый старт: разрешите инстансам Amazon EC2 под управлением Windows Server 2016 отправлять журналы в журналы CloudWatch с помощью агента журналов CloudWatch — https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/QuickStartWindows2016.html

[2] https://theithollow.com/2017/12/11/use-amazon-cloudwatch-logs-metric-filters-send-alerts/

person shariqmaws    schedule 15.12.2019

Хотя я не знаю ни одного API для этого, у меня есть простой обходной путь, который выполняет эту работу — он включает загрузку файла журнала развертывания кода по умолчанию на S3 и чтение оттуда.

  1. В экземпляре EC2 файл журнала по умолчанию для AWS Code Deploy хранится здесь: /var/log/aws/codedeploy-agent/codedeploy-agent.log.

  2. Установите aws-cli на экземпляр EC2.[1]

  3. Напишите простой сценарий оболочки, который загружает файл журнала в корзину S3. Для удобства вы можете использовать ту же корзину S3, которая используется для загрузки кода из битбакета в инстанс EC2. Однако убедитесь, что у экземпляра EC2 достаточно прав для загрузки файла в корзину S3. [2]

    #!/bin/bash

    aws s3 cp /var/log/aws/codedeploy-agent/codedeploy-agent.log s3://S3_BUCKET_NAME/codedeploy-agent.log

  4. Допустим, скрипт, созданный на предыдущем шаге, сохраняется здесь: /opt/upload-log-file.sh. Убедитесь, что у сценария есть права на чтение для развертывания кода, чтобы иметь возможность загрузить его на S3. В этом можно убедиться, выполнив команду:

    chmod +r /opt/upload-log-file.sh

  5. В файле appspec.yml определены все шаги развертывания. В сценарий последнего определенного шага (обычно это шаг «ValidateService») добавьте следующую строку для выполнения сценария upload-log-file.sh:

    /opt/upload-log-file.sh

  6. В файле bitbucket-pipelines.yml добавьте следующие шаги, чтобы прочитать содержимое загруженного файла журнала. Обратите внимание, что используемые здесь переменные должны быть объявлены в пользовательских переменных bitbucket. [3]

    apt-get update

    apt-get install -y awscli

    export aws_access_key_id=$AWS_ACCESS_KEY_ID; export aws_secret_access_key=$AWS_SECRET_ACCESS_KEY; aws s3 cp s3://$S3_BUCKET_NAME/codedeploy-agent.log .

    tail -100 codedeploy-agent.log

При следующем запуске конвейеров Bitbucket вы сможете увидеть последние 100 строк файла журнала в шагах конвейера.


Использованная литература:

[1] Установка интерфейса командной строки AWS — https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html

[2] Доступ к AWS S3 из EC2 — https://aws.amazon.com/premiumsupport/knowledge-center/ec2-instance-access-s3-bucket/

[3] Переменные и секреты Bitbucket — https://support.atlassian.com/bitbucket-cloud/docs/variables-and-secrets/

person Vishwas M.R    schedule 07.06.2021