Other Services

ECR to store docker image

resource "aws_ecr_repository" "web_app_ecr" {
    name = "${local.project_name}-frontend"

    # Allow to change image tag
    image_tag_mutability = "MUTABLE"
    
    # Disable scan images for software vulnerabilities
    image_scanning_configuration {
        scan_on_push = false
    }

    # Delete the repository even if it contains images
    force_delete = true
}

output "ecr_repository_url" {
    value = aws_ecr_repository.web_app_ecr.repository_url
}

Create S3 bucket to store Artifact

resource "aws_s3_bucket" "webapp_s3bucket" {
    bucket = "${local.github_repository}-bucket-1001"
    force_destroy = true
}

# Create logs folder in S3 bucket
resource "aws_s3_object" "artifacts" {
    bucket = aws_s3_bucket.webapp_s3bucket.id
    force_destroy = true
    key = "artifacts/"
    acl = "private"
}

CloudWatch Log

resource "aws_cloudwatch_log_group" "webapp_logs" {
    name = "webapp_logs"
    # Retention 1 days
    retention_in_days = 1               
}

# Create a CloudWatch Log Stream within the Log Group
resource "aws_cloudwatch_log_stream" "codebuild_log" {
    name = "codebuild_log"
    log_group_name = aws_cloudwatch_log_group.webapp_logs.name
}

# Cloudwatch log for ECS Container
resource "aws_cloudwatch_log_stream" "web_app_logs_stream" {
    name = "webapp_container_logs"
    log_group_name = aws_cloudwatch_log_group.webapp_logs.name
}

Export website version

output "product_website" {
    value = "${aws_alb.web_app_alb.dns_name}:${local.product_port}"
}

output "pre_product_website" {
    value = "${aws_alb.web_app_alb.dns_name}:${local.preproduct_port}"
}