Я использую AWS SAM Framework для создания Lambda и API-шлюзов для сопряженных сервисов. Я сталкиваюсь с некоторыми трудностями при запуске модульных и интеграционных тестов для моих функций lambdas, которые используют слои (служебные функции, модели, контроллеры, конфигурации ...)
Я могу заглушить некоторые функции, но другие необходимыособенно некоторые библиотеки, которые я хочу разместить на слое (например, lodash, ...).
Заранее благодарю за помощь.
Уточнение
У меня есть проект, который структурирован следующим образом
- serverless-poi
- events / =>содержит все события для локальных тестов
- lambda-create-poi
- tests / unit / lambda-create-poi-spec
- index
- package
- lambda-delete-poi
- lambda-update-poi
- lambda-list-poi
- lambda-list-poi
- layer-poi
- nodejs /
- пакет
- conf
- модели
- контроллеры
- утилиты
- some-shared-lib (например, lodash, bluebird, ...)
Вседругие лямбды имеют ту же структуру, что и лямбда-создание-пои.
Я планирую индустриализовать развертывание через bitbucket-ci. Мой конвейер выглядит так:
image: amazon/lambda-build-node10.x
pipelines:
branches:
master:
- parallel:
- step:
name: lambda-create-poi
caches:
- node
script:
- cd lambda-create-poi
- npm install
- npm test
- step:
name: Same for other lambdas
caches:
- node
script:
#- cd lambda-xxxx
#- npm install
#- npm test
- step:
name: Package
script:
- pipe: atlassian/aws-sam-deploy:0.2.3
variables:
AWS_ACCESS_KEY_ID: $AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY: $AWS_SECRET_ACCESS_KEY
AWS_DEFAULT_REGION: $AWS_DEFAULT_REGION
S3_BUCKET: $S3_BUCKET
STACK_NAME: 'my-stack-name'
SAM_TEMPLATE: 'template.yaml'
CAPABILITIES: ['CAPABILITY_IAM', 'CAPABILITY_AUTO_EXPAND']
COMMAND: 'package-only'
- step:
name: Upload to S3
script:
- pipe: atlassian/aws-s3-deploy:0.3.2
variables:
AWS_ACCESS_KEY_ID: $AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY: $AWS_SECRET_ACCESS_KEY
AWS_DEFAULT_REGION: $AWS_DEFAULT_REGION
S3_BUCKET: $S3_BUCKET
# template packaged.yml after pipe atlassian/aws-sam-deploy package-only execution
LOCAL_PATH: '.bitbucket/pipelines/generated/pipeline/pipes/atlassian/aws-sam-deploy'
EXTRA_ARGS: '--exclude=* --include=packaged.yml'
- step:
name: Deploy stack
script:
- pipe: atlassian/aws-sam-deploy:0.2.3
variables:
AWS_ACCESS_KEY_ID: $AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY: $AWS_SECRET_ACCESS_KEY
AWS_DEFAULT_REGION: $AWS_DEFAULT_REGION
S3_BUCKET: $S3_BUCKET
STACK_NAME: 'my-stack-name'
TEMPLATE: 'https://bucket-access-lambda.s3-eu-west-1.amazonaws.com/packaged.yml'
CAPABILITIES: ['CAPABILITY_IAM', 'CAPABILITY_AUTO_EXPAND']
WAIT: 'true'
WAIT_INTERVAL: 60
COMMAND: 'deploy-only'
Моя проблема в параллельном шаге - не могу найти слой для модульного тестирования. Все юнит-тесты не пройдены (мне нужно заглушить все слои, если я использую утилиты)
Спасибо за вашу помощь.