aws-lambda - 使用环境变量条件部署 lambdas
问题描述
我已经尝试使用 terraform 部署 1 个 lambda。问题是 - 我打算只使用我制作的当前代码部署 lambda,如果我需要使用相同的代码但具有不同的环境变量部署 2nd、3rd 和 4rth lambda 怎么办?请参阅下面的示例场景
LAMBDA-1 = hello-Earth
ENV VARS:
KMS-KEY-1 = data.aws_kms_key.key1.id
KMS-KEY-2 = data.aws_kms_key.key2.id
ENV = DEV
LAMBDA-2 = hello-Mars
ENV VARS:
KMS-KEY-1 = data.aws_kms_key.key1.id
KMS-KEY-2 = data.aws_kms_key.key2.id
ENV = SQA
VARIETY = HOT
SIZE = LARGE
LAMBDA-3 = hello-Neptune
ENV VARS:
KMS-KEY-1 = data.aws_kms_key.key1.id
KMS-KEY-2 = data.aws_kms_key.key2.id
ENV = UAT
VARIETY = COLD
SIZE = MEDIUM
DISTANCE = FAR
LAMBDA-4 = hello-Pluto
ENV VARS
ENV = PROD
SIZE = SMALL
DISTANCE = FAR
解决方案
aws_lambda_function 资源有一个环境参数。在其中您可以定义您的环境变量。
因此,您的 lambda 函数资源将是相同的,但具有不同的环境参数,如下所示:
resource "aws_lambda_function" "hello-Earth" {
filename = "lambda_function_payload.zip"
function_name = "hello-Earth"
role = "${aws_iam_role.iam_for_lambda.arn}"
handler = "exports.test"
source_code_hash = "${filebase64sha256("lambda_function_payload.zip")}"
runtime = "nodejs8.10"
environment {
variables = {
KMS-KEY-1 = data.aws_kms_key.key1.id
KMS-KEY-2 = data.aws_kms_key.key2.id
ENV = "UAT"
VARIETY = "COLD"
SIZE = "MEDIUM"
DISTANCE = "FAR"
}
}
}
resource "aws_lambda_function" "hello-Mars" {
filename = "lambda_function_payload.zip"
function_name = "hello-Mars"
role = "${aws_iam_role.iam_for_lambda.arn}"
handler = "exports.test"
source_code_hash = "${filebase64sha256("lambda_function_payload.zip")}"
runtime = "nodejs8.10"
environment {
variables = {
KMS-KEY-1 = data.aws_kms_key.key1.id
KMS-KEY-2 = data.aws_kms_key.key2.id
ENV = "SQA"
VARIETY = "HOT"
SIZE = "LARGE"
}
}
}
推荐阅读
- php - Drupal 的 Organic Group 和 Group 模块有什么区别?
- python - 如何根据特定表达式将字符串列表保存在子列表中?
- python - Python 黑客排名双向 Emunese 翻译器
- angular - Ionic 4 未找到组件工厂
- python - Scraping Stackoverflow hyperlinks with Beautifulsoup
- python - 求和函数问题
- wordpress - Azure 上的 Wordpress 错误:被 CORS 策略阻止:请求的资源上不存在“Access-Control-Allow-Origin”标头
- networking - 私有节点无法加入集群
- python-3.x - how can I create a button grid in pyqt5 similar to a calculator
- server - Netty,option()与childOption()?