Данные пользователя ec2 не оправданы - PullRequest
0 голосов
/ 25 декабря 2018

Я настраиваю веб-приложение через конвейер кода.Мой скрипт формирования облака создает экземпляр ec2.В этих пользовательских данных ec2 я написал логику для получения кода от s3 и копирования кода в ec2 и запуска сервера.Веб-приложение находится в среде Python Pyramid.

конвейер кода связан с GitHub.Создает zip-файл и загружает его в корзину s3.(Это все в файле buildspec.yml)

Когда я изменил скрипт пользовательских данных и запустил конвейер кода, он работал нормально.Но когда я изменил какой-то файл веб-приложения (Моя база кода) и перезапустил конвейер кода.Это изменение не отражается.

Это для экземпляра ubuntu ec2.

    #cloud-boothook
    #!/bin/bash -xe
    echo "hello "
    exec > /etc/setup_log.txt 2> /etc/setup_err.txt
    sleep 5s
    echo "User_Data starts"
    rm -rf /home/ubuntu/c
    mkdir /home/ubuntu/c
    key=`aws s3 ls s3://bucket-name/pipeline-name/MyApp/ --recursive | sort | tail -n 1 | awk '{print $4}'`
    aws s3 cp s3://bucket-name/$key /home/ubuntu/c/
    cd /home/ubuntu/c
    zipname="$(cut -d'/' -f3 <<<"$key")"
    echo $zipname
    mv /home/ubuntu/c/$zipname /home/ubuntu/c/c.zip
    unzip -o /home/ubuntu/c/c.zip -d /home/ubuntu/c/
    echo $?
    python3 -m venv venv
    venv/bin/pip3 install -e .
    rm -rf cc.zip
    aws configure set default.region us-east-1
    venv/bin/pserve development.ini http_port=5000 &

Ожидаемый результат - когда я запускаю основной конвейер, каждый раз, когда выполняется скрипт пользовательских данных.

Дайте мне предложение, любой другой

Ответы [ 2 ]

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

Сценарий User-Data выполняется ровно один раз при создании экземпляра .Если вы хотите периодически синхронизировать изменения кода с экземпляром, вам следует подумать о реализации CronJob в вашем сценарии пользовательских данных или использовать сервис, такой как AWS CodeDeploy, для развертывания новых версий (это предпочтительный подход).

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

CodePipeline использует разные объекты S3 для каждого артефакта выполнения конвейера, поэтому вы не можете жестко ссылаться на него.Вы можете опубликовать артефакт в определенном месте.Возможно, вы захотите использовать CodeDeploy для развертывания последней версии вашего приложения.

...