#python #yaml #serverless-framework
#python #yaml #бессерверный фреймворк
Вопрос:
Я получаю сообщение об ошибке при выполнении команды serverless deploy и не могу найти никакой документации об источнике этой ошибки. Он работает на моем локальном компьютере, что означает, что у меня должно быть установлено что-то еще, что заставляет его работать, но я не могу понять, что.
Я пытаюсь использовать AWS.
мой бессерверный.yaml:
service: suqinn-python
app: suquinn-be
plugins:
- '@serverless/enterprise-plugin'
- serverless-pseudo-parameters
- serverless-custom-packaging-plugin
- serverless-python-requirements
package:
exclude:
- 'node_modules/**'
provider:
name: aws
runtime: python3.8
profile: ${opt:profile,"AlexisLefebvre"}
region: ${opt:region,"eu-west-2"}
stage: ${opt:stage,"dev"}
environment:
STAGE: ${self:provider.stage}
REGION: ${self:provider.region}
DYNAMODB_SECURITIES_TABLE: ${self:custom.DynamoDBSecuritiesTableName}
iamRoleStatements:
- Effect: 'Allow'
Action:
- dynamodb:PutItem
- dynamodb:Query
- dynamodb:Scan
- dynamodb:GetItem
- dynamodb:UpdateItem
- dynamodb:DeleteItem
Resource:
- arn:aws:dynamodb:${self:provider.region}:#{AWS::AccountId}:table/${self:custom.DynamoDBTradesTableName}
- Effect: 'Allow'
Action:
- s3:GetObject
Resource:
- arn:aws:s3:::*
functions:
create:
handler: handler.create
environment:
STAGE: ${self:provider.stage}
events:
- http:
path: form
method: post
cors: true
get:
handler: handler.get
environment:
STAGE: ${self:provider.stage}
events:
- http:
path: form
method: get
cors: true
delete:
handler: handler.delete
environment:
STAGE: ${self:provider.stage}
events:
- http:
path: form
method: delete
cors: true
custom:
client: "kkk"
DynamoDBTradesTableName: ${self:custom.client}-trades-${self:provider.stage}
s3reportsName: ${self:custom.client}-reports-${self:provider.stage}
и мой buildspec.yaml:
version: 0.2
#comment
phases:
install:
runtime-versions:
nodejs: 10
python: 3.8
commands:
- pip install pyjwt
- pip install pytz
- pip install pandas_market_calendars
- npm install serverless -g
- npm install serverless-pseudo-parameters
- npm install serverless-custom-packaging-plugin
- npm install serverless-python-requirements
- npm install @serverless/enterprise-plugin
build:
commands:
- serverless deploy
Ответ №1:
Просто добавьте в свой serverless.yml
package: # Optional deployment packaging configuration
include: # Specify the directories and files which should be included in the deployment package
- ./**
exclude: # Specify the directories and files which should be excluded in the deployment package
- 'node_modules/**'
Лучшей практикой является включение только тех папок, которые соответствуют этой конкретной функции lambda, а не всех файлов проекта
Взято из: https://www.serverless.com/framework/docs/providers/aws/guide/serverless.yml /
Комментарии:
1. Спасибо Дори за ваш ответ. Я изменил свой бессерверный. yaml с пакетом: include: # Укажите каталоги и файлы, которые должны быть включены в пакет развертывания — » исключить: — ‘node_modules / * ‘ но я все равно получаю ту же ошибку. Похоже, что для пользовательского модуля упаковки требуется что-то, что я установил в своих модулях узла, которое не переустановлено в моей спецификации сборки. Я мог бы решить эту проблему, удалив пользовательскую упаковку, но тогда мой zip-файл увеличивается с 500 КБ до 75 МБ, что не очень хорошо.
2. @AlexisLefebvre можете ли вы показать нам инструкцию import / require? Вы используете какой-либо webpack или другие инструменты пакета?
Ответ №2:
Похоже, это происходит из плагина custom-packaging. Удаление плагина решает эту проблему, но затем ваш package.zip увеличивается в размерах, что тоже является проблемой. Внесение изменений в бессерверный.yaml для:
service: suqinn-python
app: suquinn-be
plugins:
- '@serverless/enterprise-plugin'
- serverless-pseudo-parameters
- serverless-custom-packaging-plugin
- serverless-python-requirements
package:
include:
- '*'
exclude:
- 'node_modules/**'
к сожалению, все еще выдает ту же ошибку:
Ошибка —————————————————
Ошибка: не удается найти модуль ‘. / lib / core’ в функции.Модуль._resolveFilename (internal/modules/cjs/loader.js:636:15) в функции.Модуль._load (internal/modules/cjs/loader.js:562:25) в Module.require (internal/modules/cjs/loader.js:692:17) в require (internal/modules/cjs/helpers.js:25:18) в Object. (/codebuild/output/src448056649/src/node_modules/archiver/index.js:8:16) в модуле._compile (внутренний /modules/cjs/loader.js:778:30) в объекте.Module._extensions..js (внутренний/modules/cjs/loader.js:789:10) в модуле.загрузка (внутренняя / modules/cjs/loader.js:653:32) в tryModuleLoad (внутренняя / modules/cjs/loader.js:593:12) в функции.Модуль._load (internal/modules/cjs/loader.js:585:3) в Module.require (internal/modules/cjs/loader.js:692:17) в require (internal/modules/cjs/helpers.js:25:18) в Object. (/codebuild/output/src448056649/src/node_modules/serverless-custom-packaging-plugin/lib/index.js:5:18 ) в модуле._compile (internal/modules/cjs/loader.js:778:30) в объекте.Module._extensions..js (внутренний/modules/cjs/loader.js:789:10) в модуле.загрузка (внутренняя / modules/cjs/loader.js:653:32) в tryModuleLoad (внутренняя / modules/cjs/loader.js:593:12) в функции.Модуль._load (internal/modules/cjs/loader.js:585:3) в Module.require (internal/modules/cjs/loader.js:692:17) в require (internal/modules/cjs/helpers.js:25:18) в requireServicePlugin (/usr/local/lib/node_modules/ serverless/lib/classes/PluginManager.js:27:12) в pluginsObject.modules.filter.map.name (/usr/local/lib/node_modules/serverless/lib/classes/PluginManager.js:144:20) в Array.map () в PluginManager.resolveServicePlugins (/usr/local/lib/node_modules/serverless/lib/classes/PluginManager.js:141:8) в PluginManager.loadAllPlugins (/usr/local/lib/node_modules/ serverless/lib/classes/PluginManager.js:127:40) в service.load.затем (/usr/local/ lib/ node_modules/ serverless/ lib / Serverless.js:88:39) в tryCatcher (/usr/local/lib/node_modules/ serverless/node_modules/bluebird/js/release/util.js: 16:23) в Promise._settlePromiseFromHandler (/usr/local/lib/ node_modules/ бессерверный / node_modules/ bluebird/js/release/promise.js:547:31) в Promise._settleprom (/usr/local/lib/node_modules/ бессерверный / node_modules/bluebird/js/release/promise.js:604:18) в Promise._settlePromise0 (/usr/local/lib/node_modules/ serverless/node_modules/bluebird/js/release/promise.js:649:10) в обещании._settlePromises (/usr/local/lib/node_modules/ serverless/node_modules/bluebird/js/ release/promise.js:729:18) в обещании._fulfill (/usr/local/ lib/ node_modules/ бессерверный / node_modules/bluebird/js/ release/promise.js:673:18) в Promise._settleprom (/usr/local/lib/node_modules/ бессерверный / node_modules/bluebird/js/release/promise.js:617:21) в Promise._settlePromise0 (/usr/local/lib/node_modules/ serverless/node_modules/bluebird/js/release/promise.js:649:10) в Promise._settlePromises (/usr/local/lib/node_modules/serverless/node_modules/bluebird/js/release/promise.js:729:18) по обещанию._fulfill (/usr/local/lib/node_modules/ serverless/node_modules/bluebird/js/release/promise.js:673:18) в обещании._resolveCallback (/usr/local/ lib/ node_modules/ бессерверный / node_modules/bluebird/js/ release/promise.js:466:57) в Promise._settlePromiseFromHandler (/usr/local/lib/node_modules/ бессерверный / node_modules/bluebird/js/release/promise.js: 559:17) в Promise._settleprom (/usr/local/lib/node_modules/ serverless/node_modules/bluebird/js/release/promise.js:604:18) в Promise._settleprom 0 (/usr/local/lib/node_modules/serverless/node_modules/bluebird/js/release/promise.js: 649:10) по обещанию._settlePromises (/usr/local/lib/node_modules/ serverless/node_modules/bluebird/js/ release/promise.js:729:18) в обещании._fulfill (/usr/local/ lib/node_modules/ бессерверный / node_modules/bluebird/js/ release/promise_array.js:673:18) в PromiseArray._resolve (/usr/local/lib/node_modules/ бессерверный /node_modules/bluebird/js/release/promise_array.js:127:19) в PromiseArray._promiseFulfilled (/usr/local/lib/node_modules/ бессерверный /node_modules/bluebird/js/release/promise_array.js:145:14) в Promise._settleprom (/usr/local/lib/node_modules/serverless/node_modules/bluebird/js/release/promise.js:609:26) в Promise._settlePromise0 (/usr/local/lib/ node_modules/ бессерверный / node_modules/bluebird/js/ release/promise.js:649:10) в Promise._settlePromises (/usr/local/lib/node_modules/ бессерверный / node_modules/bluebird/js/release/promise.js:729:18) в обещании._fulfill (/usr/local/lib/node_modules/ serverless/node_modules/bluebird/js/release/promise.js:673:18) в обещании._resolveCallback (/usr/local/lib/node_modules/ serverless/node_modules/bluebird/js/release/promise.js:466:57) в обещании._settlePromiseFromHandler (/usr/local/ lib/ node_modules/ бессерверный / node_modules/ bluebird/js/ release/promise.js:559:17) в Promise._settlePromise (/usr/local/lib/node_modules/ бессерверный / node_modules/bluebird/js/release/promise.js: 604 :18) в Promise._settlePromise0 (/usr/local/lib/node_modules/ serverless/node_modules/bluebird/js/release/promise.js:649:10) в Promise._settlePromises (/usr/local/lib/node_modules/serverless/node_modules/bluebird/js/release/promise.js:729:18) по обещанию._fulfill (/usr/local/lib/node_modules/ serverless/node_modules/bluebird/js/release/promise.js:673:18) в PropertiesPromiseArray .PromiseArray._resolve (/usr/local/ lib/ node_modules/ бессерверный / node_modules/bluebird/js/ release/promise_array.js:127:19) в свойствах PromiseArray._promiseFulfilled (/usr/local/lib/node_modules/ бессерверный / node_modules/bluebird/js/release/ реквизит.js:78:14) в Promise._settlePromise (/usr/local/lib/ node_modules/ бессерверный / node_modules/bluebird/js/ release/promise.js:609:26) в Promise._settlePromise0 (/usr/local/lib/node_modules/ бессерверный / node_modules/bluebird/js/release/promise.js: 649:10) по обещанию._settlePromises (/usr/local/ lib/ node_modules/ бессерверный / node_modules/bluebird/js/ release/promise.js:729:18) в _drainQueueStep (/usr/local/lib/node_modules/ бессерверный / node_modules/bluebird/js/release/async.js:93:12) в_drainQueue (/usr/local/ lib/ node_modules/ бессерверный / node_modules/ bluebird/js/ release/async.js:86:9) в Async._drainQueues (/usr/local/lib/node_modules/ бессерверный / node_modules/bluebird/js/release/async.js: 102:5) немедленно.Async.drainQueues [как _onImmediate] (/usr/local/lib/node_modules/ бессерверный / node_modules/bluebird/js/ release/async.js:15:14) при обратном вызове (timers.js:705:18) в tryOnImmediate (timers.js:676:5) при промежуточном процессе (timers.js:658:5)