从外部模块获取 lambda arn?
Getting lambda arn from an external module?
我正在使用这个 module。具体来说,我的 lambda 看起来像这样:
module "lambda_function_existing_package_s3" {
source = "terraform-aws-modules/lambda/aws"
function_name = "lambda"
description = "lambda"
lambda_role = aws_iam_role.iam_for_lambda.arn
handler = "lambda_function.lambda_handler"
runtime = "python3.8"
timeout = 30
create_package = false
s3_existing_package = {
bucket = var.bucket_id
key = "bucket/location"
}
vpc_subnet_ids = [var.subnet1, var.subnet2]
vpc_security_group_ids = [aws_security_group.allow_egress.id]
attach_network_policy = true
environment_variables = {
1 = "1",
2 = "2"
}
}
我正在尝试将此 lambda 的 arn 导出为 SSM,如下所示:
resource "aws_ssm_parameter" "lambda" {
name = "/lambda/arn"
type = "String"
value = module.lambda_function_existing_package_s3.this.arn
}
这是我最近的尝试,它抛出一个错误,说
this object doesn't have attribute "this"
,尽管文档中提到了它。我也试过:
value = module.lambda_function_existing_package_s3.arn
,以及
value = aws_lambda_function.this.arn
None 有效,我不确定为什么。当我注释掉 SSM 部分时,我已经成功地部署了 lambda,这就是输出的样子:
name: this
provider: hashicorp/aws
type: aws_lambda_function
module: lambda_function_existing_package_s3
我在这里错过了什么?
根据 module outputs documentation,Lambda 函数 ARN 值的命名空间将为 module.<declared name>.lambda_function_arn
。
resource "aws_ssm_parameter" "lambda" {
name = "/lambda/arn"
type = "String"
value = module.lambda_function_existing_package_s3.lambda_function_arn
}
我正在使用这个 module。具体来说,我的 lambda 看起来像这样:
module "lambda_function_existing_package_s3" {
source = "terraform-aws-modules/lambda/aws"
function_name = "lambda"
description = "lambda"
lambda_role = aws_iam_role.iam_for_lambda.arn
handler = "lambda_function.lambda_handler"
runtime = "python3.8"
timeout = 30
create_package = false
s3_existing_package = {
bucket = var.bucket_id
key = "bucket/location"
}
vpc_subnet_ids = [var.subnet1, var.subnet2]
vpc_security_group_ids = [aws_security_group.allow_egress.id]
attach_network_policy = true
environment_variables = {
1 = "1",
2 = "2"
}
}
我正在尝试将此 lambda 的 arn 导出为 SSM,如下所示:
resource "aws_ssm_parameter" "lambda" {
name = "/lambda/arn"
type = "String"
value = module.lambda_function_existing_package_s3.this.arn
}
这是我最近的尝试,它抛出一个错误,说
this object doesn't have attribute "this"
,尽管文档中提到了它。我也试过:
value = module.lambda_function_existing_package_s3.arn
,以及
value = aws_lambda_function.this.arn
None 有效,我不确定为什么。当我注释掉 SSM 部分时,我已经成功地部署了 lambda,这就是输出的样子:
name: this
provider: hashicorp/aws
type: aws_lambda_function
module: lambda_function_existing_package_s3
我在这里错过了什么?
根据 module outputs documentation,Lambda 函数 ARN 值的命名空间将为 module.<declared name>.lambda_function_arn
。
resource "aws_ssm_parameter" "lambda" {
name = "/lambda/arn"
type = "String"
value = module.lambda_function_existing_package_s3.lambda_function_arn
}