Aws lambda 如何使用alias将AWS lambda从一个环境转移/升级到另一个环境(例如,从开发到生产)?

Aws lambda 如何使用alias将AWS lambda从一个环境转移/升级到另一个环境(例如,从开发到生产)?,aws-lambda,Aws Lambda,我正在使用SAM创建一个AWS无服务器应用程序。基本上,我想要实现的是使用API网关的不同阶段(dev/test/prod)来调用各种Lambda函数别名(dev/test/prod) 我完全被绊住了,我想知道人们采取了什么策略来转移lambda流量,例如从LambdaA:dev到LambdaA:prod 我曾尝试使用“AutoPublishAlias”,但在SAM AutoPublishAlias中,一个cloudformation堆栈中不能有多个别名,因此无法进行流量转移 在使用单个堆栈之前

我正在使用SAM创建一个AWS无服务器应用程序。基本上,我想要实现的是使用API网关的不同阶段(dev/test/prod)来调用各种Lambda函数别名(dev/test/prod)

我完全被绊住了,我想知道人们采取了什么策略来转移lambda流量,例如从LambdaA:dev到LambdaA:prod

我曾尝试使用“AutoPublishAlias”,但在SAM AutoPublishAlias中,一个cloudformation堆栈中不能有多个别名,因此无法进行流量转移


在使用单个堆栈之前,我还使用了Canary部署,当我将lambda分离到由不同cloudformation堆栈管理的多个环境中(即dev lambaA、test lambdaA、prod lambdaA)时,它工作正常。但是我想通过只让lambda驻留在单个堆栈中来减少lambda函数的数量。

您可以做的是将以下内容添加到template.yaml文件中:

Resources:
    ProductionAPI:
    Type: AWS::Serverless::Api
        Properties:
        StageName: PRD
        DefinitionUri: ./prdswagger.yaml

    DevelopmentAPI:
    Type: AWS::Serverless::Api
        Properties:
        StageName: DEV
        DefinitionUri: ./devswagger.yaml
并使用swagger文件创建端点。在每个端点,将x-amazon-apigateway-integration添加到目标的正确lambda版本

  x-amazon-apigateway-integration:
      httpMethod: "POST"
      type: aws_proxy
      uri: "arn:aws:apigateway:eu-central-1:lambda:path/2015-03-31/functions/arn:aws:lambda:eu-central-1:[account_nr]:function:[myfunctionname]:PRD/invocations"
      passthroughBehavior: "when_no_match"

您可以做的是将以下内容添加到template.yaml文件中:

Resources:
    ProductionAPI:
    Type: AWS::Serverless::Api
        Properties:
        StageName: PRD
        DefinitionUri: ./prdswagger.yaml

    DevelopmentAPI:
    Type: AWS::Serverless::Api
        Properties:
        StageName: DEV
        DefinitionUri: ./devswagger.yaml
并使用swagger文件创建端点。在每个端点,将x-amazon-apigateway-integration添加到目标的正确lambda版本

  x-amazon-apigateway-integration:
      httpMethod: "POST"
      type: aws_proxy
      uri: "arn:aws:apigateway:eu-central-1:lambda:path/2015-03-31/functions/arn:aws:lambda:eu-central-1:[account_nr]:function:[myfunctionname]:PRD/invocations"
      passthroughBehavior: "when_no_match"