【问题标题】:Deploying multiple AWS lambdas separately分别部署多个 AWS lambda
【发布时间】:2019-04-15 21:49:50
【问题描述】:

我将 Serverless Framework 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 文件都在自己的目录中。

有没有办法在同一个项目中部署单独的 lambda,只有一个 serverless.yml?

提前致谢。

【问题讨论】:

    标签: python-3.x amazon-web-services aws-lambda serverless-framework aws-step-functions


    【解决方案1】:

    您需要将 Serverless 配置为 package individually

    为此,请将以下内容添加到您的serverless.yaml:

    package:
      individually: true
    

    【讨论】:

    • 感谢您的回复。我尝试了这种方法,但没有奏效,由于某种原因,它创建了一个主 lambda,其中包含另外两个,而不是分开它们。我的实现如forum.serverless.com/t/… 中所述
    • 嗨,Carlos,您找到解决方案了吗?我目前面临同样的问题。
    【解决方案2】:

    按照@thomasmichaelwallace 的建议,除了包含到serverless.yml 之外,还有:

    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
    

    【讨论】:

      猜你喜欢
      • 2023-03-09
      • 1970-01-01
      • 2019-01-13
      • 2022-01-21
      • 1970-01-01
      • 2022-12-23
      • 2019-02-04
      • 1970-01-01
      • 2017-06-19
      相关资源
      最近更新 更多