【发布时间】:2019-12-08 06:30:19
【问题描述】:
我正在设置一些 Terraform 来管理 lambda 和 s3 存储桶,并对 s3 的内容进行版本控制。创建基础架构的第一个版本很好。发布第二个版本时,terraform 会替换 zip 文件而不是创建新版本。
我尝试在 terraform 配置中向 s3 存储桶添加版本控制,并将 api-version 移动到变量字符串。
data "archive_file" "lambda_zip" {
type = "zip"
source_file = "main.js"
output_path = "main.zip"
}
resource "aws_s3_bucket" "lambda_bucket" {
bucket = "s3-bucket-for-tft-project"
versioning {
enabled = true
}
}
resource "aws_s3_bucket_object" "lambda_zip_file" {
bucket = "${aws_s3_bucket.lambda_bucket.bucket}"
key = "v${var.api-version}-${data.archive_file.lambda_zip.output_path}"
source = "${data.archive_file.lambda_zip.output_path}"
}
resource "aws_lambda_function" "lambda_function" {
s3_bucket = "${aws_s3_bucket.lambda_bucket.bucket}"
s3_key = "${aws_s3_bucket_object.lambda_zip_file.key}"
function_name = "lambda_test_with_s3_version"
role = "${aws_iam_role.lambda_exec.arn}"
handler = "main.handler"
runtime = "nodejs8.10"
}
我希望输出是另一个 zip 文件,但现在 lambda 指向新版本,如果 var.api-version 发生更改,则可以更改回旧版本。
【问题讨论】:
标签: amazon-web-services terraform