Skip to content

Commit

Permalink
Merge branch 'add-rds-db-instance' into lambda-add-rds-user
Browse files Browse the repository at this point in the history
  • Loading branch information
kunduso committed Sep 20, 2024
2 parents 7fc2062 + a5c216a commit 102eaa5
Show file tree
Hide file tree
Showing 5 changed files with 95 additions and 0 deletions.
Empty file added create_user_lambda.tf
Empty file.
15 changes: 15 additions & 0 deletions create_user_ssm_parameter.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@

# Read the JSON file
#https://registry.terraform.io/providers/hashicorp/local/latest/docs/data-sources/file
data "local_file" "user_list" {
filename = "${path.module}/user_list.json"
}

# Create SSM Parameter
#https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ssm_parameter
resource "aws_ssm_parameter" "user_list" {

Check failure on line 10 in create_user_ssm_parameter.tf

View workflow job for this annotation

GitHub Actions / scan

CKV2_AWS_34: "AWS SSM Parameter should be Encrypted"
name = "/${var.name}/db_user_list" # Replace with your desired parameter name
description = "User and database mappings for Amazon RDS for PostgreSQL DB users."
type = "String"
value = data.local_file.user_list.content
}
54 changes: 54 additions & 0 deletions manage_db_user/handler.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
import os
import psycopg2
import boto3

def lambda_handler(event, context):
# Retrieve database connection details from environment variables
host = os.environ['DB_HOST']
port = os.environ['DB_PORT']
user = os.environ['DB_USER']
password = os.environ['DB_PASSWORD']

# Name of the new database to create
new_db_name = 'ItemDB'

try:
# Connect to the default 'postgres' database
conn = psycopg2.connect(
host=host,
port=port,
user=user,
password=password,
database='postgres'
)
conn.autocommit = True

# Create a cursor
cur = conn.cursor()

# Check if the database already exists
cur.execute(f"SELECT 1 FROM pg_database WHERE datname = '{new_db_name}'")
exists = cur.fetchone()

if not exists:
# Create the new database
cur.execute(f'CREATE DATABASE "{new_db_name}"')
print(f"Database '{new_db_name}' created successfully")
else:
print(f"Database '{new_db_name}' already exists")

# Close the cursor and connection
cur.close()
conn.close()

return {
'statusCode': 200,
'body': f"Database operation for '{new_db_name}' completed successfully"
}

except Exception as e:
print(f"Error: {str(e)}")
return {
'statusCode': 500,
'body': f"An error occurred: {str(e)}"
}
7 changes: 7 additions & 0 deletions provider.tf
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@ terraform {
source = "hashicorp/aws"
version = "5.63.1"
}
local = {
source = "hashicorp/local"
version = "2.5.2"
}
random = {
source = "hashicorp/random"
version = "3.6.2"
Expand All @@ -21,6 +25,9 @@ provider "aws" {
}
}
}
provider "local" {
# Configuration options
}
provider "random" {
# Configuration options
}
19 changes: 19 additions & 0 deletions user_list.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"user_database_mappings": [
{
"username": "user1"
},
{
"username": "user2",
"database": "postgres"
},
{
"username": "user3",
"database": "db1"
},
{
"username": "user4",
"database": "db3"
}
]
}

0 comments on commit 102eaa5

Please sign in to comment.