使用 S3 元数据发布 AWS Lambda 的 Terraform
Terraform For Publishing AWS Lambda Using S3 Metadata
我在尝试引用 Amazon S3 上的 zip 文件上的用户定义元数据字段时遇到了一些问题。我正在尝试使用此元数据字段来帮助 Terraform 检测 zip 文件是否已更改,以便我可以发布新版本的 Lambda 函数。
这些是 S3 上的元数据字段:
System defined Content-Type application/zip
User defined x-amz-meta-sha256 241461f66ba6bec6418679888f9c8b5210c1f183aabfe86d1cc2ab71cdffdcfc
这是我的 Terraform 配置:
data "aws_s3_bucket_object" "lambda" {
bucket = "bucket"
key = "lambda/lambda.zip"
}
resource "aws_lambda_function" "lambda" {
function_name = "lambda_name"
s3_bucket = "bucket"
s3_key = "lambda/lambda.zip"
source_code_hash = "${data.aws_s3_bucket_object.lambda.metadata.x-amz-meta-sha256}"
handler = "index.handler"
runtime = "nodejs14.x"
publish = true
role = aws_iam_role.lambda_exec.arn
vpc_config {
subnet_ids = "subnet_ids"
security_group_ids = "security_group_ids"
}
}
我在尝试 运行 'terraform plan':
时遇到了这个错误
Error: Missing map element
on ../../../modules/lambda/main.tf line 14, in resource "aws_lambda_function" "lambda":
14: source_code_hash = "${data.aws_s3_bucket_object.lambda.metadata.x-amz-meta-sha256}"
├────────────────
│ data.aws_s3_bucket_object.lambda.metadata is map of string with 1 element
This map does not have an element with the key "x-amz-meta-sha256".
我不确定 'metadata' 是否是原生 Terraform 地图数据类型。
应该是:
source_code_hash = data.aws_s3_bucket_object.lambda.metadata.Sha256
我在尝试引用 Amazon S3 上的 zip 文件上的用户定义元数据字段时遇到了一些问题。我正在尝试使用此元数据字段来帮助 Terraform 检测 zip 文件是否已更改,以便我可以发布新版本的 Lambda 函数。
这些是 S3 上的元数据字段:
System defined Content-Type application/zip
User defined x-amz-meta-sha256 241461f66ba6bec6418679888f9c8b5210c1f183aabfe86d1cc2ab71cdffdcfc
这是我的 Terraform 配置:
data "aws_s3_bucket_object" "lambda" {
bucket = "bucket"
key = "lambda/lambda.zip"
}
resource "aws_lambda_function" "lambda" {
function_name = "lambda_name"
s3_bucket = "bucket"
s3_key = "lambda/lambda.zip"
source_code_hash = "${data.aws_s3_bucket_object.lambda.metadata.x-amz-meta-sha256}"
handler = "index.handler"
runtime = "nodejs14.x"
publish = true
role = aws_iam_role.lambda_exec.arn
vpc_config {
subnet_ids = "subnet_ids"
security_group_ids = "security_group_ids"
}
}
我在尝试 运行 'terraform plan':
时遇到了这个错误Error: Missing map element
on ../../../modules/lambda/main.tf line 14, in resource "aws_lambda_function" "lambda":
14: source_code_hash = "${data.aws_s3_bucket_object.lambda.metadata.x-amz-meta-sha256}"
├────────────────
│ data.aws_s3_bucket_object.lambda.metadata is map of string with 1 element
This map does not have an element with the key "x-amz-meta-sha256".
我不确定 'metadata' 是否是原生 Terraform 地图数据类型。
应该是:
source_code_hash = data.aws_s3_bucket_object.lambda.metadata.Sha256