resource "aws_iam_role" "lambda_role" { name = "${var.function_name}-role" assume_role_policy = jsonencode({ Version = "2012-10-17", Statement = [{ Action = "sts:AssumeRole", Effect = "Allow", Principal = { Service = "lambda.amazonaws.com" } }] }) } resource "aws_iam_role_policy_attachment" "lambda_logging" { role = aws_iam_role.lambda_role.name policy_arn = "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" } resource "aws_iam_policy" "lambda_secret_access" { name = "lambda-secret-access" policy = jsonencode({ Version = "2012-10-17", Statement = [ { Effect = "Allow", Action = [ "secretsmanager:GetSecretValue" ], Resource = [ "arn:aws:secretsmanager:us-west-1:036487096349:secret:rfl-secrets-ztW9tp" ] } ] }) } resource "aws_iam_role_policy_attachment" "lambda_secret_access" { role = aws_iam_role.lambda_role.name policy_arn = aws_iam_policy.lambda_secret_access.arn } resource "aws_lambda_function" "api" { function_name = var.function_name role = aws_iam_role.lambda_role.arn handler = "bootstrap" # Rust binary handler runtime = "provided.al2023" # custom runtime for Rust filename = var.lambda_zip source_code_hash = filebase64sha256(var.lambda_zip) memory_size = 128 timeout = 30 environment { variables = { RUST_LOG = "info" } } }