AWS: невозможно импортировать модуль 'обработчик': нет модуля с именем 'numpy' - PullRequest
4 голосов
/ 27 марта 2020

AWS Новичок ie здесь

Я должен разместить свои python скрипты через Gitlab CI в качестве лямбды и запускать их с помощью cloudwatch на AWS.

Я изучаю следующие уроки:

  1. https://docs.gitlab.com/ee/user/project/clusters/serverless/aws.html
  2. https://serverless.com/blog/serverless-python-packaging/

Из первого урока я беру только файл .gitlab-ci.yml и добавляю его в урок, показанный во втором уроке (но вместо python 3.6 я выбираю 3.7 в качестве среды выполнения)

У меня есть следующий serverless.yml файл

service: numpy-test

provider:
  name: aws
  runtime: python3.7

functions:
  numpy:
    handler: handler.main

plugins:
  - serverless-python-requirements

custom:
  pythonRequirements:
    dockerizePip: non-linux

package:
  exclude:
    - venv/**

и следующий .gitlab-ci.yml файл:

image: node:latest

stages:
  - deploy

production:
  stage: deploy
  before_script:
    - npm config set prefix /usr/local
    - npm install -g serverless
    - npm install --save serverless-python-requirements
  script:
    - serverless deploy
  environment: production

Когда я пу sh файл .gitlab-ci.yml, он работает без любые ошибки.

enter image description here

Я вижу лямбда-функцию, созданную в моей AWS лямбде. Когда я соединяю эту лямбду с Cloudwatch, чтобы лямбда запускалась каждую 1 минуту, я получаю в журналах следующую ошибку:

enter image description here

Я также у меня есть requirements.txt файл, и он имеет

numpy==1.18.2

В моем каталоге есть следующие файлы / папки: enter image description here

Может кто-нибудь, пожалуйста, помогите мне с этим и объясните мне ошибку, которую я делаю, и как ее можно исправить?

Редактировать 1

Я отредактировал файл serverless.yml, как указано Макозаки, и теперь, когда я помещаю sh в репозиторий, файл CI не может выдать следующую ошибку:

enter image description here enter image description here

Ответы [ 2 ]

5 голосов
/ 28 марта 2020

Одной из причин может быть docker изображение, которое вы использовали в. gitlab-ci.yml файле. Но вы хотите развернуть python лямбду с некоторыми модулями. Попробуйте использовать образ, который имеет оба узла конфигурации python, а также узел, подобный этому образу:

nikolaik/python-nodejs

или, если вам нужна какая-то конкретная c версия, вы можете сделать это также:

nikolaik/python-nodejs:python3.7-nodejs13

после того, как вы получили ошибку, я попытался повторить ее в своем аккаунте. Итак, теперь я внес некоторые изменения в serverless.yml, а также в файл .gitlab-ci.yml здесь.

вы можете изменить имя службы в serverless.yml

и aws регион в .gitlab-ci.yml

после этого он был развернут в моем аккаунте и работал нормально.

и вот результат теста: Нет значения, поскольку функция не возвращает никакого значения, но печатает массив.

вот мой журнал CloudWatch:

Надеюсь, что после этих изменений вы сможете заставить его работать.

0 голосов
/ 27 марта 2020

Похоже, вы пропустили шаг о добавлении serverless-python-requirements плагина к serverless.yml.

Попробуйте добавить его, как упоминалось в блоге:

# serverless.yml

plugins:
  - serverless-python-requirements

custom:
  pythonRequirements:
    dockerizePip: non-linux
...