如何查找现有AWS Lambda层的ARN

时间:2019-02-11 13:50:07

标签: terraform

我使用此脚本创建了一个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}"]

1 个答案:

答案 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模块使用。