如何使用 Terraform 获取 AWS Lambda ARN?

Cog*_*Sum 10 aws-lambda terraform

我正在尝试定义一个返回 Lambda 函数的 ARN 的 terraform 输出块。Lambda 在子模块中定义。根据文档,lambda 似乎应该已经有一个 ARN 属性:https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/lambda_function#arn

使用它作为来源,我认为我应该能够执行以下操作:

output "lambda_arn" {
  value = module.aws_lambda_function.arn
}
Run Code Online (Sandbox Code Playgroud)

这会产生以下错误:

Error: Unsupported attribute

  on main.tf line 19, in output "lambda_arn":
  19:   value = module.aws_lambda_function.arn

This object does not have an attribute named "arn".
Run Code Online (Sandbox Code Playgroud)

我将不胜感激任何意见,谢谢。

Mar*_*cin 11

文档是正确的。数据源data.aws_lambda_function具有arn属性。arn但是,您正在尝试从自定义模块访问module.aws_lambda_function。为此,您必须arn在模块中定义输出。

所以在你的模块中你应该有这样的东西:

data "aws_lambda_function" "existing" {
  function_name = "function-to-get"
}

output "arn" {
  value = data.aws_lambda_function.existing.arn
}
Run Code Online (Sandbox Code Playgroud)

然后,如果您的模块名为aws_lambda_function

module "aws_lambda_function" {
   source = "path-to-module"   
}
Run Code Online (Sandbox Code Playgroud)

您将能够访问arn

module.aws_lambda_function.arn
Run Code Online (Sandbox Code Playgroud)