Недопустимое исключение подписи во время развертывания zappa с помощью gitlab CI/CD

У меня возникла проблема с развертыванием моего флажкового приложения aws через zappa в gitlab CI/CD. В первый раз, когда я попробовал, он был развернут правильно, но каждая вторая попытка заканчивается этим исключением.

ручное развертывание из командной строки работает просто отлично, фактическая ошибка начинается при загрузке упакованного приложения в aws

Фактический gitlab-ci

image: python:3.6-buster

stages:
  - test
  - deploy-test


cache:
  paths:
    - .cache/pip

.virtualenv_deploy_setup_template: &virtualenv_deploy_setup
  before_script:
    - pip install virtualenv
    - virtualenv ~/zappa
    - source ~/zappa/bin/activate
    - pip install -r requirements.txt


    deploy-test:
  <<: *virtualenv_deploy_setup
  variables:
    ZAPPA_STAGE: test
  stage: deploy-test
  script:
    - mkdir -p ~/.aws
    - echo "[default]" >> ~/.aws/credentials
    - echo "aws_access_key_id = "$(echo $DEPLOY_AUTH | cut -f1 -d' ') >> ~/.aws/credentials
    - echo "aws_secret_access_key = "$(echo $DEPLOY_AUTH | cut -f2 -d' ') >> ~/.aws/credentials
    - mv "$ZAPPA_SETTINGS" "$(pwd)/zappa_settings.json"
    - flask db upgrade
    - zappa update $ZAPPA_STAGE || zappa deploy $ZAPPA_STAGE
  after_script:
    - rm ~/.aws/credentials
    - rm zappa_settings.json
  only:
    - develop
    - master
  when: manual

Полная трассировка стека

 Oh no! An error occurred! :(
 ==============
 ==============
 Need help? Found a bug? Let us know! :D
 File bug reports on GitHub here: https://github.com/Miserlou/Zappa
 And join our Slack channel here: https://slack.zappa.io
 Love!,
  ~ Team Zappa!
 Traceback (most recent call last):
   File "/root/zappa/lib/python3.6/site-packages/zappa/cli.py", line 753, in deploy
     function_name=self.lambda_name)
   File "/root/zappa/lib/python3.6/site-packages/zappa/core.py", line 1286, in get_lambda_function
     FunctionName=function_name)
   File "/root/zappa/lib/python3.6/site-packages/botocore/client.py", line 316, in _api_call
     return self._make_api_call(operation_name, kwargs)
   File "/root/zappa/lib/python3.6/site-packages/botocore/client.py", line 626, in _make_api_call
     raise error_class(parsed_response, operation_name)
 botocore.exceptions.ClientError: An error occurred (InvalidSignatureException) when calling the GetFunction operation: Signature expired: 20200630T120625Z is now earlier than 20200630T120627Z (20200630T121127Z - 5 min.)
 During handling of the above exception, another exception occurred:
 Traceback (most recent call last):
   File "/root/zappa/lib/python3.6/site-packages/zappa/cli.py", line 2778, in handle
     sys.exit(cli.handle())
   File "/root/zappa/lib/python3.6/site-packages/zappa/cli.py", line 512, in handle
     self.dispatch_command(self.command, stage)
   File "/root/zappa/lib/python3.6/site-packages/zappa/cli.py", line 549, in dispatch_command
     self.deploy(self.vargs['zip'])
   File "/root/zappa/lib/python3.6/site-packages/zappa/cli.py", line 786, in deploy
     self.lambda_arn = self.zappa.create_lambda_function(**kwargs)
   File "/root/zappa/lib/python3.6/site-packages/zappa/core.py", line 1069, in create_lambda_function
     response = self.lambda_client.create_function(**kwargs)
   File "/root/zappa/lib/python3.6/site-packages/botocore/client.py", line 316, in _api_call
     return self._make_api_call(operation_name, kwargs)
   File "/root/zappa/lib/python3.6/site-packages/botocore/client.py", line 626, in _make_api_call
     raise error_class(parsed_response, operation_name)
 botocore.exceptions.ClientError: An error occurred (InvalidSignatureException) when calling the CreateFunction operation: Signature expired: 20200630T120625Z is now earlier than 20200630T120627Z (20200630T121127Z - 5 min.)

person erykzabujca    schedule 30.06.2020    source источник
comment
Взгляните на мой ответ здесь: stackoverflow.com/a/61477856/1014508, но у меня такое чувство, что вы используя этот ответ уже как основу вашей собственной конфигурации gitlab. В любом случае есть несколько неизвестных, которыми вы можете поделиться, т.е. каково значение $ZAPPA_SETTINGS и почему вы его перемещаете, полная ошибка возвращается в gitlab, структура вашего проекта...   -  person mislavcimpersak    schedule 01.07.2020
comment
да, я использовал ваш в качестве основы для своего файла gitlab-ci, $ZAPPA_SETTINGS — это файл zappa_settings.json, но я почти уверен, что с ним все в порядке, потому что он работал при первой попытке развертывания. Я добавил полную трассировку стека к моему вопросу.   -  person erykzabujca    schedule 01.07.2020
comment
не могли бы вы также опубликовать свой zappa_settings.json? Хотя эта ошибка Signature expired выглядит как проблема с системным временем хоста o.O   -  person mislavcimpersak    schedule 01.07.2020
comment
К сожалению, я не могу опубликовать zappa_settings.json и попытаюсь решить проблему с системным временем хоста. Мне кажется странным, что у недавно созданного контейнера на конвейере gitlab может быть какая-то временная аномалия.   -  person erykzabujca    schedule 01.07.2020


Ответы (1)


Решение было очень тривиальным, благодаря г-ну. @mislavcimpersak я попытался синхронизировать часовой пояс контейнера с регионом aws, в котором я выполнял развертывание. РЕДАКТИРОВАТЬ:

  stage: deploy-test
  script:
    - apt update
    - apt install ntpdate
    - ntpdate de.pool.ntp.org

этот фрагмент конфигурации, добавленный на этапе развертывания gitlab-ci, исправил это

person erykzabujca    schedule 01.07.2020