【发布时间】:2018-10-29 00:37:32
【问题描述】:
我为我的 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 环境的值。有什么想法我该怎么做?
【问题讨论】:
-
最好为 2 个不同的环境创建 2 个 lambda 函数。
-
@ittus 为什么比使用别名更好?
-
安全最佳实践是为不同的环境设置不同的帐户,以最大限度地减少“爆炸半径”,以防出现安全漏洞。如果有人入侵了您的一个帐户(即环境),那么他们将无法访问其他帐户。
-
@Jeshan Babooa 说得好,谢谢!
标签: amazon-web-services aws-lambda yaml amazon-cloudformation