node -> python 변경 진행중

This commit is contained in:
bumpsoo 2024-07-01 02:13:51 +09:00
commit 660f85f145
5 changed files with 285 additions and 0 deletions

95
main.tf Normal file
View file

@ -0,0 +1,95 @@
# Provider Configuration
provider "aws" {
region = "ap-northeast-2"
}
# Locals for Constants (replace values as needed)
locals {
prefix = "bumpsoo-menu"
image_bucket_name = "${local.prefix}-img-bucket"
lambda_role_name = "${local.prefix}-lambda-role"
lambda_function_name = "${local.prefix}-lambda"
lambda_filename = "artifacts.zip" # Zip file containing Lambda code
lambda_handler = "lambda_function.lambda_handler" # Replace with your handler
weekday_rule_name = "${local.prefix}-weekday-image-upload"
}
# S3 Bucket (Publicly Accessible)
resource "aws_s3_bucket" "image_bucket" {
bucket = local.image_bucket_name
acl = "public-read"
# Policy for public read access to objects
policy = jsonencode({
Version = "2012-10-17"
Statement = [
{
Sid = "PublicReadGetObject"
Effect = "Allow"
Principal = "*"
Action = "s3:GetObject"
Resource = "arn:aws:s3:::${aws_s3_bucket.image_bucket.bucket}/*"
}
]
})
}
# IAM Role for Lambda (EventBridge Permissions)
resource "aws_iam_role" "lambda_role" {
name = local.lambda_role_name
assume_role_policy = jsonencode({
Version = "2012-10-17"
Statement = [
{
Action = "sts:AssumeRole"
Principal = {
Service = "lambda.amazonaws.com"
}
Effect = "Allow"
}
]
})
# Policy to allow EventBridge rule creation/management
inline_policy {
name = "lambda_eventbridge_policy"
policy = jsonencode({
Version = "2012-10-17"
Statement = [
{
Effect = "Allow"
Action = [
"events:PutRule",
"events:PutTargets"
]
Resource = "*"
}
]
})
}
}
# Lambda Function
resource "aws_lambda_function" "image_lambda" {
function_name = local.lambda_function_name
filename = local.lambda_filename
role = aws_iam_role.lambda_role.arn
handler = local.lambda_handler
runtime = "python3.11"
}
# EventBridge Rule
resource "aws_cloudwatch_event_rule" "weekday_rule" {
name = local.weekday_rule_name
description = "Trigger Lambda at 10 AM on weekdays"
schedule_expression = "cron(0 10 ? * MON-FRI *)" # 10 AM every workday in KST timezone
}
# EventBridge Target (Lambda)
resource "aws_cloudwatch_event_target" "lambda_target" {
rule = aws_cloudwatch_event_rule.weekday_rule.name
target_id = "lambda"
arn = aws_lambda_function.image_lambda.arn
}