Aws lambda 地形环境和更新单个资源
我使用Terraform连续部署lambda函数。lambda模块创建函数和初始别名[DEV、QA、PROD]。当进行更改时,Aws lambda 地形环境和更新单个资源,aws-lambda,terraform,Aws Lambda,Terraform,我使用Terraform连续部署lambda函数。lambda模块创建函数和初始别名[DEV、QA、PROD]。当进行更改时,源代码\u散列将更新,Terraform将更新代码。挑战在于,当我想将别名从DEV更新为QA时,它会更新整个堆栈。代码如下。谢谢你的帮助 $ cat main.tf module "sample" { source = "./lambda" name = "sample" runtime = "n
源代码\u散列
将更新,Terraform将更新代码。挑战在于,当我想将别名从DEV更新为QA时,它会更新整个堆栈。代码如下。谢谢你的帮助
$ cat main.tf
module "sample" {
source = "./lambda"
name = "sample"
runtime = "nodejs6.10"
role = "${aws_iam_role.iam_role_for_lambda.arn}"
filename = "../Archive.zip"
source_code_hash = "${base64sha256(file("../Archive.zip"))}"
source_dir = "../sample"
alias = "${var.env_name}"
}
$ cat module/main.tf
resource "aws_lambda_function" "lambda" {
filename = "${var.filename}"
function_name = "${var.name}"
role = "${var.role}"
handler = "${var.name}.${var.handler}"
runtime = "${var.runtime}"
source_code_hash = "${data.archive_file.lambda_zip.output_base64sha256}"
publish = "true"
}
resource "aws_lambda_alias" "lambda_alias" {
count = "2"
name = "${element(var.alias, count.index)}"
#name = "${var.alias}"
description = "${var.name}"
function_name = "${aws_lambda_function.lambda.arn}"
function_version = "${aws_lambda_function.lambda.version}"
}
不同的环境需要不同的
tfvars
和tfstate
文件
假设您使用最新的地形版本
创建一个环境文件夹(例如,env
),并为每个环境设置-backend.tf
和.tfvars
文件
$ cat main.tf
terraform {
required_version = ">= 0.9.1"
backend "s3" {
encrypt = "true"
}
}
$ cat env/dev-backend.tf
bucket = "terraform-<change-to-s3-global-unique-id>"
key = "terraform/dev/terraform.tfstate"
kms_key_id = "xxxx-xxxx-xxxx-xxxx"
$ cat env/dev.tfvars
env_name = dev
不同的环境需要不同的
tfvars
和tfstate
文件
假设您使用最新的地形版本
创建一个环境文件夹(例如,env
),并为每个环境设置-backend.tf
和.tfvars
文件
$ cat main.tf
terraform {
required_version = ">= 0.9.1"
backend "s3" {
encrypt = "true"
}
}
$ cat env/dev-backend.tf
bucket = "terraform-<change-to-s3-global-unique-id>"
key = "terraform/dev/terraform.tfstate"
kms_key_id = "xxxx-xxxx-xxxx-xxxx"
$ cat env/dev.tfvars
env_name = dev
谢谢你的回复。挑战在于,对于这个用例,DEV、QA和PROD在同一个帐户中。最后,我使用Terraform管理lambda函数代码,并通过aws cli更新别名。再次感谢。我不明白你在说什么。当然,这些代码在同一个帐户中工作,您担心什么?谢谢您的回复。挑战在于,对于这个用例,DEV、QA和PROD在同一个帐户中。最后,我使用Terraform管理lambda函数代码,并通过aws cli更新别名。再次感谢。我不明白你在说什么。当然,这些代码在同一个帐户中工作,您担心什么?