I'm using this module. Specifically, my lambda looks like this:
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"
}
}
I'm trying to export the arn of this lambda as SSM, like this:
resource "aws_ssm_parameter" "lambda" {
name = "/lambda/arn"
type = "String"
value = module.lambda_function_existing_package_s3.this.arn
}
This is my latest attempt, which throws an error, saying that
this object doesn't have attribute "this"
, even though the docs mention it. I have also tried:
value = module.lambda_function_existing_package_s3.arn
, and
value = aws_lambda_function.this.arn
None of it works, and I'm not sure why. I've managed to deploy the lambda without errors when I commented out the SSM part, and this is what the output looks like:
name: this
provider: hashicorp/aws
type: aws_lambda_function
module: lambda_function_existing_package_s3
What am I missing here?
CodePudding user response:
According to the module outputs documentation, the namespace for the Lambda function ARN value would be 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
}