簡體   English   中英

如何在 Terraform 中通過標簽獲取所有 AWS Lambda

[英]How can I get all AWS Lambdas by Tag in Terraform

我有標簽為 Name=production 的 Lambda。

我想讓他們使用 Terraform,看看aws_lambda_function ,我只能通過 function_name 獲得單個 lambda

data "aws_lambda_function" "existing" {
   function_name = var.function_name
}

您可以使用aws_resourcegroupstaggingapi_resources檢索沒有更具體數據源的多個 AWS 資源的信息。

對於您的用例,考慮Name=production ,您可以使用:

data "aws_resourcegroupstaggingapi_resources" "existing" {
  resource_type_filters = ["lambda:function"]
  tag_filter {
    key    = "Name"
    values = ["production"]
  }
}

output "arns" {
  value = data.aws_resourcegroupstaggingapi_resources.existing.resource_tag_mapping_list.*.resource_arn
}

更新:如評論中所述,上面的代碼從resource_tag_mapping_list返回信息,這些信息主要是合規信息和資源的 ARN。 但您可以將其與常規aws_lambda_function數據源配對,並使用for_each從 Lambda 函數中檢索所有信息:

# continuation of the code above
data "aws_lambda_function" "existing" {
  for_each = toset(data.aws_resourcegroupstaggingapi_resources.existing.resource_tag_mapping_list.*.resource_arn)
  function_name = each.value
}

output "functions" {
  value = data.aws_lambda_function.existing.*
}

# example of information available with this data source
output "functions_runtime" {
  value = {for fn, result in data.aws_lambda_function.existing: fn => result.runtime}
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM