【问题标题】:How to structure terraform code to get Lambda ARN after creation?创建后如何构建 terraform 代码以获取 Lambda ARN?
【发布时间】:2021-04-25 00:19:18
【问题描述】:

这是我之前问的一个问题:How to get AWS Lambda ARN using Terraform?

这个问题得到了回答,但实际上并没有解决我的问题,所以这是一个跟进。

我编写的 terraform 代码提供了一个 Lambda 函数:

根模块:

terraform {
  required_providers {
    aws = {
      source = "hashicorp/aws"
    }
  }
}

provider "aws" {
   region = var.region
   profile = var.aws_profile
}

module "aws_lambda_function" {
   source = "./modules/lambda_function"
}

子模块:

resource "aws_lambda_function" "lambda_function" {
   function_name = "lambda_function"
   handler = "lambda_function.lambda_handler"
   runtime = "python3.8"
   filename = "./task/dist/package.zip"
   role = aws_iam_role.lambda_exec.arn
}

resource "aws_iam_role" "lambda_exec" {
   name = "aws_iam_lambda"
   assume_role_policy = file("policy.json")
}

我希望用户能够做什么来获得 Lambda ARN:

terraform output

问题:我似乎无法在 terraform 代码中的任何位置包含以下代码,因为它会导致“ResourceNotFOundException: Function not found...”错误。

data "aws_lambda_function" "existing" {
  function_name = "lambda_function"
}

output "arn" {
  value = data.aws_lambda_function.existing.arn
}

我需要在哪里或如何包含此信息才能获得 ARN,或者这可能吗?

【问题讨论】:

    标签: aws-lambda terraform


    【解决方案1】:

    您无法在 data 中查找您同时创建的资源。您需要从模块中输出 ARN,然后从主 terraform 模板再次输出。

    在您的 Lambda 模块中:

    output "arn" {
      value = aws_lambda_function.lambda_function.arn
    }
    

    然后在你的主文件中:

    output "arn" {
      value = module.aws_lambda_function.arn
    }
    

    【讨论】:

      猜你喜欢
      • 2022-09-27
      • 2021-04-24
      • 2022-01-27
      • 1970-01-01
      • 2021-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-09
      相关资源
      最近更新 更多