我正在将无服务器框架1.32.0与AWS Lambdas和Python 3.6结合使用。我想以一种单独的方式部署多个Lambda,因为目前我只能对目录中的每个Lambda进行一次部署,这可能会在不久的将来与许多Lambda混淆。
这是我当前的项目结构:
└── cat_service
│
├── hello_cat
│ ├── hello_cat-functions.yml
│ └── service.py
│
├── random_cat_fact
│ ├── random_cat_fact-functions.yml
│ └── service.py
│
└── serverless.yml
serverless.yml
service: cat-service
provider:
name: aws
runtime: python3.6
stage: dev
stackName: cat-service
deploymentBucket:
name: test-cat-bucket
role: arn:aws:iam::#{AWS::AccountId}:role/lambda-cat-role
cfnRole: arn:aws:iam::#{AWS::AccountId}:role/cloudformation-cat-role
functions:
- ${file(lambdas/hello_cat/hello_cat-functions.yml)}
stepFunctions:
stateMachines:
catStateMachine:
definition:
Comment: "Get cat hello"
StartAt: hello_cat
States:
hello_cat:
Type: Task
Resource: "arn:aws:lambda:#{AWS::Region}:#{AWS::AccountId}:function:${self:service}-${opt:stage}-hello_cat"
End: true
plugins:
- serverless-step-functions
- serverless-pseudo-parameters
hello_cat-functions.yml
msc_cat_facts:
handler: service.handler
name: ${self:service}-${opt:stage}-msc_cat_facts
问题在于,当我使用serverless deploy --stage dev
进行部署时,它会压缩整个项目并且不会分隔lambda,因此AWS控制台中的实际Lambda显示为hello_cat
但包含了整个项目结构,而不是将每个lambda文件都分离到其自己的目录中。
是否有一种方法可以仅使用一个serverless.yml
在同一项目中部署单独的lambda?
谢谢。
答案 0 :(得分:2)
答案 1 :(得分:0)
除了包含到serverless.yml
中(如@thomasmichaelwallace所建议的那样)之外,
package:
individually: true
尝试将处理函数的路径更改为 hello_cat-functions.yml ,
从handler: service.handler
到:
msc_cat_facts:
handler: hello_cat/service.handler
name: ${self:service}-${opt:stage}-msc_cat_facts