Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
82 commits
Select commit Hold shift + click to select a range
5c91c8d
jdk17 update
hkhcoder Jan 10, 2025
6d3e46a
commit
ankur9853 Oct 26, 2025
e8f3516
commit
ankur9853 Dec 9, 2025
76a29c5
coomit
ankur9853 Dec 20, 2025
43ba18a
Commit
ankur9853 Dec 22, 2025
90fca93
Commit
ankur9853 Dec 22, 2025
f91a746
Commit
ankur9853 Dec 24, 2025
7831b7c
commit
ankur9853 Dec 24, 2025
1f5a5ec
Commit
ankur9853 Dec 24, 2025
db561ee
Commit
ankur9853 Dec 24, 2025
9666fb8
Commit
ankur9853 Dec 24, 2025
a608708
Commit
ankur9853 Dec 24, 2025
397d97b
Commit
ankur9853 Dec 24, 2025
7880ac2
Commit
ankur9853 Dec 24, 2025
ee55868
Commit
ankur9853 Dec 24, 2025
267b264
Commit
ankur9853 Dec 24, 2025
fb64d20
Commit
ankur9853 Dec 25, 2025
21c0dbe
Commit
ankur9853 Dec 25, 2025
ffc71db
Commit
ankur9853 Dec 25, 2025
cb2c388
Commit
ankur9853 Dec 25, 2025
e24420a
Commit
ankur9853 Dec 25, 2025
213fd24
Commit
ankur9853 Dec 25, 2025
497aa74
Commit
ankur9853 Dec 25, 2025
5ebd006
Commit
ankur9853 Dec 25, 2025
a85c57c
Commit
ankur9853 Dec 25, 2025
b6d4810
Commit
ankur9853 Dec 25, 2025
83bb9ad
Commit
ankur9853 Dec 25, 2025
6e7ffe6
Commit
ankur9853 Dec 25, 2025
ae1408d
Commit
ankur9853 Dec 25, 2025
e44782d
Commit
ankur9853 Dec 25, 2025
14d7abb
Commit
ankur9853 Dec 25, 2025
45a3f2e
Commit
ankur9853 Dec 25, 2025
22616e5
Commit
ankur9853 Dec 25, 2025
eaabaf1
Commit
ankur9853 Dec 25, 2025
4777104
Commit
ankur9853 Dec 25, 2025
5247b3d
Commit
ankur9853 Dec 25, 2025
848caa4
Commit
ankur9853 Dec 25, 2025
726120f
Commit
ankur9853 Dec 25, 2025
ea986c6
Commit
ankur9853 Dec 25, 2025
c1e92a4
Commit
ankur9853 Dec 25, 2025
9a27f5e
Commit
ankur9853 Dec 25, 2025
002a7b6
Commit
ankur9853 Dec 25, 2025
f5d93aa
Commit
ankur9853 Dec 25, 2025
f855623
Commit
ankur9853 Dec 26, 2025
a794dc4
Commit
ankur9853 Dec 26, 2025
4c7eeb4
Commit
ankur9853 Dec 26, 2025
8bc8f05
Commit
ankur9853 Dec 26, 2025
d904557
Commit
ankur9853 Dec 26, 2025
611159c
Commit
ankur9853 Dec 26, 2025
bcb6c8a
Commit
ankur9853 Dec 26, 2025
4876522
Commit
ankur9853 Dec 26, 2025
b09fb39
Commit
ankur9853 Dec 26, 2025
3c130b9
Commit
ankur9853 Dec 26, 2025
891b627
Commit
ankur9853 Dec 26, 2025
cfc55c1
Commit
ankur9853 Dec 27, 2025
9f4ed2b
Commit
ankur9853 Dec 27, 2025
fe51996
Commit
ankur9853 Dec 28, 2025
c1674da
Commit
ankur9853 Dec 28, 2025
ac00aa4
Commit Day22
ankur9853 Dec 29, 2025
ed23d94
Commit readme.md
ankur9853 Dec 29, 2025
9b81d57
Commit modules & provider.tf
ankur9853 Dec 29, 2025
540bb11
Commit modules
ankur9853 Dec 29, 2025
66af2ab
Commit vpc
ankur9853 Dec 29, 2025
49060dd
Commit vpc module
ankur9853 Dec 29, 2025
503855b
Commit modules
ankur9853 Dec 29, 2025
a195756
Commit working code
ankur9853 Dec 31, 2025
cb20d01
Commit working project
ankur9853 Dec 31, 2025
e75aad2
Commit Day23 full code with lamda function comments
ankur9853 Jan 4, 2026
f652158
commit
ankur9853 Jan 4, 2026
ddda8d8
commit readme.md for script folder when docker didn't install.
ankur9853 Jan 4, 2026
50b1626
Commit
ankur9853 Jan 4, 2026
a227a13
commit
ankur9853 Jan 4, 2026
32de065
Commit
ankur9853 Jan 4, 2026
768ba4f
Commit
ankur9853 Jan 4, 2026
f2db1db
commit
ankur9853 Jan 4, 2026
29c54ad
Commit Day24
ankur9853 Jan 4, 2026
d836d72
Commit
ankur9853 Jan 4, 2026
239c774
Commit
ankur9853 Jan 4, 2026
b84b237
Commit
ankur9853 Jan 5, 2026
c9e15db
Commit
ankur9853 Jan 5, 2026
e833e9f
commit
ankur9853 Jan 5, 2026
cf202fe
Commit to guestbook
ankur9853 Jan 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# Local Terraform state
*.tfstate
*.tfstate.*

