gpt4 book ai didi

amazon-web-services - CloudFormation 模板中不同 AWS Lambda 别名的环境变量配置

转载 作者:行者123 更新时间:2023-12-05 06:34:07 28 4
gpt4 key购买 nike

我为 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 函数声明中指定了具有公共(public)值的变量。但我需要声明 QA 别名 env。与 QA 相关的变量值,以及 Prod 别名 - Prod 环境的值。有什么想法我该怎么做吗?

最佳答案

您可以使用CloudFormation Parameters去做这个。举个简单的例子:

Parameters:
LambdaRuntime:
Type: String
Default: 'java8'
Description: What Lambda runtime do we use?

Resources:
QaLambdaAlias:
Type: "AWS::Lambda::Alias"
Properties:
FunctionName:
Ref: EndpointLambda
FunctionVersion: 1
Name: "QA"
Description: "QA alias"
Runtime:
Ref: LambdaRuntime

然后,如果您想使用不同的参数,当您通过 CLI 部署时,您可以使用 parameter-overrides 进行覆盖,如下所示:

aws cloudformation deploy --stack-name MyStack --template-file \
CloudFormation/MyStack.yaml --capabilities CAPABILITY_IAM \
--parameter-overrides LambdaRuntime=nodejs8.10

关于amazon-web-services - CloudFormation 模板中不同 AWS Lambda 别名的环境变量配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50413538/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com