如何查找现有 AWS lambda 层的 ARN



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

您需要从声明 lambda 层资源的项目中获取处于远程状态的数据源。

在我看来,这是最简单的方法是使用远程状态后端来存储每个项目的地形状态,以便您可以从其他项目引用它。根据我的经验,最容易设置的远程状态是 S3 远程状态。

完成此操作后,您可以在 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}"
}

通过输出这些值,它们将在远程状态下可供其他地形模块使用。

最新更新