# .terraform directory
.terraform/

# Crash log files
crash.log

# Ignore any .tfvars files, which are used to store sensitive variables.
*.tfvars
196 changes: 196 additions & 0 deletions AWS-Tf-Handson/Day18/Terraform/main.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,196 @@
resource "random_id" "name" {
byte_length = 4
}

locals {
bucket_prefix = "${var.project_name}-${var.environment}"
upload_bucket_name = "${local.bucket_prefix}-${random_id.name.hex}"
processed_bucket_name = "${local.bucket_prefix}-processed-${random_id.name.hex}"
lambda_function_name = "${var.project_name}-${var.environment}-processor"
}

#####################################
# S3 Buckets
#####################################

## Upload Bucket (SOURCE BUCKET)
resource "aws_s3_bucket" "upload_bucket" {
bucket = local.upload_bucket_name
}

resource "aws_s3_bucket_versioning" "upload_bucket_versioning" {
bucket = aws_s3_bucket.upload_bucket.id

versioning_configuration {
status = "Enabled"
}
}

resource "aws_s3_bucket_server_side_encryption_configuration" "upload_bucket_encryption" {
bucket = aws_s3_bucket.upload_bucket.id

rule {
apply_server_side_encryption_by_default {
sse_algorithm = "AES256"
}
}
}

resource "aws_s3_bucket_public_access_block" "upload_bucket_public_access_block" {
bucket = aws_s3_bucket.upload_bucket.id

block_public_acls = true
block_public_policy = true
ignore_public_acls = true
restrict_public_buckets = true
}


## Processed Bucket (DESTINATION BUCKET)
resource "aws_s3_bucket" "processed_bucket" {
bucket = local.processed_bucket_name
}

resource "aws_s3_bucket_versioning" "processed_bucket_versioning" {
bucket = aws_s3_bucket.processed_bucket.id

versioning_configuration {
status = "Enabled"
}
}

resource "aws_s3_bucket_server_side_encryption_configuration" "processed_bucket_encryption" {
bucket = aws_s3_bucket.processed_bucket.id

rule {
apply_server_side_encryption_by_default {
sse_algorithm = "AES256"
}
}
}

resource "aws_s3_bucket_public_access_block" "processed_bucket_public_access_block" {

bucket = aws_s3_bucket.processed_bucket.id

block_public_acls = true
block_public_policy = true
ignore_public_acls = true
restrict_public_buckets = true
}


######################################
# S3 Bucket Notification for Lambda Function
######################################
resource "aws_s3_bucket_notification" "bucket_notification" {
bucket = aws_s3_bucket.upload_bucket.id

lambda_function {
lambda_function_arn = aws_lambda_function.lambda_function.arn
events = ["s3:ObjectCreated:*"]
}

depends_on = [aws_lambda_permission.allow_bucket]
}

######################################
# IAM Role and Policy for Lambda Function
######################################
resource "aws_iam_role" "lambda_exec_role" {
name = "${local.lambda_function_name}-exec-role"

assume_role_policy = jsonencode({
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "lambda.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
})
}

resource "aws_iam_role_policy" "lambda_exec_policy" {
name = "${local.lambda_function_name}-exec-policy"
role = aws_iam_role.lambda_exec_role.id

policy = jsonencode({
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "arn:aws:logs:${var.region}:*:*:*"
},
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:GetObjectVersion",
],
"Resource": "{aws_s3_bucket.upload_bucket.arn}/*"
},
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:PutObjectAcl"
],
"Resource": "{aws_s3_bucket.processed_bucket.arn}/*"
}
]
})
}


####################################
# Lambda Layer for dependencies
####################################
resource "aws_lambda_layer_version" "lambda_layer" {
filename = "pillow_layer.zip"
layer_name = "${local.lambda_function_name}-layer"
compatible_runtimes = ["python3.9"]
description = "Lambda layer for image processing dependencies"
}

######################################
# Lambda Function
######################################
data "archive_file" "lambda_function_zip" {
type = "zip"
source_file = "lambda_function.py"
output_path = "lambda_function.zip"
}


resource "aws_lambda_function" "lambda_function" {

filename = "lambda_function.zip"
function_name = local.lambda_function_name
role = aws_iam_role.lambda_exec_role.arn
handler = "index.handler"
runtime = "python3.9"

layers = [aws_lambda_layer_version.lambda_layer.arn]

environment {
variables = {
PROCESSED_BUCKET = aws_s3_bucket.processed_bucket.bucket
}
}
}

resource "aws_lambda_permission" "allow_bucket" {
function_name = aws_lambda_function.lambda_function.function_name
action = "lambda:InvokeFunction"
principal = "s3.amazonaws.com"
source_arn = aws_s3_bucket.upload_bucket.arn
}
15 changes: 15 additions & 0 deletions AWS-Tf-Handson/Day18/Terraform/outputs.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
output "upload_bucket_name" {
value = aws_s3_bucket.upload_bucket.bucket
}

output "processed_bucket_name" {
value = aws_s3_bucket.processed_bucket.bucket
}

output "lambda_function_name" {
value = aws_lambda_function.lambda_function.function_name
}

output "lambda_function_arn" {
value = aws_lambda_function.lambda_function.arn
}
11 changes: 11 additions & 0 deletions AWS-Tf-Handson/Day18/Terraform/variables.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
variable "project_name" {
default = "S3-Lambda-Project"
}

variable "environment" {
default = "dev"
}

variable "region" {
default = "us-east-1"
}
Loading