簡體   English   中英

如何將特定的 AWS Lambda function 部署到特定的階段

[英]How can I deploy a specific AWS Lambda function to a specific Stage

我有兩個 AWS Lambda 函數。 我有 3 個堆棧開發、測試和生產。

我想要部署特定的 Lambda function 以僅進行開發和測試,但不進行生產。

我希望trial Lambda PROD僅處於testdev階段,而不是處於生產階段。

我怎樣才能做到這一點? 這是我的serverless.yml

service:
  name: demo-app

# Add the serverless-webpack plugin
plugins:
  - serverless-webpack
  - serverless-offline

provider:
  name: aws
  runtime: nodejs12.x
  timeout: 30
  stage: dev
  region: us-west-2
  profile: serverless-admin

custom:
  region: ${self:provider.region}
  stage: ${opt:stage, self:provider.stage}
  prefix: ${self:service}-${self:custom.stage}
  webpack:
    webpackConfig: ./webpack.config.js
    includeModules: true

functions:
  toggle:
    handler: src/functions/unleash-toggle/handler.main
    timeout: 900
    events:
      - http:
          path: /toggle
          method: POST
  trial:
    handler: src/functions/city/handler.main
    timeout: 900
    events:
      - http:
          path: /trial
          method: POST

resources:
  Resources:
    taskTokenTable: 
      Type: AWS::DynamoDB::Table
      Properties:
        TableName: ${self:service}-${self:custom.stage}-tokenTable
        AttributeDefinitions:
          - AttributeName: id
            AttributeType: S
        KeySchema:
          - AttributeName: id
            KeyType: HASH
        ProvisionedThroughput:
          ReadCapacityUnits: 1
          WriteCapacityUnits: 1

做了一些研究后,我發現這是可以做到的。

這可以使用無服務器插件來完成: serverless-plugin-ifelse並在custom塊下定義您的條件。

您可以在Serverless Docs上看到相同的內容。 該插件在npm上可用

同樣的事情可以通過另一個serverless-plugin-conditional-functions來實現

custom:
  serverlessIfElse:
    - If: '"${self:custom.stage}" == "prod"'
      Exclude:
        - functions.<functionName>

完整serverless.yml文件

service:
  name: demo-app

# Add the serverless-webpack plugin
plugins:
  - serverless-webpack
  - serverless-plugin-ifelse
  - serverless-offline

provider:
  name: aws
  runtime: nodejs12.x
  timeout: 30
  stage: dev
  region: us-west-2
  profile: serverless-admin

custom:
  region: ${self:provider.region}
  stage: ${opt:stage, self:provider.stage}
  prefix: ${self:service}-${self:custom.stage}
  webpack:
    webpackConfig: ./webpack.config.js
    includeModules: true
  serverlessIfElse:
    - If: '"${self:custom.stage}" == "prod"'
      Exclude:
        - functions.trail

functions:
  toggle:
    handler: src/functions/unleash-toggle/handler.main
    timeout: 900
    events:
      - http:
          path: /toggle
          method: POST
  trial:
    handler: src/functions/city/handler.main
    timeout: 900
    events:
      - http:
          path: /trial
          method: POST

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM