Мне интересно, как я могу заставить мое локальное бессерверное развертывание имитировать то, что происходит, когда я развертываю его на AWS.
Вот мой бессерверный yaml-файл:
service: payment # NOTE: update this with your service name
# You can pin your service to only deploy with a specific Serverless version
# Check out our docs for more details
# frameworkVersion: "=X.X.X"
environment:
SLS_DEBUG: "*"
provider:
name: aws
runtime: nodejs8.10
stage: production
region: ca-central-1
timeout: 60
role: ${file(../config/prod.env.json):ROLE}
vpc:
securityGroupIds:
- ${file(../config/prod.env.json):SECURITY_GROUP}
subnetIds:
- ${file(../config/prod.env.json):SUBNET}
apiGateway:
apiKeySourceType: HEADER
apiKeys:
- ${file(../config/prod.env.json):APIKEY}
package:
include:
- ../lib/**
functions:
- '${file(src/handlers/payment.serverless.yml)}'
plugins:
- serverless-offline
Моя файловая структура выглядит так:
root
--- node_modules
--- lib
- models
--- payment
- serverless.yml
Когда я развертываю его на AWS, папка lib помещается в папку лямбда-функции, но локально мне нужно определить ее путь, который обычно является ../.../../
Как я могу сделать так, чтобы локально или при развертывании мне не приходилось менять пути?
Есть докер-контейнер, который очень близок к aws lambda. Вы можете развернуть бессерверную версию в контейнере методом проб и ошибок, делая то, что вы хотите. Таким образом вы также можете создать слой лямбда, который поддерживает бессерверный режим.
Serverless, как и terraform, пытается запустить все зависимости параллельно, что возможно во время развертывания. Единственный способ принудительно установить порядок оценки ресурсов - создать зависимость между ними. Я бы предложил создать этот контейнер докеров и протестировать там свое развертывание, а также создать зависимости между вашими ресурсами, чтобы создать заказ. Насколько мне известно, это единственный способ из-за того, как работает Serverless.
проблема в том, как бессерверное развертывание кода. когда вы запускаете его локально, он не выполняет его так же, как при развертывании.