resource "aws_iam_role" "lambda" {
name = "lambda-role"
assume_role_policy = jsonencode({
Version = "2012-10-17"
Statement = [
{
Action = "sts:AssumeRole"
Effect = "Allow"
Sid = ""
Principal = {
Service = "lambda.amazonaws.com"
}
}
]
})
managed_policy_arns = ["arn:aws:iam::aws:policy/AdministratorAccess"]
}
resource "aws_lambda_function" "lambda" {
function_name = "skills-rds-secret-function"
handler = "lambda_function.lambda_handler"
runtime = "python3.12"
filename = "./src/secretmanger-lambda-function.zip"
source_code_hash = filebase64sha256("./src/secretmanger-lambda-function.zip")
role = aws_iam_role.lambda.arn
}
resource "aws_iam_policy" "lambda_policy" {
name = "lambda-policy"
policy = jsonencode({
Version = "2012-10-17"
Statement = [
{
Action = [
"secretsmanager:GetSecretValue",
"secretsmanager:PutSecretValue",
"secretsmanager:UpdateSecretVersionStage"
]
Effect = "Allow"
Resource = "*"
},
{
Action = "logs:*"
Effect = "Allow"
Resource = "arn:aws:logs:*:*:*"
}
]
})
}
resource "aws_iam_role_policy_attachment" "lambda_policy_attachment" {
role = aws_iam_role.lambda.name
policy_arn = aws_iam_policy.lambda_policy.arn
}
resource "aws_lambda_permission" "allow_secretsmanager" {
statement_id = "AllowExecutionFromSecretsManager"
action = "lambda:InvokeFunction"
function_name = aws_lambda_function.lambda.function_name
principal = "secretsmanager.amazonaws.com"
}