我使用此脚本创建了一个lambda层。
resource "aws_lambda_layer_version" "lambda_common_layer" {
layer_name = "lambda_common_layer"
s3_bucket = "${aws_s3_bucket_object.object_lambda_common_layer.bucket}"
s3_key = "${aws_s3_bucket_object.object_lambda_common_layer.key}"
s3_object_version = "${aws_s3_bucket_object.object_lambda_common_layer.version_id}"
source_code_hash = "${data.archive_file.layer_zip_lambda_common_layer.output_base64sha256}"
description = "Common layer providing logging"
compatible_runtimes = ["python3.6"]
}
我也有一个lambda定义,我想在其中使用该层。为此,我需要传递一个ARN列表,而且我不知道如何获取现有lambda层的ARN。 Terraform脚本。 怎么做 ? 这是我的lambda声明
我尝试仅使用图层名称作为资源,但它正突出显示
resource "aws_lambda_layer_version" "lambda_common_layer" {
layer_name = "lambda_common_layer"
}
...
layers = ["${aws_lambda_layer_version.lambda_common_layer.layer_arn}"]
答案 0 :(得分:0)
您将需要remote state中来自声明了lambda层资源的项目中的数据源。
在我看来,这是最简单的方法,就是使用远程状态backend存储每个项目的地形状态,以便您可以从其他项目中引用它。以我的经验,最容易设置的远程状态是S3 remote state。
完成后,您可以在lambda层项目中包含一个outputs.tf
文件,其内容如下:
output "lambda_layer_arn" {
value = "${aws_lambda_layer_version.lambda_common_layer.arn}"
}
output "lambda_layer_version_arn" {
value = "${aws_lambda_layer_version.lambda_common_layer.layer_arn}"
}
通过输出这些值,它们将在远程状态下可供其他terraform模块使用。