我为AWS Lambda函数创建了CloudFormation模板,我需要为不同的lambda别名指定不同的环境变量值 . 我的模板看起来像:
AWSTemplateFormatVersion: "2010-09-09"
Transform: "AWS::Serverless-2016-10-31"
Description: Lambda function configuration
Resources:
EndpointLambda:
Type: "AWS::Lambda::Function"
Properties:
FunctionName: "endpoint-lambda"
Handler: "com.test.aws.RequestHandler::handleRequest"
Runtime: java8
Code:
S3Bucket: "lambda-functions"
S3Key: "test-endpoint-lambda-0.0.1.jar"
Description: Test Lambda function
MemorySize: 256
Timeout: 60
Environment:
Variables:
ES_HOST: test-es-host-url
ES_ON: true
ES_PORT: 443
ES_PROTOCOL: https
REDIS_URL: test-redis-host-url
QaLambdaAlias:
Type: "AWS::Lambda::Alias"
Properties:
FunctionName: !Ref EndpointLambda
FunctionVersion: 1
Name: "QA"
Description: "QA alias"
ProdLambdaAlias:
Type: "AWS::Lambda::Alias"
Properties:
FunctionName: !Ref EndpointLambda
FunctionVersion: 1
Name: "Prod"
Description: "Production alias"
如你所见,我有两个别名 - QA和Prod以及一堆环境变量 . 我在lambda函数声明中指定了具有公共值的变量 . 但我需要声明QA别名env . 变量的值与QA和Prod别名相关 - Prod环境的值 . 任何想法我该怎么做?
1 回答
您可以使用CloudFormation Parameters执行此操作 . 作为一个简单的例子:
然后,如果要使用其他参数,则在通过CLI进行部署时,可以使用
parameter-overrides
覆盖,如下所示: