как развернуть на aws с помощью ci/cd для zappa(python)

Я использую zappa для развертывания на aws. И я хотел внедрить CI/CD на AWS. Итак, я создал конвейер и успешно выполнил Aws COMMIT и AWS BUILD.

Я не могу развернуть то же самое с помощью AWS CODE DEPLOY.

Buildspec.yaml выглядит так:

version: 0.2


    phases:
      install:
        commands:
          - echo Setting up virtualenv
          - python -m venv venv
          - source venv/bin/activate
          - echo Installing requirements from file
          - pip install -r requirements.txt
      build:
        commands:
          - echo Build started on `date`
          - echo Building and running tests
          - python tests.py
          - flask db upgrade
      post_build:
        commands:
          - echo Build completed on `date`
          - echo Starting deployment
          - zappa update dev
          - echo Deployment completed

Как выполнить zappa deploy или zappa update на AWS?

Я не знаю, как добавить файл appspec.yaml для создания.

Пожалуйста помоги! Застрявший!!


comment
Я не уверен, правильно ли я понимаю вопрос. Собираетесь ли вы обновлять, а затем развертывать новую версию вашего приложения с помощью zappa посредством сборки кода каждый раз, когда вы отправляете изменения в свой репозиторий, код которого, как я предполагаю, размещен в AWS CodeCommit?   -  person groobie newbie    schedule 15.01.2019
comment
@groobienewbie Да, именно так. Я хочу обновлять zappa каждый раз, когда отправляю код в COdeCOMmit. Но по какой-то причине он падает на aws. Как сделать, чтобы код развёртывался для работы с zappa. Я обновил файл спецификации выше. Взгляни, пожалуйста. Благодарю вас.   -  person jason    schedule 19.01.2019


Ответы (2)


Вот файл buildspec.yml, который я использую. Вы можете настроить это в соответствии с вашими потребностями (например, включая команду обновления БД).

version: 0.2

phases:
  install:
    commands:
      - mkdir /tmp/src/
      - mv $CODEBUILD_SRC_DIR/* /tmp/src/
      - cd /tmp/src/
      - python3 -m venv docker_env && source docker_env/bin/activate && pip install --upgrade pip==9.0.3 && pip install -r requirements.txt && zappa update production && deactivate && rm -rf docker_env
  post_build:
    commands:
      - cd $CODEBUILD_SRC_DIR
      - rm -rf /tmp/src/
      - echo Build completed on `date`

Обратите внимание, что здесь используется образ Docker danielwhatmuff/zappa:python3.6 в CodeBuild. Я использую этот образ, так как он основан на AWS Lambda и настроен для Zappa.

person Matt Healy    schedule 29.01.2019
comment
Как вы выполняете то же самое в codeDEPLOY? Я застрял здесь на какое-то время, и в Интернете нет документации по тому же самому. Это очень простое требование. - person jason; 30.01.2019
comment
Я получаю эту ошибку в codebuild: Код состояния контекста фазы: COMMAND_EXECUTION_ERROR Сообщение: Ошибка при выполнении команды: python3 -m venv docker_env && source docker_env/bin/activate && pip install --upgrade pip==9.0.3 && pip install -r требования .txt && zappa update production && деактивировать && rm -rf docker_env. Причина: выход из статуса 127 - person jason; 30.01.2019
comment
Кроме того, это для спецификации сборки или спецификации приложения?? - person jason; 30.01.2019
comment
Кроме того, могу ли я развернуть это на лямбда или на ec2? Я хочу развернуть его, используя саму лямбду. Является ли это возможным? - person jason; 30.01.2019
comment
Я хочу сделать что-то подобное - вы в конечном итоге использовали этот метод (запустив его из кода и объявив его в buildspec.yml)? - person HaDoMin; 16.12.2020

Обновление Zappa для Code Deploy: ваш Buildspec.yaml выглядит довольно хорошо, но есть один важный момент, который следует учитывать.

Postbuild всегда будет работать независимо от успеха/неудачи. Отладочная информация может быть извлечена из неудачной сборки.

Либо проверьте причину сбоя в журнале сборки, либо измените свой yml, чтобы он выглядел так, как показано ниже (внимание: это только черновик изменения, проверьте его перед использованием в системах):

version: 0.2
  phases:
    install:
      commands:
        - yum -y groupinstall development
        - yum -y install zlib-devel
        - yum -y install openssl-devel
        - wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tar.xz
        - tar xJf Python-3.6.0.tar.xz
        - cd Python-3.6.0
        - ./configure
        - make
        - make install 
        - ln -s /usr/local/bin/python3.6 /usr/bin/python3
        - curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py"
        - python3 get-pip.py
        - pip3 install virtualenv
        - virtualenv -p /usr/bin/python3 venv
        - source venv/bin/activate
        - pip3 install -r requirements.txt
    build:
      commands:
        - echo Build started on `date`
        - echo Building and running tests
        - python3 tests.py
        - flask db upgrade
    post_build:
      commands:
        - if [ $CODEBUILD_BUILD_SUCCEEDING = 1 ]; then echo Build completed on `date`; echo Starting deployment; zappa update dev; else echo Build failed ignoring deployment; fi
        - echo Deployment completed

Надеюсь ответит.

Обновление Zappa для AWS

Ниже приведены шаги по обновлению Zappa на AWS.

  1. Настройте AWS с пользователем IAM
  2. Настройте клиентский интерфейс AWS на локальном хосте с помощью команды a. pip установить awscli б. настроить aws
  3. Вызовите «Zappa init», он сгенерирует zappa_settings.json на основе предоставленных данных.
  4. Заппа развертывает <name provided for environment in step3>

Теперь ваше приложение будет развернуто на AWS. Всякий раз, когда вам нужно обновить вызов

Обновление Заппы <name provided for environment in step3>

person ganeshragav    schedule 19.01.2019
comment
Привет, Ганеш. Файл спецификации приложения выдавал мне ошибку, в которой говорилось, что файл недействителен, и всегда не выполнялась часть развертывания. Кроме того, здесь я могу указать версию Python, например: image:python3.6. Как в гитлабе или битбакете. Как код развёртывания узнает, что это python и конкретная версия! - person jason; 22.01.2019
comment
Джейсон, образ ОС может быть либо Linux, либо Windows в соответствии со спецификациями aws для развертывания кода. Вы не устанавливаете python3.6, поэтому любой уровень python по умолчанию для системы будет использоваться. По умолчанию python -> представляет версию python 2.x. Если вы хотите установить Python3.6, просто следуйте инструкциям ниже на этапе установки yum install -y python3.6 python3 -m venv venv source venv/bin/activate pip3 install -r requirements.txt, а затем везде, где вы вызываете python, замените его с питоном 3.6. - person ganeshragav; 24.01.2019
comment
Пожалуйста, не могли бы вы помочь мне создать файл Appspec для запуска того же?? Я буду очень благодарна! - person jason; 24.01.2019
comment
Обновлен файл черновика с информацией об ответе. Пожалуйста, дважды проверьте, чтобы соответствовать вашему стандарту перед тестированием. - person ganeshragav; 24.01.2019
comment
Я продолжаю получать эту ошибку! Развертывание завершилось неудачно, так как файл AppSpec, в котором указана конфигурация развертывания AWS Lambda, отсутствует или имеет недопустимую конфигурацию. В файле AppSpec обнаружено нераспознанное свойство. Шаблон не может быть проанализирован. - person jason; 28.01.2019
comment
Как я могу это исправить? Кроме того, для развертывания я использую AWS LAMBDA, а не EC2 или EBS! - person jason; 28.01.2019